diff --git a/lib/squib/api/image.rb b/lib/squib/api/image.rb index ead819f..bccbd52 100644 --- a/lib/squib/api/image.rb +++ b/lib/squib/api/image.rb @@ -2,7 +2,9 @@ module Squib class Deck def png(range=:all, file: nil, x: 0, y: 0) - raise 'Not implemented!' + range = rangeify(range) + file = fileify(file) + range.each{ |i| @cards[i].png(file, x, y) } end end diff --git a/lib/squib/card.rb b/lib/squib/card.rb index 51d6cad..52f96e0 100644 --- a/lib/squib/card.rb +++ b/lib/squib/card.rb @@ -16,6 +16,7 @@ module Squib ### BACKEND GRAPHICS ### ######################## require 'squib/graphics/background' + require 'squib/graphics/image' require 'squib/graphics/save_doc' require 'squib/graphics/save_images' require 'squib/graphics/shapes' diff --git a/lib/squib/deck.rb b/lib/squib/deck.rb index 578d341..b43196c 100644 --- a/lib/squib/deck.rb +++ b/lib/squib/deck.rb @@ -30,6 +30,11 @@ module Squib return range end + def fileify(file) + raise 'File #{file} does not exist!' unless File.exists? file + file + end + ################## ### PUBLIC API ### ################## diff --git a/lib/squib/graphics/image.rb b/lib/squib/graphics/image.rb new file mode 100644 index 0000000..ebd7a09 --- /dev/null +++ b/lib/squib/graphics/image.rb @@ -0,0 +1,12 @@ +module Squib + class Card + + def png(file, x, y) + cc = cairo_context + png = Cairo::ImageSurface.from_png(file) + cc.set_source(png, x, y) + cc.paint + end + + end +end \ No newline at end of file diff --git a/samples/basic.rb b/samples/basic.rb index 88fca10..70524ea 100644 --- a/samples/basic.rb +++ b/samples/basic.rb @@ -8,12 +8,14 @@ longtext = "Hello, World! What do you know about tweetle beetles? well... \nWhen Squib::Deck.new(width: 825, height: 1125, cards: 3) do background color: [1.0,1.0,1.0] rect x: 15, y: 15, width: 795, height: 1095, x_radius: 50, y_radius: 50 - rect x: 30, y: 30, width: 150, height: 150, x_radius: 25, y_radius: 25 + rect x: 30, y: 30, width: 128, height: 128, x_radius: 25, y_radius: 25 text str: data['name'], x: 250, y: 55, font: 'Arial 54' - text str: data['level'], x: 75, y: 50, font: 'Arial 72' + text str: data['level'], x: 65, y: 40, font: 'Arial 72' text str: longtext, x: 100, y: 600, font: 'Arial 16' + png file: 'shiny-purse.png', x: 665, y: 30 + save format: :png end diff --git a/samples/shiny-purse.png b/samples/shiny-purse.png new file mode 100644 index 0000000..ac3ae19 Binary files /dev/null and b/samples/shiny-purse.png differ