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

Side by Side Diff: fpdfsdk/fpdfeditimg.cpp

Issue 2529543003: Add inline JPEGs. (Closed)
Patch Set: Fix extra arg Created 4 years 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 | « core/fpdfapi/page/cpdf_image.cpp ('k') | public/fpdf_edit.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium 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 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "public/fpdf_edit.h" 7 #include "public/fpdf_edit.h"
8 8
9 #include "core/fpdfapi/cpdf_modulemgr.h" 9 #include "core/fpdfapi/cpdf_modulemgr.h"
10 #include "core/fpdfapi/page/cpdf_image.h" 10 #include "core/fpdfapi/page/cpdf_image.h"
11 #include "core/fpdfapi/page/cpdf_imageobject.h" 11 #include "core/fpdfapi/page/cpdf_imageobject.h"
12 #include "core/fpdfapi/page/cpdf_pageobject.h" 12 #include "core/fpdfapi/page/cpdf_pageobject.h"
13 #include "fpdfsdk/fsdk_define.h" 13 #include "fpdfsdk/fsdk_define.h"
14 #include "third_party/base/ptr_util.h" 14 #include "third_party/base/ptr_util.h"
15 15
16 DLLEXPORT FPDF_PAGEOBJECT STDCALL 16 DLLEXPORT FPDF_PAGEOBJECT STDCALL
17 FPDFPageObj_NewImgeObj(FPDF_DOCUMENT document) { 17 FPDFPageObj_NewImgeObj(FPDF_DOCUMENT document) {
18 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); 18 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document);
19 if (!pDoc) 19 if (!pDoc)
20 return nullptr; 20 return nullptr;
21 21
22 CPDF_ImageObject* pImageObj = new CPDF_ImageObject; 22 CPDF_ImageObject* pImageObj = new CPDF_ImageObject;
23 pImageObj->SetOwnedImage(pdfium::MakeUnique<CPDF_Image>(pDoc)); 23 pImageObj->SetOwnedImage(pdfium::MakeUnique<CPDF_Image>(pDoc));
24 return pImageObj; 24 return pImageObj;
25 } 25 }
26 26
27 DLLEXPORT FPDF_BOOL STDCALL 27 FPDF_BOOL FPDFImageObj_LoadJpegHelper(FPDF_PAGE* pages,
28 FPDFImageObj_LoadJpegFile(FPDF_PAGE* pages, 28 int nCount,
29 int nCount, 29 FPDF_PAGEOBJECT image_object,
30 FPDF_PAGEOBJECT image_object, 30 FPDF_FILEACCESS* fileAccess,
31 FPDF_FILEACCESS* fileAccess) { 31 bool inlineJpeg) {
32 if (!image_object || !fileAccess || !pages) 32 if (!image_object || !fileAccess || !pages)
33 return false; 33 return false;
34 34
35 CFX_RetainPtr<IFX_SeekableReadStream> pFile = 35 CFX_RetainPtr<IFX_SeekableReadStream> pFile =
36 MakeSeekableReadStream(fileAccess); 36 MakeSeekableReadStream(fileAccess);
37 CPDF_ImageObject* pImgObj = reinterpret_cast<CPDF_ImageObject*>(image_object); 37 CPDF_ImageObject* pImgObj = reinterpret_cast<CPDF_ImageObject*>(image_object);
38 for (int index = 0; index < nCount; index++) { 38 for (int index = 0; index < nCount; index++) {
39 CPDF_Page* pPage = CPDFPageFromFPDFPage(pages[index]); 39 CPDF_Page* pPage = CPDFPageFromFPDFPage(pages[index]);
40 if (pPage) 40 if (pPage)
41 pImgObj->GetImage()->ResetCache(pPage, nullptr); 41 pImgObj->GetImage()->ResetCache(pPage, nullptr);
42 } 42 }
43 pImgObj->GetImage()->SetJpegImage(pFile); 43
44 if (inlineJpeg)
45 pImgObj->GetImage()->SetJpegImageInline(pFile);
46 else
47 pImgObj->GetImage()->SetJpegImage(pFile);
44 48
45 return true; 49 return true;
46 } 50 }
47 51
52 DLLEXPORT FPDF_BOOL STDCALL
53 FPDFImageObj_LoadJpegFile(FPDF_PAGE* pages,
54 int nCount,
55 FPDF_PAGEOBJECT image_object,
56 FPDF_FILEACCESS* fileAccess) {
57 return FPDFImageObj_LoadJpegHelper(pages, nCount, image_object, fileAccess,
58 false);
59 }
60
61 DLLEXPORT FPDF_BOOL STDCALL
62 FPDFImageObj_LoadJpegFileInline(FPDF_PAGE* pages,
63 int nCount,
64 FPDF_PAGEOBJECT image_object,
65 FPDF_FILEACCESS* fileAccess) {
66 return FPDFImageObj_LoadJpegHelper(pages, nCount, image_object, fileAccess,
67 true);
68 }
69
48 DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetMatrix(FPDF_PAGEOBJECT image_object, 70 DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetMatrix(FPDF_PAGEOBJECT image_object,
49 double a, 71 double a,
50 double b, 72 double b,
51 double c, 73 double c,
52 double d, 74 double d,
53 double e, 75 double e,
54 double f) { 76 double f) {
55 if (!image_object) 77 if (!image_object)
56 return false; 78 return false;
57 79
(...skipping 16 matching lines...) Expand all
74 CPDF_ImageObject* pImgObj = reinterpret_cast<CPDF_ImageObject*>(image_object); 96 CPDF_ImageObject* pImgObj = reinterpret_cast<CPDF_ImageObject*>(image_object);
75 for (int index = 0; index < nCount; index++) { 97 for (int index = 0; index < nCount; index++) {
76 CPDF_Page* pPage = CPDFPageFromFPDFPage(pages[index]); 98 CPDF_Page* pPage = CPDFPageFromFPDFPage(pages[index]);
77 if (pPage) 99 if (pPage)
78 pImgObj->GetImage()->ResetCache(pPage, nullptr); 100 pImgObj->GetImage()->ResetCache(pPage, nullptr);
79 } 101 }
80 pImgObj->GetImage()->SetImage(reinterpret_cast<CFX_DIBitmap*>(bitmap)); 102 pImgObj->GetImage()->SetImage(reinterpret_cast<CFX_DIBitmap*>(bitmap));
81 pImgObj->CalcBoundingBox(); 103 pImgObj->CalcBoundingBox();
82 return true; 104 return true;
83 } 105 }
OLDNEW
« no previous file with comments | « core/fpdfapi/page/cpdf_image.cpp ('k') | public/fpdf_edit.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698