#--
# $Id: paint.rb,v 1.4.4.1 2008/02/24 23:22:14 rmagick Exp $
# Copyright (C) 2008 Timothy P. Hunter
#++
# Defines paint server classes.
# Eventually this will include gradients.
module Magick
class RVG
class Pattern
include StructureConstructors
include UseConstructors
include ShapeConstructors
include TextConstructors
include ImageConstructors
include Stretchable
include Duplicatable
include Stylable
# Return upper-left corner, width, height of viewport in user coordinates.
# Usually these are the values specified when the Pattern object is
# created, but they can be changed by a call to the viewbox method.
attr_reader :x, :y, :width, :height
# Create a pattern that can be used with the :fill or :stroke styles.
# The +width+ and +height+ arguments define the viewport.
# The pattern will be repeated at x+m*width and y+n*height
# offsets.
#
# Define the pattern in the block.
# The pattern can be composed of shapes (rectangle, circles, etc.), text,
# raster images and container objects. You can include graphic objects by
# referring to them with #use.
def initialize(width=0, height=0, x=0, y=0)
super()
@width, @height, @x, @y = Magick::RVG.convert_to_float(width, height, x, y)
@content = Content.new
yield(self) if block_given?
end
def add_primitives(gc, style) #:nodoc:
name = __id__.to_s
gc.pattern(name, @x, @y, @width, @height) do
add_viewbox_primitives(@width, @height, gc)
@content.each { |element| element.add_primitives(gc) }
end
gc.__send__(style, name)
end
end # class Pattern
end # class RVG
end # module Magick