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 493 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 521 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 533 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 540 def baseline_shift(value) @text_attrs.baseline_shift = case value when 'baseline', 'sub', 'super' value.intern when /[-+]?\d+%/, Numeric value else :baseline end nil end
font(name)
click to toggle source
# File lib/rvg/misc.rb, line 552 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 558 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 564 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 570 def font_stretch(stretch) stretch = FONT_STRETCH.fetch(stretch.intern, 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 577 def font_style(style) style = FONT_STYLE.fetch(style.intern, 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 584 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 592 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 598 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 604 def inspect @gc.inspect end
letter_spacing(value)
click to toggle source
# File lib/rvg/misc.rb, line 608 def letter_spacing(value) @text_attrs.letter_spacing = Magick::RVG.convert_one_to_float(value) nil end
method_missing(methID, *args, &block)
click to toggle source
# File lib/rvg/misc.rb, line 529 def method_missing(methID, *args, &block) @gc.__send__(methID, *args, &block) end
pop()
click to toggle source
# File lib/rvg/misc.rb, line 620 def pop @gc.pop @shadow.pop @text_attrs.pop nil end
push()
click to toggle source
# File lib/rvg/misc.rb, line 613 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 627 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 638 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 647 def shadow @shadow.last end
skewX(degrees)
click to toggle source
# File lib/rvg/misc.rb, line 651 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 659 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 667 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 674 def text(x, y, text) return if text.length == 0 if @text_attrs.non_default? text_renderer = TEXT_STRATEGIES[@text_attrs.writing_mode].new(self) else text_renderer = DefaultTextStrategy.new(self) end text_renderer.render(x, y, text) end
text_anchor(anchor)
click to toggle source
# File lib/rvg/misc.rb, line 685 def text_anchor(anchor) anchor = anchor.intern 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 695 def text_decoration(decoration) decoration = TEXT_DECORATION.fetch(decoration.intern, Magick::NoDecoration) @gc.decorate(decoration) @shadow[-1].decorate = decoration nil end
translate(tx, ty)
click to toggle source
# File lib/rvg/misc.rb, line 702 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 711 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 716 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 505 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 499 def init_matrix @rx = @ry = 0 @sx = @sy = 1 @tx = @ty = 0 end