Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(438)

Side by Side Diff: fpdfsdk/fpdfview.cpp

Issue 2011563006: Remove checks for _WIN32_WCE. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: nit Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/fxcrt/fx_basic_util.cpp ('k') | fpdfsdk/fsdk_rendercontext.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/fpdfview.h" 7 #include "public/fpdfview.h"
8 8
9 #include <memory> 9 #include <memory>
10 10
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 int size_y, 530 int size_y,
531 int rotate, 531 int rotate,
532 int flags) { 532 int flags) {
533 CPDF_Page* pPage = CPDFPageFromFPDFPage(page); 533 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
534 if (!pPage) 534 if (!pPage)
535 return; 535 return;
536 536
537 CRenderContext* pContext = new CRenderContext; 537 CRenderContext* pContext = new CRenderContext;
538 pPage->SetRenderContext(std::unique_ptr<CFX_Deletable>(pContext)); 538 pPage->SetRenderContext(std::unique_ptr<CFX_Deletable>(pContext));
539 539
540 #if !defined(_WIN32_WCE)
541 CFX_DIBitmap* pBitmap = nullptr; 540 CFX_DIBitmap* pBitmap = nullptr;
542 FX_BOOL bBackgroundAlphaNeeded = pPage->BackgroundAlphaNeeded(); 541 FX_BOOL bBackgroundAlphaNeeded = pPage->BackgroundAlphaNeeded();
543 FX_BOOL bHasImageMask = pPage->HasImageMask(); 542 FX_BOOL bHasImageMask = pPage->HasImageMask();
544 if (bBackgroundAlphaNeeded || bHasImageMask) { 543 if (bBackgroundAlphaNeeded || bHasImageMask) {
545 pBitmap = new CFX_DIBitmap; 544 pBitmap = new CFX_DIBitmap;
546 pBitmap->Create(size_x, size_y, FXDIB_Argb); 545 pBitmap->Create(size_x, size_y, FXDIB_Argb);
547 pBitmap->Clear(0x00ffffff); 546 pBitmap->Clear(0x00ffffff);
548 pContext->m_pDevice = new CFX_FxgeDevice; 547 pContext->m_pDevice = new CFX_FxgeDevice;
549 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pBitmap); 548 ((CFX_FxgeDevice*)pContext->m_pDevice)->Attach((CFX_DIBitmap*)pBitmap);
550 } else { 549 } else {
(...skipping 14 matching lines...) Expand all
565 FXSYS_memset(pDst->GetBuffer(), -1, pitch * size_y); 564 FXSYS_memset(pDst->GetBuffer(), -1, pitch * size_y);
566 pDst->CompositeBitmap(0, 0, size_x, size_y, pBitmap, 0, 0, 565 pDst->CompositeBitmap(0, 0, size_x, size_y, pBitmap, 0, 0,
567 FXDIB_BLEND_NORMAL, NULL, FALSE, NULL); 566 FXDIB_BLEND_NORMAL, NULL, FALSE, NULL);
568 WinDC.StretchDIBits(pDst, 0, 0, size_x, size_y); 567 WinDC.StretchDIBits(pDst, 0, 0, size_x, size_y);
569 delete pDst; 568 delete pDst;
570 } else { 569 } else {
571 WinDC.SetDIBits(pBitmap, 0, 0); 570 WinDC.SetDIBits(pBitmap, 0, 0);
572 } 571 }
573 } 572 }
574 } 573 }
575 #else
576 // get clip region
577 RECT rect, cliprect;
578 rect.left = start_x;
579 rect.top = start_y;
580 rect.right = start_x + size_x;
581 rect.bottom = start_y + size_y;
582 GetClipBox(dc, &cliprect);
583 IntersectRect(&rect, &rect, &cliprect);
584 int width = rect.right - rect.left;
585 int height = rect.bottom - rect.top;
586
587 // Create a DIB section
588 LPVOID pBuffer;
589 BITMAPINFOHEADER bmih;
590 FXSYS_memset(&bmih, 0, sizeof bmih);
591 bmih.biSize = sizeof bmih;
592 bmih.biBitCount = 24;
593 bmih.biHeight = -height;
594 bmih.biPlanes = 1;
595 bmih.biWidth = width;
596 pContext->m_hBitmap = CreateDIBSection(dc, (BITMAPINFO*)&bmih, DIB_RGB_COLORS,
597 &pBuffer, NULL, 0);
598 FXSYS_memset(pBuffer, 0xff, height * ((width * 3 + 3) / 4 * 4));
599
600 // Create a device with this external buffer
601 pContext->m_pBitmap = new CFX_DIBitmap;
602 pContext->m_pBitmap->Create(width, height, FXDIB_Rgb, (uint8_t*)pBuffer);
603 pContext->m_pDevice = new CPDF_FxgeDevice;
604 ((CPDF_FxgeDevice*)pContext->m_pDevice)->Attach(pContext->m_pBitmap);
605
606 // output to bitmap device
607 FPDF_RenderPage_Retail(pContext, page, start_x - rect.left,
608 start_y - rect.top, size_x, size_y, rotate, flags);
609
610 // Now output to real device
611 HDC hMemDC = CreateCompatibleDC(dc);
612 HGDIOBJ hOldBitmap = SelectObject(hMemDC, pContext->m_hBitmap);
613
614 BitBlt(dc, rect.left, rect.top, width, height, hMemDC, 0, 0, SRCCOPY);
615 SelectObject(hMemDC, hOldBitmap);
616 DeleteDC(hMemDC);
617
618 #endif // !defined(_WIN32_WCE)
619 if (bBackgroundAlphaNeeded || bHasImageMask) 574 if (bBackgroundAlphaNeeded || bHasImageMask)
620 delete pBitmap; 575 delete pBitmap;
621 576
622 pPage->SetRenderContext(std::unique_ptr<CFX_Deletable>()); 577 pPage->SetRenderContext(std::unique_ptr<CFX_Deletable>());
623 } 578 }
624 #endif // defined(_WIN32) 579 #endif // defined(_WIN32)
625 580
626 DLLEXPORT void STDCALL FPDF_RenderPageBitmap(FPDF_BITMAP bitmap, 581 DLLEXPORT void STDCALL FPDF_RenderPageBitmap(FPDF_BITMAP bitmap,
627 FPDF_PAGE page, 582 FPDF_PAGE page,
628 int start_x, 583 int start_x,
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after
1139 if (!buffer) { 1094 if (!buffer) {
1140 *buflen = len; 1095 *buflen = len;
1141 } else if (*buflen >= len) { 1096 } else if (*buflen >= len) {
1142 memcpy(buffer, utf16Name.c_str(), len); 1097 memcpy(buffer, utf16Name.c_str(), len);
1143 *buflen = len; 1098 *buflen = len;
1144 } else { 1099 } else {
1145 *buflen = -1; 1100 *buflen = -1;
1146 } 1101 }
1147 return (FPDF_DEST)pDestObj; 1102 return (FPDF_DEST)pDestObj;
1148 } 1103 }
OLDNEW
« no previous file with comments | « core/fxcrt/fx_basic_util.cpp ('k') | fpdfsdk/fsdk_rendercontext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698