| 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 "../include/fsdk_define.h" | 7 #include "../include/fsdk_define.h" |
| 8 #include "../include/fsdk_mgr.h" | 8 #include "../include/fsdk_mgr.h" |
| 9 #include "../include/fpdfview.h" | 9 #include "../include/fpdfview.h" |
| 10 #include "../include/fsdk_rendercontext.h" | 10 #include "../include/fsdk_rendercontext.h" |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 SetLastError(err_code); | 177 SetLastError(err_code); |
| 178 } | 178 } |
| 179 | 179 |
| 180 DLLEXPORT void STDCALL FPDF_SetSandBoxPolicy(FPDF_DWORD policy, FPDF_BOOL enabl
e) | 180 DLLEXPORT void STDCALL FPDF_SetSandBoxPolicy(FPDF_DWORD policy, FPDF_BOOL enabl
e) |
| 181 { | 181 { |
| 182 return FSDK_SetSandBoxPolicy(policy, enable); | 182 return FSDK_SetSandBoxPolicy(policy, enable); |
| 183 } | 183 } |
| 184 | 184 |
| 185 DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path, FPDF_BY
TESTRING password) | 185 DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path, FPDF_BY
TESTRING password) |
| 186 { | 186 { |
| 187 » CPDF_Parser* pParser = FX_NEW CPDF_Parser; | 187 » CPDF_Parser* pParser = new CPDF_Parser; |
| 188 pParser->SetPassword(password); | 188 pParser->SetPassword(password); |
| 189 | 189 |
| 190 FX_DWORD err_code = pParser->StartParse((FX_LPCSTR)file_path); | 190 FX_DWORD err_code = pParser->StartParse((FX_LPCSTR)file_path); |
| 191 if (err_code) { | 191 if (err_code) { |
| 192 delete pParser; | 192 delete pParser; |
| 193 ProcessParseError(err_code); | 193 ProcessParseError(err_code); |
| 194 return NULL; | 194 return NULL; |
| 195 } | 195 } |
| 196 return pParser->GetDocument(); | 196 return pParser->GetDocument(); |
| 197 } | 197 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 217 } | 217 } |
| 218 FXSYS_memcpy(buffer, m_pBuf+offset, size); | 218 FXSYS_memcpy(buffer, m_pBuf+offset, size); |
| 219 return TRUE; | 219 return TRUE; |
| 220 } | 220 } |
| 221 private: | 221 private: |
| 222 FX_BYTE* m_pBuf; | 222 FX_BYTE* m_pBuf; |
| 223 FX_FILESIZE m_size; | 223 FX_FILESIZE m_size; |
| 224 }; | 224 }; |
| 225 DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadMemDocument(const void* data_buf, int s
ize, FPDF_BYTESTRING password) | 225 DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadMemDocument(const void* data_buf, int s
ize, FPDF_BYTESTRING password) |
| 226 { | 226 { |
| 227 » CPDF_Parser* pParser = FX_NEW CPDF_Parser; | 227 » CPDF_Parser* pParser = new CPDF_Parser; |
| 228 pParser->SetPassword(password); | 228 pParser->SetPassword(password); |
| 229 » CMemFile* pMemFile = FX_NEW CMemFile((FX_BYTE*)data_buf, size); | 229 » CMemFile* pMemFile = new CMemFile((FX_BYTE*)data_buf, size); |
| 230 FX_DWORD err_code = pParser->StartParse(pMemFile); | 230 FX_DWORD err_code = pParser->StartParse(pMemFile); |
| 231 if (err_code) { | 231 if (err_code) { |
| 232 delete pParser; | 232 delete pParser; |
| 233 ProcessParseError(err_code); | 233 ProcessParseError(err_code); |
| 234 return NULL; | 234 return NULL; |
| 235 } | 235 } |
| 236 CPDF_Document * pDoc = NULL; | 236 CPDF_Document * pDoc = NULL; |
| 237 pDoc = pParser?pParser->GetDocument():NULL; | 237 pDoc = pParser?pParser->GetDocument():NULL; |
| 238 CheckUnSupportError(pDoc, err_code); | 238 CheckUnSupportError(pDoc, err_code); |
| 239 return pParser->GetDocument(); | 239 return pParser->GetDocument(); |
| 240 } | 240 } |
| 241 | 241 |
| 242 DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadCustomDocument(FPDF_FILEACCESS* pFileAc
cess, FPDF_BYTESTRING password) | 242 DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadCustomDocument(FPDF_FILEACCESS* pFileAc
cess, FPDF_BYTESTRING password) |
| 243 { | 243 { |
| 244 » CPDF_Parser* pParser = FX_NEW CPDF_Parser; | 244 » CPDF_Parser* pParser = new CPDF_Parser; |
| 245 pParser->SetPassword(password); | 245 pParser->SetPassword(password); |
| 246 » CPDF_CustomAccess* pFile = FX_NEW CPDF_CustomAccess(pFileAccess); | 246 » CPDF_CustomAccess* pFile = new CPDF_CustomAccess(pFileAccess); |
| 247 FX_DWORD err_code = pParser->StartParse(pFile); | 247 FX_DWORD err_code = pParser->StartParse(pFile); |
| 248 if (err_code) { | 248 if (err_code) { |
| 249 delete pParser; | 249 delete pParser; |
| 250 ProcessParseError(err_code); | 250 ProcessParseError(err_code); |
| 251 return NULL; | 251 return NULL; |
| 252 } | 252 } |
| 253 CPDF_Document * pDoc = NULL; | 253 CPDF_Document * pDoc = NULL; |
| 254 pDoc = pParser?pParser->GetDocument():NULL; | 254 pDoc = pParser?pParser->GetDocument():NULL; |
| 255 CheckUnSupportError(pDoc, err_code); | 255 CheckUnSupportError(pDoc, err_code); |
| 256 return pParser->GetDocument(); | 256 return pParser->GetDocument(); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 DLLEXPORT int STDCALL FPDF_GetPageCount(FPDF_DOCUMENT document) | 294 DLLEXPORT int STDCALL FPDF_GetPageCount(FPDF_DOCUMENT document) |
| 295 { | 295 { |
| 296 if (document == NULL) return 0; | 296 if (document == NULL) return 0; |
| 297 return ((CPDF_Document*)document)->GetPageCount(); | 297 return ((CPDF_Document*)document)->GetPageCount(); |
| 298 } | 298 } |
| 299 | 299 |
| 300 DLLEXPORT FPDF_PAGE STDCALL FPDF_LoadPage(FPDF_DOCUMENT document, int page_index
) | 300 DLLEXPORT FPDF_PAGE STDCALL FPDF_LoadPage(FPDF_DOCUMENT document, int page_index
) |
| 301 { | 301 { |
| 302 if (document == NULL) return NULL; | 302 if (document == NULL) return NULL; |
| 303 if (page_index < 0 || page_index >= FPDF_GetPageCount(document)) return
NULL; | 303 if (page_index < 0 || page_index >= FPDF_GetPageCount(document)) return
NULL; |
| 304 //» CPDF_Parser* pParser = (CPDF_Parser*)document; | 304 |
| 305 CPDF_Document* pDoc = (CPDF_Document*)document; | 305 CPDF_Document* pDoc = (CPDF_Document*)document; |
| 306 if (pDoc == NULL) return NULL; | 306 if (pDoc == NULL) return NULL; |
| 307 CPDF_Dictionary* pDict = pDoc->GetPage(page_index); | 307 CPDF_Dictionary* pDict = pDoc->GetPage(page_index); |
| 308 if (pDict == NULL) return NULL; | 308 if (pDict == NULL) return NULL; |
| 309 » CPDF_Page* pPage = FX_NEW CPDF_Page; | 309 » CPDF_Page* pPage = new CPDF_Page; |
| 310 pPage->Load(pDoc, pDict); | 310 pPage->Load(pDoc, pDict); |
| 311 pPage->ParseContent(); | 311 pPage->ParseContent(); |
| 312 | |
| 313 // CheckUnSupportError(pDoc, 0); | |
| 314 | |
| 315 return pPage; | 312 return pPage; |
| 316 } | 313 } |
| 317 | 314 |
| 318 DLLEXPORT double STDCALL FPDF_GetPageWidth(FPDF_PAGE page) | 315 DLLEXPORT double STDCALL FPDF_GetPageWidth(FPDF_PAGE page) |
| 319 { | 316 { |
| 320 if (!page) | 317 if (!page) |
| 321 return 0.0; | 318 return 0.0; |
| 322 return ((CPDF_Page*)page)->GetPageWidth(); | 319 return ((CPDF_Page*)page)->GetPageWidth(); |
| 323 } | 320 } |
| 324 | 321 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 342 #define DEBUG_TRACE | 339 #define DEBUG_TRACE |
| 343 #endif | 340 #endif |
| 344 | 341 |
| 345 #if defined(_WIN32) | 342 #if defined(_WIN32) |
| 346 DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc, FPDF_PAGE page, int start_x, int
start_y, int size_x, int size_y, | 343 DLLEXPORT void STDCALL FPDF_RenderPage(HDC dc, FPDF_PAGE page, int start_x, int
start_y, int size_x, int size_y, |
| 347 int rotate, int flags) | 344 int rotate, int flags) |
| 348 { | 345 { |
| 349 if (page==NULL) return; | 346 if (page==NULL) return; |
| 350 CPDF_Page* pPage = (CPDF_Page*)page; | 347 CPDF_Page* pPage = (CPDF_Page*)page; |
| 351 | 348 |
| 352 » CRenderContext* pContext = FX_NEW CRenderContext; | 349 » CRenderContext* pContext = new CRenderContext; |
| 353 pPage->SetPrivateData((void*)1, pContext, DropContext); | 350 pPage->SetPrivateData((void*)1, pContext, DropContext); |
| 354 | 351 |
| 355 #ifndef _WIN32_WCE | 352 #ifndef _WIN32_WCE |
| 356 CFX_DIBitmap* pBitmap = NULL; | 353 CFX_DIBitmap* pBitmap = NULL; |
| 357 FX_BOOL bBackgroundAlphaNeeded=FALSE; | 354 FX_BOOL bBackgroundAlphaNeeded=FALSE; |
| 358 bBackgroundAlphaNeeded = pPage->BackgroundAlphaNeeded(); | 355 bBackgroundAlphaNeeded = pPage->BackgroundAlphaNeeded(); |
| 359 if (bBackgroundAlphaNeeded) | 356 if (bBackgroundAlphaNeeded) |
| 360 { | 357 { |
| 361 | 358 |
| 362 » » pBitmap = FX_NEW CFX_DIBitmap; | 359 » » pBitmap = new CFX_DIBitmap; |
| 363 pBitmap->Create(size_x, size_y, FXDIB_Argb); | 360 pBitmap->Create(size_x, size_y, FXDIB_Argb); |
| 364 pBitmap->Clear(0x00ffffff); | 361 pBitmap->Clear(0x00ffffff); |
| 365 #ifdef _SKIA_SUPPORT_ | 362 #ifdef _SKIA_SUPPORT_ |
| 366 » » pContext->m_pDevice = FX_NEW CFX_SkiaDevice; | 363 » » pContext->m_pDevice = new CFX_SkiaDevice; |
| 367 ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pB
itmap); | 364 ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pB
itmap); |
| 368 #else | 365 #else |
| 369 » » pContext->m_pDevice = FX_NEW CFX_FxgeDevice; | 366 » » pContext->m_pDevice = new CFX_FxgeDevice; |
| 370 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pB
itmap); | 367 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pB
itmap); |
| 371 #endif | 368 #endif |
| 372 } | 369 } |
| 373 else | 370 else |
| 374 » pContext->m_pDevice = FX_NEW CFX_WindowsDevice(dc); | 371 » pContext->m_pDevice = new CFX_WindowsDevice(dc); |
| 375 | 372 |
| 376 Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate
, flags,TRUE,NULL); | 373 Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate
, flags,TRUE,NULL); |
| 377 | 374 |
| 378 if (bBackgroundAlphaNeeded) | 375 if (bBackgroundAlphaNeeded) |
| 379 { | 376 { |
| 380 if (pBitmap) | 377 if (pBitmap) |
| 381 { | 378 { |
| 382 CFX_WindowsDevice WinDC(dc); | 379 CFX_WindowsDevice WinDC(dc); |
| 383 | 380 |
| 384 if (WinDC.GetDeviceCaps(FXDC_DEVICE_CLASS) == FXDC_PRINT
ER) | 381 if (WinDC.GetDeviceCaps(FXDC_DEVICE_CLASS) == FXDC_PRINT
ER) |
| 385 { | 382 { |
| 386 » » » » CFX_DIBitmap* pDst = FX_NEW CFX_DIBitmap; | 383 » » » » CFX_DIBitmap* pDst = new CFX_DIBitmap; |
| 387 int pitch = pBitmap->GetPitch(); | 384 int pitch = pBitmap->GetPitch(); |
| 388 pDst->Create(size_x, size_y, FXDIB_Rgb32); | 385 pDst->Create(size_x, size_y, FXDIB_Rgb32); |
| 389 FXSYS_memset(pDst->GetBuffer(), -1, pitch*size_y
); | 386 FXSYS_memset(pDst->GetBuffer(), -1, pitch*size_y
); |
| 390 pDst->CompositeBitmap(0, 0, size_x, size_y, pBit
map, 0, 0, FXDIB_BLEND_NORMAL, NULL, FALSE, NULL); | 387 pDst->CompositeBitmap(0, 0, size_x, size_y, pBit
map, 0, 0, FXDIB_BLEND_NORMAL, NULL, FALSE, NULL); |
| 391 WinDC.StretchDIBits(pDst,0,0,size_x,size_y); | 388 WinDC.StretchDIBits(pDst,0,0,size_x,size_y); |
| 392 delete pDst; | 389 delete pDst; |
| 393 } | 390 } |
| 394 else | 391 else |
| 395 WinDC.SetDIBits(pBitmap,0,0); | 392 WinDC.SetDIBits(pBitmap,0,0); |
| 396 | 393 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 439 } | 436 } |
| 440 FXSYS_memset(pBuffer, 0xff, height*((width*3+3)/4*4)); | 437 FXSYS_memset(pBuffer, 0xff, height*((width*3+3)/4*4)); |
| 441 | 438 |
| 442 #ifdef DEBUG_TRACE | 439 #ifdef DEBUG_TRACE |
| 443 { | 440 { |
| 444 CPDF_ModuleMgr::Get()->ReportError(999, "DIBSection created"); | 441 CPDF_ModuleMgr::Get()->ReportError(999, "DIBSection created"); |
| 445 } | 442 } |
| 446 #endif | 443 #endif |
| 447 | 444 |
| 448 // Create a device with this external buffer | 445 // Create a device with this external buffer |
| 449 » pContext->m_pBitmap = FX_NEW CFX_DIBitmap; | 446 » pContext->m_pBitmap = new CFX_DIBitmap; |
| 450 pContext->m_pBitmap->Create(width, height, FXDIB_Rgb, (FX_LPBYTE)pBuffer
); | 447 pContext->m_pBitmap->Create(width, height, FXDIB_Rgb, (FX_LPBYTE)pBuffer
); |
| 451 » pContext->m_pDevice = FX_NEW CPDF_FxgeDevice; | 448 » pContext->m_pDevice = new CPDF_FxgeDevice; |
| 452 ((CPDF_FxgeDevice*)pContext->m_pDevice)->Attach(pContext->m_pBitmap); | 449 ((CPDF_FxgeDevice*)pContext->m_pDevice)->Attach(pContext->m_pBitmap); |
| 453 » | 450 |
| 454 #ifdef DEBUG_TRACE | 451 #ifdef DEBUG_TRACE |
| 455 CPDF_ModuleMgr::Get()->ReportError(999, "Ready for PDF rendering"); | 452 CPDF_ModuleMgr::Get()->ReportError(999, "Ready for PDF rendering"); |
| 456 #endif | 453 #endif |
| 457 | 454 |
| 458 // output to bitmap device | 455 // output to bitmap device |
| 459 Func_RenderPage(pContext, page, start_x - rect.left, start_y - rect.top,
size_x, size_y, rotate, flags); | 456 Func_RenderPage(pContext, page, start_x - rect.left, start_y - rect.top,
size_x, size_y, rotate, flags); |
| 460 | 457 |
| 461 #ifdef DEBUG_TRACE | 458 #ifdef DEBUG_TRACE |
| 462 CPDF_ModuleMgr::Get()->ReportError(999, "Finished PDF rendering"); | 459 CPDF_ModuleMgr::Get()->ReportError(999, "Finished PDF rendering"); |
| 463 #endif | 460 #endif |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 } | 498 } |
| 502 #endif | 499 #endif |
| 503 | 500 |
| 504 DLLEXPORT void STDCALL FPDF_RenderPageBitmap(FPDF_BITMAP bitmap, FPDF_PAGE page,
int start_x, int start_y, | 501 DLLEXPORT void STDCALL FPDF_RenderPageBitmap(FPDF_BITMAP bitmap, FPDF_PAGE page,
int start_x, int start_y, |
| 505 int size_x, int size_y, int rota
te, int flags) | 502 int size_x, int size_y, int rota
te, int flags) |
| 506 { | 503 { |
| 507 if (bitmap == NULL || page == NULL) return; | 504 if (bitmap == NULL || page == NULL) return; |
| 508 CPDF_Page* pPage = (CPDF_Page*)page; | 505 CPDF_Page* pPage = (CPDF_Page*)page; |
| 509 | 506 |
| 510 | 507 |
| 511 » CRenderContext* pContext = FX_NEW CRenderContext; | 508 » CRenderContext* pContext = new CRenderContext; |
| 512 pPage->SetPrivateData((void*)1, pContext, DropContext); | 509 pPage->SetPrivateData((void*)1, pContext, DropContext); |
| 513 #ifdef _SKIA_SUPPORT_ | 510 #ifdef _SKIA_SUPPORT_ |
| 514 » pContext->m_pDevice = FX_NEW CFX_SkiaDevice; | 511 » pContext->m_pDevice = new CFX_SkiaDevice; |
| 515 | 512 |
| 516 if (flags & FPDF_REVERSE_BYTE_ORDER) | 513 if (flags & FPDF_REVERSE_BYTE_ORDER) |
| 517 ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi
tmap,0,TRUE); | 514 ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi
tmap,0,TRUE); |
| 518 else | 515 else |
| 519 ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi
tmap); | 516 ((CFX_SkiaDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi
tmap); |
| 520 #else | 517 #else |
| 521 » pContext->m_pDevice = FX_NEW CFX_FxgeDevice; | 518 » pContext->m_pDevice = new CFX_FxgeDevice; |
| 522 | 519 |
| 523 if (flags & FPDF_REVERSE_BYTE_ORDER) | 520 if (flags & FPDF_REVERSE_BYTE_ORDER) |
| 524 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi
tmap,0,TRUE); | 521 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi
tmap,0,TRUE); |
| 525 else | 522 else |
| 526 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi
tmap); | 523 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)bi
tmap); |
| 527 #endif | 524 #endif |
| 528 | 525 |
| 529 Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate
, flags,TRUE,NULL); | 526 Func_RenderPage(pContext, page, start_x, start_y, size_x, size_y, rotate
, flags,TRUE,NULL); |
| 530 | 527 |
| 531 delete pContext; | 528 delete pContext; |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 593 | 590 |
| 594 FX_FLOAT device_x_f, device_y_f; | 591 FX_FLOAT device_x_f, device_y_f; |
| 595 page2device.Transform(((FX_FLOAT)page_x), ((FX_FLOAT)page_y), device_x_f
, device_y_f); | 592 page2device.Transform(((FX_FLOAT)page_x), ((FX_FLOAT)page_y), device_x_f
, device_y_f); |
| 596 | 593 |
| 597 *device_x = FXSYS_round(device_x_f); | 594 *device_x = FXSYS_round(device_x_f); |
| 598 *device_y = FXSYS_round(device_y_f); | 595 *device_y = FXSYS_round(device_y_f); |
| 599 } | 596 } |
| 600 | 597 |
| 601 DLLEXPORT FPDF_BITMAP STDCALL FPDFBitmap_Create(int width, int height, int alpha
) | 598 DLLEXPORT FPDF_BITMAP STDCALL FPDFBitmap_Create(int width, int height, int alpha
) |
| 602 { | 599 { |
| 603 » CFX_DIBitmap* pBitmap = FX_NEW CFX_DIBitmap; | 600 » CFX_DIBitmap* pBitmap = new CFX_DIBitmap; |
| 604 pBitmap->Create(width, height, alpha ? FXDIB_Argb : FXDIB_Rgb32); | 601 pBitmap->Create(width, height, alpha ? FXDIB_Argb : FXDIB_Rgb32); |
| 605 return pBitmap; | 602 return pBitmap; |
| 606 } | 603 } |
| 607 | 604 |
| 608 DLLEXPORT FPDF_BITMAP STDCALL FPDFBitmap_CreateEx(int width, int height, int for
mat, void* first_scan, int stride) | 605 DLLEXPORT FPDF_BITMAP STDCALL FPDFBitmap_CreateEx(int width, int height, int for
mat, void* first_scan, int stride) |
| 609 { | 606 { |
| 610 FXDIB_Format fx_format; | 607 FXDIB_Format fx_format; |
| 611 switch (format) { | 608 switch (format) { |
| 612 case FPDFBitmap_Gray: | 609 case FPDFBitmap_Gray: |
| 613 fx_format = FXDIB_8bppRgb; | 610 fx_format = FXDIB_8bppRgb; |
| 614 break; | 611 break; |
| 615 case FPDFBitmap_BGR: | 612 case FPDFBitmap_BGR: |
| 616 fx_format = FXDIB_Rgb; | 613 fx_format = FXDIB_Rgb; |
| 617 break; | 614 break; |
| 618 case FPDFBitmap_BGRx: | 615 case FPDFBitmap_BGRx: |
| 619 fx_format = FXDIB_Rgb32; | 616 fx_format = FXDIB_Rgb32; |
| 620 break; | 617 break; |
| 621 case FPDFBitmap_BGRA: | 618 case FPDFBitmap_BGRA: |
| 622 fx_format = FXDIB_Argb; | 619 fx_format = FXDIB_Argb; |
| 623 break; | 620 break; |
| 624 default: | 621 default: |
| 625 return NULL; | 622 return NULL; |
| 626 } | 623 } |
| 627 » CFX_DIBitmap* pBitmap = FX_NEW CFX_DIBitmap; | 624 » CFX_DIBitmap* pBitmap = new CFX_DIBitmap; |
| 628 pBitmap->Create(width, height, fx_format, (FX_LPBYTE)first_scan, stride)
; | 625 pBitmap->Create(width, height, fx_format, (FX_LPBYTE)first_scan, stride)
; |
| 629 return pBitmap; | 626 return pBitmap; |
| 630 } | 627 } |
| 631 | 628 |
| 632 DLLEXPORT void STDCALL FPDFBitmap_FillRect(FPDF_BITMAP bitmap, int left, int top
, int width, int height, FPDF_DWORD color) | 629 DLLEXPORT void STDCALL FPDFBitmap_FillRect(FPDF_BITMAP bitmap, int left, int top
, int width, int height, FPDF_DWORD color) |
| 633 { | 630 { |
| 634 if (bitmap == NULL) return; | 631 if (bitmap == NULL) return; |
| 635 #ifdef _SKIA_SUPPORT_ | 632 #ifdef _SKIA_SUPPORT_ |
| 636 CFX_SkiaDevice device; | 633 CFX_SkiaDevice device; |
| 637 #else | 634 #else |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 710 pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate
); | 707 pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate
); |
| 711 | 708 |
| 712 FX_RECT clip; | 709 FX_RECT clip; |
| 713 clip.left = start_x; | 710 clip.left = start_x; |
| 714 clip.right = start_x + size_x; | 711 clip.right = start_x + size_x; |
| 715 clip.top = start_y; | 712 clip.top = start_y; |
| 716 clip.bottom = start_y + size_y; | 713 clip.bottom = start_y + size_y; |
| 717 pContext->m_pDevice->SaveState(); | 714 pContext->m_pDevice->SaveState(); |
| 718 pContext->m_pDevice->SetClip_Rect(&clip); | 715 pContext->m_pDevice->SetClip_Rect(&clip); |
| 719 | 716 |
| 720 » pContext->m_pContext = FX_NEW CPDF_RenderContext; | 717 » pContext->m_pContext = new CPDF_RenderContext; |
| 721 pContext->m_pContext->Create(pPage); | 718 pContext->m_pContext->Create(pPage); |
| 722 pContext->m_pContext->AppendObjectList(pPage, &matrix); | 719 pContext->m_pContext->AppendObjectList(pPage, &matrix); |
| 723 | 720 |
| 724 if (flags & FPDF_ANNOT) { | 721 if (flags & FPDF_ANNOT) { |
| 725 » » pContext->m_pAnnots = FX_NEW CPDF_AnnotList(pPage); | 722 » » pContext->m_pAnnots = new CPDF_AnnotList(pPage); |
| 726 FX_BOOL bPrinting = pContext->m_pDevice->GetDeviceClass() != FXD
C_DISPLAY; | 723 FX_BOOL bPrinting = pContext->m_pDevice->GetDeviceClass() != FXD
C_DISPLAY; |
| 727 pContext->m_pAnnots->DisplayAnnots(pPage, pContext->m_pContext,
bPrinting, &matrix, TRUE, NULL); | 724 pContext->m_pAnnots->DisplayAnnots(pPage, pContext->m_pContext,
bPrinting, &matrix, TRUE, NULL); |
| 728 } | 725 } |
| 729 | 726 |
| 730 » pContext->m_pRenderer = FX_NEW CPDF_ProgressiveRenderer; | 727 » pContext->m_pRenderer = new CPDF_ProgressiveRenderer; |
| 731 pContext->m_pRenderer->Start(pContext->m_pContext, pContext->m_pDevice,
pContext->m_pOptions, pause); | 728 pContext->m_pRenderer->Start(pContext->m_pContext, pContext->m_pDevice,
pContext->m_pOptions, pause); |
| 732 if (bNeedToRestore) | 729 if (bNeedToRestore) |
| 733 { | 730 { |
| 734 pContext->m_pDevice->RestoreState(); | 731 pContext->m_pDevice->RestoreState(); |
| 735 } | 732 } |
| 736 | |
| 737 //#endif | |
| 738 } | 733 } |
| 739 | 734 |
| 740 DLLEXPORT int STDCALL FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document, int page_i
ndex, double* width, double* height) | 735 DLLEXPORT int STDCALL FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document, int page_i
ndex, double* width, double* height) |
| 741 { | 736 { |
| 742 CPDF_Document* pDoc = (CPDF_Document*)document; | 737 CPDF_Document* pDoc = (CPDF_Document*)document; |
| 743 if(pDoc == NULL) | 738 if(pDoc == NULL) |
| 744 return FALSE; | 739 return FALSE; |
| 745 | 740 |
| 746 CPDF_Dictionary* pDict = pDoc->GetPage(page_index); | 741 CPDF_Dictionary* pDict = pDoc->GetPage(page_index); |
| 747 if (pDict == NULL) return FALSE; | 742 if (pDict == NULL) return FALSE; |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 863 if (!buffer) { | 858 if (!buffer) { |
| 864 buflen = len; | 859 buflen = len; |
| 865 } else if (buflen >= len) { | 860 } else if (buflen >= len) { |
| 866 memcpy(buffer, utf16Name.c_str(), len); | 861 memcpy(buffer, utf16Name.c_str(), len); |
| 867 buflen = len; | 862 buflen = len; |
| 868 } else { | 863 } else { |
| 869 buflen = -1; | 864 buflen = -1; |
| 870 } | 865 } |
| 871 return (FPDF_DEST)pDestObj; | 866 return (FPDF_DEST)pDestObj; |
| 872 } | 867 } |
| OLD | NEW |