Adding Excel xlsx support and prefixed images
* New sample! * New API function! * Ignoring _img in samplesdev
parent
f778b2f920
commit
0e351754f3
|
|
@ -22,3 +22,4 @@ tmp
|
|||
*.a
|
||||
mkmf.log
|
||||
_img
|
||||
samples/_img
|
||||
34
bin/squib
34
bin/squib
|
|
@ -1,36 +1,2 @@
|
|||
#!/usr/bin/env ruby
|
||||
require 'squib'
|
||||
require 'cairo'
|
||||
|
||||
red = [1.0, 0.0, 0.0, 1]
|
||||
white = [1.0,1.0,1.0, 1]
|
||||
|
||||
surface = Cairo::ImageSurface.new(825,1125)
|
||||
cr = Cairo::Context.new(surface)
|
||||
|
||||
#Set white background
|
||||
cr.set_source_rgba(*white)
|
||||
cr.paint
|
||||
|
||||
#Write some text
|
||||
cr.set_source_rgba(*red)
|
||||
cr.select_font_face ("Helvetica");
|
||||
cr.set_font_size(36)
|
||||
cr.move_to(150,150)
|
||||
cr.show_text('Hello, World!')
|
||||
|
||||
#Put our own image here
|
||||
if File.exists? 'test.png'
|
||||
png = Cairo::ImageSurface.from_png('test.png')
|
||||
cr.set_source(png, 0, 300)
|
||||
cr.paint
|
||||
end
|
||||
#Save!
|
||||
cr.target.write_to_png("test.png")
|
||||
|
||||
puts "Done!"
|
||||
|
||||
#font type: 'Rockwell'
|
||||
#set_font type: 'Rockwell'
|
||||
#set_font type: 'Rockwell'
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
require 'spreadsheet'
|
||||
require 'roo'
|
||||
|
||||
module Squib
|
||||
class Deck
|
||||
|
|
@ -7,8 +7,23 @@ module Squib
|
|||
raise 'Not implemented!'
|
||||
end
|
||||
|
||||
def xls(file: 'data.xls', sheet: 0)
|
||||
def xlsx(file: 'deck.xlsx', sheet: 0)
|
||||
s = Roo::Excelx.new(file)
|
||||
s.default_sheet = s.sheets.first
|
||||
data = {}
|
||||
s.first_column.upto(s.last_column) do |col|
|
||||
header = s.cell(s.first_row,col).to_s
|
||||
data[header] = []
|
||||
(s.first_row+1).upto(s.last_row) do |row|
|
||||
cell = s.cell(row,col)
|
||||
# Roo hack for avoiding unnecessary .0's on whole integers
|
||||
cell = s.excelx_value(row,col) if s.excelx_type(row,col) == [:numeric_or_formula, "General"]
|
||||
data[header] << cell
|
||||
end#row
|
||||
end#col
|
||||
data
|
||||
end#xlsx
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
module Squib
|
||||
class Deck
|
||||
|
||||
def save(range: :all, format: :png)
|
||||
def save(range: :all, format: :png, prefix: "card_")
|
||||
format = [format].flatten
|
||||
save_png(range: range) if format.include? :png
|
||||
save_png(range: range, prefix: prefix) if format.include? :png
|
||||
save_pdf if format.include? :pdf
|
||||
end
|
||||
|
||||
def save_png(range: :all)
|
||||
def save_png(range: :all, dir: "_img", prefix: 'card_')
|
||||
range = rangeify(range)
|
||||
range.each { |i| @cards[i].save_png(i) }
|
||||
range.each { |i| @cards[i].save_png(i, dir, prefix) }
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
module Squib
|
||||
class Card
|
||||
|
||||
def save_png(i, dir: '_img')
|
||||
cairo_context.target.write_to_png("#{dir}/img_#{i}.png")
|
||||
def save_png(i, dir, prefix)
|
||||
cairo_context.target.write_to_png("#{dir}/#{prefix}#{i}.png")
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ Squib::Deck.new(width: 825, height: 1125, cards: 3) do
|
|||
rect x: 30, y: 30, width: 150, height: 150, x_radius: 25, y_radius: 25
|
||||
|
||||
text str: data['name'], x: 250, y: 55, font: 'Arial 54'
|
||||
text str: data['level'], x: 65, y: 65, font: 'Arial 72'
|
||||
text str: data['level'], x: 75, y: 50, font: 'Arial 72'
|
||||
text str: longtext, x: 100, y: 600, font: 'Arial 16'
|
||||
|
||||
save format: :png
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
#!/usr/bin/env ruby
|
||||
require 'squib'
|
||||
|
||||
Squib::Deck.new(width: 825, height: 1125, cards: 3) do
|
||||
background color: [1.0,1.0,1.0]
|
||||
|
||||
data = xlsx file: 'sample.xlsx', sheet: 0
|
||||
|
||||
text str: data['Name'], x: 250, y: 55, font: 'Arial 54'
|
||||
text str: data['Level'], x: 65, y: 65, font: 'Arial 72'
|
||||
text str: data['Description'], x: 65, y: 600, font: 'Arial 36'
|
||||
|
||||
save format: :png, prefix: 'sample_excel_'
|
||||
end
|
||||
|
||||
puts "Done!"
|
||||
Binary file not shown.
|
|
@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
|
|||
|
||||
spec.add_runtime_dependency 'cairo', '~> 1.12.9'
|
||||
spec.add_runtime_dependency 'pango', '~> 2.2.0'
|
||||
spec.add_runtime_dependency 'roo', '~> 1.13.2'
|
||||
|
||||
spec.add_development_dependency "bundler", "~> 1.6"
|
||||
spec.add_development_dependency "rake"
|
||||
|
|
|
|||
Loading…
Reference in New Issue