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.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/.gitmodules +22 -0
- data/.travis.yml +4 -5
- data/CHANGELOG.md +23 -0
- data/CONTRIBUTING.md +40 -0
- data/README.md +25 -553
- data/RELEASE TODO.md +2 -2
- data/Rakefile +6 -64
- data/appveyor.yml +0 -4
- data/benchmarks/antialias_best.rb +2 -2
- data/benchmarks/antialias_fast.rb +2 -2
- data/benchmarks/{backend-memory.rb → backend_memory.rb} +2 -2
- data/benchmarks/{backend-svg.rb → backend_svg.rb} +2 -2
- data/benchmarks/tons_of_png.rb +1 -1
- data/benchmarks/tons_of_svg.rb +1 -1
- data/benchmarks/tons_of_text.rb +1 -1
- data/docs/Makefile +216 -0
- data/docs/_static/css/squibdocs.css +18 -0
- data/docs/args/draw.rst +36 -0
- data/docs/args/expansion.rst +3 -0
- data/docs/args/layout.rst +6 -0
- data/docs/args/output_dir.rst +6 -0
- data/docs/args/range.rst +6 -0
- data/docs/args/transform.rst +51 -0
- data/docs/args/trim.rst +11 -0
- data/docs/args/wh.rst +12 -0
- data/docs/args/xy.rst +12 -0
- data/docs/arrays.rst +77 -0
- data/docs/backends.rst +20 -0
- data/docs/bleed.rst +13 -0
- data/docs/build_groups.rst +47 -0
- data/docs/colors.rst +64 -0
- data/docs/conf.py +287 -0
- data/docs/config.rst +117 -0
- data/docs/data.rst +22 -0
- data/docs/dsl/background.rst +20 -0
- data/docs/dsl/build.rst +32 -0
- data/docs/dsl/build_groups.rst +23 -0
- data/docs/dsl/circle.rst +27 -0
- data/docs/dsl/cm.rst +19 -0
- data/docs/dsl/csv.rst +62 -0
- data/docs/dsl/curve.rst +63 -0
- data/docs/dsl/deck.rst +45 -0
- data/docs/dsl/disable_build.rst +28 -0
- data/docs/dsl/ellipse.rst +17 -0
- data/docs/dsl/enable_build.rst +25 -0
- data/docs/dsl/grid.rst +31 -0
- data/docs/dsl/hand.rst +40 -0
- data/docs/dsl/hint.rst +15 -0
- data/docs/dsl/inches.rst +19 -0
- data/docs/dsl/index.rst +9 -0
- data/docs/dsl/line.rst +52 -0
- data/docs/dsl/png.rst +49 -0
- data/docs/dsl/polygon.rst +28 -0
- data/docs/dsl/rect.rst +18 -0
- data/docs/dsl/save.rst +23 -0
- data/docs/dsl/save_pdf.rst +48 -0
- data/docs/dsl/save_png.rst +46 -0
- data/docs/dsl/save_sheet.rst +55 -0
- data/docs/dsl/showcase.rst +65 -0
- data/docs/dsl/star.rst +35 -0
- data/docs/dsl/svg.rst +119 -0
- data/docs/dsl/text.rst +294 -0
- data/docs/dsl/triangle.rst +38 -0
- data/docs/dsl/use_layout.rst +16 -0
- data/docs/dsl/xlsx.rst +50 -0
- data/docs/guides/game_icons.rst +2 -0
- data/docs/guides/getting-started/index.rst +5 -0
- data/docs/guides/getting-started/part_0_learning_ruby.rst +145 -0
- data/docs/guides/getting-started/part_1_zero_to_game.rst +216 -0
- data/docs/guides/getting-started/part_2_iconography.rst +152 -0
- data/docs/guides/getting-started/part_3_workflows.rst +4 -0
- data/docs/guides/git.rst +13 -0
- data/docs/guides/hello_world.rst +6 -0
- data/docs/help.rst +157 -0
- data/docs/index.rst +35 -0
- data/docs/install.rst +66 -0
- data/docs/layouts.rst +235 -0
- data/docs/learning.rst +10 -0
- data/docs/make.bat +263 -0
- data/docs/parameters.rst +26 -0
- data/docs/server.bat +1 -0
- data/docs/text_feature.rst +86 -0
- data/docs/units.rst +6 -0
- data/lib/squib.rb +4 -4
- data/lib/squib/api/background.rb +5 -10
- data/lib/squib/api/data.rb +30 -54
- data/lib/squib/api/groups.rb +47 -0
- data/lib/squib/api/image.rb +8 -67
- data/lib/squib/api/save.rb +15 -105
- data/lib/squib/api/settings.rb +8 -22
- data/lib/squib/api/shapes.rb +15 -185
- data/lib/squib/api/text.rb +9 -49
- data/lib/squib/api/text_embed.rb +12 -12
- data/lib/squib/api/units.rb +3 -17
- data/lib/squib/args/arg_loader.rb +6 -6
- data/lib/squib/args/box.rb +2 -2
- data/lib/squib/args/card_range.rb +1 -1
- data/lib/squib/args/color_validator.rb +2 -2
- data/lib/squib/args/coords.rb +2 -2
- data/lib/squib/args/csv_opts.rb +25 -0
- data/lib/squib/args/dir_validator.rb +1 -1
- data/lib/squib/args/draw.rb +2 -2
- data/lib/squib/args/embed_adjust.rb +1 -1
- data/lib/squib/args/embed_key.rb +1 -1
- data/lib/squib/args/hand_special.rb +37 -37
- data/lib/squib/args/import.rb +2 -2
- data/lib/squib/args/input_file.rb +1 -1
- data/lib/squib/args/paint.rb +3 -3
- data/lib/squib/args/paragraph.rb +2 -2
- data/lib/squib/args/save_batch.rb +2 -2
- data/lib/squib/args/scale_box.rb +1 -1
- data/lib/squib/args/sheet.rb +3 -3
- data/lib/squib/args/showcase_special.rb +2 -2
- data/lib/squib/args/svg_special.rb +1 -1
- data/lib/squib/args/transform.rb +2 -2
- data/lib/squib/args/typographer.rb +5 -4
- data/lib/squib/args/unit_conversion.rb +4 -4
- data/lib/squib/card.rb +8 -8
- data/lib/squib/conf.rb +5 -5
- data/lib/squib/deck.rb +20 -18
- data/lib/squib/graphics/cairo_context_wrapper.rb +3 -3
- data/lib/squib/graphics/gradient_regex.rb +1 -1
- data/lib/squib/graphics/hand.rb +2 -2
- data/lib/squib/graphics/save_doc.rb +9 -8
- data/lib/squib/graphics/save_images.rb +24 -11
- data/lib/squib/graphics/shapes.rb +16 -17
- data/lib/squib/graphics/showcase.rb +9 -9
- data/lib/squib/graphics/text.rb +21 -21
- data/lib/squib/layout_parser.rb +9 -9
- data/lib/squib/layouts/economy.yml +85 -85
- data/lib/squib/layouts/fantasy.yml +101 -101
- data/lib/squib/layouts/hand.yml +62 -62
- data/lib/squib/layouts/playing-card.yml +35 -35
- data/lib/squib/layouts/tuck_box.yml +45 -45
- data/lib/squib/sample_helpers.rb +1 -1
- data/lib/squib/version.rb +1 -1
- data/samples/{backend.rb → backend/_backend.rb} +2 -2
- data/samples/basic.rb +3 -3
- data/samples/bug134.rb +14 -0
- data/samples/build_groups/build_groups.rb +36 -0
- data/samples/cairo_access.rb +12 -1
- data/samples/{colors.rb → colors/_colors.rb} +12 -12
- data/samples/{gradients.rb → colors/_gradients.rb} +1 -1
- data/samples/config_text_markup.rb +2 -2
- data/samples/custom-config.yml +5 -5
- data/samples/custom_config.rb +18 -18
- data/samples/{csv_import.rb → data/_csv.rb} +8 -1
- data/samples/{excel.rb → data/_excel.rb} +3 -3
- data/samples/embed_text.rb +21 -0
- data/samples/hello_world.rb +1 -1
- data/samples/{load_images.rb → images/_more_load_images.rb} +2 -2
- data/samples/layouts.rb +11 -1
- data/samples/layouts_builtin.rb +51 -51
- data/samples/offset.svg +71 -71
- data/samples/ranges.rb +7 -7
- data/samples/{hand.rb → saves/_hand.rb} +1 -2
- data/samples/{portrait-landscape.rb → saves/_portrait_landscape.rb} +4 -4
- data/samples/{saves.rb → saves/_saves.rb} +0 -0
- data/samples/{showcase.rb → saves/_showcase.rb} +2 -2
- data/samples/{draw_shapes.rb → shapes/_draw_shapes.rb} +1 -1
- data/samples/text/_text.rb +4 -3
- data/samples/text_options.rb +6 -6
- data/samples/unicode.rb +1 -1
- data/spec/api/api_data_spec.rb +59 -4
- data/spec/api/api_settings_spec.rb +1 -1
- data/spec/args/box_spec.rb +7 -7
- data/spec/args/draw_spec.rb +19 -19
- data/spec/args/embed_key_spec.rb +13 -13
- data/spec/args/input_file_spec.rb +2 -2
- data/spec/args/paint_spec.rb +5 -5
- data/spec/args/paragraph_spec.rb +28 -28
- data/spec/args/range_spec.rb +1 -1
- data/spec/args/save_batch_spec.rb +10 -10
- data/spec/args/scale_box_spec.rb +9 -9
- data/spec/args/sheet_spec.rb +8 -8
- data/spec/args/showcase_special_spec.rb +15 -15
- data/spec/args/transform_spec.rb +4 -4
- data/spec/args/typographer_spec.rb +11 -11
- data/spec/args/unit_conversion_spec.rb +2 -2
- data/spec/card_spec.rb +1 -1
- data/spec/commands/new_spec.rb +1 -1
- data/spec/data/csv/custom_opts.csv +2 -0
- data/spec/data/csv/newline.csv +3 -0
- data/spec/data/csv/qty.csv +2 -2
- data/spec/data/csv/qty_named.csv +2 -2
- data/spec/data/csv/with_spaces.csv +2 -2
- data/spec/data/csv/yield.csv +3 -0
- data/spec/data/samples/{autoscale_font.rb.txt → autoscale_font/_autoscale_font.rb.txt} +55 -18
- data/spec/data/samples/cairo_access.rb.txt +24 -0
- data/spec/data/samples/{gradients.rb.txt → colors/_gradients.rb.txt} +0 -0
- data/spec/data/samples/config_text_markup.rb.txt +72 -72
- data/spec/data/samples/custom_config.rb.txt +1 -0
- data/spec/data/samples/{csv_import.rb.txt → data/_csv.rb.txt} +0 -0
- data/spec/data/samples/{excel.rb.txt → data/_excel.rb.txt} +0 -0
- data/spec/data/samples/embed_text.rb.txt +79 -0
- data/spec/data/samples/hello_world.rb.txt +36 -36
- data/spec/data/samples/{load_images.rb.txt → images/_more_load_images.rb.txt} +4 -4
- data/spec/data/samples/{hand.rb.txt → saves/_hand.rb.txt} +0 -0
- data/spec/data/samples/{portrait-landscape.rb.txt → saves/_portrait_landscape.rb.txt} +11 -7
- data/spec/data/samples/{save_pdf.rb.txt → saves/_save_pdf.rb.txt} +0 -0
- data/spec/data/samples/{saves.rb.txt → saves/_saves.rb.txt} +3 -4
- data/spec/data/samples/{showcase.rb.txt → saves/_showcase.rb.txt} +0 -0
- data/spec/data/samples/{draw_shapes.rb.txt → shapes/_draw_shapes.rb.txt} +0 -0
- data/spec/data/samples/text_options.rb.txt +1125 -1125
- data/spec/graphics/cairo_context_wrapper_spec.rb +10 -10
- data/spec/graphics/graphics_save_doc_spec.rb +11 -5
- data/spec/layout_parser_spec.rb +21 -9
- data/spec/logger_spec.rb +2 -2
- data/spec/samples/run_samples_spec.rb +1 -1
- data/spec/samples/samples_regression_spec.rb +16 -18
- data/spec/samples/sanity.rb +9 -9
- data/spec/sanity/.gitignore +1 -0
- data/spec/sanity/sanity.html.erb +42 -0
- data/spec/sanity/sanity_test.rb +42 -0
- data/spec/sanity/tests.yml +12 -0
- data/spec/spec_helper.rb +22 -20
- data/squib.gemspec +3 -4
- metadata +143 -81
- data/.rspec +0 -1
- data/.yardopts +0 -10
- data/samples/autoscale_font.rb +0 -27
- data/samples/backend-config.yml +0 -5
- data/samples/color_shortcuts.rb +0 -6
- data/samples/explode_quantities.xlsx +0 -0
- data/samples/quantity_explosion.csv +0 -3
- data/samples/sample.csv +0 -3
- data/samples/sample.xlsx +0 -0
- data/squib.sublime-project +0 -42
data/lib/squib/graphics/text.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require 'pango'
|
|
2
|
-
|
|
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(
|
|
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 #
|
|
91
|
-
str = str.sub(key, "
|
|
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
|
-
|
|
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
|
|
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
|
|
161
|
+
puts '====EXCEPTION!===='
|
|
162
162
|
puts e
|
|
163
|
-
puts
|
|
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)
|
data/lib/squib/layout_parser.rb
CHANGED
|
@@ -2,19 +2,19 @@ require 'yaml'
|
|
|
2
2
|
|
|
3
3
|
module Squib
|
|
4
4
|
# Internal class for handling layouts
|
|
5
|
-
|
|
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
|