| 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 "core/fxge/include/fx_ge.h" | 7 #include "core/fxge/include/fx_ge.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> | 10 #include <memory> |
| 11 #include <vector> | 11 #include <vector> |
| 12 | 12 |
| 13 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_ | 13 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_ |
| 14 #include <crtdbg.h> | 14 #include <crtdbg.h> |
| 15 | 15 |
| 16 #include "core/fxcodec/include/fx_codec.h" | 16 #include "core/fxcodec/include/fx_codec.h" |
| 17 #include "core/fxcrt/include/fx_memory.h" | 17 #include "core/fxcrt/include/fx_memory.h" |
| 18 | 18 |
| 19 #ifndef _SKIA_SUPPORT_ | 19 #ifndef _SKIA_SUPPORT_ |
| 20 #include "core/fxge/agg/fx_agg_driver.h" | 20 #include "core/fxge/agg/fx_agg_driver.h" |
| 21 #endif | 21 #endif |
| 22 | 22 |
| 23 #include "core/fxge/dib/dib_int.h" | 23 #include "core/fxge/dib/dib_int.h" |
| 24 #include "core/fxge/ge/cfx_folderfontinfo.h" | 24 #include "core/fxge/ge/cfx_folderfontinfo.h" |
| 25 #include "core/fxge/ge/fx_text_int.h" | 25 #include "core/fxge/ge/fx_text_int.h" |
| 26 #include "core/fxge/include/cfx_fontmapper.h" | 26 #include "core/fxge/include/cfx_fontmapper.h" |
| 27 #include "core/fxge/include/cfx_windowsdevice.h" |
| 27 #include "core/fxge/include/ifx_systemfontinfo.h" | 28 #include "core/fxge/include/ifx_systemfontinfo.h" |
| 28 #include "core/fxge/include/fx_font.h" | 29 #include "core/fxge/include/fx_font.h" |
| 29 #include "core/fxge/include/fx_freetype.h" | 30 #include "core/fxge/include/fx_freetype.h" |
| 30 #include "core/fxge/include/fx_ge_win32.h" | 31 #include "core/fxge/win32/cfx_windowsdib.h" |
| 31 #include "core/fxge/win32/dwrite_int.h" | 32 #include "core/fxge/win32/dwrite_int.h" |
| 32 #include "core/fxge/win32/win32_int.h" | 33 #include "core/fxge/win32/win32_int.h" |
| 33 #include "third_party/base/stl_util.h" | 34 #include "third_party/base/stl_util.h" |
| 34 | 35 |
| 35 namespace { | 36 namespace { |
| 36 | 37 |
| 37 const struct { | 38 const struct { |
| 38 const FX_CHAR* m_pFaceName; | 39 const FX_CHAR* m_pFaceName; |
| 39 const FX_CHAR* m_pVariantName; | 40 const FX_CHAR* m_pVariantName; |
| 40 } g_VariantNames[] = { | 41 } g_VariantNames[] = { |
| (...skipping 1341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1382 IFX_RenderDeviceDriver* CFX_WindowsDevice::CreateDriver(HDC hDC) { | 1383 IFX_RenderDeviceDriver* CFX_WindowsDevice::CreateDriver(HDC hDC) { |
| 1383 int device_type = ::GetDeviceCaps(hDC, TECHNOLOGY); | 1384 int device_type = ::GetDeviceCaps(hDC, TECHNOLOGY); |
| 1384 int obj_type = ::GetObjectType(hDC); | 1385 int obj_type = ::GetObjectType(hDC); |
| 1385 bool use_printer = device_type == DT_RASPRINTER || | 1386 bool use_printer = device_type == DT_RASPRINTER || |
| 1386 device_type == DT_PLOTTER || obj_type == OBJ_ENHMETADC; | 1387 device_type == DT_PLOTTER || obj_type == OBJ_ENHMETADC; |
| 1387 if (use_printer) | 1388 if (use_printer) |
| 1388 return new CGdiPrinterDriver(hDC); | 1389 return new CGdiPrinterDriver(hDC); |
| 1389 return new CGdiDisplayDriver(hDC); | 1390 return new CGdiDisplayDriver(hDC); |
| 1390 } | 1391 } |
| 1391 | 1392 |
| 1392 CFX_WinBitmapDevice::CFX_WinBitmapDevice(int width, | |
| 1393 int height, | |
| 1394 FXDIB_Format format) { | |
| 1395 BITMAPINFOHEADER bmih; | |
| 1396 FXSYS_memset(&bmih, 0, sizeof(BITMAPINFOHEADER)); | |
| 1397 bmih.biSize = sizeof(BITMAPINFOHEADER); | |
| 1398 bmih.biBitCount = format & 0xff; | |
| 1399 bmih.biHeight = -height; | |
| 1400 bmih.biPlanes = 1; | |
| 1401 bmih.biWidth = width; | |
| 1402 void* pBufferPtr; | |
| 1403 m_hBitmap = CreateDIBSection(nullptr, reinterpret_cast<BITMAPINFO*>(&bmih), | |
| 1404 DIB_RGB_COLORS, &pBufferPtr, nullptr, 0); | |
| 1405 if (!m_hBitmap) | |
| 1406 return; | |
| 1407 | |
| 1408 uint8_t* pBuffer = static_cast<uint8_t*>(pBufferPtr); | |
| 1409 CFX_DIBitmap* pBitmap = new CFX_DIBitmap; | |
| 1410 pBitmap->Create(width, height, format, pBuffer); | |
| 1411 SetBitmap(pBitmap); | |
| 1412 m_hDC = ::CreateCompatibleDC(nullptr); | |
| 1413 m_hOldBitmap = (HBITMAP)SelectObject(m_hDC, m_hBitmap); | |
| 1414 SetDeviceDriver(WrapUnique(new CGdiDisplayDriver(m_hDC))); | |
| 1415 } | |
| 1416 | |
| 1417 CFX_WinBitmapDevice::~CFX_WinBitmapDevice() { | |
| 1418 if (m_hDC) { | |
| 1419 SelectObject(m_hDC, m_hOldBitmap); | |
| 1420 DeleteDC(m_hDC); | |
| 1421 } | |
| 1422 if (m_hBitmap) | |
| 1423 DeleteObject(m_hBitmap); | |
| 1424 delete GetBitmap(); | |
| 1425 } | |
| 1426 | |
| 1427 #endif // _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_ | 1393 #endif // _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_ |
| OLD | NEW |