Browse Source

Got the example workingrake install && squib-eg

dev
Andy Meneely 12 years ago
parent
commit
468f13b513
  1. 1
      .gitignore
  2. 5
      bin/squib-eg
  3. 42
      lib/squib.rb
  4. 2
      lib/squib/card.rb
  5. 20
      lib/squib/deck.rb
  6. 18
      lib/squib/graphics/save.rb
  7. 23
      lib/squib/graphics/text.rb
  8. 7
      lib/squib/graphics/text_cmd.rb

1
.gitignore vendored

@ -21,3 +21,4 @@ tmp
*.o *.o
*.a *.a
mkmf.log mkmf.log
_img

5
bin/squib-eg

@ -1,11 +1,12 @@
#!/usr/bin/env ruby #!/usr/bin/env ruby
require 'squib' require 'squib'
deck width: 825, height: 1125, 3 deck width: 825, height: 1125, cards: 3
data = {'name' => ['Thief', 'Grifter', 'Mastermind'], data = {'name' => ['Thief', 'Grifter', 'Mastermind'],
'level' => [1,2,3]} 'level' => [1,2,3]}
text str: data['name'], x: 10, y: 250 text str: data['name'], x: 10, y: 250
text str: data['level'], x: 10, y:10 text str: data['level'], x: 10, y:10
save format: :png

42
lib/squib.rb

@ -1,8 +1,19 @@
require 'squib/commands/text_cmd' require 'squib/graphics/text'
require 'squib/graphics/save'
require 'squib/deck'
require 'squib/card'
require 'singleton'
class Squib module Squib
attr_accessor :the_deck @@the_deck = nil
def self.the_deck=(d)
@@the_deck = d
end
def self.the_deck
@@the_deck
end
end end
################## ##################
@ -10,37 +21,38 @@ end
################## ##################
def deck(width: , height: , cards: 1) def deck(width: , height: , cards: 1)
Squib.the_deck = Deck.new(width, height, cards) Squib::the_deck = Squib::Deck.new(width, height, cards)
end end
def font(type: , size: 12, **options) def font(type: , size: 12, **options)
Font.new()
end end
def set_font(type: 'Arial', size: 12, **options) def set_font(type: 'Arial', size: 12, **options)
Squib::queue_command Squib::Commands::SetFont.new(type,size,options) Squib::queue_command Squib::Graphics::SetFont.new(type,size,options)
end end
def text(range=:all, str: , font: :use_set, x: 0, y: 0, **options) def text(range=:all, str: , font: :use_set, x: 0, y: 0, **options)
range = 0..cards-1 if range == :all deck = Squib::the_deck
str = [str] * cards unless str.respond_to? :each range = 0..(deck.num_cards-1) if range == :all
#TODO define a singleton or something for the deck we're working on. str = [str] * deck.num_cards unless str.respond_to? :each
str.each{ |s| Squib::Graphics::Text.new(card, s, font, x, y, options) } range.each do |i|
Squib::Graphics::Text.new(deck[i], str[i], font, x, y, options).execute
end end
end end
def image(range=:all, file: , x: 0, y: 0) def image(range=:all, file: , x: 0, y: 0)
end end
def rect(x: , y: width: , height: , x_radius: 0, y_radius: 0)
end
def load_csv(file:, header: true) def load_csv(file:, header: true)
end end
def data(field) def data(field)
end end
def render def save(format: :png)
vv = VerifyVisitor.new Squib::Graphics::Save.new(format).execute
CMDS.each do |cmd|
cmd.accept(vv)
end
end end

2
lib/squib/card.rb

@ -3,7 +3,7 @@ require 'cairo'
module Squib module Squib
class Card class Card
attr_reader :width:, :height attr_reader :width, :height
attr_accessor :cairo_surface, :cairo_context attr_accessor :cairo_surface, :cairo_context
def initialize(width, height) def initialize(width, height)

20
lib/squib/deck.rb

@ -2,15 +2,23 @@ require 'squib/card'
module Squib module Squib
class Deck class Deck
attr_reader :width, :height, :cards include Enumerable
attr_accessor :deck attr_reader :width, :height, :num_cards
def initialize(width: 825, height: 1125, cards: 1) def initialize(width, height, cards)
@width=width; @height=height; @cards=cards @width=width; @height=height; @num_cards=cards
@deck = Array.new(cards) @cards = []
(1..cards).each{ @deck << Squib::Card.new(width, height) } num_cards.times{ @cards << Squib::Card.new(width, height) }
end end
def [](key)
@cards[key]
end end
#For enumerables
def each(&block)
@cards.each { |card| block.call(card) }
end
end
end end

18
lib/squib/graphics/save.rb

@ -0,0 +1,18 @@
module Squib
module Graphics
class Save
def initialize(format)
@format = format
end
def execute
puts "Here!"
Squib.the_deck.each_with_index do |card, i|
card.cairo_context.target.write_to_png("_img/img_#{i}.png")
end
end
end
end
end

23
lib/squib/graphics/text.rb

@ -0,0 +1,23 @@
module Squib
module Graphics
class Text
def initialize(card, str, font, x, y, options)
@card=card
@str=str
@font=font
@x=x; @y=y
end
def execute
cc = @card.cairo_context
cc.set_source_rgb(0.0,0.0,0.0)
cc.select_font_face ("Helvetica");
cc.set_font_size(36)
cc.move_to(@x,@y)
cc.show_text(@str.to_s)
end
end
end
end

7
lib/squib/graphics/text_cmd.rb

@ -1,7 +0,0 @@
module Squib
class TextCmd
def initialize(range, str, )
end
end
Loading…
Cancel
Save