squib 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
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