OLD | NEW |
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 Loading... |
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 } |
OLD | NEW |