prawn 2.3.0 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Rakefile +2 -31
- data/lib/prawn.rb +1 -0
- data/lib/prawn/document.rb +20 -15
- data/lib/prawn/document/bounding_box.rb +10 -2
- data/lib/prawn/document/span.rb +2 -1
- data/lib/prawn/font.rb +6 -4
- data/lib/prawn/font_metric_cache.rb +7 -6
- data/lib/prawn/fonts/afm.rb +18 -16
- data/lib/prawn/fonts/ttf.rb +55 -29
- data/lib/prawn/graphics.rb +11 -11
- data/lib/prawn/graphics/color.rb +18 -16
- data/lib/prawn/graphics/join_style.rb +1 -1
- data/lib/prawn/graphics/patterns.rb +57 -49
- data/lib/prawn/graphics/transformation.rb +3 -3
- data/lib/prawn/grid.rb +36 -1
- data/lib/prawn/images.rb +29 -27
- data/lib/prawn/images/jpg.rb +4 -1
- data/lib/prawn/images/png.rb +2 -1
- data/lib/prawn/outline.rb +6 -5
- data/lib/prawn/repeater.rb +1 -1
- data/lib/prawn/security.rb +39 -36
- data/lib/prawn/text.rb +18 -18
- data/lib/prawn/text/box.rb +10 -9
- data/lib/prawn/text/formatted/arranger.rb +38 -19
- data/lib/prawn/text/formatted/box.rb +20 -15
- data/lib/prawn/text/formatted/line_wrap.rb +18 -16
- data/lib/prawn/text/formatted/parser.rb +28 -26
- data/lib/prawn/text/formatted/wrap.rb +15 -11
- data/lib/prawn/version.rb +1 -1
- data/lib/prawn/view.rb +2 -2
- data/manual/basic_concepts/measurement.rb +1 -1
- data/manual/bounding_box/canvas.rb +3 -3
- data/manual/bounding_box/nesting.rb +1 -1
- data/manual/document_and_page_options/background.rb +6 -2
- data/manual/document_and_page_options/document_and_page_options.rb +3 -3
- data/manual/document_and_page_options/print_scaling.rb +2 -1
- data/manual/graphics/common_lines.rb +1 -1
- data/manual/graphics/fill_and_stroke.rb +1 -1
- data/manual/graphics/fill_rules.rb +4 -3
- data/manual/graphics/helper.rb +11 -4
- data/manual/graphics/lines_and_curves.rb +1 -1
- data/manual/graphics/stroke_dash.rb +5 -5
- data/manual/graphics/translate.rb +2 -1
- data/manual/images/horizontal.rb +2 -2
- data/manual/images/scale.rb +3 -3
- data/manual/images/vertical.rb +6 -3
- data/manual/images/width_and_height.rb +3 -3
- data/manual/layout/content.rb +2 -2
- data/manual/outline/outline.rb +1 -1
- data/manual/security/permissions.rb +4 -2
- data/manual/security/security.rb +1 -1
- data/manual/text/alignment.rb +2 -2
- data/manual/text/column_box.rb +2 -2
- data/manual/text/font_style.rb +5 -2
- data/manual/text/formatted_callbacks.rb +17 -12
- data/manual/text/formatted_text.rb +7 -4
- data/manual/text/free_flowing_text.rb +3 -3
- data/manual/text/kerning_and_character_spacing.rb +4 -4
- data/manual/text/paragraph_indentation.rb +4 -5
- data/manual/text/rendering_and_color.rb +1 -1
- data/manual/text/right_to_left_text.rb +6 -6
- data/manual/text/rotation.rb +8 -3
- data/manual/text/text_box_extensions.rb +1 -1
- data/manual/text/text_box_overflow.rb +11 -9
- data/manual/text/win_ansi_charset.rb +9 -9
- data/prawn.gemspec +4 -10
- data/spec/prawn/document/bounding_box_spec.rb +82 -78
- data/spec/prawn/document/security_spec.rb +1 -1
- data/spec/prawn/document_span_spec.rb +14 -6
- data/spec/prawn/document_spec.rb +29 -26
- data/spec/prawn/font_spec.rb +16 -14
- data/spec/prawn/graphics_spec.rb +79 -44
- data/spec/prawn/images_spec.rb +13 -8
- data/spec/prawn/outline_spec.rb +127 -27
- data/spec/prawn/repeater_spec.rb +9 -8
- data/spec/prawn/soft_mask_spec.rb +1 -1
- data/spec/prawn/stamp_spec.rb +3 -2
- data/spec/prawn/text/box_spec.rb +57 -59
- data/spec/prawn/text/formatted/arranger_spec.rb +10 -10
- data/spec/prawn/text/formatted/box_spec.rb +8 -5
- data/spec/prawn/text/formatted/line_wrap_spec.rb +2 -1
- data/spec/prawn/text_draw_text_spec.rb +9 -8
- data/spec/prawn/text_spacing_spec.rb +2 -2
- data/spec/prawn/text_spec.rb +9 -9
- data/spec/prawn/text_with_inline_formatting_spec.rb +1 -1
- data/spec/prawn_manual_spec.rb +4 -4
- metadata +14 -98
- metadata.gz.sig +0 -0
@@ -36,7 +36,7 @@ describe Prawn::Document::Security do
|
|
36
36
|
pdf = Prawn::Document.new
|
37
37
|
|
38
38
|
# Make things easier to test
|
39
|
-
pdf.singleton_class.
|
39
|
+
pdf.singleton_class.__send__ :public, :permissions_value
|
40
40
|
# class << pdf
|
41
41
|
# public :permissions_value
|
42
42
|
# end
|
@@ -7,12 +7,19 @@ describe Prawn::Document do
|
|
7
7
|
|
8
8
|
it 'onlies accept :position as option in debug mode' do
|
9
9
|
Prawn.debug = true
|
10
|
-
expect
|
11
|
-
.
|
10
|
+
expect do
|
11
|
+
pdf.span(350, x: 3) do
|
12
|
+
# draw
|
13
|
+
end
|
14
|
+
end.to raise_error(Prawn::Errors::UnknownOption)
|
12
15
|
end
|
13
16
|
|
14
17
|
it 'has raise an error if :position is invalid' do
|
15
|
-
expect
|
18
|
+
expect do
|
19
|
+
pdf.span(350, position: :x) do
|
20
|
+
# draw
|
21
|
+
end
|
22
|
+
end.to raise_error(ArgumentError)
|
16
23
|
end
|
17
24
|
|
18
25
|
it 'restores the margin box when bounding box exits' do
|
@@ -26,9 +33,10 @@ describe Prawn::Document do
|
|
26
33
|
end
|
27
34
|
|
28
35
|
it 'does create a margin box' do
|
29
|
-
margin_box =
|
30
|
-
pdf.
|
31
|
-
|
36
|
+
margin_box =
|
37
|
+
pdf.span(350, position: :center) do
|
38
|
+
pdf.text "Here's some centered text in a 350 point column. " * 100
|
39
|
+
end
|
32
40
|
|
33
41
|
expect(margin_box.top).to eq(792.0)
|
34
42
|
expect(margin_box.bottom).to eq(0)
|
data/spec/prawn/document_spec.rb
CHANGED
@@ -34,23 +34,24 @@ describe Prawn::Document do
|
|
34
34
|
|
35
35
|
describe 'when generating a document with a custom text formatter' do
|
36
36
|
it 'uses the provided text formatter' do
|
37
|
-
text_formatter =
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
37
|
+
text_formatter =
|
38
|
+
Class.new do
|
39
|
+
def self.format(string)
|
40
|
+
[
|
41
|
+
{
|
42
|
+
text: string.gsub('Dr. Who?', "Just 'The Doctor'."),
|
43
|
+
styles: [],
|
44
|
+
color: nil,
|
45
|
+
link: nil,
|
46
|
+
anchor: nil,
|
47
|
+
local: nil,
|
48
|
+
font: nil,
|
49
|
+
size: nil,
|
50
|
+
character_spacing: nil
|
51
|
+
}
|
52
|
+
]
|
53
|
+
end
|
52
54
|
end
|
53
|
-
end
|
54
55
|
pdf = described_class.new text_formatter: text_formatter
|
55
56
|
pdf.text 'Dr. Who?', inline_format: true
|
56
57
|
text = PDF::Inspector::Text.analyze(pdf.render)
|
@@ -331,13 +332,14 @@ describe Prawn::Document do
|
|
331
332
|
|
332
333
|
describe 'When reopening pages' do
|
333
334
|
it 'modifies the content stream size' do
|
334
|
-
pdf =
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
335
|
+
pdf =
|
336
|
+
described_class.new do
|
337
|
+
text 'Page 1'
|
338
|
+
start_new_page
|
339
|
+
text 'Page 2'
|
340
|
+
go_to_page 1
|
341
|
+
text 'More for page 1'
|
342
|
+
end
|
341
343
|
|
342
344
|
# Indirectly verify that the actual length does not match dictionary
|
343
345
|
# length. If it isn't, a MalformedPDFError will be raised
|
@@ -364,9 +366,10 @@ describe Prawn::Document do
|
|
364
366
|
end
|
365
367
|
|
366
368
|
it 'restores the layout of the page' do
|
367
|
-
doc =
|
368
|
-
|
369
|
-
|
369
|
+
doc =
|
370
|
+
described_class.new do
|
371
|
+
start_new_page layout: :landscape
|
372
|
+
end
|
370
373
|
|
371
374
|
lsize = [doc.bounds.width, doc.bounds.height]
|
372
375
|
|
data/spec/prawn/font_spec.rb
CHANGED
@@ -217,18 +217,19 @@ describe Prawn::Font do
|
|
217
217
|
end
|
218
218
|
|
219
219
|
it 'accepts IO objects for font files' do
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
220
|
+
File.open "#{Prawn::DATADIR}/fonts/DejaVuSans.ttf" do |io|
|
221
|
+
pdf.font_families['DejaVu Sans'] = {
|
222
|
+
normal: described_class.load(pdf, io)
|
223
|
+
}
|
224
224
|
|
225
|
-
|
226
|
-
|
225
|
+
pdf.font 'DejaVu Sans'
|
226
|
+
pdf.text 'In DejaVu Sans'
|
227
227
|
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
228
|
+
text = PDF::Inspector::Text.analyze(pdf.render)
|
229
|
+
name = text.font_settings.map { |e| e[:name] }.first.to_s
|
230
|
+
name = name.sub(/\w+\+/, 'subset+')
|
231
|
+
expect(name).to eq('subset+DejaVuSans')
|
232
|
+
end
|
232
233
|
end
|
233
234
|
end
|
234
235
|
|
@@ -314,7 +315,8 @@ describe Prawn::Font do
|
|
314
315
|
.to eq(13.332)
|
315
316
|
expect(times.compute_width_of(
|
316
317
|
win1252_string('To'),
|
317
|
-
size: 12,
|
318
|
+
size: 12,
|
319
|
+
kerning: true
|
318
320
|
)).to eq(12.372)
|
319
321
|
|
320
322
|
input = win1252_string("T\xF6") # Tö in win-1252
|
@@ -356,7 +358,7 @@ describe Prawn::Font do
|
|
356
358
|
|
357
359
|
it 'omits /Encoding for symbolic fonts' do
|
358
360
|
zapf = pdf.find_font 'ZapfDingbats'
|
359
|
-
font_dict = zapf.
|
361
|
+
font_dict = zapf.__send__(:register, nil)
|
360
362
|
expect(font_dict.data[:Encoding]).to be_nil
|
361
363
|
end
|
362
364
|
end
|
@@ -439,7 +441,7 @@ describe Prawn::Font do
|
|
439
441
|
# These metrics are relative to the font's own bbox. They should not be
|
440
442
|
# scaled with font size.
|
441
443
|
ref = pdf.ref!({})
|
442
|
-
font.
|
444
|
+
font.__send__(:embed, ref, 0)
|
443
445
|
|
444
446
|
# Pull out the embedded font descriptor
|
445
447
|
descriptor = ref.data[:FontDescriptor].data
|
@@ -470,7 +472,7 @@ describe Prawn::Font do
|
|
470
472
|
# These metrics are relative to the font's own bbox. They should not be
|
471
473
|
# scaled with font size.
|
472
474
|
ref = pdf.ref!({})
|
473
|
-
font.
|
475
|
+
font.__send__(:embed, ref, 0)
|
474
476
|
|
475
477
|
# Pull out the embedded font descriptor
|
476
478
|
descriptor = ref.data[:FontDescriptor].data
|
data/spec/prawn/graphics_spec.rb
CHANGED
@@ -137,10 +137,10 @@ describe Prawn::Graphics do
|
|
137
137
|
it 'draws a rectangle by connecting lines with rounded bezier curves' do
|
138
138
|
expect(all_coords).to eq(
|
139
139
|
[
|
140
|
-
[60.0, 550.0], [90.0, 550.0], [95.
|
141
|
-
[100.0, 540.0], [100.0, 460.0], [100.0, 454.
|
142
|
-
[90.0, 450.0], [60.0, 450.0], [54.
|
143
|
-
[50.0, 460.0], [50.0, 540.0], [50.0, 545.
|
140
|
+
[60.0, 550.0], [90.0, 550.0], [95.52285, 550.0], [100.0, 545.52285],
|
141
|
+
[100.0, 540.0], [100.0, 460.0], [100.0, 454.47715], [95.52285, 450.0],
|
142
|
+
[90.0, 450.0], [60.0, 450.0], [54.47715, 450.0], [50.0, 454.47715],
|
143
|
+
[50.0, 460.0], [50.0, 540.0], [50.0, 545.52285], [54.47715, 550.0],
|
144
144
|
[60.0, 550.0]
|
145
145
|
]
|
146
146
|
)
|
@@ -161,20 +161,20 @@ describe Prawn::Graphics do
|
|
161
161
|
expect(curve.coords).to eq([
|
162
162
|
125.0, 100.0,
|
163
163
|
|
164
|
-
125.0, 127.
|
165
|
-
113.
|
164
|
+
125.0, 127.61424,
|
165
|
+
113.80712, 150,
|
166
166
|
100.0, 150.0,
|
167
167
|
|
168
|
-
86.
|
169
|
-
75.0, 127.
|
168
|
+
86.19288, 150.0,
|
169
|
+
75.0, 127.61424,
|
170
170
|
75.0, 100.0,
|
171
171
|
|
172
|
-
75.0, 72.
|
173
|
-
86.
|
172
|
+
75.0, 72.38576,
|
173
|
+
86.19288, 50.0,
|
174
174
|
100.0, 50.0,
|
175
175
|
|
176
|
-
113.
|
177
|
-
125.0, 72.
|
176
|
+
113.80712, 50.0,
|
177
|
+
125.0, 72.38576,
|
178
178
|
125.0, 100.0,
|
179
179
|
|
180
180
|
100.0, 100.0
|
@@ -285,7 +285,8 @@ describe Prawn::Graphics do
|
|
285
285
|
pdf.fill_gradient(
|
286
286
|
[0, pdf.bounds.height],
|
287
287
|
[pdf.bounds.width, pdf.bounds.height],
|
288
|
-
'FF0000',
|
288
|
+
'FF0000',
|
289
|
+
'0000FF'
|
289
290
|
)
|
290
291
|
|
291
292
|
grad = PDF::Inspector::Graphics::Pattern.analyze(pdf.render)
|
@@ -306,12 +307,14 @@ describe Prawn::Graphics do
|
|
306
307
|
pdf.fill_gradient(
|
307
308
|
[256, 512],
|
308
309
|
[356, 512],
|
309
|
-
'ffffff',
|
310
|
+
'ffffff',
|
311
|
+
'fe00ff'
|
310
312
|
)
|
311
313
|
pdf.fill_gradient(
|
312
314
|
[256, 256],
|
313
315
|
[356, 256],
|
314
|
-
'ffffff',
|
316
|
+
'ffffff',
|
317
|
+
'0000ff'
|
315
318
|
)
|
316
319
|
|
317
320
|
str = pdf.render
|
@@ -323,7 +326,8 @@ describe Prawn::Graphics do
|
|
323
326
|
pdf.fill_gradient(
|
324
327
|
[0, pdf.bounds.height],
|
325
328
|
[pdf.bounds.width, pdf.bounds.height],
|
326
|
-
'FF0000',
|
329
|
+
'FF0000',
|
330
|
+
'0000FF'
|
327
331
|
)
|
328
332
|
|
329
333
|
str = pdf.render
|
@@ -334,7 +338,8 @@ describe Prawn::Graphics do
|
|
334
338
|
pdf.stroke_gradient(
|
335
339
|
[0, pdf.bounds.height],
|
336
340
|
[pdf.bounds.width, pdf.bounds.height],
|
337
|
-
'FF0000',
|
341
|
+
'FF0000',
|
342
|
+
'0000FF'
|
338
343
|
)
|
339
344
|
|
340
345
|
str = pdf.render
|
@@ -391,9 +396,12 @@ describe Prawn::Graphics do
|
|
391
396
|
describe 'radial gradients' do
|
392
397
|
it 'creates a /Pattern resource' do
|
393
398
|
pdf.fill_gradient(
|
394
|
-
[0, pdf.bounds.height],
|
395
|
-
|
396
|
-
|
399
|
+
[0, pdf.bounds.height],
|
400
|
+
10,
|
401
|
+
[pdf.bounds.width, pdf.bounds.height],
|
402
|
+
20,
|
403
|
+
'FF0000',
|
404
|
+
'0000FF'
|
397
405
|
)
|
398
406
|
|
399
407
|
grad = PDF::Inspector::Graphics::Pattern.analyze(pdf.render)
|
@@ -413,9 +421,12 @@ describe Prawn::Graphics do
|
|
413
421
|
|
414
422
|
it 'fill_gradient should set fill color to the pattern' do
|
415
423
|
pdf.fill_gradient(
|
416
|
-
[0, pdf.bounds.height],
|
417
|
-
|
418
|
-
|
424
|
+
[0, pdf.bounds.height],
|
425
|
+
10,
|
426
|
+
[pdf.bounds.width, pdf.bounds.height],
|
427
|
+
20,
|
428
|
+
'FF0000',
|
429
|
+
'0000FF'
|
419
430
|
)
|
420
431
|
|
421
432
|
str = pdf.render
|
@@ -424,9 +435,12 @@ describe Prawn::Graphics do
|
|
424
435
|
|
425
436
|
it 'stroke_gradient should set stroke color to the pattern' do
|
426
437
|
pdf.stroke_gradient(
|
427
|
-
[0, pdf.bounds.height],
|
428
|
-
|
429
|
-
|
438
|
+
[0, pdf.bounds.height],
|
439
|
+
10,
|
440
|
+
[pdf.bounds.width, pdf.bounds.height],
|
441
|
+
20,
|
442
|
+
'FF0000',
|
443
|
+
'0000FF'
|
430
444
|
)
|
431
445
|
|
432
446
|
str = pdf.render
|
@@ -438,9 +452,8 @@ describe Prawn::Graphics do
|
|
438
452
|
subject(:transformations) do
|
439
453
|
pdf.scale 2 do
|
440
454
|
pdf.translate 40, 40 do
|
441
|
-
pdf.fill_gradient [0, 10], [15, 15], 'FF0000', '0000FF', opts
|
442
|
-
pdf.fill_gradient [0, 10], 15, [15, 15], 25, 'FF0000', '0000FF',
|
443
|
-
opts
|
455
|
+
pdf.fill_gradient [0, 10], [15, 15], 'FF0000', '0000FF', **opts
|
456
|
+
pdf.fill_gradient [0, 10], 15, [15, 15], 25, 'FF0000', '0000FF', **opts
|
444
457
|
end
|
445
458
|
end
|
446
459
|
|
@@ -560,7 +573,7 @@ describe Prawn::Graphics do
|
|
560
573
|
|
561
574
|
it 'rounds dash values to four decimal places' do
|
562
575
|
pdf.dash 5.12345
|
563
|
-
expect(pdf.graphic_state.dash_setting).to eq('[5.
|
576
|
+
expect(pdf.graphic_state.dash_setting).to eq('[5.12345 5.12345] 0.0 d')
|
564
577
|
end
|
565
578
|
|
566
579
|
it 'raises an error when dash is called w. a zero length or space' do
|
@@ -632,8 +645,8 @@ describe Prawn::Graphics do
|
|
632
645
|
new_state = PDF::Core::GraphicState.new(pdf.graphic_state)
|
633
646
|
|
634
647
|
%i[color_space dash fill_color stroke_color].each do |attr|
|
635
|
-
expect(new_state.
|
636
|
-
expect(new_state.
|
648
|
+
expect(new_state.public_send(attr)).to eq(pdf.graphic_state.public_send(attr))
|
649
|
+
expect(new_state.public_send(attr)).to_not equal(pdf.graphic_state.public_send(attr))
|
637
650
|
end
|
638
651
|
end
|
639
652
|
|
@@ -641,14 +654,14 @@ describe Prawn::Graphics do
|
|
641
654
|
new_state = pdf.graphic_state.dup
|
642
655
|
|
643
656
|
%i[color_space dash fill_color stroke_color].each do |attr|
|
644
|
-
expect(new_state.
|
645
|
-
expect(new_state.
|
657
|
+
expect(new_state.public_send(attr)).to eq(pdf.graphic_state.public_send(attr))
|
658
|
+
expect(new_state.public_send(attr)).to_not equal(pdf.graphic_state.public_send(attr))
|
646
659
|
end
|
647
660
|
end
|
648
661
|
end
|
649
662
|
|
650
663
|
describe 'When using transformation matrix' do
|
651
|
-
#
|
664
|
+
# NOTE: The (approximate) number of significant decimal digits of precision
|
652
665
|
# in fractional part is 5 (PDF Reference, Third Edition, p. 706)
|
653
666
|
|
654
667
|
it 'sends the right content on transformation_matrix' do
|
@@ -694,17 +707,24 @@ describe Prawn::Graphics do
|
|
694
707
|
expect(pdf).to have_received(:restore_graphics_state).with(no_args)
|
695
708
|
.ordered
|
696
709
|
end
|
710
|
+
|
711
|
+
it 'properly serializes the matrix', issue: 1178 do
|
712
|
+
pdf.transformation_matrix 1, 0, 0, 1, 0.0, 1.8977874316715393e-05
|
713
|
+
rendered_document = pdf.render
|
714
|
+
|
715
|
+
expect(rendered_document).to_not include('2.0e-05')
|
716
|
+
|
717
|
+
matrices = PDF::Inspector::Graphics::Matrix.analyze(rendered_document)
|
718
|
+
expect(matrices.matrices).to eq([[1, 0, 0, 1, 0.0, 0.00002]])
|
719
|
+
end
|
697
720
|
end
|
698
721
|
|
699
722
|
describe 'When using transformations shortcuts' do
|
700
|
-
let(:x) { 12 }
|
701
|
-
let(:y) { 54.32 }
|
702
|
-
let(:angle) { 12.32 }
|
703
|
-
let(:cos) { Math.cos(angle * Math::PI / 180) }
|
704
|
-
let(:sin) { Math.sin(angle * Math::PI / 180) }
|
705
|
-
let(:factor) { 0.12 }
|
706
|
-
|
707
723
|
describe '#rotate' do
|
724
|
+
let(:angle) { 12.32 }
|
725
|
+
let(:cos) { Math.cos(angle * Math::PI / 180) }
|
726
|
+
let(:sin) { Math.sin(angle * Math::PI / 180) }
|
727
|
+
|
708
728
|
it 'rotates' do
|
709
729
|
allow(pdf).to receive(:transformation_matrix)
|
710
730
|
.with(cos, sin, -sin, cos, 0, 0)
|
@@ -715,7 +735,13 @@ describe Prawn::Graphics do
|
|
715
735
|
end
|
716
736
|
|
717
737
|
describe '#rotate with :origin option' do
|
738
|
+
let(:angle) { 12.32 }
|
739
|
+
let(:cos) { Math.cos(angle * Math::PI / 180) }
|
740
|
+
let(:sin) { Math.sin(angle * Math::PI / 180) }
|
741
|
+
|
718
742
|
it 'rotates around the origin' do
|
743
|
+
x = 12
|
744
|
+
y = 54.32
|
719
745
|
x_prime = x * cos - y * sin
|
720
746
|
y_prime = x * sin + y * cos
|
721
747
|
|
@@ -737,6 +763,8 @@ describe Prawn::Graphics do
|
|
737
763
|
end
|
738
764
|
|
739
765
|
it 'rotates around the origin in a document with a margin' do
|
766
|
+
x = 12
|
767
|
+
y = 54.32
|
740
768
|
pdf = Prawn::Document.new
|
741
769
|
|
742
770
|
pdf.rotate(angle, origin: [x, y]) { pdf.text('hello world') }
|
@@ -763,7 +791,7 @@ describe Prawn::Graphics do
|
|
763
791
|
|
764
792
|
it 'raise_errors BlockRequired if no block is given' do
|
765
793
|
expect do
|
766
|
-
pdf.rotate(angle, origin: [
|
794
|
+
pdf.rotate(angle, origin: [0, 0])
|
767
795
|
end.to raise_error(Prawn::Errors::BlockRequired)
|
768
796
|
end
|
769
797
|
end
|
@@ -781,6 +809,7 @@ describe Prawn::Graphics do
|
|
781
809
|
|
782
810
|
describe '#scale' do
|
783
811
|
it 'scales' do
|
812
|
+
factor = 0.12
|
784
813
|
allow(pdf).to receive(:transformation_matrix)
|
785
814
|
.with(factor, 0, 0, factor, 0, 0)
|
786
815
|
pdf.scale(factor)
|
@@ -790,7 +819,11 @@ describe Prawn::Graphics do
|
|
790
819
|
end
|
791
820
|
|
792
821
|
describe '#scale with :origin option' do
|
822
|
+
let(:factor) { 0.12 }
|
823
|
+
|
793
824
|
it 'scales from the origin' do
|
825
|
+
x = 12
|
826
|
+
y = 54.32
|
794
827
|
x_prime = factor * x
|
795
828
|
y_prime = factor * y
|
796
829
|
|
@@ -806,6 +839,8 @@ describe Prawn::Graphics do
|
|
806
839
|
end
|
807
840
|
|
808
841
|
it 'scales from the origin in a document with a margin' do
|
842
|
+
x = 12
|
843
|
+
y = 54.32
|
809
844
|
pdf = Prawn::Document.new
|
810
845
|
x_ = x + pdf.bounds.absolute_left
|
811
846
|
y_ = y + pdf.bounds.absolute_bottom
|
@@ -825,7 +860,7 @@ describe Prawn::Graphics do
|
|
825
860
|
|
826
861
|
it 'raise_errors BlockRequired if no block is given' do
|
827
862
|
expect do
|
828
|
-
pdf.scale(factor, origin: [
|
863
|
+
pdf.scale(factor, origin: [0, 0])
|
829
864
|
end.to raise_error(Prawn::Errors::BlockRequired)
|
830
865
|
end
|
831
866
|
end
|