Browse Source

Better default handling, more samples

dev
Andy Meneely 12 years ago
parent
commit
06cf063126
  1. 6
      lib/squib/api/text.rb
  2. 7
      lib/squib/constants.rb
  3. 3
      lib/squib/deck.rb
  4. 5
      lib/squib/input_helpers.rb
  5. 13
      samples/text.rb

6
lib/squib/api/text.rb

@ -8,6 +8,12 @@ module Squib
raise 'Not implemented!'
end
#
# font: description string, including family, styles, and size.
#
# => e.g. 'Arial bold italic 12'
# For the official documentation the string, see the [Pango docs](http://ruby-gnome2.sourceforge.jp/hiki.cgi?Pango%3A%3AFontDescription#style).
# This [description](http://www.pygtk.org/pygtk2reference/class-pangofontdescription.html) is also quite good.
def text(range: :all, str: '', font: :use_set, x: 0, y: 0, **options)
range = rangeify(range)
str = [str] * @cards.size unless str.respond_to? :each

7
lib/squib/constants.rb

@ -0,0 +1,7 @@
module Squib
module Constants
DEFAULT_FONT = 'Arial 36'
end
end

3
lib/squib/deck.rb

@ -1,16 +1,19 @@
require 'squib/card'
require 'squib/input_helpers'
require 'squib/constants'
module Squib
class Deck
include Enumerable
include Squib::InputHelpers
include Squib::Constants
attr_reader :width, :height
attr_reader :cards
attr_reader :text_hint
def initialize(width: 825, height: 1125, cards: 1, &block)
@width=width; @height=height
@font = 'Sans 36'
@cards = []
cards.times{ @cards << Squib::Card.new(self, width, height) }
if block_given?

5
lib/squib/input_helpers.rb

@ -29,8 +29,9 @@ module Squib
module_function :colorify
def fontify (font)
font = 'Arial 36' if font==:use_set
font
font = @font if font==:use_set
font = Squib::DEFAULT_FONT if font==:default
font
end
module_function :fontify

13
samples/text.rb

@ -5,18 +5,25 @@ data = {'name' => ['Thief', 'Grifter', 'Mastermind'],
'level' => [1,2,3]}
longtext = "This is left-justified text centered on the card based on x and y.\nWhat do you know about tweetle beetles? well... \nWhen tweetle beetles fight, it's called a tweetle beetle battle. And when they battle in a puddle, it's a tweetle beetle puddle battle. AND when tweetle beetles battle with paddles in a puddle, they call it a tweetle beetle puddle paddle battle. AND... When beetles battle beetles in a puddle paddle battle and the beetle battle puddle is a puddle in a bottle... ..they call this a tweetle beetle bottle puddle paddle battle muddle. AND... When beetles fight these battles in a bottle with their paddles and the bottle's on a poodle and the poodle's eating noodles... ...they call this a muddle puddle tweetle poodle beetle noodle bottle paddle battle."
Squib::Deck.new(width: 825, height: 1125, cards: 128) do
Squib::Deck.new(width: 825, height: 1125, cards: 3) do
background color: :white
rect x: 15, y: 15, width: 795, height: 1095, x_radius: 50, y_radius: 50
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['name'], x: 250, y: 55, font: 'Arial weight=900 54'
text str: data['level'], x: 65, y: 40, font: 'Arial 72', color: :burnt_orange
text str: "This text has a hint, fixed width, and fixed height",
text str: "Font strings are expressive!", x:65, y: 200,
font: 'Impact bold italic 36'
text str: "Font strings are expressive!", x:65, y: 300,
font: 'Arial,Verdana weight=900 style=oblique 36'
text str: "This text has fixed width, fixed height, center-aligned, and has a red hint",
hint: :red,
x: 65, y: 400,
width: 300, height: 200,
align: :center,
font: 'Arial 24'
text str: "Ellipsization!\nThe ultimate question of life, the universe, and everything to life and everything is 42",

Loading…
Cancel
Save