blob: aba8d0b7b2dea12d874ad142d677d1fb55115360 [file] [log] [blame]
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07001// Copyright 2014 PDFium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
Tom Sepez1ed8a212015-05-11 15:25:39 -07007#include "../../public/fpdf_edit.h"
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07008#include "../include/fsdk_define.h"
Bo Xufdc00a72014-10-28 23:03:33 -07009#include "../include/fpdfxfa/fpdfxfa_doc.h"
10#include "../include/fpdfxfa/fpdfxfa_page.h"
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070011
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070012DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPageObj_NewImgeObj(FPDF_DOCUMENT document)
13{
14 if (!document)
15 return NULL;
16 CPDF_ImageObject* pImageObj = FX_NEW CPDF_ImageObject;
Bo Xufdc00a72014-10-28 23:03:33 -070017 CPDF_Image* pImg = FX_NEW CPDF_Image(((CPDFXFA_Document *)document)->GetPDFDoc());
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070018 pImageObj->m_pImage = pImg;
19 return pImageObj;
20}
21
22DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_LoadJpegFile(FPDF_PAGE* pages, int nCount,FPDF_PAGEOBJECT image_object, FPDF_FILEACCESS* fileAccess)
23{
Bo Xufdc00a72014-10-28 23:03:33 -070024 if (!image_object || !fileAccess || !pages)
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070025 return FALSE;
26
27 IFX_FileRead* pFile = FX_NEW CPDF_CustomAccess(fileAccess);
28
29 CPDF_ImageObject* pImgObj = (CPDF_ImageObject*)image_object;
30 pImgObj->m_GeneralState.GetModify();
31 for (int index=0;index<nCount;index++)
32 {
Bo Xufdc00a72014-10-28 23:03:33 -070033 CPDF_Page* pPage = ((CPDFXFA_Page*)pages[index])->GetPDFPage();
34 if (!pPage)
35 continue;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070036 pImgObj->m_pImage->ResetCache(pPage,NULL);
37 }
38 pImgObj->m_pImage->SetJpegImage(pFile);
39
40 return TRUE;
41}
42
43
44DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetMatrix (FPDF_PAGEOBJECT image_object,
45 double a, double b, double c, double d, double e, double f)
46{
47 if (!image_object)
48 return FALSE;
49 CPDF_ImageObject* pImgObj = (CPDF_ImageObject*)image_object;
50 pImgObj->m_Matrix.a = (FX_FLOAT)a;
51 pImgObj->m_Matrix.b = (FX_FLOAT)b;
52 pImgObj->m_Matrix.c = (FX_FLOAT)c;
53 pImgObj->m_Matrix.d = (FX_FLOAT)d;
54 pImgObj->m_Matrix.e = (FX_FLOAT)e;
55 pImgObj->m_Matrix.f = (FX_FLOAT)f;
56 pImgObj->CalcBoundingBox();
57 return TRUE;
58}
59
60DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetBitmap(FPDF_PAGE* pages,int nCount,FPDF_PAGEOBJECT image_object,FPDF_BITMAP bitmap)
61{
Bo Xufdc00a72014-10-28 23:03:33 -070062 if (!image_object || !bitmap || !pages)
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070063 return FALSE;
64 CFX_DIBitmap* pBmp = NULL;
65 pBmp = (CFX_DIBitmap*)bitmap;
66 CPDF_ImageObject* pImgObj = (CPDF_ImageObject*)image_object;
67 pImgObj->m_GeneralState.GetModify();
68 for (int index=0;index<nCount;index++)
69 {
Bo Xufdc00a72014-10-28 23:03:33 -070070 CPDF_Page* pPage = ((CPDFXFA_Page*)pages[index])->GetPDFPage();
71 if (!pPage) continue;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070072 pImgObj->m_pImage->ResetCache(pPage,NULL);
73 }
74 pImgObj->m_pImage->SetImage(pBmp,FALSE);
75 pImgObj->CalcBoundingBox();
76 return TRUE;
77}
78