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 <crtdbg.h> | 7 #include <crtdbg.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <memory> | 10 #include <memory> |
11 #include <vector> | 11 #include <vector> |
12 | 12 |
13 #include "core/fxcodec/fx_codec.h" | 13 #include "core/fxcodec/fx_codec.h" |
14 #include "core/fxcrt/cfx_maybe_owned.h" | 14 #include "core/fxcrt/cfx_maybe_owned.h" |
15 #include "core/fxcrt/fx_memory.h" | 15 #include "core/fxcrt/fx_memory.h" |
16 #include "core/fxcrt/fx_system.h" | 16 #include "core/fxcrt/fx_system.h" |
17 #include "core/fxge/cfx_fontmapper.h" | |
18 #include "core/fxge/cfx_gemodule.h" | |
19 #include "core/fxge/cfx_graphstatedata.h" | |
20 #include "core/fxge/cfx_pathdata.h" | |
21 #include "core/fxge/cfx_windowsdevice.h" | 17 #include "core/fxge/cfx_windowsdevice.h" |
22 #include "core/fxge/dib/dib_int.h" | 18 #include "core/fxge/dib/dib_int.h" |
23 #include "core/fxge/fx_font.h" | 19 #include "core/fxge/fx_font.h" |
24 #include "core/fxge/fx_freetype.h" | 20 #include "core/fxge/fx_freetype.h" |
25 #include "core/fxge/ge/cfx_folderfontinfo.h" | 21 #include "core/fxge/ge/cfx_folderfontinfo.h" |
26 #include "core/fxge/ge/fx_text_int.h" | 22 #include "core/fxge/ge/fx_text_int.h" |
27 #include "core/fxge/ifx_systemfontinfo.h" | 23 #include "core/fxge/ifx_systemfontinfo.h" |
28 #include "core/fxge/win32/cfx_windowsdib.h" | 24 #include "core/fxge/win32/cfx_windowsdib.h" |
29 #include "core/fxge/win32/dwrite_int.h" | 25 #include "core/fxge/win32/dwrite_int.h" |
30 #include "core/fxge/win32/win32_int.h" | 26 #include "core/fxge/win32/win32_int.h" |
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
690 TEXTMETRIC tm; | 686 TEXTMETRIC tm; |
691 HFONT hOldFont = (HFONT)::SelectObject(m_hDC, (HFONT)hFont); | 687 HFONT hOldFont = (HFONT)::SelectObject(m_hDC, (HFONT)hFont); |
692 ::GetTextMetrics(m_hDC, &tm); | 688 ::GetTextMetrics(m_hDC, &tm); |
693 ::SelectObject(m_hDC, hOldFont); | 689 ::SelectObject(m_hDC, hOldFont); |
694 charset = tm.tmCharSet; | 690 charset = tm.tmCharSet; |
695 return true; | 691 return true; |
696 } | 692 } |
697 | 693 |
698 } // namespace | 694 } // namespace |
699 | 695 |
696 int g_pdfium_print_postscript_level = 0; | |
697 | |
700 std::unique_ptr<IFX_SystemFontInfo> IFX_SystemFontInfo::CreateDefault( | 698 std::unique_ptr<IFX_SystemFontInfo> IFX_SystemFontInfo::CreateDefault( |
701 const char** pUnused) { | 699 const char** pUnused) { |
702 if (IsGDIEnabled()) | 700 if (IsGDIEnabled()) |
703 return std::unique_ptr<IFX_SystemFontInfo>(new CFX_Win32FontInfo); | 701 return std::unique_ptr<IFX_SystemFontInfo>(new CFX_Win32FontInfo); |
704 | 702 |
705 // Select the fallback font information class if GDI is disabled. | 703 // Select the fallback font information class if GDI is disabled. |
706 CFX_Win32FallbackFontInfo* pInfoFallback = new CFX_Win32FallbackFontInfo; | 704 CFX_Win32FallbackFontInfo* pInfoFallback = new CFX_Win32FallbackFontInfo; |
707 // Construct the font path manually, SHGetKnownFolderPath won't work under | 705 // Construct the font path manually, SHGetKnownFolderPath won't work under |
708 // a restrictive sandbox. | 706 // a restrictive sandbox. |
709 CHAR windows_path[MAX_PATH] = {}; | 707 CHAR windows_path[MAX_PATH] = {}; |
(...skipping 670 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1380 IFX_RenderDeviceDriver* pRDD = GetDeviceDriver(); | 1378 IFX_RenderDeviceDriver* pRDD = GetDeviceDriver(); |
1381 return pRDD ? reinterpret_cast<HDC>(pRDD->GetPlatformSurface()) : nullptr; | 1379 return pRDD ? reinterpret_cast<HDC>(pRDD->GetPlatformSurface()) : nullptr; |
1382 } | 1380 } |
1383 | 1381 |
1384 // static | 1382 // static |
1385 IFX_RenderDeviceDriver* CFX_WindowsDevice::CreateDriver(HDC hDC) { | 1383 IFX_RenderDeviceDriver* CFX_WindowsDevice::CreateDriver(HDC hDC) { |
1386 int device_type = ::GetDeviceCaps(hDC, TECHNOLOGY); | 1384 int device_type = ::GetDeviceCaps(hDC, TECHNOLOGY); |
1387 int obj_type = ::GetObjectType(hDC); | 1385 int obj_type = ::GetObjectType(hDC); |
1388 bool use_printer = device_type == DT_RASPRINTER || | 1386 bool use_printer = device_type == DT_RASPRINTER || |
1389 device_type == DT_PLOTTER || obj_type == OBJ_ENHMETADC; | 1387 device_type == DT_PLOTTER || obj_type == OBJ_ENHMETADC; |
1390 if (use_printer) | 1388 |
1389 if (!use_printer) | |
1390 return new CGdiDisplayDriver(hDC); | |
1391 | |
1392 if (g_pdfium_print_postscript_level == 2 || | |
1393 g_pdfium_print_postscript_level == 3) { | |
1394 return new CPSPrinterDriver(hDC, g_pdfium_print_postscript_level, false); | |
1395 } else { | |
Tom Sepez
2017/01/09 20:18:20
nit: else after return not needed.
rbpotter
2017/01/10 20:28:24
Done.
| |
1391 return new CGdiPrinterDriver(hDC); | 1396 return new CGdiPrinterDriver(hDC); |
1392 return new CGdiDisplayDriver(hDC); | 1397 } |
1393 } | 1398 } |
OLD | NEW |