prawn 2.3.0 → 2.4.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
- 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
|