From 06cf063126d6314b4cc5132f6f2d773f042655df Mon Sep 17 00:00:00 2001 From: Andy Meneely Date: Thu, 17 Jul 2014 15:54:53 -0400 Subject: [PATCH] Better default handling, more samples --- lib/squib/api/text.rb | 6 ++++++ lib/squib/constants.rb | 7 +++++++ lib/squib/deck.rb | 3 +++ lib/squib/input_helpers.rb | 5 +++-- samples/text.rb | 13 ++++++++++--- 5 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 lib/squib/constants.rb diff --git a/lib/squib/api/text.rb b/lib/squib/api/text.rb index 62cdd9c..9458045 100644 --- a/lib/squib/api/text.rb +++ b/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 diff --git a/lib/squib/constants.rb b/lib/squib/constants.rb new file mode 100644 index 0000000..8f41434 --- /dev/null +++ b/lib/squib/constants.rb @@ -0,0 +1,7 @@ +module Squib + module Constants + + DEFAULT_FONT = 'Arial 36' + + end +end \ No newline at end of file diff --git a/lib/squib/deck.rb b/lib/squib/deck.rb index 5bb5be3..7de03b2 100644 --- a/lib/squib/deck.rb +++ b/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? diff --git a/lib/squib/input_helpers.rb b/lib/squib/input_helpers.rb index f730317..7a19202 100644 --- a/lib/squib/input_helpers.rb +++ b/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 diff --git a/samples/text.rb b/samples/text.rb index 1be53b4..bc134c2 100644 --- a/samples/text.rb +++ b/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",