lots more cleanups, skeleton project file
This commit is contained in:
parent
cf9b2c224f
commit
e0c0e0eb14
18
README.md
18
README.md
@ -1,6 +1,18 @@
|
|||||||
# Process Inkscape files and create sets of cards for board games
|
# Process Inkscape files and create sets of cards for board games
|
||||||
|
|
||||||
Not much in the way of docs yet. You'll need `inkscape`, `convert`, `montage`, and `gs` in your `PATH`.
|
You'll need `inkscape`, `convert`, `montage`, and `gs` in your `PATH`.
|
||||||
|
|
||||||
|
## Initialize a starter project
|
||||||
|
|
||||||
|
Install the gem globally with `gem install svggvs` and then run `svggvs install <project>` where `project`
|
||||||
|
is the name of the directory to place the skeleton project files. You'll get a few files in there:
|
||||||
|
|
||||||
|
* `template.svg`, an Inkscape template that shoows how to do the basic SVGGVS template setup
|
||||||
|
* `Cardfile`, the file SVGGVS uses to define each card for printing
|
||||||
|
* `Gemfile`, in case you need additional gems. It has SVGGVS added already, but you may also want remote
|
||||||
|
data gems like `google_drive`, for instance.
|
||||||
|
|
||||||
|
## How it works
|
||||||
|
|
||||||
Create a `Cardfile` in your working directory. It should look
|
Create a `Cardfile` in your working directory. It should look
|
||||||
something like this:
|
something like this:
|
||||||
@ -21,10 +33,6 @@ something like this:
|
|||||||
end
|
end
|
||||||
|
|
||||||
@session.process do
|
@session.process do
|
||||||
require 'google_drive'
|
|
||||||
require 'virtus'
|
|
||||||
require 'active_support/inflector'
|
|
||||||
|
|
||||||
require './card_definitions.rb'
|
require './card_definitions.rb'
|
||||||
|
|
||||||
CardDefinitions.processed.each do |card|
|
CardDefinitions.processed.each do |card|
|
||||||
|
26
bin/svggvs
26
bin/svggvs
@ -7,8 +7,19 @@ require_relative '../lib/svggvs'
|
|||||||
|
|
||||||
module SVGGVS
|
module SVGGVS
|
||||||
class Cli < Thor
|
class Cli < Thor
|
||||||
|
include Thor::Actions
|
||||||
|
|
||||||
|
def self.source_root
|
||||||
|
::File.expand_path('../../skel', __FILE__)
|
||||||
|
end
|
||||||
|
|
||||||
class_option :cardfile, default: 'Cardfile'
|
class_option :cardfile, default: 'Cardfile'
|
||||||
|
|
||||||
|
desc "install [ dir ]", "Install a Cardfile and sample template"
|
||||||
|
def install(dir = '.')
|
||||||
|
directory '.', dir
|
||||||
|
end
|
||||||
|
|
||||||
desc "merged_file", "Write out a merged file"
|
desc "merged_file", "Write out a merged file"
|
||||||
def merged_file
|
def merged_file
|
||||||
context.write_merged_file
|
context.write_merged_file
|
||||||
@ -36,12 +47,6 @@ module SVGGVS
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
no_tasks do
|
|
||||||
def tmp_target_for(file)
|
|
||||||
tmp_path.join(Digest::MD5.hexdigest(file.to_s) + '.png')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
desc "pdf", "Create PDF of card images"
|
desc "pdf", "Create PDF of card images"
|
||||||
def pdf
|
def pdf
|
||||||
pngs
|
pngs
|
||||||
@ -58,9 +63,14 @@ module SVGGVS
|
|||||||
|
|
||||||
page_count = trimmed_pngs.length / 9
|
page_count = trimmed_pngs.length / 9
|
||||||
|
|
||||||
|
placeholder = tmp_target_for("placeholder.png")
|
||||||
|
system %{convert -size #{context.session.pdf_card_size} xc:white #{placeholder}}
|
||||||
|
|
||||||
pages = png_slices.each_with_index.collect do |files, page_index|
|
pages = png_slices.each_with_index.collect do |files, page_index|
|
||||||
tmp_pdf_target = tmp_path.join("page%05d.pdf" % page_index)
|
tmp_pdf_target = tmp_path.join("page%05d.pdf" % page_index)
|
||||||
|
|
||||||
|
files += Array.new(9 - files.length, placeholder)
|
||||||
|
|
||||||
system %{montage -density #{context.session.pdf_dpi} -geometry +0+0 #{files.join(' ')} #{tmp_pdf_target}}
|
system %{montage -density #{context.session.pdf_dpi} -geometry +0+0 #{files.join(' ')} #{tmp_pdf_target}}
|
||||||
|
|
||||||
tmp_pdf_target
|
tmp_pdf_target
|
||||||
@ -84,6 +94,10 @@ module SVGGVS
|
|||||||
end
|
end
|
||||||
|
|
||||||
no_tasks do
|
no_tasks do
|
||||||
|
def tmp_target_for(file)
|
||||||
|
tmp_path.join(Digest::MD5.hexdigest(file.to_s) + '.png')
|
||||||
|
end
|
||||||
|
|
||||||
def tmp_path
|
def tmp_path
|
||||||
@tmp_path ||= Pathname(".tmp")
|
@tmp_path ||= Pathname(".tmp")
|
||||||
end
|
end
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
require 'svggvs/file'
|
require_relative './svggvs/file'
|
||||||
require 'svggvs/target'
|
require_relative './svggvs/target'
|
||||||
require 'svggvs/context'
|
require_relative './svggvs/context'
|
||||||
require 'svggvs/session'
|
require_relative './svggvs/session'
|
||||||
|
|
||||||
module SVGGVS
|
module SVGGVS
|
||||||
end
|
end
|
||||||
|
37
skel/Cardfile
Normal file
37
skel/Cardfile
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
@session.configure do |c|
|
||||||
|
c.svg_source = "template.svg"
|
||||||
|
c.svg_merged_target = "merged-template.svg"
|
||||||
|
|
||||||
|
c.png_export_width = 825
|
||||||
|
|
||||||
|
c.pdf_dpi = 300
|
||||||
|
c.pdf_card_size = "750x1050"
|
||||||
|
|
||||||
|
c.individual_files_path = "svgout/output_%03d.svg"
|
||||||
|
|
||||||
|
c.png_files_path = "pngout-svggvs/output_%03d.png"
|
||||||
|
|
||||||
|
c.pdf_target = "pnp/game.pdf"
|
||||||
|
end
|
||||||
|
|
||||||
|
card_data = [
|
||||||
|
{
|
||||||
|
active_layers: [ 'Action', 'Puppy', 'Name', 'Background' ],
|
||||||
|
replacements: { 'Name' => 'Woofie', 'Action' => 'Bark at the person who is ringing the doorbell.' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
active_layers: [ 'Action', 'Kitten', 'Name', 'Background' ],
|
||||||
|
replacements: { 'Name' => 'Hisshead', 'Action' => "Demand food by clawing at your owner's lap." }
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
@session.process do
|
||||||
|
card_data.each do |card|
|
||||||
|
@session.with_new_target do |target|
|
||||||
|
target.active_layers = card[:active_layers]
|
||||||
|
target.replacements = card[:replacements]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
3
skel/Gemfile
Normal file
3
skel/Gemfile
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
|
gem 'svggvs'
|
585
skel/template.svg
Normal file
585
skel/template.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 50 KiB |
Loading…
Reference in New Issue
Block a user