Skip to content

Instantly share code, notes, and snippets.

@andymeneely
Last active April 12, 2016 04:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andymeneely/fac2f4a16a23c2bada126e93d6523971 to your computer and use it in GitHub Desktop.
Save andymeneely/fac2f4a16a23c2bada126e93d6523971 to your computer and use it in GitHub Desktop.
Squib: demonstrating colors
require 'squib'
Squib::Deck.new(width: 825, height: 1125, cards: 1) do
background color: :white
y = 0
text color: '#f00', str: '3-hex', x: 50, y: y += 50
text color: '#f00', str: '3-hex (alpha)', x: 50, y: y += 50
text color: '#ff0000', str: '6-hex', x: 50, y: y += 50
text color: '#ff000099', str: '8-hex(alpha)', x: 50, y: y += 50
text color: '#ffff00000000', str: '12-hex', x: 50, y: y += 50
text color: '#ffff000000009999', str: '12-hex (alpha)', x: 50, y: y += 50
text color: :burnt_orange, str: 'Symbols of constants too', x: 50, y: y += 50
text color: '(0,0)(400,0) blue@0.0 red@1.0', str: 'Linear gradients!', x: 50, y: y += 50
text color: '(200,500,10)(200,500,100) blue@0.0 red@1.0', str: 'Radial gradients!', x: 50, y: y += 50
# see gradients.rb sample for more on gradients
save_png prefix: 'colors_'
end
# This script generates a table of the built-in constants
Squib::Deck.new(width: 3000, height: 1500) do
colors = (Cairo::Color.constants - %i(HEX_RE Base RGB CMYK HSV X11))
colors.sort_by! {|c| Cairo::Color.parse(c).to_s}
x, y, w, h = 0, 0, 300, 50
colors.each_with_index do |color, i|
rect x: x, y: y, width: w, height: h, fill_color: color
text str: color.to_s, x: x + 5, y: y + 13, font: 'Sans Bold 16',
color: (Cairo::Color.parse(color).to_hsv.v > 0.9) ? '#000' : '#fff'
y += h
if y > @height
x += w
y = 0
end
end
save_png prefix: 'color_constants_'
end
require 'squib'
Squib::Deck.new do
# Just about anywhere Squib takes in a color it can also take in a gradient too
# The x-y coordinates on the card itself,
# and then color stops are defined between 0 and 1
background color: '(0,0)(0,1125) #ccc@0.0 #111@1.0'
line stroke_color: '(0,0)(825,0) #111@1.0 #ccc@0.0',
x1: 0, y1: 600, x2: 825, y2: 600,
stroke_width: 15
# Radial gradients look like this
circle fill_color: '(425,400,2)(425,400,120) #ccc@0.0 #111@1.0',
x: 415, y: 415, radius: 100, stroke_color: '#0000'
triangle fill_color: '(650,400,2)(650,400,120) #ccc@0.0 #111@1.0',
stroke_color: '#0000',
x1: 650, y1: 360,
x2: 550, y2: 500,
x3: 750, y3: 500
# Gradients are also good for beveling effects:
rect fill_color: '(0,200)(0,600) #111@0.0 #ccc@1.0',
x: 30, y: 350, width: 150, height: 150,
radius: 15, stroke_color: '#0000'
rect fill_color: '(0,200)(0,600) #111@1.0 #ccc@0.0',
x: 40, y: 360, width: 130, height: 130,
radius: 15, stroke_color: '#0000'
# Alpha transparency can be used too
text str: 'Hello, world!', x: 75, y: 700, font: 'Sans Bold 72',
color: '(0,0)(825,0) #000f@0.0 #0000@1.0'
save_png prefix: 'gradient_'
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment