23 const char* rotated_checksum = []() {
25 return "eded83f75f3d0332c584c416c571c0df";
27 return "d599429574ff0dcad3bc898ea8b874ca";
31 ASSERT_TRUE(OpenDocument(
"rectangles.pdf"));
32 FPDF_PAGE page = LoadPage(0);
40 EXPECT_EQ(200, page_width);
41 EXPECT_EQ(300, page_height);
42 ScopedFPDFBitmap bitmap = RenderLoadedPage(page);
43 CompareBitmap(bitmap.get(), page_width, page_height,
56 EXPECT_EQ(300, page_width);
57 EXPECT_EQ(200, page_height);
58 ScopedFPDFBitmap bitmap = RenderLoadedPage(page);
59 CompareBitmap(bitmap.get(), page_width, page_height, rotated_checksum);
68 EXPECT_TRUE(FPDF_SaveAsCopy(document(),
this, 0));
69 ASSERT_TRUE(OpenSavedDocument());
70 FPDF_PAGE saved_page = LoadSavedPage(0);
71 ASSERT_TRUE(saved_page);
76 EXPECT_EQ(300, page_width);
77 EXPECT_EQ(200, page_height);
78 ScopedFPDFBitmap bitmap = RenderSavedPage(saved_page);
79 CompareBitmap(bitmap.get(), page_width, page_height, rotated_checksum);
81 CloseSavedPage(saved_page);
173 float phase = -1123.5f;
175 EXPECT_FLOAT_EQ(-1123.5f, phase);
179 EXPECT_FALSE(FPDFPageObj_GetDashArray(
nullptr,
nullptr, 3));
181 std::array<
float, 3> get_array = {{-1.0f, -1.0f, -1.0f}};
183 FPDFPageObj_GetDashArray(
nullptr, get_array.data(), get_array.size()));
184 EXPECT_THAT(get_array, Each(FloatEq(-1.0f)));
187 EXPECT_FALSE(FPDFPageObj_SetDashArray(
nullptr,
nullptr, 3, 5.0f));
189 std::array<
float, 3> set_array = {{1.0f, 2.0f, 3.0f}};
190 EXPECT_FALSE(FPDFPageObj_SetDashArray(
nullptr, set_array.data(),
191 set_array.size(), 5.0f));
194 constexpr int kExpectedObjectCount = 3;
195 ASSERT_TRUE(OpenDocument(
"dashed_lines.pdf"));
196 FPDF_PAGE page = LoadPage(0);
207 EXPECT_FALSE(FPDFPageObj_GetDashArray(path,
nullptr, 3));
208 EXPECT_FALSE(FPDFPageObj_SetDashArray(path,
nullptr, 3, 5.0f));
210 float phase = -1123.5f;
212 EXPECT_FLOAT_EQ(0.0f, phase);
215 std::array<
float, 3> get_array = {{-1.0f, -1.0f, -1.0f}};
217 FPDFPageObj_GetDashArray(path, get_array.data(), get_array.size()));
218 EXPECT_THAT(get_array, Each(FloatEq(-1.0f)));
226 float phase = -1123.5f;
228 EXPECT_LT(0.0f, phase);
231 std::array<
float, 6> dash_array = {
232 {-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f}};
234 FPDFPageObj_GetDashArray(path, dash_array.data(), dash_array.size()));
235 EXPECT_THAT(dash_array, Each(Gt(0.0f)));
238 for (
int i = 0; i < 5; i++) {
239 EXPECT_GT(dash_array[i], dash_array[i + 1]);
246 EXPECT_FLOAT_EQ(1.0f, phase);
249 EXPECT_TRUE(FPDFPageObj_SetDashArray(path,
nullptr, 0, 0.0f));
254 EXPECT_FLOAT_EQ(0.0f, phase);
262 float phase = -1123.5f;
264 EXPECT_FLOAT_EQ(0.0f, phase);
269 std::array<
float, 4> get_array = {{-1.0f, -1.0f, -1.0f, -1.0f}};
271 FPDFPageObj_GetDashArray(path, get_array.data(), get_array.size()));
272 EXPECT_THAT(get_array, Each(FloatEq(-1.0f)));
275 const std::array<
float, 3> set_array = {{1.0f, 2.0f, 3.0f}};
276 EXPECT_TRUE(FPDFPageObj_SetDashArray(path, set_array.data(),
277 set_array.size(), 5.0f));
281 EXPECT_FLOAT_EQ(5.0f, phase);
285 EXPECT_FALSE(FPDFPageObj_GetDashArray(path, get_array.data(), 2));
286 EXPECT_THAT(get_array, Each(FloatEq(-1.0f)));
289 FPDFPageObj_GetDashArray(path, get_array.data(), get_array.size()));
292 for (
int i = 0; i < 3; i++) {
293 EXPECT_FLOAT_EQ(
static_cast<
float>(i + 1), get_array[i]);
295 EXPECT_FLOAT_EQ(-1.0f, get_array[3]);
298 EXPECT_TRUE(FPDFPageObj_SetDashArray(path, set_array.data(), 0, 4.0f));
303 EXPECT_FLOAT_EQ(4.0f, phase);
326 ASSERT_TRUE(OpenDocument(
"hello_world.pdf"));
327 FPDF_PAGE page = LoadPage(0);
333 constexpr float kExpectedLeft = 20.348f;
334 constexpr float kExpectedBottom = 48.164f;
335 constexpr float kExpectedRight = 83.36f;
336 constexpr float kExpectedTop = 58.328f;
343 EXPECT_FLOAT_EQ(kExpectedLeft, left);
344 EXPECT_FLOAT_EQ(kExpectedBottom, bottom);
345 EXPECT_FLOAT_EQ(kExpectedRight, right);
346 EXPECT_FLOAT_EQ(kExpectedTop, top);
350 EXPECT_FLOAT_EQ(kExpectedLeft, quad.x1);
351 EXPECT_FLOAT_EQ(kExpectedBottom, quad.y1);
352 EXPECT_FLOAT_EQ(kExpectedRight, quad.x2);
353 EXPECT_FLOAT_EQ(kExpectedBottom, quad.y2);
354 EXPECT_FLOAT_EQ(kExpectedRight, quad.x3);
355 EXPECT_FLOAT_EQ(kExpectedTop, quad.y3);
356 EXPECT_FLOAT_EQ(kExpectedLeft, quad.x4);
357 EXPECT_FLOAT_EQ(kExpectedTop, quad.y4);
363 ASSERT_TRUE(OpenDocument(
"rotated_text.pdf"));
364 FPDF_PAGE page = LoadPage(0);
370 constexpr float kExpectedLeft = 98.9478f;
371 constexpr float kExpectedBottom = 78.2607f;
372 constexpr float kExpectedRight = 126.32983f;
373 constexpr float kExpectedTop = 105.64272f;
380 EXPECT_FLOAT_EQ(kExpectedLeft, left);
381 EXPECT_FLOAT_EQ(kExpectedBottom, bottom);
382 EXPECT_FLOAT_EQ(kExpectedRight, right);
383 EXPECT_FLOAT_EQ(kExpectedTop, top);
387 EXPECT_FLOAT_EQ(kExpectedLeft, quad.x1);
388 EXPECT_FLOAT_EQ(98.4557f, quad.y1);
389 EXPECT_FLOAT_EQ(119.14279f, quad.x2);
390 EXPECT_FLOAT_EQ(kExpectedBottom, quad.y2);
391 EXPECT_FLOAT_EQ(kExpectedRight, quad.x3);
392 EXPECT_FLOAT_EQ(85.447739f, quad.y3);
393 EXPECT_FLOAT_EQ(106.13486f, quad.x4);
394 EXPECT_FLOAT_EQ(kExpectedTop, quad.y4);
400 ASSERT_TRUE(OpenDocument(
"matte.pdf"));
401 FPDF_PAGE page = LoadPage(0);
407 constexpr float kExpectedLeft = 0.0f;
408 constexpr float kExpectedBottom = 90.0f;
409 constexpr float kExpectedRight = 40.0f;
410 constexpr float kExpectedTop = 150.0f;
417 EXPECT_FLOAT_EQ(kExpectedLeft, left);
418 EXPECT_FLOAT_EQ(kExpectedBottom, bottom);
419 EXPECT_FLOAT_EQ(kExpectedRight, right);
420 EXPECT_FLOAT_EQ(kExpectedTop, top);
424 EXPECT_FLOAT_EQ(kExpectedLeft, quad.x1);
425 EXPECT_FLOAT_EQ(kExpectedBottom, quad.y1);
426 EXPECT_FLOAT_EQ(kExpectedRight, quad.x2);
427 EXPECT_FLOAT_EQ(kExpectedBottom, quad.y2);
428 EXPECT_FLOAT_EQ(kExpectedRight, quad.x3);
429 EXPECT_FLOAT_EQ(kExpectedTop, quad.y3);
430 EXPECT_FLOAT_EQ(kExpectedLeft, quad.x4);
431 EXPECT_FLOAT_EQ(kExpectedTop, quad.y4);
437 ASSERT_TRUE(OpenDocument(
"rotated_image.pdf"));
438 FPDF_PAGE page = LoadPage(0);
444 constexpr float kExpectedLeft = 100.0f;
445 constexpr float kExpectedBottom = 70.0f;
446 constexpr float kExpectedRight = 170.0f;
447 constexpr float kExpectedTop = 140.0f;
454 EXPECT_FLOAT_EQ(kExpectedLeft, left);
455 EXPECT_FLOAT_EQ(kExpectedBottom, bottom);
456 EXPECT_FLOAT_EQ(kExpectedRight, right);
457 EXPECT_FLOAT_EQ(kExpectedTop, top);
461 EXPECT_FLOAT_EQ(kExpectedLeft, quad.x1);
462 EXPECT_FLOAT_EQ(100.0f, quad.y1);
463 EXPECT_FLOAT_EQ(130.0f, quad.x2);
464 EXPECT_FLOAT_EQ(kExpectedBottom, quad.y2);
465 EXPECT_FLOAT_EQ(kExpectedRight, quad.x3);
466 EXPECT_FLOAT_EQ(110.0f, quad.y3);
467 EXPECT_FLOAT_EQ(140.0f, quad.x4);
468 EXPECT_FLOAT_EQ(kExpectedTop, quad.y4);
474 constexpr float kDashArray[] = {2.5, 3.6};
475 constexpr float kDashPhase = 1.2;
477 CreateEmptyDocument();
479 ScopedFPDFPage page(FPDFPage_New(document(), 0, 612, 792));
486 EXPECT_TRUE(FPDFPageObj_SetDashArray(path, kDashArray,
487 std::size(kDashArray), kDashPhase));
488 FPDFPage_InsertObject(page.get(), path);
490 EXPECT_TRUE(FPDFPage_GenerateContent(page.get()));
491 path = FPDFPage_GetObject(page.get(), 0);
495 EXPECT_TRUE(FPDF_SaveAsCopy(document(),
this, 0));
498 ASSERT_TRUE(OpenSavedDocument());
499 FPDF_PAGE page = LoadSavedPage(0);
505 float dash_array[] = {0, 0};
506 ASSERT_EQ(
static_cast<
int>(
std::size(dash_array)),
509 FPDFPageObj_GetDashArray(path, dash_array, std::size(dash_array)));
510 ASSERT_EQ(kDashArray[0], dash_array[0]);
511 ASSERT_EQ(kDashArray[1], dash_array[1]);
512 float dash_phase = 0;
514 ASSERT_EQ(kDashPhase, dash_phase);
516 CloseSavedPage(page);
517 CloseSavedDocument();
TEST_F(FPDFEditPageEmbedderTest, Rotation)