lib/squib/graphics/image.rb in squib-0.0.4 vs lib/squib/graphics/image.rb in squib-0.0.5
- old
+ new
@@ -1,9 +1,9 @@
module Squib
# Cache all pngs we've already loaded
- #
+ #
# :nodoc:
# @api private
def cache_load_image(file)
@img_cache ||= {}
@img_cache[file] || @img_cache[file] = Cairo::ImageSurface.from_png(file)
@@ -11,33 +11,40 @@
module_function :cache_load_image
class Card
# :nodoc:
- # @api private
- def png(file, x, y, alpha, blend)
+ # @api private
+ def png(file, x, y, alpha, blend, angle)
+ Squib.logger.debug {"Rendering: #{file} @#{x},#{y} #{width}x#{height}, alpha: #{alpha}, blend: #{blend}, angle: #{angle}"}
return if file.nil? or file.eql? ''
png = Squib.cache_load_image(file)
use_cairo do |cc|
+ cc.translate(x, y)
+ cc.rotate(angle)
+ cc.translate(-1 * x, -1 * y)
cc.set_source(png, x, y)
cc.operator = blend unless blend == :none
cc.paint(alpha)
end
end
# :nodoc:
- # @api private
- def svg(file, id, x, y, width, height, alpha, blend)
- Squib.logger.debug {"Rendering: #{file}, #{id} #{x}, #{y}, #{width}, #{height}, #{alpha}, #{blend}"}
+ # @api private
+ def svg(file, id, x, y, width, height, alpha, blend, angle)
+ Squib.logger.debug {"Rendering: #{file}, id: #{id} @#{x},#{y} #{width}x#{height}, alpha: #{alpha}, blend: #{blend}, angle: #{angle}"}
return if file.nil? or file.eql? ''
svg = RSVG::Handle.new_from_file(file)
width = svg.width if width == :native
height = svg.height if height == :native
tmp = Cairo::ImageSurface.new(width, height)
tmp_cc = Cairo::Context.new(tmp)
tmp_cc.scale(width.to_f / svg.width.to_f, height.to_f / svg.height.to_f)
tmp_cc.render_rsvg_handle(svg, id)
use_cairo do |cc|
+ cc.translate(x, y)
+ cc.rotate(angle)
+ cc.translate(-1 * x, -1 * y)
cc.set_source(tmp, x, y)
cc.operator = blend unless blend == :none
cc.paint(alpha)
end
end