Class | PDF::Writer::TagUline |
In: |
lib/pdf/writer.rb
|
Parent: | Object |
A callback to support underlining.
DEFAULT_STYLE | = | { :color => nil, :line_style => { :dash => PDF::Writer::StrokeStyle::SOLID_LINE }, :factor => 0.05 | The default underline style. |
style | [RW] |
Sets the style for <c:uline> callback underlines that follow. This is
expected to be a hash with the following keys:
Set this to nil to get the default style. |
# File lib/pdf/writer.rb, line 2593 2593: def [](pdf, info) 2594: @style ||= DEFAULT_STYLE.dup 2595: 2596: case info[:status] 2597: when :start, :start_line 2598: @links ||= {} 2599: 2600: @links[info[:cbid]] = { 2601: :x => info[:x], 2602: :y => info[:y], 2603: :angle => info[:angle], 2604: :descender => info[:descender], 2605: :height => info[:height], 2606: :uri => nil 2607: } 2608: 2609: pdf.save_state 2610: pdf.stroke_color @style[:color] if @style[:color] 2611: sz = info[:height] * @style[:factor] 2612: pdf.stroke_style! StrokeStyle.new(sz, @style[:line_style]) 2613: when :end, :end_line 2614: start = @links[info[:cbid]] 2615: theta = PDF::Math.deg2rad(start[:angle] - 90.0) 2616: drop = start[:height] * @style[:factor] * 1.5 2617: drop_x = Math.cos(theta) * drop 2618: drop_y = -Math.sin(theta) * drop 2619: pdf.move_to(start[:x] - drop_x, start[:y] - drop_y) 2620: pdf.line_to(info[:x] - drop_x, info[:y] - drop_y).stroke 2621: pdf.restore_state 2622: end 2623: end