squib 0.9.0 → 0.10.0

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 (230) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/.gitmodules +22 -0
  4. data/.travis.yml +4 -5
  5. data/CHANGELOG.md +23 -0
  6. data/CONTRIBUTING.md +40 -0
  7. data/README.md +25 -553
  8. data/RELEASE TODO.md +2 -2
  9. data/Rakefile +6 -64
  10. data/appveyor.yml +0 -4
  11. data/benchmarks/antialias_best.rb +2 -2
  12. data/benchmarks/antialias_fast.rb +2 -2
  13. data/benchmarks/{backend-memory.rb → backend_memory.rb} +2 -2
  14. data/benchmarks/{backend-svg.rb → backend_svg.rb} +2 -2
  15. data/benchmarks/tons_of_png.rb +1 -1
  16. data/benchmarks/tons_of_svg.rb +1 -1
  17. data/benchmarks/tons_of_text.rb +1 -1
  18. data/docs/Makefile +216 -0
  19. data/docs/_static/css/squibdocs.css +18 -0
  20. data/docs/args/draw.rst +36 -0
  21. data/docs/args/expansion.rst +3 -0
  22. data/docs/args/layout.rst +6 -0
  23. data/docs/args/output_dir.rst +6 -0
  24. data/docs/args/range.rst +6 -0
  25. data/docs/args/transform.rst +51 -0
  26. data/docs/args/trim.rst +11 -0
  27. data/docs/args/wh.rst +12 -0
  28. data/docs/args/xy.rst +12 -0
  29. data/docs/arrays.rst +77 -0
  30. data/docs/backends.rst +20 -0
  31. data/docs/bleed.rst +13 -0
  32. data/docs/build_groups.rst +47 -0
  33. data/docs/colors.rst +64 -0
  34. data/docs/conf.py +287 -0
  35. data/docs/config.rst +117 -0
  36. data/docs/data.rst +22 -0
  37. data/docs/dsl/background.rst +20 -0
  38. data/docs/dsl/build.rst +32 -0
  39. data/docs/dsl/build_groups.rst +23 -0
  40. data/docs/dsl/circle.rst +27 -0
  41. data/docs/dsl/cm.rst +19 -0
  42. data/docs/dsl/csv.rst +62 -0
  43. data/docs/dsl/curve.rst +63 -0
  44. data/docs/dsl/deck.rst +45 -0
  45. data/docs/dsl/disable_build.rst +28 -0
  46. data/docs/dsl/ellipse.rst +17 -0
  47. data/docs/dsl/enable_build.rst +25 -0
  48. data/docs/dsl/grid.rst +31 -0
  49. data/docs/dsl/hand.rst +40 -0
  50. data/docs/dsl/hint.rst +15 -0
  51. data/docs/dsl/inches.rst +19 -0
  52. data/docs/dsl/index.rst +9 -0
  53. data/docs/dsl/line.rst +52 -0
  54. data/docs/dsl/png.rst +49 -0
  55. data/docs/dsl/polygon.rst +28 -0
  56. data/docs/dsl/rect.rst +18 -0
  57. data/docs/dsl/save.rst +23 -0
  58. data/docs/dsl/save_pdf.rst +48 -0
  59. data/docs/dsl/save_png.rst +46 -0
  60. data/docs/dsl/save_sheet.rst +55 -0
  61. data/docs/dsl/showcase.rst +65 -0
  62. data/docs/dsl/star.rst +35 -0
  63. data/docs/dsl/svg.rst +119 -0
  64. data/docs/dsl/text.rst +294 -0
  65. data/docs/dsl/triangle.rst +38 -0
  66. data/docs/dsl/use_layout.rst +16 -0
  67. data/docs/dsl/xlsx.rst +50 -0
  68. data/docs/guides/game_icons.rst +2 -0
  69. data/docs/guides/getting-started/index.rst +5 -0
  70. data/docs/guides/getting-started/part_0_learning_ruby.rst +145 -0
  71. data/docs/guides/getting-started/part_1_zero_to_game.rst +216 -0
  72. data/docs/guides/getting-started/part_2_iconography.rst +152 -0
  73. data/docs/guides/getting-started/part_3_workflows.rst +4 -0
  74. data/docs/guides/git.rst +13 -0
  75. data/docs/guides/hello_world.rst +6 -0
  76. data/docs/help.rst +157 -0
  77. data/docs/index.rst +35 -0
  78. data/docs/install.rst +66 -0
  79. data/docs/layouts.rst +235 -0
  80. data/docs/learning.rst +10 -0
  81. data/docs/make.bat +263 -0
  82. data/docs/parameters.rst +26 -0
  83. data/docs/server.bat +1 -0
  84. data/docs/text_feature.rst +86 -0
  85. data/docs/units.rst +6 -0
  86. data/lib/squib.rb +4 -4
  87. data/lib/squib/api/background.rb +5 -10
  88. data/lib/squib/api/data.rb +30 -54
  89. data/lib/squib/api/groups.rb +47 -0
  90. data/lib/squib/api/image.rb +8 -67
  91. data/lib/squib/api/save.rb +15 -105
  92. data/lib/squib/api/settings.rb +8 -22
  93. data/lib/squib/api/shapes.rb +15 -185
  94. data/lib/squib/api/text.rb +9 -49
  95. data/lib/squib/api/text_embed.rb +12 -12
  96. data/lib/squib/api/units.rb +3 -17
  97. data/lib/squib/args/arg_loader.rb +6 -6
  98. data/lib/squib/args/box.rb +2 -2
  99. data/lib/squib/args/card_range.rb +1 -1
  100. data/lib/squib/args/color_validator.rb +2 -2
  101. data/lib/squib/args/coords.rb +2 -2
  102. data/lib/squib/args/csv_opts.rb +25 -0
  103. data/lib/squib/args/dir_validator.rb +1 -1
  104. data/lib/squib/args/draw.rb +2 -2
  105. data/lib/squib/args/embed_adjust.rb +1 -1
  106. data/lib/squib/args/embed_key.rb +1 -1
  107. data/lib/squib/args/hand_special.rb +37 -37
  108. data/lib/squib/args/import.rb +2 -2
  109. data/lib/squib/args/input_file.rb +1 -1
  110. data/lib/squib/args/paint.rb +3 -3
  111. data/lib/squib/args/paragraph.rb +2 -2
  112. data/lib/squib/args/save_batch.rb +2 -2
  113. data/lib/squib/args/scale_box.rb +1 -1
  114. data/lib/squib/args/sheet.rb +3 -3
  115. data/lib/squib/args/showcase_special.rb +2 -2
  116. data/lib/squib/args/svg_special.rb +1 -1
  117. data/lib/squib/args/transform.rb +2 -2
  118. data/lib/squib/args/typographer.rb +5 -4
  119. data/lib/squib/args/unit_conversion.rb +4 -4
  120. data/lib/squib/card.rb +8 -8
  121. data/lib/squib/conf.rb +5 -5
  122. data/lib/squib/deck.rb +20 -18
  123. data/lib/squib/graphics/cairo_context_wrapper.rb +3 -3
  124. data/lib/squib/graphics/gradient_regex.rb +1 -1
  125. data/lib/squib/graphics/hand.rb +2 -2
  126. data/lib/squib/graphics/save_doc.rb +9 -8
  127. data/lib/squib/graphics/save_images.rb +24 -11
  128. data/lib/squib/graphics/shapes.rb +16 -17
  129. data/lib/squib/graphics/showcase.rb +9 -9
  130. data/lib/squib/graphics/text.rb +21 -21
  131. data/lib/squib/layout_parser.rb +9 -9
  132. data/lib/squib/layouts/economy.yml +85 -85
  133. data/lib/squib/layouts/fantasy.yml +101 -101
  134. data/lib/squib/layouts/hand.yml +62 -62
  135. data/lib/squib/layouts/playing-card.yml +35 -35
  136. data/lib/squib/layouts/tuck_box.yml +45 -45
  137. data/lib/squib/sample_helpers.rb +1 -1
  138. data/lib/squib/version.rb +1 -1
  139. data/samples/{backend.rb → backend/_backend.rb} +2 -2
  140. data/samples/basic.rb +3 -3
  141. data/samples/bug134.rb +14 -0
  142. data/samples/build_groups/build_groups.rb +36 -0
  143. data/samples/cairo_access.rb +12 -1
  144. data/samples/{colors.rb → colors/_colors.rb} +12 -12
  145. data/samples/{gradients.rb → colors/_gradients.rb} +1 -1
  146. data/samples/config_text_markup.rb +2 -2
  147. data/samples/custom-config.yml +5 -5
  148. data/samples/custom_config.rb +18 -18
  149. data/samples/{csv_import.rb → data/_csv.rb} +8 -1
  150. data/samples/{excel.rb → data/_excel.rb} +3 -3
  151. data/samples/embed_text.rb +21 -0
  152. data/samples/hello_world.rb +1 -1
  153. data/samples/{load_images.rb → images/_more_load_images.rb} +2 -2
  154. data/samples/layouts.rb +11 -1
  155. data/samples/layouts_builtin.rb +51 -51
  156. data/samples/offset.svg +71 -71
  157. data/samples/ranges.rb +7 -7
  158. data/samples/{hand.rb → saves/_hand.rb} +1 -2
  159. data/samples/{portrait-landscape.rb → saves/_portrait_landscape.rb} +4 -4
  160. data/samples/{saves.rb → saves/_saves.rb} +0 -0
  161. data/samples/{showcase.rb → saves/_showcase.rb} +2 -2
  162. data/samples/{draw_shapes.rb → shapes/_draw_shapes.rb} +1 -1
  163. data/samples/text/_text.rb +4 -3
  164. data/samples/text_options.rb +6 -6
  165. data/samples/unicode.rb +1 -1
  166. data/spec/api/api_data_spec.rb +59 -4
  167. data/spec/api/api_settings_spec.rb +1 -1
  168. data/spec/args/box_spec.rb +7 -7
  169. data/spec/args/draw_spec.rb +19 -19
  170. data/spec/args/embed_key_spec.rb +13 -13
  171. data/spec/args/input_file_spec.rb +2 -2
  172. data/spec/args/paint_spec.rb +5 -5
  173. data/spec/args/paragraph_spec.rb +28 -28
  174. data/spec/args/range_spec.rb +1 -1
  175. data/spec/args/save_batch_spec.rb +10 -10
  176. data/spec/args/scale_box_spec.rb +9 -9
  177. data/spec/args/sheet_spec.rb +8 -8
  178. data/spec/args/showcase_special_spec.rb +15 -15
  179. data/spec/args/transform_spec.rb +4 -4
  180. data/spec/args/typographer_spec.rb +11 -11
  181. data/spec/args/unit_conversion_spec.rb +2 -2
  182. data/spec/card_spec.rb +1 -1
  183. data/spec/commands/new_spec.rb +1 -1
  184. data/spec/data/csv/custom_opts.csv +2 -0
  185. data/spec/data/csv/newline.csv +3 -0
  186. data/spec/data/csv/qty.csv +2 -2
  187. data/spec/data/csv/qty_named.csv +2 -2
  188. data/spec/data/csv/with_spaces.csv +2 -2
  189. data/spec/data/csv/yield.csv +3 -0
  190. data/spec/data/samples/{autoscale_font.rb.txt → autoscale_font/_autoscale_font.rb.txt} +55 -18
  191. data/spec/data/samples/cairo_access.rb.txt +24 -0
  192. data/spec/data/samples/{gradients.rb.txt → colors/_gradients.rb.txt} +0 -0
  193. data/spec/data/samples/config_text_markup.rb.txt +72 -72
  194. data/spec/data/samples/custom_config.rb.txt +1 -0
  195. data/spec/data/samples/{csv_import.rb.txt → data/_csv.rb.txt} +0 -0
  196. data/spec/data/samples/{excel.rb.txt → data/_excel.rb.txt} +0 -0
  197. data/spec/data/samples/embed_text.rb.txt +79 -0
  198. data/spec/data/samples/hello_world.rb.txt +36 -36
  199. data/spec/data/samples/{load_images.rb.txt → images/_more_load_images.rb.txt} +4 -4
  200. data/spec/data/samples/{hand.rb.txt → saves/_hand.rb.txt} +0 -0
  201. data/spec/data/samples/{portrait-landscape.rb.txt → saves/_portrait_landscape.rb.txt} +11 -7
  202. data/spec/data/samples/{save_pdf.rb.txt → saves/_save_pdf.rb.txt} +0 -0
  203. data/spec/data/samples/{saves.rb.txt → saves/_saves.rb.txt} +3 -4
  204. data/spec/data/samples/{showcase.rb.txt → saves/_showcase.rb.txt} +0 -0
  205. data/spec/data/samples/{draw_shapes.rb.txt → shapes/_draw_shapes.rb.txt} +0 -0
  206. data/spec/data/samples/text_options.rb.txt +1125 -1125
  207. data/spec/graphics/cairo_context_wrapper_spec.rb +10 -10
  208. data/spec/graphics/graphics_save_doc_spec.rb +11 -5
  209. data/spec/layout_parser_spec.rb +21 -9
  210. data/spec/logger_spec.rb +2 -2
  211. data/spec/samples/run_samples_spec.rb +1 -1
  212. data/spec/samples/samples_regression_spec.rb +16 -18
  213. data/spec/samples/sanity.rb +9 -9
  214. data/spec/sanity/.gitignore +1 -0
  215. data/spec/sanity/sanity.html.erb +42 -0
  216. data/spec/sanity/sanity_test.rb +42 -0
  217. data/spec/sanity/tests.yml +12 -0
  218. data/spec/spec_helper.rb +22 -20
  219. data/squib.gemspec +3 -4
  220. metadata +143 -81
  221. data/.rspec +0 -1
  222. data/.yardopts +0 -10
  223. data/samples/autoscale_font.rb +0 -27
  224. data/samples/backend-config.yml +0 -5
  225. data/samples/color_shortcuts.rb +0 -6
  226. data/samples/explode_quantities.xlsx +0 -0
  227. data/samples/quantity_explosion.csv +0 -3
  228. data/samples/sample.csv +0 -3
  229. data/samples/sample.xlsx +0 -0
  230. data/squib.sublime-project +0 -42
@@ -1,5 +1,5 @@
1
1
  require 'pango'
2
- require 'squib/args/typographer'
2
+ require_relative '../args/typographer'
3
3
 
4
4
  module Squib
5
5
  class Card
@@ -22,12 +22,13 @@ module Squib
22
22
 
23
23
  # :nodoc:
24
24
  # @api private
25
- def compute_valign(layout, valign)
25
+ def compute_valign(layout, valign, embed_h)
26
26
  return 0 unless layout.height > 0
27
27
  ink_extents = layout.extents[1]
28
+ ink_extents.height = embed_h * Pango::SCALE if ink_extents.height == 0 # JUST embed, bug #134
28
29
  case valign.to_s.downcase
29
30
  when 'middle'
30
- Pango.pixels( (layout.height - ink_extents.height) / 2)
31
+ Pango.pixels((layout.height - ink_extents.height) / 2)
31
32
  when 'bottom'
32
33
  Pango.pixels(layout.height - ink_extents.height)
33
34
  else
@@ -50,6 +51,12 @@ module Squib
50
51
  layout.height = height * Pango::SCALE unless height.nil? || height == :auto
51
52
  end
52
53
 
54
+ def max_embed_height(embed_draws)
55
+ embed_draws.inject(0) do |max, ed|
56
+ ed[:h] > max ? ed[:h] : max
57
+ end
58
+ end
59
+
53
60
  # :nodoc:
54
61
  # @api private
55
62
  def next_embed(keys, str)
@@ -66,15 +73,6 @@ module Squib
66
73
  ret_key
67
74
  end
68
75
 
69
- # When we do embedded icons, we create a 3-character string that has a font
70
- # size of zero and a letter-spacing that fits the icon we need. That gives
71
- # us the wrapping behavior we need but no clutter beneath. On most
72
- # platforms, this works fine. On Linux, this creates
73
- # a Cairo transformation matrix that
74
- ZERO_WIDTH_CHAR_SIZE = 0 # this works on most platforms
75
- # some platforms make this Pango pixels (1/1024), others a 1 pt font
76
- ZERO_WIDTH_CHAR_SIZE = 1 if RbConfig::CONFIG['host_os'] === 'linux-gnu'
77
-
78
76
  # :nodoc:
79
77
  # @api private
80
78
  def process_embeds(embed, str, layout)
@@ -87,8 +85,8 @@ module Squib
87
85
  rule = embed.rules[key]
88
86
  spacing = rule[:box].width[@index] * Pango::SCALE
89
87
  kindex = clean_str.index(key)
90
- kindex = clean_str[0..kindex].bytesize #convert to byte index (bug #57)
91
- str = str.sub(key, "<span size=\"#{ZERO_WIDTH_CHAR_SIZE}\">a<span letter_spacing=\"#{spacing.to_i}\">a</span>a</span>")
88
+ kindex = clean_str[0..kindex].bytesize # byte index (bug #57)
89
+ str = str.sub(key, "\u0091<span letter_spacing=\"#{spacing.to_i}\">\u0091</span>\u0091")
92
90
  layout.markup = str
93
91
  clean_str = layout.text
94
92
  searches << { index: kindex, rule: rule }
@@ -97,7 +95,9 @@ module Squib
97
95
  rect = layout.index_to_pos(search[:index])
98
96
  x = Pango.pixels(rect.x) + search[:rule][:adjust].dx[@index]
99
97
  y = Pango.pixels(rect.y) + search[:rule][:adjust].dy[@index]
100
- draw_calls << {x: x, y: y, draw: search[:rule][:draw]} # defer drawing until we've valigned
98
+ h = rule[:box].height[@index]
99
+ draw_calls << { x: x, y: y, h: h, # defer drawing until we've valigned
100
+ draw: search[:rule][:draw] }
101
101
  end
102
102
  return draw_calls
103
103
  end
@@ -131,7 +131,7 @@ module Squib
131
131
  font_desc.size = para.font_size * Pango::SCALE unless para.font_size.nil?
132
132
  layout = cc.create_pango_layout
133
133
  layout.font_description = font_desc
134
- layout.text = para.str
134
+ layout.text = para.str
135
135
  if para.markup
136
136
  para.str = @deck.typographer.process(layout.text)
137
137
  layout.markup = para.str
@@ -148,8 +148,8 @@ module Squib
148
148
 
149
149
  embed_draws = process_embeds(embed, para.str, layout)
150
150
 
151
- vertical_start = compute_valign(layout, para.valign)
152
- cc.move_to(0, vertical_start) #TODO clean this up a bit
151
+ vertical_start = compute_valign(layout, para.valign, max_embed_height(embed_draws))
152
+ cc.move_to(0, vertical_start) # TODO clean this up a bit
153
153
 
154
154
  stroke_outline!(cc, layout, draw) if draw.stroke_strategy == :stroke_first
155
155
  cc.move_to(0, vertical_start)
@@ -158,10 +158,10 @@ module Squib
158
158
  begin
159
159
  embed_draws.each { |ed| ed[:draw].call(self, ed[:x], ed[:y] + vertical_start) }
160
160
  rescue Exception => e
161
- puts "====EXCEPTION!===="
161
+ puts '====EXCEPTION!===='
162
162
  puts e
163
- puts "If this was a non-invertible matrix error, this is a known issue with a potential workaround. Please report it at: https://github.com/andymeneely/squib/issues/55"
164
- puts "=================="
163
+ puts 'If this was a non-invertible matrix error, this is a known issue with a potential workaround. Please report it at: https://github.com/andymeneely/squib/issues/55'
164
+ puts '=================='
165
165
  raise e
166
166
  end
167
167
  draw_text_hint(cc, box.x, box.y, layout, para.hint)
@@ -2,19 +2,19 @@ require 'yaml'
2
2
 
3
3
  module Squib
4
4
  # Internal class for handling layouts
5
- #@api private
5
+ # @api private
6
6
  class LayoutParser
7
7
 
8
8
  # Load the layout file(s), if exists
9
9
  # @api private
10
- def self.load_layout(files)
11
- layout = {}
10
+ def self.load_layout(files, initial = {})
11
+ layout = initial
12
12
  Squib::logger.info { " using layout(s): #{files}" }
13
13
  Array(files).each do |file|
14
14
  thefile = file
15
15
  thefile = builtin(file) unless File.exists?(file)
16
16
  if File.exists? thefile
17
- yml = layout.merge(YAML.load_file(thefile) || {}) #load_file returns false on empty file
17
+ yml = layout.merge(YAML.load_file(thefile) || {}) # load_file returns false on empty file
18
18
  yml.each do |key, value|
19
19
  layout[key] = recurse_extends(yml, key, {})
20
20
  end
@@ -33,7 +33,7 @@ module Squib
33
33
  # Process the extends recursively
34
34
  # :nodoc:
35
35
  # @api private
36
- def self.recurse_extends(yml, key, visited )
36
+ def self.recurse_extends(yml, key, visited)
37
37
  assert_not_visited(key, visited)
38
38
  return yml[key] unless has_extends?(yml, key)
39
39
  return yml[key] unless parents_exist?(yml, key)
@@ -43,15 +43,15 @@ module Squib
43
43
  parent_keys.each do |parent_key|
44
44
  from_extends = yml[key].merge(recurse_extends(yml, parent_key, visited)) do |key, child_val, parent_val|
45
45
  if child_val.to_s.strip.start_with?('+=')
46
- parent_val + child_val.sub('+=','').strip.to_f
46
+ parent_val + child_val.sub('+=', '').strip.to_f
47
47
  elsif child_val.to_s.strip.start_with?('-=')
48
- parent_val - child_val.sub('-=','').strip.to_f
48
+ parent_val - child_val.sub('-=', '').strip.to_f
49
49
  else
50
- child_val #child overrides parent when merging, no +=
50
+ child_val # child overrides parent when merging, no +=
51
51
  end
52
52
  end
53
53
  h = h.merge(from_extends) do |key, older_sibling, younger_sibling|
54
- younger_sibling #when two siblings have the same entry, the "younger" (lower one) overrides
54
+ younger_sibling # when two siblings have the same entry, the "younger" (lower one) overrides
55
55
  end
56
56
  end
57
57
  return h
@@ -1,85 +1,85 @@
1
- #This layout inspired by popular fantasy games
2
- title:
3
- x: 90
4
- y: 90
5
- width: 635
6
- height: 50
7
- align: center
8
-
9
- art:
10
- x: 75
11
- y: 150
12
- width: 675
13
- height: 520
14
-
15
- description:
16
- x: 100
17
- y: 675
18
- width: 625
19
- height: 275
20
- valign: middle
21
- align: center
22
- font_size: 18
23
- desc: # alias
24
- extends: description
25
-
26
- type:
27
- x: 90
28
- y: 955
29
- width: 645
30
- height: 50
31
- align: center
32
-
33
- lower_right:
34
- x: 675
35
- y: 975
36
- width: 75
37
- height: 75
38
- font_size: 18
39
- valign: bottom
40
- align: right
41
- lr: #alias
42
- extends: lower_right
43
-
44
- lower_left:
45
- x: 75
46
- y: 975
47
- width: 75
48
- height: 75
49
- font_size: 18
50
- valign: bottom
51
- align: left
52
- ll: # alias
53
- extends: lower_left
54
-
55
- copyright:
56
- x: 75
57
- y: 1025
58
- width: 675
59
- height: 25
60
- font_size: 16
61
- align: center
62
- valign: bottom
63
- #aliases for copyright
64
- copy:
65
- extends: copyright
66
- credit:
67
- extends: copyright
68
- credits:
69
- extends: copyright
70
-
71
- # The "cut line", without rounded corners
72
- cut:
73
- x: 37.5
74
- y: 37.5
75
- width: 750
76
- height: 1050
77
-
78
- # The "safe zone" as defined by TheGameCrafter poker cards
79
- safe:
80
- x: 75
81
- y: 75
82
- width: 675
83
- height: 975
84
- radius: 16
85
- dash: 3 3
1
+ #This layout inspired by popular fantasy games
2
+ title:
3
+ x: 90
4
+ y: 90
5
+ width: 635
6
+ height: 50
7
+ align: center
8
+
9
+ art:
10
+ x: 75
11
+ y: 150
12
+ width: 675
13
+ height: 520
14
+
15
+ description:
16
+ x: 100
17
+ y: 675
18
+ width: 625
19
+ height: 275
20
+ valign: middle
21
+ align: center
22
+ font_size: 18
23
+ desc: # alias
24
+ extends: description
25
+
26
+ type:
27
+ x: 90
28
+ y: 955
29
+ width: 645
30
+ height: 50
31
+ align: center
32
+
33
+ lower_right:
34
+ x: 675
35
+ y: 975
36
+ width: 75
37
+ height: 75
38
+ font_size: 18
39
+ valign: bottom
40
+ align: right
41
+ lr: #alias
42
+ extends: lower_right
43
+
44
+ lower_left:
45
+ x: 75
46
+ y: 975
47
+ width: 75
48
+ height: 75
49
+ font_size: 18
50
+ valign: bottom
51
+ align: left
52
+ ll: # alias
53
+ extends: lower_left
54
+
55
+ copyright:
56
+ x: 75
57
+ y: 1025
58
+ width: 675
59
+ height: 25
60
+ font_size: 16
61
+ align: center
62
+ valign: bottom
63
+ #aliases for copyright
64
+ copy:
65
+ extends: copyright
66
+ credit:
67
+ extends: copyright
68
+ credits:
69
+ extends: copyright
70
+
71
+ # The "cut line", without rounded corners
72
+ cut:
73
+ x: 37.5
74
+ y: 37.5
75
+ width: 750
76
+ height: 1050
77
+
78
+ # The "safe zone" as defined by TheGameCrafter poker cards
79
+ safe:
80
+ x: 75
81
+ y: 75
82
+ width: 675
83
+ height: 975
84
+ radius: 16
85
+ dash: 3 3
@@ -1,101 +1,101 @@
1
- #This layout inspired by popular fantasy games
2
- title:
3
- x: 90
4
- y: 90
5
- width: 500
6
- height: 50
7
-
8
- upper_right:
9
- x: 595
10
- y: 90
11
- width: 135
12
- height: 50
13
- align: right
14
- ur: # alias
15
- extends: upper_right
16
-
17
- art:
18
- x: 75
19
- y: 150
20
- width: 675
21
- height: 520
22
-
23
- type:
24
- x: 90
25
- y: 675
26
- width: 500
27
- height: 50
28
-
29
- type_right:
30
- x: 595
31
- y: 675
32
- width: 135
33
- height: 50
34
- align: right
35
- tr: #alias
36
- extends: type_right
37
-
38
- description:
39
- x: 100
40
- y: 730
41
- width: 625
42
- height: 275
43
- valign: middle
44
- align: center
45
- font_size: 18
46
- desc: # alias
47
- extends: description
48
-
49
- lower_right:
50
- x: 675
51
- y: 975
52
- width: 75
53
- height: 75
54
- font_size: 18
55
- valign: bottom
56
- align: right
57
- lr: #alias
58
- extends: lower_right
59
-
60
- lower_left:
61
- x: 75
62
- y: 975
63
- width: 75
64
- height: 75
65
- font_size: 18
66
- valign: bottom
67
- align: left
68
- ll: # alias
69
- extends: lower_left
70
-
71
- copyright:
72
- x: 75
73
- y: 1025
74
- width: 675
75
- height: 25
76
- font_size: 16
77
- align: center
78
- valign: bottom
79
- #aliases for copyright
80
- copy:
81
- extends: copyright
82
- credit:
83
- extends: copyright
84
- credits:
85
- extends: copyright
86
-
87
- # The "cut line", without rounded corners
88
- cut:
89
- x: 37.5
90
- y: 37.5
91
- width: 750
92
- height: 1050
93
-
94
- # The "safe zone" as defined by TheGameCrafter poker cards
95
- safe:
96
- x: 75
97
- y: 75
98
- width: 675
99
- height: 975
100
- radius: 16
101
- dash: 3 3
1
+ #This layout inspired by popular fantasy games
2
+ title:
3
+ x: 90
4
+ y: 90
5
+ width: 500
6
+ height: 50
7
+
8
+ upper_right:
9
+ x: 595
10
+ y: 90
11
+ width: 135
12
+ height: 50
13
+ align: right
14
+ ur: # alias
15
+ extends: upper_right
16
+
17
+ art:
18
+ x: 75
19
+ y: 150
20
+ width: 675
21
+ height: 520
22
+
23
+ type:
24
+ x: 90
25
+ y: 675
26
+ width: 500
27
+ height: 50
28
+
29
+ type_right:
30
+ x: 595
31
+ y: 675
32
+ width: 135
33
+ height: 50
34
+ align: right
35
+ tr: #alias
36
+ extends: type_right
37
+
38
+ description:
39
+ x: 100
40
+ y: 730
41
+ width: 625
42
+ height: 275
43
+ valign: middle
44
+ align: center
45
+ font_size: 18
46
+ desc: # alias
47
+ extends: description
48
+
49
+ lower_right:
50
+ x: 675
51
+ y: 975
52
+ width: 75
53
+ height: 75
54
+ font_size: 18
55
+ valign: bottom
56
+ align: right
57
+ lr: #alias
58
+ extends: lower_right
59
+
60
+ lower_left:
61
+ x: 75
62
+ y: 975
63
+ width: 75
64
+ height: 75
65
+ font_size: 18
66
+ valign: bottom
67
+ align: left
68
+ ll: # alias
69
+ extends: lower_left
70
+
71
+ copyright:
72
+ x: 75
73
+ y: 1025
74
+ width: 675
75
+ height: 25
76
+ font_size: 16
77
+ align: center
78
+ valign: bottom
79
+ #aliases for copyright
80
+ copy:
81
+ extends: copyright
82
+ credit:
83
+ extends: copyright
84
+ credits:
85
+ extends: copyright
86
+
87
+ # The "cut line", without rounded corners
88
+ cut:
89
+ x: 37.5
90
+ y: 37.5
91
+ width: 750
92
+ height: 1050
93
+
94
+ # The "safe zone" as defined by TheGameCrafter poker cards
95
+ safe:
96
+ x: 75
97
+ y: 75
98
+ width: 675
99
+ height: 975
100
+ radius: 16
101
+ dash: 3 3