prawn-svg 0.23.1 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +3 -3
- data/README.md +15 -9
- data/lib/prawn-svg.rb +3 -0
- data/lib/prawn/svg/attributes.rb +1 -1
- data/lib/prawn/svg/attributes/clip_path.rb +6 -7
- data/lib/prawn/svg/attributes/opacity.rb +3 -3
- data/lib/prawn/svg/attributes/stroke.rb +6 -4
- data/lib/prawn/svg/calculators/arc_to_bezier_curve.rb +114 -0
- data/lib/prawn/svg/elements.rb +4 -1
- data/lib/prawn/svg/elements/base.rb +76 -69
- data/lib/prawn/svg/elements/container.rb +5 -6
- data/lib/prawn/svg/elements/gradient.rb +4 -4
- data/lib/prawn/svg/elements/image.rb +1 -1
- data/lib/prawn/svg/elements/line.rb +15 -7
- data/lib/prawn/svg/elements/marker.rb +72 -0
- data/lib/prawn/svg/elements/path.rb +23 -147
- data/lib/prawn/svg/elements/polygon.rb +14 -6
- data/lib/prawn/svg/elements/polyline.rb +12 -11
- data/lib/prawn/svg/elements/root.rb +3 -1
- data/lib/prawn/svg/elements/text.rb +38 -17
- data/lib/prawn/svg/font.rb +6 -6
- data/lib/prawn/svg/interface.rb +3 -0
- data/lib/prawn/svg/pathable.rb +130 -0
- data/lib/prawn/svg/properties.rb +122 -0
- data/lib/prawn/svg/state.rb +7 -29
- data/lib/prawn/svg/version.rb +1 -1
- data/spec/prawn/svg/elements/base_spec.rb +19 -32
- data/spec/prawn/svg/elements/line_spec.rb +37 -0
- data/spec/prawn/svg/elements/marker_spec.rb +90 -0
- data/spec/prawn/svg/elements/path_spec.rb +10 -10
- data/spec/prawn/svg/elements/polygon_spec.rb +49 -0
- data/spec/prawn/svg/elements/polyline_spec.rb +47 -0
- data/spec/prawn/svg/elements/style_spec.rb +1 -1
- data/spec/prawn/svg/elements/text_spec.rb +37 -5
- data/spec/prawn/svg/pathable_spec.rb +92 -0
- data/spec/prawn/svg/properties_spec.rb +186 -0
- data/spec/sample_svg/arrows.svg +73 -0
- data/spec/sample_svg/marker.svg +32 -0
- data/spec/sample_svg/polygon01.svg +25 -5
- metadata +23 -8
- data/lib/prawn/svg/attributes/color.rb +0 -5
- data/lib/prawn/svg/attributes/display.rb +0 -5
- data/lib/prawn/svg/attributes/font.rb +0 -38
- data/spec/prawn/svg/attributes/font_spec.rb +0 -52
@@ -1,38 +0,0 @@
|
|
1
|
-
module Prawn::SVG::Attributes::Font
|
2
|
-
def parse_font_attributes_and_call
|
3
|
-
if size = attributes['font-size']
|
4
|
-
state.font_size = size.to_f
|
5
|
-
end
|
6
|
-
if weight = attributes['font-weight']
|
7
|
-
font_updated = true
|
8
|
-
state.font_weight = Prawn::SVG::Font.weight_for_css_font_weight(weight)
|
9
|
-
end
|
10
|
-
if style = attributes['font-style']
|
11
|
-
font_updated = true
|
12
|
-
state.font_style = style == 'italic' ? :italic : nil
|
13
|
-
end
|
14
|
-
if (family = attributes['font-family']) && family.strip != ""
|
15
|
-
font_updated = true
|
16
|
-
state.font_family = family
|
17
|
-
end
|
18
|
-
if (anchor = attributes['text-anchor'])
|
19
|
-
state.text_anchor = anchor
|
20
|
-
end
|
21
|
-
|
22
|
-
if state.font_family && font_updated
|
23
|
-
usable_font_families = [state.font_family, document.fallback_font_name]
|
24
|
-
|
25
|
-
font_used = usable_font_families.compact.detect do |name|
|
26
|
-
if font = document.font_registry.load(name, state.font_weight, state.font_style)
|
27
|
-
state.font_subfamily = font.subfamily
|
28
|
-
add_call_and_enter 'font', font.name, :style => state.font_subfamily
|
29
|
-
true
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
if font_used.nil?
|
34
|
-
warnings << "Font family '#{state.font_family}' style '#{state.font_style || 'normal'}' is not a known font, and the fallback font could not be found."
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Prawn::SVG::Attributes::Font do
|
4
|
-
class FontTestElement
|
5
|
-
include Prawn::SVG::Attributes::Font
|
6
|
-
|
7
|
-
attr_accessor :attributes, :warnings, :state, :document
|
8
|
-
|
9
|
-
def initialize(document)
|
10
|
-
@state = Prawn::SVG::State.new
|
11
|
-
@document = document
|
12
|
-
@warnings = []
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
let(:pdf) { Prawn::Document.new }
|
17
|
-
let(:font_registry) { Prawn::SVG::FontRegistry.new(pdf.font_families) }
|
18
|
-
let(:document) { double(fallback_font_name: "Times-Roman", font_registry: font_registry) }
|
19
|
-
let(:element) { FontTestElement.new(document) }
|
20
|
-
|
21
|
-
before do
|
22
|
-
allow(element).to receive(:document).and_return(document)
|
23
|
-
element.attributes = {"font-family" => family}
|
24
|
-
end
|
25
|
-
|
26
|
-
describe "#parse_font_attributes_and_call" do
|
27
|
-
context "with a specified existing font" do
|
28
|
-
let(:family) { "Helvetica" }
|
29
|
-
|
30
|
-
it "uses a font if it can find it" do
|
31
|
-
expect(element).to receive(:add_call_and_enter).with("font", "Helvetica", style: :normal)
|
32
|
-
element.parse_font_attributes_and_call
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
context "with a specified non-existing font" do
|
37
|
-
let(:family) { "Font That Doesn't Exist" }
|
38
|
-
|
39
|
-
it "uses the fallback font if specified" do
|
40
|
-
expect(element).to receive(:add_call_and_enter).with("font", "Times-Roman", style: :normal)
|
41
|
-
element.parse_font_attributes_and_call
|
42
|
-
end
|
43
|
-
|
44
|
-
it "doesn't call the font method if there's no fallback font" do
|
45
|
-
allow(document).to receive(:fallback_font_name).and_return(nil)
|
46
|
-
expect(element).to_not receive(:add_call_and_enter)
|
47
|
-
element.parse_font_attributes_and_call
|
48
|
-
expect(element.warnings.length).to eq 1
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|