class Magick::RVG::Utility::GraphicContext
Constants
- ANCHOR_TO_ALIGN
- FONT_STRETCH
- FONT_STYLE
- FONT_WEIGHT
- TEXT_ANCHOR
- TEXT_DECORATION
- TEXT_STRATEGIES
Attributes
gc[R]
text_attrs[R]
Public Class Methods
degrees_to_radians(deg)
click to toggle source
# File lib/rvg/misc.rb, line 489 def self.degrees_to_radians(deg) Math::PI * (deg % 360.0) / 180.0 end
new()
click to toggle source
# File lib/rvg/misc.rb, line 517 def initialize @gc = Magick::Draw.new @shadow = [] @shadow << Magick::Draw.new @text_attrs = TextAttributes.new init_matrix end
Public Instance Methods
affine(sx, rx, ry, sy, tx, ty)
click to toggle source
# File lib/rvg/misc.rb, line 529 def affine(sx, rx, ry, sy, tx, ty) sx, rx, ry, sy, tx, ty = Magick::RVG.convert_to_float(sx, rx, ry, sy, tx, ty) @gc.affine(sx, rx, ry, sy, tx, ty) @text_attrs.set_affine(sx, rx, ry, sy, tx, ty) nil end
baseline_shift(value)
click to toggle source
# File lib/rvg/misc.rb, line 536 def baseline_shift(value) @text_attrs.baseline_shift = case value when 'baseline', 'sub', 'super' value.to_sym when /[-+]?\d+%/, Numeric value else :baseline end nil end
font(name)
click to toggle source
# File lib/rvg/misc.rb, line 548 def font(name) @gc.font(name) @shadow[-1].font = name nil end
font_family(name)
click to toggle source
# File lib/rvg/misc.rb, line 554 def font_family(name) @gc.font_family(name) @shadow[-1].font_family = name nil end
font_size(points)
click to toggle source
# File lib/rvg/misc.rb, line 560 def font_size(points) @gc.font_size(points) @shadow[-1].pointsize = points nil end
font_stretch(stretch)
click to toggle source
# File lib/rvg/misc.rb, line 566 def font_stretch(stretch) stretch = FONT_STRETCH.fetch(stretch.to_sym, Magick::NormalStretch) @gc.font_stretch(stretch) @shadow[-1].font_stretch = stretch nil end
font_style(style)
click to toggle source
# File lib/rvg/misc.rb, line 573 def font_style(style) style = FONT_STYLE.fetch(style.to_sym, Magick::NormalStyle) @gc.font_style(style) @shadow[-1].font_style = style nil end
font_weight(weight)
click to toggle source
# File lib/rvg/misc.rb, line 580 def font_weight(weight) # If the arg is not in the hash use it directly. Handles numeric values. weight = FONT_WEIGHT.fetch(weight) { |key| key } @gc.font_weight(weight) @shadow[-1].font_weight = weight nil end
glyph_orientation_horizontal(deg)
click to toggle source
# File lib/rvg/misc.rb, line 588 def glyph_orientation_horizontal(deg) deg = Magick::RVG.convert_one_to_float(deg) @text_attrs.glyph_orientation_horizontal = (deg % 360) / 90 * 90 nil end
glyph_orientation_vertical(deg)
click to toggle source
# File lib/rvg/misc.rb, line 594 def glyph_orientation_vertical(deg) deg = Magick::RVG.convert_one_to_float(deg) @text_attrs.glyph_orientation_vertical = (deg % 360) / 90 * 90 nil end
inspect()
click to toggle source
# File lib/rvg/misc.rb, line 600 def inspect @gc.inspect end
letter_spacing(value)
click to toggle source
# File lib/rvg/misc.rb, line 604 def letter_spacing(value) @text_attrs.letter_spacing = Magick::RVG.convert_one_to_float(value) nil end
method_missing(meth_id, *args, &block)
click to toggle source
# File lib/rvg/misc.rb, line 525 def method_missing(meth_id, *args, &block) @gc.__send__(meth_id, *args, &block) end
pop()
click to toggle source
# File lib/rvg/misc.rb, line 616 def pop @gc.pop @shadow.pop @text_attrs.pop nil end
push()
click to toggle source
# File lib/rvg/misc.rb, line 609 def push @gc.push @shadow.push(@shadow.last.dup) @text_attrs.push nil end
rotate(degrees)
click to toggle source
# File lib/rvg/misc.rb, line 623 def rotate(degrees) degrees = Magick::RVG.convert_one_to_float(degrees) @gc.rotate(degrees) @sx = Math.cos(GraphicContext.degrees_to_radians(degrees)) @rx = Math.sin(GraphicContext.degrees_to_radians(degrees)) @ry = -Math.sin(GraphicContext.degrees_to_radians(degrees)) @sy = Math.cos(GraphicContext.degrees_to_radians(degrees)) concat_matrix nil end
scale(sx, sy)
click to toggle source
# File lib/rvg/misc.rb, line 634 def scale(sx, sy) sx, sy = Magick::RVG.convert_to_float(sx, sy) @gc.scale(sx, sy) @sx = sx @sy = sy concat_matrix nil end
shadow()
click to toggle source
# File lib/rvg/misc.rb, line 643 def shadow @shadow.last end
skewX(degrees)
click to toggle source
# File lib/rvg/misc.rb, line 647 def skewX(degrees) degrees = Magick::RVG.convert_one_to_float(degrees) @gc.skewX(degrees) @ry = Math.tan(GraphicContext.degrees_to_radians(degrees)) concat_matrix nil end
skewY(degrees)
click to toggle source
# File lib/rvg/misc.rb, line 655 def skewY(degrees) degrees = Magick::RVG.convert_one_to_float(degrees) @gc.skewY(degrees) @rx = Math.tan(GraphicContext.degrees_to_radians(degrees)) concat_matrix nil end
stroke_width(width)
click to toggle source
# File lib/rvg/misc.rb, line 663 def stroke_width(width) width = Magick::RVG.convert_one_to_float(width) @gc.stroke_width(width) @shadow[-1].stroke_width = width nil end
text(x, y, text)
click to toggle source
# File lib/rvg/misc.rb, line 670 def text(x, y, text) return if text.length.zero? text_renderer = if @text_attrs.non_default? TEXT_STRATEGIES[@text_attrs.writing_mode].new(self) else DefaultTextStrategy.new(self) end text_renderer.render(x, y, text) end
text_anchor(anchor)
click to toggle source
# File lib/rvg/misc.rb, line 682 def text_anchor(anchor) anchor = anchor.to_sym anchor_enum = TEXT_ANCHOR.fetch(anchor, Magick::StartAnchor) @gc.text_anchor(anchor_enum) align = ANCHOR_TO_ALIGN.fetch(anchor, Magick::LeftAlign) @shadow[-1].align = align @text_attrs.text_anchor = anchor nil end
text_decoration(decoration)
click to toggle source
# File lib/rvg/misc.rb, line 692 def text_decoration(decoration) decoration = TEXT_DECORATION.fetch(decoration.to_sym, Magick::NoDecoration) @gc.decorate(decoration) @shadow[-1].decorate = decoration nil end
translate(tx, ty)
click to toggle source
# File lib/rvg/misc.rb, line 699 def translate(tx, ty) tx, ty = Magick::RVG.convert_to_float(tx, ty) @gc.translate(tx, ty) @tx = tx @ty = ty concat_matrix nil end
word_spacing(value)
click to toggle source
# File lib/rvg/misc.rb, line 708 def word_spacing(value) @text_attrs.word_spacing = Magick::RVG.convert_one_to_float(value) nil end
writing_mode(mode)
click to toggle source
# File lib/rvg/misc.rb, line 713 def writing_mode(mode) @text_attrs.writing_mode = mode nil end
Private Instance Methods
concat_matrix()
click to toggle source
# File lib/rvg/misc.rb, line 501 def concat_matrix curr = @text_attrs.affine sx = curr.sx * @sx + curr.ry * @rx rx = curr.rx * @sx + curr.sy * @rx ry = curr.sx * @ry + curr.ry * @sy sy = curr.rx * @ry + curr.sy * @sy tx = curr.sx * @tx + curr.ry * @ty + curr.tx ty = curr.rx * @tx + curr.sy * @ty + curr.ty @text_attrs.set_affine(sx, rx, ry, sy, tx, ty) init_matrix end
init_matrix()
click to toggle source
# File lib/rvg/misc.rb, line 495 def init_matrix @rx = @ry = 0 @sx = @sy = 1 @tx = @ty = 0 end