lib/squib/graphics/save_images.rb in squib-0.0.2 vs lib/squib/graphics/save_images.rb in squib-0.0.3
- old
+ new
@@ -1,11 +1,33 @@
-module Squib
- class Card
-
- # :nodoc:
- # @api private
- def save_png(i, dir, prefix)
- cairo_context.target.write_to_png("#{dir}/#{prefix}#{i}.png")
- end
-
- end
+module Squib
+ class Card
+
+ # :nodoc:
+ # @api private
+ def save_png(i, dir, prefix, do_rotate, angle)
+ if [true, :clockwise, :counterclockwise].include?(do_rotate)
+ surface = rotated_image(angle)
+ else
+ surface = @cairo_surface
+ end
+ write_png(surface, i, dir, prefix)
+ end
+
+ # :nodoc:
+ # @api private
+ def rotated_image(angle)
+ rotated_cc = Cairo::Context.new(Cairo::ImageSurface.new(@height, @width) )
+ rotated_cc.translate(@height * 0.5, @width * 0.5)
+ rotated_cc.rotate(angle)
+ rotated_cc.translate(@width * -0.5, @height * -0.5)
+ rotated_cc.set_source(@cairo_surface)
+ rotated_cc.paint
+ rotated_cc.target
+ end
+ # :nodoc:
+ # @api private
+ def write_png(surface, i, dir, prefix)
+ surface.write_to_png("#{dir}/#{prefix}#{i}.png")
+ end
+
+ end
end
\ No newline at end of file