1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
require File.join(File.expand_path(File.dirname(__FILE__)), "spec_helper")
module TransparencyHelper
def make_transparent(opacity, stroke_opacity=opacity)
@pdf.transparent(opacity, stroke_opacity) do
yield if block_given?
end
end
end
describe "Document with transparency" do
include TransparencyHelper
it "the PDF version should be at least 1.4" do
create_pdf
make_transparent(0.5)
str = @pdf.render
str[0,8].should == "%PDF-1.4"
end
it "a new extended graphics state should be created for "+
"each unique transparency setting" do
create_pdf
make_transparent(0.5, 0.2) do
make_transparent(0.5, 0.75)
end
extgstates = PDF::Inspector::ExtGState.analyze(@pdf.render).extgstates
extgstates.length.should == 2
end
it "a new extended graphics state should not be created for "+
"each duplicate transparency setting" do
create_pdf
make_transparent(0.5, 0.75) do
make_transparent(0.5, 0.75)
end
extgstates = PDF::Inspector::ExtGState.analyze(@pdf.render).extgstates
extgstates.length.should == 1
end
it "setting the transparency with only one parameter sets the transparency"+
" for both the fill and the stroke" do
create_pdf
make_transparent(0.5)
extgstate = PDF::Inspector::ExtGState.analyze(@pdf.render).extgstates[0]
extgstate[:opacity].should == 0.5
extgstate[:stroke_opacity].should == 0.5
end
it "setting the transparency with a numerical parameter and "+
"a :stroke should set the fill transparency to the numerical parameter "+
"and the stroke transparency to the option" do
create_pdf
make_transparent(0.5, 0.2)
extgstate = PDF::Inspector::ExtGState.analyze(@pdf.render).extgstates[0]
extgstate[:opacity].should == 0.5
extgstate[:stroke_opacity].should == 0.2
end
it "should enforce the valid range of 0.0 to 1.0" do
create_pdf
make_transparent(-0.5, -0.2)
extgstate = PDF::Inspector::ExtGState.analyze(@pdf.render).extgstates[0]
extgstate[:opacity].should == 0.0
extgstate[:stroke_opacity].should == 0.0
create_pdf
make_transparent(2.0, 3.0)
extgstate = PDF::Inspector::ExtGState.analyze(@pdf.render).extgstates[0]
extgstate[:opacity].should == 1.0
extgstate[:stroke_opacity].should == 1.0
end
describe "with more than one page" do
include TransparencyHelper
it "the extended graphic state resource should be added to both pages" do
create_pdf
make_transparent(0.5, 0.2)
@pdf.start_new_page
make_transparent(0.5, 0.2)
extgstates = PDF::Inspector::ExtGState.analyze(@pdf.render).extgstates
extgstate = extgstates[0]
extgstates.length.should == 2
extgstate[:opacity].should == 0.5
extgstate[:stroke_opacity].should == 0.2
end
end
end
|