From 6c1d32a8cd7cc9fa5d4d2858dab3c160232826f2 Mon Sep 17 00:00:00 2001 From: Andy Meneely Date: Wed, 16 Jul 2014 23:14:56 -0400 Subject: [PATCH] Adding in a png method --- lib/squib/api/image.rb | 4 +++- lib/squib/card.rb | 1 + lib/squib/deck.rb | 5 +++++ lib/squib/graphics/image.rb | 12 ++++++++++++ samples/basic.rb | 6 ++++-- samples/shiny-purse.png | Bin 0 -> 2766 bytes 6 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 lib/squib/graphics/image.rb create mode 100644 samples/shiny-purse.png 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 0000000000000000000000000000000000000000..ac3ae194aecd5c1066ae1a978cf11eb2cecae1b7 GIT binary patch literal 2766 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 literal 0 HcmV?d00001