Module: Postsvg::Visitors::PsVisitor::GraphicsState
- Included in:
- Postsvg::Visitors::PsVisitor
- Defined in:
- lib/postsvg/visitors/ps_visitor/graphics_state.rb
Overview
Graphics state operator handlers: gsave/grestore and the line/ dash attribute setters.
Instance Method Summary collapse
- #visit_grestore(_op, _ctx) ⇒ Object
- #visit_grestoreall(_op, _ctx) ⇒ Object
- #visit_gsave(_op, _ctx) ⇒ Object
- #visit_setdash(op, _ctx) ⇒ Object
- #visit_setlinecap(op, _ctx) ⇒ Object
- #visit_setlinejoin(op, _ctx) ⇒ Object
- #visit_setlinewidth(op, _ctx) ⇒ Object
- #visit_setmiterlimit(op, _ctx) ⇒ Object
Instance Method Details
#visit_grestore(_op, _ctx) ⇒ Object
13 14 15 |
# File 'lib/postsvg/visitors/ps_visitor/graphics_state.rb', line 13 def visit_grestore(_op, _ctx) @graphics.grestore end |
#visit_grestoreall(_op, _ctx) ⇒ Object
17 18 19 |
# File 'lib/postsvg/visitors/ps_visitor/graphics_state.rb', line 17 def visit_grestoreall(_op, _ctx) @graphics.grestore while @graphics.depth > 1 end |
#visit_gsave(_op, _ctx) ⇒ Object
9 10 11 |
# File 'lib/postsvg/visitors/ps_visitor/graphics_state.rb', line 9 def visit_gsave(_op, _ctx) @graphics.gsave end |
#visit_setdash(op, _ctx) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/postsvg/visitors/ps_visitor/graphics_state.rb', line 39 def visit_setdash(op, _ctx) pattern = op.pattern dash_str = case pattern when Array pattern.map { |v| FormatNumber.call(v.to_f) }.join(" ") when Numeric FormatNumber.call(pattern.to_f) else nil end @graphics.update(dash: dash_str) end |
#visit_setlinecap(op, _ctx) ⇒ Object
25 26 27 28 |
# File 'lib/postsvg/visitors/ps_visitor/graphics_state.rb', line 25 def visit_setlinecap(op, _ctx) name = { 0 => :butt, 1 => :round, 2 => :square }.fetch(op.cap_code, :butt) @graphics.update(line_cap: name) end |
#visit_setlinejoin(op, _ctx) ⇒ Object
30 31 32 33 |
# File 'lib/postsvg/visitors/ps_visitor/graphics_state.rb', line 30 def visit_setlinejoin(op, _ctx) name = { 0 => :miter, 1 => :round, 2 => :bevel }.fetch(op.join_code, :miter) @graphics.update(line_join: name) end |
#visit_setlinewidth(op, _ctx) ⇒ Object
21 22 23 |
# File 'lib/postsvg/visitors/ps_visitor/graphics_state.rb', line 21 def visit_setlinewidth(op, _ctx) @graphics.update(stroke_width: op.width.to_f) end |
#visit_setmiterlimit(op, _ctx) ⇒ Object
35 36 37 |
# File 'lib/postsvg/visitors/ps_visitor/graphics_state.rb', line 35 def visit_setmiterlimit(op, _ctx) @graphics.update(miter_limit: op.limit.to_f) end |