Remove some abstractions in fxjs_v8.h.
[pdfium.git] / fpdfsdk / src / fpdfeditimg.cpp
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 DLLEXPORT FPDF_PAGEOBJECT STDCALL
11 FPDFPageObj_NewImgeObj(FPDF_DOCUMENT document) {
12   if (!document)
13     return NULL;
14   CPDF_ImageObject* pImageObj = new CPDF_ImageObject;
15   CPDF_Image* pImg = new CPDF_Image((CPDF_Document*)document);
16   pImageObj->m_pImage = pImg;
17   return pImageObj;
18 }
19
20 DLLEXPORT FPDF_BOOL STDCALL
21 FPDFImageObj_LoadJpegFile(FPDF_PAGE* pages,
22                           int nCount,
23                           FPDF_PAGEOBJECT image_object,
24                           FPDF_FILEACCESS* fileAccess) {
25   if (!image_object || !fileAccess)
26     return FALSE;
27
28   IFX_FileRead* pFile = new CPDF_CustomAccess(fileAccess);
29   CPDF_ImageObject* pImgObj = (CPDF_ImageObject*)image_object;
30   pImgObj->m_GeneralState.GetModify();
31   for (int index = 0; index < nCount; index++) {
32     CPDF_Page* pPage = (CPDF_Page*)pages[index];
33     pImgObj->m_pImage->ResetCache(pPage, NULL);
34   }
35   pImgObj->m_pImage->SetJpegImage(pFile);
36
37   return TRUE;
38 }
39
40 DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetMatrix(FPDF_PAGEOBJECT image_object,
41                                                    double a,
42                                                    double b,
43                                                    double c,
44                                                    double d,
45                                                    double e,
46                                                    double f) {
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
60 DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetBitmap(FPDF_PAGE* pages,
61                                                    int nCount,
62                                                    FPDF_PAGEOBJECT image_object,
63                                                    FPDF_BITMAP bitmap) {
64   if (!image_object || !bitmap)
65     return FALSE;
66   CFX_DIBitmap* pBmp = NULL;
67   pBmp = (CFX_DIBitmap*)bitmap;
68   CPDF_ImageObject* pImgObj = (CPDF_ImageObject*)image_object;
69   pImgObj->m_GeneralState.GetModify();
70   for (int index = 0; index < nCount; index++) {
71     CPDF_Page* pPage = (CPDF_Page*)pages[index];
72     pImgObj->m_pImage->ResetCache(pPage, NULL);
73   }
74   pImgObj->m_pImage->SetImage(pBmp, FALSE);
75   pImgObj->CalcBoundingBox();
76   return TRUE;
77 }