Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(549)

Side by Side Diff: samples/pdfium_test.cc

Issue 1994113002: Fix memory leaks in pdfium_test. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <limits.h> 5 #include <limits.h>
6 #include <stdio.h> 6 #include <stdio.h>
7 #include <stdlib.h> 7 #include <stdlib.h>
8 #include <string.h> 8 #include <string.h>
9 9
10 #include <list> 10 #include <list>
(...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 SendPageEvents(form, page, events); 501 SendPageEvents(form, page, events);
502 502
503 double scale = 1.0; 503 double scale = 1.0;
504 if (!options.scale_factor_as_string.empty()) { 504 if (!options.scale_factor_as_string.empty()) {
505 std::stringstream(options.scale_factor_as_string) >> scale; 505 std::stringstream(options.scale_factor_as_string) >> scale;
506 } 506 }
507 int width = static_cast<int>(FPDF_GetPageWidth(page) * scale); 507 int width = static_cast<int>(FPDF_GetPageWidth(page) * scale);
508 int height = static_cast<int>(FPDF_GetPageHeight(page) * scale); 508 int height = static_cast<int>(FPDF_GetPageHeight(page) * scale);
509 int alpha = FPDFPage_HasTransparency(page) ? 1 : 0; 509 int alpha = FPDFPage_HasTransparency(page) ? 1 : 0;
510 FPDF_BITMAP bitmap = FPDFBitmap_Create(width, height, alpha); 510 FPDF_BITMAP bitmap = FPDFBitmap_Create(width, height, alpha);
511 if (!bitmap) { 511 if (bitmap) {
512 fprintf(stderr, "Page was too large to be rendered.\n"); 512 FPDF_DWORD fill_color = alpha ? 0x00000000 : 0xFFFFFFFF;
513 return false; 513 FPDFBitmap_FillRect(bitmap, 0, 0, width, height, fill_color);
514 } 514 FPDF_RenderPageBitmap(bitmap, page, 0, 0, width, height, 0, 0);
515 FPDF_DWORD fill_color = alpha ? 0x00000000 : 0xFFFFFFFF;
516 FPDFBitmap_FillRect(bitmap, 0, 0, width, height, fill_color);
517 FPDF_RenderPageBitmap(bitmap, page, 0, 0, width, height, 0, 0);
518 515
519 FPDF_FFLDraw(form, bitmap, page, 0, 0, width, height, 0, 0); 516 FPDF_FFLDraw(form, bitmap, page, 0, 0, width, height, 0, 0);
520 int stride = FPDFBitmap_GetStride(bitmap); 517 int stride = FPDFBitmap_GetStride(bitmap);
521 const char* buffer = 518 const char* buffer =
522 reinterpret_cast<const char*>(FPDFBitmap_GetBuffer(bitmap)); 519 reinterpret_cast<const char*>(FPDFBitmap_GetBuffer(bitmap));
523 520
524 switch (options.output_format) { 521 switch (options.output_format) {
525 #ifdef _WIN32 522 #ifdef _WIN32
526 case OUTPUT_BMP: 523 case OUTPUT_BMP:
527 WriteBmp(name.c_str(), page_index, buffer, stride, width, height); 524 WriteBmp(name.c_str(), page_index, buffer, stride, width, height);
528 break; 525 break;
529 526
530 case OUTPUT_EMF: 527 case OUTPUT_EMF:
531 WriteEmf(page, name.c_str(), page_index); 528 WriteEmf(page, name.c_str(), page_index);
532 break; 529 break;
533 #endif 530 #endif
534 case OUTPUT_PNG: 531 case OUTPUT_PNG:
535 WritePng(name.c_str(), page_index, buffer, stride, width, height); 532 WritePng(name.c_str(), page_index, buffer, stride, width, height);
536 break; 533 break;
537 534
538 case OUTPUT_PPM: 535 case OUTPUT_PPM:
539 WritePpm(name.c_str(), page_index, buffer, stride, width, height); 536 WritePpm(name.c_str(), page_index, buffer, stride, width, height);
540 break; 537 break;
541 538
542 #ifdef PDF_ENABLE_SKIA 539 #ifdef PDF_ENABLE_SKIA
543 case OUTPUT_SKP: { 540 case OUTPUT_SKP: {
544 std::unique_ptr<SkPictureRecorder> recorder( 541 std::unique_ptr<SkPictureRecorder> recorder(
545 (SkPictureRecorder*)FPDF_RenderPageSkp(page, width, height)); 542 (SkPictureRecorder*)FPDF_RenderPageSkp(page, width, height));
546 FPDF_FFLRecord(form, recorder.get(), page, 0, 0, width, height, 0, 0); 543 FPDF_FFLRecord(form, recorder.get(), page, 0, 0, width, height, 0, 0);
547 WriteSkp(name.c_str(), page_index, recorder.get()); 544 WriteSkp(name.c_str(), page_index, recorder.get());
548 } break; 545 } break;
549 #endif 546 #endif
550 default: 547 default:
551 break; 548 break;
549 }
550
551 FPDFBitmap_Destroy(bitmap);
552 } else {
553 fprintf(stderr, "Page was too large to be rendered.\n");
552 } 554 }
553
554 FPDFBitmap_Destroy(bitmap);
555 FORM_DoPageAAction(page, form, FPDFPAGE_AACTION_CLOSE); 555 FORM_DoPageAAction(page, form, FPDFPAGE_AACTION_CLOSE);
556 FORM_OnBeforeClosePage(page, form); 556 FORM_OnBeforeClosePage(page, form);
557 FPDFText_ClosePage(text_page); 557 FPDFText_ClosePage(text_page);
558 FPDF_ClosePage(page); 558 FPDF_ClosePage(page);
559 return true; 559 return !!bitmap;
560 } 560 }
561 561
562 void RenderPdf(const std::string& name, 562 void RenderPdf(const std::string& name,
563 const char* pBuf, 563 const char* pBuf,
564 size_t len, 564 size_t len,
565 const Options& options, 565 const Options& options,
566 const std::string& events) { 566 const std::string& events) {
567 IPDF_JSPLATFORM platform_callbacks; 567 IPDF_JSPLATFORM platform_callbacks;
568 memset(&platform_callbacks, '\0', sizeof(platform_callbacks)); 568 memset(&platform_callbacks, '\0', sizeof(platform_callbacks));
569 platform_callbacks.version = 3; 569 platform_callbacks.version = 3;
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
836 } 836 }
837 837
838 FPDF_DestroyLibrary(); 838 FPDF_DestroyLibrary();
839 #ifdef PDF_ENABLE_V8 839 #ifdef PDF_ENABLE_V8
840 v8::V8::ShutdownPlatform(); 840 v8::V8::ShutdownPlatform();
841 delete platform; 841 delete platform;
842 #endif // PDF_ENABLE_V8 842 #endif // PDF_ENABLE_V8
843 843
844 return 0; 844 return 0;
845 } 845 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698