1// 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
7#include "../../public/fpdf_edit.h"
8#include "../include/fsdk_define.h"
9
10
11DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPageObj_NewImgeObj(FPDF_DOCUMENT document)
12{
13	if (!document)
14		return NULL;
15	CPDF_ImageObject* pImageObj = new CPDF_ImageObject;
16	CPDF_Image* pImg = new CPDF_Image((CPDF_Document *)document);
17	pImageObj->m_pImage = pImg;
18	return pImageObj;
19}
20
21DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_LoadJpegFile(FPDF_PAGE* pages, int nCount,FPDF_PAGEOBJECT image_object, FPDF_FILEACCESS* fileAccess)
22{
23	if (!image_object || !fileAccess)
24		return FALSE;
25
26	IFX_FileRead* pFile = new CPDF_CustomAccess(fileAccess);
27	CPDF_ImageObject* pImgObj = (CPDF_ImageObject*)image_object;
28	pImgObj->m_GeneralState.GetModify();
29	for (int index=0;index<nCount;index++)
30	{
31		CPDF_Page* pPage = (CPDF_Page*)pages[index];
32		pImgObj->m_pImage->ResetCache(pPage,NULL);
33	}
34	pImgObj->m_pImage->SetJpegImage(pFile);
35
36	return TRUE;
37}
38
39
40DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetMatrix	(FPDF_PAGEOBJECT image_object,
41												 double a, double b, double c, double d, double e, double f)
42{
43	if (!image_object)
44		return FALSE;
45	CPDF_ImageObject* pImgObj = (CPDF_ImageObject*)image_object;
46	pImgObj->m_Matrix.a = (FX_FLOAT)a;
47	pImgObj->m_Matrix.b = (FX_FLOAT)b;
48	pImgObj->m_Matrix.c = (FX_FLOAT)c;
49	pImgObj->m_Matrix.d = (FX_FLOAT)d;
50	pImgObj->m_Matrix.e = (FX_FLOAT)e;
51	pImgObj->m_Matrix.f = (FX_FLOAT)f;
52	pImgObj->CalcBoundingBox();
53	return  TRUE;
54}
55
56DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetBitmap(FPDF_PAGE* pages,int nCount,FPDF_PAGEOBJECT image_object,FPDF_BITMAP bitmap)
57{
58	if (!image_object || !bitmap)
59		return FALSE;
60	CFX_DIBitmap* pBmp = NULL;
61	pBmp = (CFX_DIBitmap*)bitmap;
62	CPDF_ImageObject* pImgObj = (CPDF_ImageObject*)image_object;
63	pImgObj->m_GeneralState.GetModify();
64	for (int index=0;index<nCount;index++)
65	{
66		CPDF_Page* pPage = (CPDF_Page*)pages[index];
67		pImgObj->m_pImage->ResetCache(pPage,NULL);
68	}
69	pImgObj->m_pImage->SetImage(pBmp,FALSE);
70	pImgObj->CalcBoundingBox();
71	return TRUE;
72}
73
74