squib 0.14.2 → 0.14.3.pre1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +41 -41
  3. data/.travis.yml +19 -19
  4. data/CHANGELOG.md +366 -357
  5. data/CONTRIBUTING.md +40 -40
  6. data/Gemfile +2 -2
  7. data/LICENSE.txt +22 -22
  8. data/README.md +121 -121
  9. data/RELEASE TODO.md +21 -21
  10. data/Rakefile +48 -48
  11. data/appveyor.yml +24 -24
  12. data/bin/squib +4 -4
  13. data/lib/squib.rb +32 -32
  14. data/lib/squib/api/background.rb +15 -15
  15. data/lib/squib/api/data.rb +137 -137
  16. data/lib/squib/api/groups.rb +54 -54
  17. data/lib/squib/api/image.rb +49 -49
  18. data/lib/squib/api/save.rb +83 -83
  19. data/lib/squib/api/settings.rb +21 -21
  20. data/lib/squib/api/shapes.rb +124 -124
  21. data/lib/squib/api/text.rb +25 -25
  22. data/lib/squib/api/text_embed.rb +71 -71
  23. data/lib/squib/api/units.rb +27 -27
  24. data/lib/squib/args/arg_loader.rb +126 -126
  25. data/lib/squib/args/box.rb +55 -55
  26. data/lib/squib/args/card_range.rb +32 -32
  27. data/lib/squib/args/color_validator.rb +12 -12
  28. data/lib/squib/args/coords.rb +35 -35
  29. data/lib/squib/args/csv_opts.rb +25 -25
  30. data/lib/squib/args/dir_validator.rb +16 -16
  31. data/lib/squib/args/draw.rb +92 -92
  32. data/lib/squib/args/embed_adjust.rb +25 -25
  33. data/lib/squib/args/embed_key.rb +17 -17
  34. data/lib/squib/args/hand_special.rb +37 -37
  35. data/lib/squib/args/import.rb +40 -40
  36. data/lib/squib/args/input_file.rb +37 -37
  37. data/lib/squib/args/paint.rb +44 -44
  38. data/lib/squib/args/paragraph.rb +116 -116
  39. data/lib/squib/args/save_batch.rb +63 -63
  40. data/lib/squib/args/scale_box.rb +53 -53
  41. data/lib/squib/args/sheet.rb +172 -172
  42. data/lib/squib/args/showcase_special.rb +38 -38
  43. data/lib/squib/args/sprue_file.rb +44 -44
  44. data/lib/squib/args/svg_special.rb +37 -37
  45. data/lib/squib/args/transform.rb +61 -61
  46. data/lib/squib/args/typographer.rb +119 -119
  47. data/lib/squib/args/unit_conversion.rb +29 -29
  48. data/lib/squib/builtin/layouts/economy.yml +85 -85
  49. data/lib/squib/builtin/layouts/fantasy.yml +101 -101
  50. data/lib/squib/builtin/layouts/hand.yml +62 -62
  51. data/lib/squib/builtin/layouts/party.yml +94 -94
  52. data/lib/squib/builtin/layouts/playing-card.yml +35 -35
  53. data/lib/squib/builtin/layouts/tuck_box.yml +46 -46
  54. data/lib/squib/builtin/projects/advanced/.gitignore +4 -4
  55. data/lib/squib/builtin/projects/advanced/ABOUT.md +19 -19
  56. data/lib/squib/builtin/projects/advanced/Gemfile +11 -11
  57. data/lib/squib/builtin/projects/advanced/Guardfile +21 -21
  58. data/lib/squib/builtin/projects/advanced/IDEAS.md +22 -22
  59. data/lib/squib/builtin/projects/advanced/PLAYTESTING.md +26 -26
  60. data/lib/squib/builtin/projects/advanced/Rakefile +27 -27
  61. data/lib/squib/builtin/projects/advanced/config.yml +53 -49
  62. data/lib/squib/builtin/projects/advanced/docs/PNP NOTES.md +3 -3
  63. data/lib/squib/builtin/projects/advanced/docs/RULES.md +21 -21
  64. data/lib/squib/builtin/projects/advanced/img/example.svg +60 -60
  65. data/lib/squib/builtin/projects/advanced/layouts/deck.yml +27 -27
  66. data/lib/squib/builtin/projects/advanced/src/deck.rb +34 -34
  67. data/lib/squib/builtin/projects/advanced/src/version.rb +3 -3
  68. data/lib/squib/builtin/projects/basic/.gitignore +4 -4
  69. data/lib/squib/builtin/projects/basic/ABOUT.md +19 -19
  70. data/lib/squib/builtin/projects/basic/Gemfile +3 -3
  71. data/lib/squib/builtin/projects/basic/IDEAS.md +22 -22
  72. data/lib/squib/builtin/projects/basic/PLAYTESTING.md +26 -26
  73. data/lib/squib/builtin/projects/basic/PNP NOTES.md +3 -3
  74. data/lib/squib/builtin/projects/basic/RULES.md +21 -21
  75. data/lib/squib/builtin/projects/basic/Rakefile +7 -7
  76. data/lib/squib/builtin/projects/basic/config.yml +53 -49
  77. data/lib/squib/builtin/projects/basic/deck.rb +6 -6
  78. data/lib/squib/builtin/sprues/a4_euro_card.yml +42 -42
  79. data/lib/squib/builtin/sprues/a4_poker_card_8up.yml +40 -40
  80. data/lib/squib/builtin/sprues/a4_poker_card_9up.yml +42 -42
  81. data/lib/squib/builtin/sprues/a4_usa_card.yml +42 -42
  82. data/lib/squib/builtin/sprues/drivethrucards_1up.yml +10 -10
  83. data/lib/squib/builtin/sprues/letter_poker_card_9up.yml +25 -25
  84. data/lib/squib/builtin/sprues/letter_poker_foldable_8up.yml +52 -52
  85. data/lib/squib/builtin/sprues/printplaygames_18up.yml +68 -68
  86. data/lib/squib/card.rb +75 -75
  87. data/lib/squib/commands/cli.rb +39 -39
  88. data/lib/squib/commands/data/template_option.rb +109 -109
  89. data/lib/squib/commands/make_sprue.rb +275 -275
  90. data/lib/squib/commands/new.rb +77 -77
  91. data/lib/squib/conf.rb +144 -139
  92. data/lib/squib/constants.rb +17 -17
  93. data/lib/squib/deck.rb +116 -116
  94. data/lib/squib/graphics/background.rb +14 -14
  95. data/lib/squib/graphics/cairo_context_wrapper.rb +113 -113
  96. data/lib/squib/graphics/embedding_utils.rb +28 -28
  97. data/lib/squib/graphics/gradient_regex.rb +47 -47
  98. data/lib/squib/graphics/hand.rb +42 -42
  99. data/lib/squib/graphics/image.rb +129 -108
  100. data/lib/squib/graphics/save_doc.rb +61 -61
  101. data/lib/squib/graphics/save_images.rb +52 -52
  102. data/lib/squib/graphics/save_pdf.rb +90 -90
  103. data/lib/squib/graphics/save_sprue.rb +204 -204
  104. data/lib/squib/graphics/shapes.rb +143 -143
  105. data/lib/squib/graphics/showcase.rb +85 -85
  106. data/lib/squib/graphics/text.rb +174 -174
  107. data/lib/squib/import/data_frame.rb +108 -108
  108. data/lib/squib/layout_parser.rb +138 -138
  109. data/lib/squib/progress.rb +38 -38
  110. data/lib/squib/sample_helpers.rb +34 -34
  111. data/lib/squib/sprues/crop_line.rb +28 -28
  112. data/lib/squib/sprues/crop_line_dash.rb +35 -35
  113. data/lib/squib/sprues/invalid_sprue_definition.rb +9 -9
  114. data/lib/squib/sprues/sprue.rb +203 -203
  115. data/lib/squib/sprues/sprue_schema.rb +48 -48
  116. data/lib/squib/version.rb +10 -10
  117. data/samples/autoscale_font/_autoscale_font.rb +29 -29
  118. data/samples/backend/_backend.rb +26 -26
  119. data/samples/basic.rb +19 -19
  120. data/samples/bug256/_bug256.rb +13 -0
  121. data/samples/build_groups/build_groups.rb +36 -36
  122. data/samples/colors/_colors.rb +38 -38
  123. data/samples/colors/_gradients.rb +34 -34
  124. data/samples/config/config_text_markup.rb +20 -20
  125. data/samples/config/custom_config.rb +18 -18
  126. data/samples/data/_csv.rb +33 -33
  127. data/samples/data/_excel.rb +55 -55
  128. data/samples/data/_yaml.rb +12 -12
  129. data/samples/hello_world.rb +6 -6
  130. data/samples/images/_cairo_access.rb +39 -39
  131. data/samples/images/_images.rb +104 -104
  132. data/samples/images/_more_load_images.rb +102 -102
  133. data/samples/intro/01_hello.rb +8 -8
  134. data/samples/intro/02_options.rb +14 -14
  135. data/samples/intro/03_layout.rb +11 -11
  136. data/samples/intro/04_arrays.rb +15 -15
  137. data/samples/intro/05_excel.rb +14 -14
  138. data/samples/layouts/builtin_layouts.rb +97 -97
  139. data/samples/layouts/layouts.rb +71 -71
  140. data/samples/project/src/characters.rb +8 -8
  141. data/samples/project/src/skills.rb +7 -7
  142. data/samples/proofs/_tgc_proofs.rb +16 -16
  143. data/samples/ranges/_ranges.rb +64 -64
  144. data/samples/saves/_hand.rb +23 -23
  145. data/samples/saves/_portrait_landscape.rb +23 -23
  146. data/samples/saves/_save_pdf.rb +29 -29
  147. data/samples/saves/_saves.rb +51 -51
  148. data/samples/saves/_showcase.rb +25 -25
  149. data/samples/shapes/_draw_shapes.rb +60 -60
  150. data/samples/shapes/_proofs.rb +22 -22
  151. data/samples/sprues/_advanced_sprues.rb +24 -24
  152. data/samples/sprues/_builtin_sprues.rb +21 -21
  153. data/samples/sprues/_fold_sheet.rb +27 -27
  154. data/samples/sprues/_hex_tiles.rb +15 -15
  155. data/samples/sprues/_mints.rb +11 -11
  156. data/samples/sprues/_sprue_example.rb +11 -11
  157. data/samples/text/_embed_text.rb +128 -128
  158. data/samples/text/_text.rb +47 -47
  159. data/samples/text/_text_options.rb +102 -102
  160. data/samples/text/bug134.rb +14 -14
  161. data/samples/units/_units.rb +32 -32
  162. data/squib.gemspec +52 -52
  163. metadata +51 -48
@@ -1,138 +1,138 @@
1
- require 'yaml'
2
-
3
- module Squib
4
- # Internal class for handling layouts
5
- # @api private
6
- class LayoutParser
7
-
8
- def initialize(dpi = 300)
9
- @dpi = dpi
10
- end
11
-
12
- # Load the layout file(s), if exists
13
- # @api private
14
- def load_layout(files, initial = {})
15
- layout = initial
16
- Squib::logger.info { " using layout(s): #{files}" }
17
- Array(files).each do |file|
18
- thefile = file
19
- thefile = builtin(file) unless File.exists?(file)
20
- if File.exists? thefile
21
- # note: YAML.load_file returns false on empty file
22
- yml = layout.merge(YAML.load_file(thefile) || {})
23
- yml.each do |key, value|
24
- layout[key] = recurse_extends(yml, key, {})
25
- end
26
- else
27
- Squib::logger.error { "Layout file not found: #{file}. Skipping..." }
28
- end
29
- end
30
- return layout
31
- end
32
-
33
- private
34
-
35
- # Determine the file path of the built-in layout file
36
- def builtin(file)
37
- "#{File.dirname(__FILE__)}/builtin/layouts/#{file}"
38
- end
39
-
40
- # Process the extends recursively
41
- # :nodoc:
42
- # @api private
43
- def recurse_extends(yml, key, visited)
44
- assert_not_visited(key, visited)
45
- return yml[key] unless has_extends?(yml, key)
46
- return yml[key] unless parents_exist?(yml, key)
47
- visited[key] = key
48
- parent_keys = [yml[key]['extends']].flatten
49
- h = {}
50
- parent_keys.each do |parent_key|
51
- from_extends = yml[key].merge(recurse_extends(yml, parent_key, visited)) do |key, child_val, parent_val|
52
- handle_relative_operators(parent_val, child_val)
53
- end
54
- h = h.merge(from_extends) do |key, older_sibling, younger_sibling|
55
- # In general, go with the younger sibling.
56
- # UNLESS that younger sibling had a relative operator, in which use the
57
- # (already computed) relative operator applied, which lands in older_sibling
58
- # See bug 244.
59
- sibling = younger_sibling
60
- %w(+= -= *= /=).each do |op|
61
- sibling = older_sibling if younger_sibling.to_s.strip.start_with? op
62
- end
63
- sibling
64
- end
65
- end
66
- return h
67
- end
68
-
69
- def handle_relative_operators(parent_val, child_val)
70
- if child_val.to_s.strip.start_with?('+=')
71
- add_parent_child(parent_val, child_val)
72
- elsif child_val.to_s.strip.start_with?('-=')
73
- sub_parent_child(parent_val, child_val)
74
- elsif child_val.to_s.strip.start_with?('*=')
75
- mul_parent_child(parent_val, child_val)
76
- elsif child_val.to_s.strip.start_with?('/=')
77
- div_parent_child(parent_val, child_val)
78
- else
79
- child_val # child overrides parent when merging, no +=
80
- end
81
- end
82
-
83
- def add_parent_child(parent, child)
84
- parent_pixels = Args::UnitConversion.parse(parent, @dpi).to_f
85
- child_pixels = Args::UnitConversion.parse(child.sub('+=', ''), @dpi).to_f
86
- parent_pixels + child_pixels
87
- end
88
-
89
- def sub_parent_child(parent, child)
90
- parent_pixels = Args::UnitConversion.parse(parent, @dpi).to_f
91
- child_pixels = Args::UnitConversion.parse(child.sub('-=', ''), @dpi).to_f
92
- parent_pixels - child_pixels
93
- end
94
-
95
- def mul_parent_child(parent, child)
96
- parent_pixels = Args::UnitConversion.parse(parent, @dpi).to_f
97
- child_float = child.sub('*=', '').to_f
98
- parent_pixels * child_float
99
- end
100
-
101
- def div_parent_child(parent, child)
102
- parent_pixels = Args::UnitConversion.parse(parent, @dpi).to_f
103
- child_float = child.sub('/=', '').to_f
104
- parent_pixels / child_float
105
- end
106
-
107
- # Does this layout entry have an extends field?
108
- # i.e. is it a base-case or will it need recursion?
109
- # :nodoc:
110
- # @api private
111
- def has_extends?(yml, key)
112
- !!yml[key] && yml[key].key?('extends')
113
- end
114
-
115
- # Checks if we have any absentee parents
116
- # @api private
117
- def parents_exist?(yml, key)
118
- exists = true
119
- Array(yml[key]['extends']).each do |parent|
120
- unless yml.key?(parent)
121
- exists = false unless
122
- Squib.logger.error "Processing layout: '#{key}' attempts to extend a missing '#{yml[key]['extends']}'"
123
- end
124
- end
125
- return exists
126
- end
127
-
128
- # Safeguard against malformed circular extends
129
- # :nodoc:
130
- # @api private
131
- def assert_not_visited(key, visited)
132
- if visited.key? key
133
- raise "Invalid layout: circular extends with '#{key}'"
134
- end
135
- end
136
-
137
- end
138
- end
1
+ require 'yaml'
2
+
3
+ module Squib
4
+ # Internal class for handling layouts
5
+ # @api private
6
+ class LayoutParser
7
+
8
+ def initialize(dpi = 300)
9
+ @dpi = dpi
10
+ end
11
+
12
+ # Load the layout file(s), if exists
13
+ # @api private
14
+ def load_layout(files, initial = {})
15
+ layout = initial
16
+ Squib::logger.info { " using layout(s): #{files}" }
17
+ Array(files).each do |file|
18
+ thefile = file
19
+ thefile = builtin(file) unless File.exists?(file)
20
+ if File.exists? thefile
21
+ # note: YAML.load_file returns false on empty file
22
+ yml = layout.merge(YAML.load_file(thefile) || {})
23
+ yml.each do |key, value|
24
+ layout[key] = recurse_extends(yml, key, {})
25
+ end
26
+ else
27
+ Squib::logger.error { "Layout file not found: #{file}. Skipping..." }
28
+ end
29
+ end
30
+ return layout
31
+ end
32
+
33
+ private
34
+
35
+ # Determine the file path of the built-in layout file
36
+ def builtin(file)
37
+ "#{File.dirname(__FILE__)}/builtin/layouts/#{file}"
38
+ end
39
+
40
+ # Process the extends recursively
41
+ # :nodoc:
42
+ # @api private
43
+ def recurse_extends(yml, key, visited)
44
+ assert_not_visited(key, visited)
45
+ return yml[key] unless has_extends?(yml, key)
46
+ return yml[key] unless parents_exist?(yml, key)
47
+ visited[key] = key
48
+ parent_keys = [yml[key]['extends']].flatten
49
+ h = {}
50
+ parent_keys.each do |parent_key|
51
+ from_extends = yml[key].merge(recurse_extends(yml, parent_key, visited)) do |key, child_val, parent_val|
52
+ handle_relative_operators(parent_val, child_val)
53
+ end
54
+ h = h.merge(from_extends) do |key, older_sibling, younger_sibling|
55
+ # In general, go with the younger sibling.
56
+ # UNLESS that younger sibling had a relative operator, in which use the
57
+ # (already computed) relative operator applied, which lands in older_sibling
58
+ # See bug 244.
59
+ sibling = younger_sibling
60
+ %w(+= -= *= /=).each do |op|
61
+ sibling = older_sibling if younger_sibling.to_s.strip.start_with? op
62
+ end
63
+ sibling
64
+ end
65
+ end
66
+ return h
67
+ end
68
+
69
+ def handle_relative_operators(parent_val, child_val)
70
+ if child_val.to_s.strip.start_with?('+=')
71
+ add_parent_child(parent_val, child_val)
72
+ elsif child_val.to_s.strip.start_with?('-=')
73
+ sub_parent_child(parent_val, child_val)
74
+ elsif child_val.to_s.strip.start_with?('*=')
75
+ mul_parent_child(parent_val, child_val)
76
+ elsif child_val.to_s.strip.start_with?('/=')
77
+ div_parent_child(parent_val, child_val)
78
+ else
79
+ child_val # child overrides parent when merging, no +=
80
+ end
81
+ end
82
+
83
+ def add_parent_child(parent, child)
84
+ parent_pixels = Args::UnitConversion.parse(parent, @dpi).to_f
85
+ child_pixels = Args::UnitConversion.parse(child.sub('+=', ''), @dpi).to_f
86
+ parent_pixels + child_pixels
87
+ end
88
+
89
+ def sub_parent_child(parent, child)
90
+ parent_pixels = Args::UnitConversion.parse(parent, @dpi).to_f
91
+ child_pixels = Args::UnitConversion.parse(child.sub('-=', ''), @dpi).to_f
92
+ parent_pixels - child_pixels
93
+ end
94
+
95
+ def mul_parent_child(parent, child)
96
+ parent_pixels = Args::UnitConversion.parse(parent, @dpi).to_f
97
+ child_float = child.sub('*=', '').to_f
98
+ parent_pixels * child_float
99
+ end
100
+
101
+ def div_parent_child(parent, child)
102
+ parent_pixels = Args::UnitConversion.parse(parent, @dpi).to_f
103
+ child_float = child.sub('/=', '').to_f
104
+ parent_pixels / child_float
105
+ end
106
+
107
+ # Does this layout entry have an extends field?
108
+ # i.e. is it a base-case or will it need recursion?
109
+ # :nodoc:
110
+ # @api private
111
+ def has_extends?(yml, key)
112
+ !!yml[key] && yml[key].key?('extends')
113
+ end
114
+
115
+ # Checks if we have any absentee parents
116
+ # @api private
117
+ def parents_exist?(yml, key)
118
+ exists = true
119
+ Array(yml[key]['extends']).each do |parent|
120
+ unless yml.key?(parent)
121
+ exists = false unless
122
+ Squib.logger.error "Processing layout: '#{key}' attempts to extend a missing '#{yml[key]['extends']}'"
123
+ end
124
+ end
125
+ return exists
126
+ end
127
+
128
+ # Safeguard against malformed circular extends
129
+ # :nodoc:
130
+ # @api private
131
+ def assert_not_visited(key, visited)
132
+ if visited.key? key
133
+ raise "Invalid layout: circular extends with '#{key}'"
134
+ end
135
+ end
136
+
137
+ end
138
+ end
@@ -1,38 +1,38 @@
1
- require 'ruby-progressbar'
2
-
3
- module Squib
4
-
5
- # :nodoc:
6
- # @api private
7
- class DoNothing
8
- def increment
9
- end
10
-
11
- def finish
12
- end
13
- end
14
-
15
- # A facade that handles (or doesn't) the progress bar on the console
16
- #
17
- # :nodoc:
18
- # @api private
19
- class Progress
20
- attr_accessor :enabled
21
-
22
- def initialize(enabled)
23
- @enabled = enabled
24
- end
25
-
26
- def start(title='', total=100, &block)
27
- if @enabled
28
- @bar = ProgressBar.create(title: title, total: total, format: '%t <%B> %p%% %a')
29
- yield(@bar)
30
- @bar.finish
31
- else
32
- yield(Squib::DoNothing.new)
33
- end
34
- end
35
- end
36
-
37
-
38
- end
1
+ require 'ruby-progressbar'
2
+
3
+ module Squib
4
+
5
+ # :nodoc:
6
+ # @api private
7
+ class DoNothing
8
+ def increment
9
+ end
10
+
11
+ def finish
12
+ end
13
+ end
14
+
15
+ # A facade that handles (or doesn't) the progress bar on the console
16
+ #
17
+ # :nodoc:
18
+ # @api private
19
+ class Progress
20
+ attr_accessor :enabled
21
+
22
+ def initialize(enabled)
23
+ @enabled = enabled
24
+ end
25
+
26
+ def start(title='', total=100, &block)
27
+ if @enabled
28
+ @bar = ProgressBar.create(title: title, total: total, format: '%t <%B> %p%% %a')
29
+ yield(@bar)
30
+ @bar.finish
31
+ else
32
+ yield(Squib::DoNothing.new)
33
+ end
34
+ end
35
+ end
36
+
37
+
38
+ end
@@ -1,34 +1,34 @@
1
- module Squib
2
-
3
- # Some helper methods specifically for samples
4
- # @api private
5
- #:nodoc:
6
- class Deck
7
-
8
- # Draw graph paper for samples
9
- def draw_graph_paper(width, height)
10
- background color: 'white'
11
- grid width: 50, height: 50, stroke_color: '#659ae9', stroke_width: 1.5
12
- grid width: 200, height: 200, stroke_color: '#659ae9', stroke_width: 3, x: 50, y: 50
13
- (50..height).step(200) do |y|
14
- text str: "y=#{y}", x: 3, y: y - 18, font: 'Open Sans, Sans 10'
15
- end
16
- end
17
-
18
- # Define a set of samples on some graph paper
19
- def sample(str)
20
- @sample_x ||= 100
21
- @sample_y ||= 100
22
- rect x: 460, y: @sample_y - 40, width: 600,
23
- height: 180, fill_color: '#FFD655', stroke_color: 'black', radius: 15
24
- text str: str, x: 460, y: @sample_y - 40,
25
- width: 540, height: 180,
26
- valign: 'middle', align: 'center',
27
- font: 'Times New Roman,Serif 8'
28
- yield @sample_x, @sample_y
29
- @sample_y += 200
30
- end
31
-
32
- end
33
-
34
- end
1
+ module Squib
2
+
3
+ # Some helper methods specifically for samples
4
+ # @api private
5
+ #:nodoc:
6
+ class Deck
7
+
8
+ # Draw graph paper for samples
9
+ def draw_graph_paper(width, height)
10
+ background color: 'white'
11
+ grid width: 50, height: 50, stroke_color: '#659ae9', stroke_width: 1.5
12
+ grid width: 200, height: 200, stroke_color: '#659ae9', stroke_width: 3, x: 50, y: 50
13
+ (50..height).step(200) do |y|
14
+ text str: "y=#{y}", x: 3, y: y - 18, font: 'Open Sans, Sans 10'
15
+ end
16
+ end
17
+
18
+ # Define a set of samples on some graph paper
19
+ def sample(str)
20
+ @sample_x ||= 100
21
+ @sample_y ||= 100
22
+ rect x: 460, y: @sample_y - 40, width: 600,
23
+ height: 180, fill_color: '#FFD655', stroke_color: 'black', radius: 15
24
+ text str: str, x: 460, y: @sample_y - 40,
25
+ width: 540, height: 180,
26
+ valign: 'middle', align: 'center',
27
+ font: 'Times New Roman,Serif 8'
28
+ yield @sample_x, @sample_y
29
+ @sample_y += 200
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -1,28 +1,28 @@
1
- module Squib
2
- module Sprues
3
- class CropLine
4
- attr_reader :x1, :y1, :x2, :y2
5
-
6
- def initialize(type, position, sheet_width, sheet_height, dpi)
7
- method = "parse_#{type}"
8
- send method, position, sheet_width, sheet_height, dpi
9
- end
10
-
11
- def parse_horizontal(position, sheet_width, _, dpi)
12
- position = Args::UnitConversion.parse(position, dpi)
13
- @x1 = 0
14
- @y1 = position
15
- @x2 = sheet_width
16
- @y2 = position
17
- end
18
-
19
- def parse_vertical(position, _, sheet_height, dpi)
20
- position = Args::UnitConversion.parse(position, dpi)
21
- @x1 = position
22
- @y1 = 0
23
- @x2 = position
24
- @y2 = sheet_height
25
- end
26
- end
27
- end
28
- end
1
+ module Squib
2
+ module Sprues
3
+ class CropLine
4
+ attr_reader :x1, :y1, :x2, :y2
5
+
6
+ def initialize(type, position, sheet_width, sheet_height, dpi)
7
+ method = "parse_#{type}"
8
+ send method, position, sheet_width, sheet_height, dpi
9
+ end
10
+
11
+ def parse_horizontal(position, sheet_width, _, dpi)
12
+ position = Args::UnitConversion.parse(position, dpi)
13
+ @x1 = 0
14
+ @y1 = position
15
+ @x2 = sheet_width
16
+ @y2 = position
17
+ end
18
+
19
+ def parse_vertical(position, _, sheet_height, dpi)
20
+ position = Args::UnitConversion.parse(position, dpi)
21
+ @x1 = position
22
+ @y1 = 0
23
+ @x2 = position
24
+ @y2 = sheet_height
25
+ end
26
+ end
27
+ end
28
+ end