lib/zebra/zpl/graphic.rb in zebra-zpl-1.1.3 vs lib/zebra/zpl/graphic.rb in zebra-zpl-1.1.4
- old
+ new
@@ -1,91 +1,93 @@
-require "zebra/zpl/printable"
-
-module Zebra
- module Zpl
- class Graphic
- include Printable
-
- class InvalidGraphicType < StandardError; end
- class InvalidLineThickness < StandardError; end
- class InvalidColorError < StandardError; end
- class InvalidOrientationError < StandardError; end
- class InvalidRoundingDegree < StandardError; end
- class InvalidSymbolType < StandardError; end
-
- attr_reader :graphic_type, :graphic_width, :graphic_height, :line_thickness, :color, :orientation, :rounding_degree, :symbol_type
-
- BOX = "B"
- CIRCLE = "C"
- DIAGONAL = "D"
- ELLIPSE = "E"
- SYMBOL = "S"
-
- def graphic_type=(type)
- raise InvalidGraphicType unless %w(E B D C S).include? type
- @graphic_type = type
- end
-
- def graphic_width=(width)
- @graphic_width = width
- end
-
- def graphic_height=(height)
- @graphic_height = height
- end
-
- def line_thickness=(thickness)
- raise InvalidLineThickness unless thickness.nil? || thickness.to_i.to_s == thickness.to_s
- @line_thickness = thickness
- end
-
- def color=(value)
- raise InvalidColorError unless %w[B W].include?(value&.upcase)
- @color = value
- end
-
- def orientation=(value)
- raise InvalidOrientationError unless %w[R L].include?(value&.upcase)
- @orientation = value
- end
-
- def rounding_degree=(value)
- raise InvalidRoundingDegree unless (0..8).include?(value.to_i)
- @rounding_degree = value
- end
-
- def symbol_type=(value)
- raise InvalidSymbolType unless %w[A B C D E].include?(value.upcase)
- @symbol_type = value
- end
-
- def to_zpl
- check_attributes
- graphic = case graphic_type
- when "B"
- "B#{graphic_width},#{graphic_height},#{line_thickness},#{color},#{rounding_degree}"
- when "C"
- "C#{graphic_width},#{line_thickness},#{color}"
- when "D"
- "D#{graphic_width},#{graphic_height},#{line_thickness},#{color},#{orientation}"
- when "E"
- "E#{graphic_width},#{graphic_height},#{line_thickness},#{color}"
- when "S"
- sym = !symbol_type.nil? ? "^FD#{symbol_type}" : ''
- "S,#{graphic_height},#{graphic_width}#{sym}"
- end
- "^FW#{rotation}^FO#{x},#{y}^G#{graphic}^FS"
- end
-
- private
-
- def has_data?
- false
- end
-
- def check_attributes
- super
- raise InvalidGraphicType if @graphic_type.nil?
- end
- end
- end
-end
+require "zebra/zpl/printable"
+
+module Zebra
+ module Zpl
+ class Graphic
+ include Printable
+
+ class InvalidGraphicType < StandardError; end
+ class InvalidLineThickness < StandardError; end
+ class InvalidColorError < StandardError; end
+ class InvalidOrientationError < StandardError; end
+ class InvalidRoundingDegree < StandardError; end
+ class InvalidSymbolType < StandardError; end
+
+ attr_reader :graphic_type, :graphic_width, :graphic_height, :line_thickness, :color, :orientation, :rounding_degree, :symbol_type
+
+ BOX = "B"
+ CIRCLE = "C"
+ DIAGONAL = "D"
+ ELLIPSE = "E"
+ SYMBOL = "S"
+
+ def graphic_type=(type)
+ raise InvalidGraphicType unless %w(E B D C S).include? type
+ @graphic_type = type
+ end
+
+ def graphic_width=(width)
+ @graphic_width = width
+ end
+
+ def graphic_height=(height)
+ @graphic_height = height
+ end
+
+ def line_thickness=(thickness)
+ raise InvalidLineThickness unless thickness.nil? || thickness.to_i.to_s == thickness.to_s
+ @line_thickness = thickness
+ end
+
+ def color=(value)
+ raise InvalidColorError unless %w[B W].include?(value&.upcase)
+ @color = value
+ end
+
+ def orientation=(value)
+ raise InvalidOrientationError unless %w[R L].include?(value&.upcase)
+ @orientation = value
+ end
+
+ def rounding_degree=(value)
+ raise InvalidRoundingDegree unless (0..8).include?(value.to_i)
+ @rounding_degree = value
+ end
+
+ def symbol_type=(value)
+ raise InvalidSymbolType unless %w[A B C D E].include?(value.upcase)
+ @symbol_type = value
+ end
+
+ def to_zpl
+ check_attributes
+ graphic = case graphic_type
+ when BOX
+ "^GB#{graphic_width},#{graphic_height},#{line_thickness},#{color},#{rounding_degree}"
+ when CIRCLE
+ "^GC#{graphic_width},#{line_thickness},#{color}"
+ when DIAGONAL
+ "^GD#{graphic_width},#{graphic_height},#{line_thickness},#{color},#{orientation}"
+ when ELLIPSE
+ "^GE#{graphic_width},#{graphic_height},#{line_thickness},#{color}"
+ when SYMBOL
+ sym = !symbol_type.nil? ? "^FD#{symbol_type}" : ''
+ "^GS,#{graphic_height},#{graphic_width}#{sym}"
+ else
+ raise InvalidGraphicType
+ end
+ "^FW#{rotation}^FO#{x},#{y}#{graphic}^FS"
+ end
+
+ private
+
+ def has_data?
+ false
+ end
+
+ def check_attributes
+ super
+ raise InvalidGraphicType if @graphic_type.nil?
+ end
+ end
+ end
+end