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

Side by Side Diff: core/src/fxge/win32/fx_win32_device.cpp

Issue 1171733003: Remove typdefs for pointer types in fx_system.h (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Manual fixes. Created 5 years, 6 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/src/fxge/win32/dwrite_int.h ('k') | core/src/fxge/win32/fx_win32_dib.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 "../../../include/fxge/fx_ge.h" 7 #include "../../../include/fxge/fx_ge.h"
8 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_ 8 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_
9 #include "../../../include/fxge/fx_ge_win32.h" 9 #include "../../../include/fxge/fx_ge_win32.h"
10 #include <crtdbg.h> 10 #include <crtdbg.h>
11 #include "../agg/include/fxfx_agg_clip_liang_barsky.h" 11 #include "../agg/include/fxfx_agg_clip_liang_barsky.h"
12 #include "dwrite_int.h" 12 #include "dwrite_int.h"
13 #include "win32_int.h" 13 #include "win32_int.h"
14 #include "../ge/text_int.h" 14 #include "../ge/text_int.h"
15 #include "../dib/dib_int.h" 15 #include "../dib/dib_int.h"
16 #include "../agg/include/fx_agg_driver.h" 16 #include "../agg/include/fx_agg_driver.h"
17 #include "../../../include/fxge/fx_freetype.h" 17 #include "../../../include/fxge/fx_freetype.h"
18 #include "../../../include/fxcodec/fx_codec.h" 18 #include "../../../include/fxcodec/fx_codec.h"
19 class CWin32FontInfo final : public IFX_SystemFontInfo 19 class CWin32FontInfo final : public IFX_SystemFontInfo
20 { 20 {
21 public: 21 public:
22 CWin32FontInfo(); 22 CWin32FontInfo();
23 ~CWin32FontInfo(); 23 ~CWin32FontInfo();
24 virtual void Release(); 24 virtual void Release();
25 virtual FX_BOOL EnumFontList(CFX_FontMapper* pMapper); 25 virtual FX_BOOL EnumFontList(CFX_FontMapper* pMapper);
26 virtual void*» » MapFont(int weight, FX_BOOL bItalic, int charset , int pitch_family, FX_LPCSTR face, FX_BOOL& bExact); 26 virtual void*» » MapFont(int weight, FX_BOOL bItalic, int charset , int pitch_family, const FX_CHAR* face, FX_BOOL& bExact);
27 virtual void*» » GetFont(FX_LPCSTR face) 27 virtual void*» » GetFont(const FX_CHAR* face)
28 { 28 {
29 return NULL; 29 return NULL;
30 } 30 }
31 virtual FX_DWORD» GetFontData(void* hFont, FX_DWORD table, FX_LPBYTE buffe r, FX_DWORD size); 31 virtual FX_DWORD» GetFontData(void* hFont, FX_DWORD table, uint8_t* buffer , FX_DWORD size);
32 virtual void DeleteFont(void* hFont); 32 virtual void DeleteFont(void* hFont);
33 virtual FX_BOOL GetFaceName(void* hFont, CFX_ByteString& name); 33 virtual FX_BOOL GetFaceName(void* hFont, CFX_ByteString& name);
34 virtual FX_BOOL GetFontCharset(void* hFont, int& charset); 34 virtual FX_BOOL GetFontCharset(void* hFont, int& charset);
35 FX_BOOL IsOpenTypeFromDiv(const LOGFONTA *plf); 35 FX_BOOL IsOpenTypeFromDiv(const LOGFONTA *plf);
36 FX_BOOL IsSupportFontFormDiv(const LOGFONTA* plf ); 36 FX_BOOL IsSupportFontFormDiv(const LOGFONTA* plf );
37 void AddInstalledFont(const LOGFONTA *plf, FX _DWORD FontType); 37 void AddInstalledFont(const LOGFONTA *plf, FX _DWORD FontType);
38 void GetGBPreference(CFX_ByteString& face, in t weight, int picth_family); 38 void GetGBPreference(CFX_ByteString& face, in t weight, int picth_family);
39 void GetJapanesePreference(CFX_ByteString& fa ce, int weight, int picth_family); 39 void GetJapanesePreference(CFX_ByteString& fa ce, int weight, int picth_family);
40 CFX_ByteString FindFont(const CFX_ByteString& name); 40 CFX_ByteString FindFont(const CFX_ByteString& name);
41 HDC m_hDC; 41 HDC m_hDC;
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 lf.lfCharSet = DEFAULT_CHARSET; 145 lf.lfCharSet = DEFAULT_CHARSET;
146 lf.lfFaceName[0] = 0; 146 lf.lfFaceName[0] = 0;
147 lf.lfPitchAndFamily = 0; 147 lf.lfPitchAndFamily = 0;
148 EnumFontFamiliesExA(m_hDC, &lf, (FONTENUMPROCA)FontEnumProc, (uintptr_t)this , 0); 148 EnumFontFamiliesExA(m_hDC, &lf, (FONTENUMPROCA)FontEnumProc, (uintptr_t)this , 0);
149 if (pMapper->GetFontEnumerator()) { 149 if (pMapper->GetFontEnumerator()) {
150 pMapper->GetFontEnumerator()->Finish(); 150 pMapper->GetFontEnumerator()->Finish();
151 } 151 }
152 return TRUE; 152 return TRUE;
153 } 153 }
154 static const struct { 154 static const struct {
155 FX_LPCSTR» m_pFaceName; 155 const FX_CHAR*» m_pFaceName;
156 FX_LPCSTR» m_pVariantName; 156 const FX_CHAR*» m_pVariantName;
157 } 157 }
158 VariantNames[] = { 158 VariantNames[] = {
159 {"DFKai-SB", "\x19\x6A\x77\x69\xD4\x9A"}, 159 {"DFKai-SB", "\x19\x6A\x77\x69\xD4\x9A"},
160 }; 160 };
161 static const struct { 161 static const struct {
162 FX_LPCSTR» m_pName; 162 const FX_CHAR*» m_pName;
163 FX_LPCSTR» m_pWinName; 163 const FX_CHAR*» m_pWinName;
164 FX_BOOL m_bBold; 164 FX_BOOL m_bBold;
165 FX_BOOL m_bItalic; 165 FX_BOOL m_bItalic;
166 } 166 }
167 Base14Substs[] = { 167 Base14Substs[] = {
168 {"Courier", "Courier New", FALSE, FALSE}, 168 {"Courier", "Courier New", FALSE, FALSE},
169 {"Courier-Bold", "Courier New", TRUE, FALSE}, 169 {"Courier-Bold", "Courier New", TRUE, FALSE},
170 {"Courier-BoldOblique", "Courier New", TRUE, TRUE}, 170 {"Courier-BoldOblique", "Courier New", TRUE, TRUE},
171 {"Courier-Oblique", "Courier New", FALSE, TRUE}, 171 {"Courier-Oblique", "Courier New", FALSE, TRUE},
172 {"Helvetica", "Arial", FALSE, FALSE}, 172 {"Helvetica", "Arial", FALSE, FALSE},
173 {"Helvetica-Bold", "Arial", TRUE, FALSE}, 173 {"Helvetica-Bold", "Arial", TRUE, FALSE},
(...skipping 16 matching lines...) Expand all
190 if (thisname.Mid(1, name.GetLength()) == name) { 190 if (thisname.Mid(1, name.GetLength()) == name) {
191 return m_pMapper->m_InstalledTTFonts[i + 1]; 191 return m_pMapper->m_InstalledTTFonts[i + 1];
192 } 192 }
193 } else if (thisname.Left(name.GetLength()) == name) { 193 } else if (thisname.Left(name.GetLength()) == name) {
194 return m_pMapper->m_InstalledTTFonts[i]; 194 return m_pMapper->m_InstalledTTFonts[i];
195 } 195 }
196 } 196 }
197 return CFX_ByteString(); 197 return CFX_ByteString();
198 } 198 }
199 struct _FontNameMap { 199 struct _FontNameMap {
200 FX_LPCSTR» m_pSubFontName; 200 const FX_CHAR*» m_pSubFontName;
201 FX_LPCSTR» m_pSrcFontName; 201 const FX_CHAR*» m_pSrcFontName;
202 }; 202 };
203 const _FontNameMap g_JpFontNameMap[] = { 203 const _FontNameMap g_JpFontNameMap[] = {
204 {"MS Mincho", "Heiseimin-W3"}, 204 {"MS Mincho", "Heiseimin-W3"},
205 {"MS Gothic", "Jun101-Light"}, 205 {"MS Gothic", "Jun101-Light"},
206 }; 206 };
207 extern "C" { 207 extern "C" {
208 static int compareString(const void* key, const void* element) 208 static int compareString(const void* key, const void* element)
209 { 209 {
210 return FXSYS_stricmp((FX_LPCSTR)key, ((_FontNameMap*)element)->m_pSrcFon tName); 210 return FXSYS_stricmp((const FX_CHAR*)key, ((_FontNameMap*)element)->m_pS rcFontName);
211 } 211 }
212 } 212 }
213 FX_BOOL _GetSubFontName(CFX_ByteString& name) 213 FX_BOOL _GetSubFontName(CFX_ByteString& name)
214 { 214 {
215 int size = sizeof g_JpFontNameMap; 215 int size = sizeof g_JpFontNameMap;
216 void* pFontnameMap = (void*)g_JpFontNameMap; 216 void* pFontnameMap = (void*)g_JpFontNameMap;
217 _FontNameMap* found = (_FontNameMap*)FXSYS_bsearch(name.c_str(), pFontnameMa p, 217 _FontNameMap* found = (_FontNameMap*)FXSYS_bsearch(name.c_str(), pFontnameMa p,
218 size / sizeof (_FontNameMap), sizeof (_FontNameMap), c ompareString); 218 size / sizeof (_FontNameMap), sizeof (_FontNameMap), c ompareString);
219 if (found == NULL) { 219 if (found == NULL) {
220 return FALSE; 220 return FALSE;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 } 275 }
276 if (_GetSubFontName(face)) { 276 if (_GetSubFontName(face)) {
277 return; 277 return;
278 } 278 }
279 if (!(picth_family & FF_ROMAN) && weight > 400) { 279 if (!(picth_family & FF_ROMAN) && weight > 400) {
280 face = "MS PGothic"; 280 face = "MS PGothic";
281 } else { 281 } else {
282 face = "MS PMincho"; 282 face = "MS PMincho";
283 } 283 }
284 } 284 }
285 void* CWin32FontInfo::MapFont(int weight, FX_BOOL bItalic, int charset, int pitc h_family, FX_LPCSTR cstr_face, FX_BOOL& bExact) 285 void* CWin32FontInfo::MapFont(int weight, FX_BOOL bItalic, int charset, int pitc h_family, const FX_CHAR* cstr_face, FX_BOOL& bExact)
286 { 286 {
287 CFX_ByteString face = cstr_face; 287 CFX_ByteString face = cstr_face;
288 int iBaseFont; 288 int iBaseFont;
289 for (iBaseFont = 0; iBaseFont < 12; iBaseFont ++) 289 for (iBaseFont = 0; iBaseFont < 12; iBaseFont ++)
290 if (face == CFX_ByteStringC(Base14Substs[iBaseFont].m_pName)) { 290 if (face == CFX_ByteStringC(Base14Substs[iBaseFont].m_pName)) {
291 face = Base14Substs[iBaseFont].m_pWinName; 291 face = Base14Substs[iBaseFont].m_pWinName;
292 weight = Base14Substs[iBaseFont].m_bBold ? FW_BOLD : FW_NORMAL; 292 weight = Base14Substs[iBaseFont].m_bBold ? FW_BOLD : FW_NORMAL;
293 bItalic = Base14Substs[iBaseFont].m_bItalic; 293 bItalic = Base14Substs[iBaseFont].m_bItalic;
294 bExact = TRUE; 294 bExact = TRUE;
295 break; 295 break;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 break; 352 break;
353 } 353 }
354 hFont = ::CreateFontA(-10, 0, 0, 0, weight, bItalic, 0, 0, charset, OUT_TT_O NLY_PRECIS, 354 hFont = ::CreateFontA(-10, 0, 0, 0, weight, bItalic, 0, 0, charset, OUT_TT_O NLY_PRECIS,
355 0, 0, subst_pitch_family, face); 355 0, 0, subst_pitch_family, face);
356 return hFont; 356 return hFont;
357 } 357 }
358 void CWin32FontInfo::DeleteFont(void* hFont) 358 void CWin32FontInfo::DeleteFont(void* hFont)
359 { 359 {
360 ::DeleteObject(hFont); 360 ::DeleteObject(hFont);
361 } 361 }
362 FX_DWORD CWin32FontInfo::GetFontData(void* hFont, FX_DWORD table, FX_LPBYTE buff er, FX_DWORD size) 362 FX_DWORD CWin32FontInfo::GetFontData(void* hFont, FX_DWORD table, uint8_t* buffe r, FX_DWORD size)
363 { 363 {
364 HFONT hOldFont = (HFONT)::SelectObject(m_hDC, (HFONT)hFont); 364 HFONT hOldFont = (HFONT)::SelectObject(m_hDC, (HFONT)hFont);
365 table = FXDWORD_FROM_MSBFIRST(table); 365 table = FXDWORD_FROM_MSBFIRST(table);
366 size = ::GetFontData(m_hDC, table, 0, buffer, size); 366 size = ::GetFontData(m_hDC, table, 0, buffer, size);
367 ::SelectObject(m_hDC, hOldFont); 367 ::SelectObject(m_hDC, hOldFont);
368 if (size == GDI_ERROR) { 368 if (size == GDI_ERROR) {
369 return 0; 369 return 0;
370 } 370 }
371 return size; 371 return size;
372 } 372 }
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 return m_Width; 449 return m_Width;
450 case FXDC_PIXEL_HEIGHT: 450 case FXDC_PIXEL_HEIGHT:
451 return m_Height; 451 return m_Height;
452 case FXDC_BITS_PIXEL: 452 case FXDC_BITS_PIXEL:
453 return m_nBitsPerPixel; 453 return m_nBitsPerPixel;
454 case FXDC_RENDER_CAPS: 454 case FXDC_RENDER_CAPS:
455 return m_RenderCaps; 455 return m_RenderCaps;
456 } 456 }
457 return 0; 457 return 0;
458 } 458 }
459 FX_LPVOID CGdiDeviceDriver::GetClipRgn() 459 void* CGdiDeviceDriver::GetClipRgn()
460 { 460 {
461 HRGN hClipRgn = CreateRectRgn(0, 0, 1, 1); 461 HRGN hClipRgn = CreateRectRgn(0, 0, 1, 1);
462 if (::GetClipRgn(m_hDC, hClipRgn) == 0) { 462 if (::GetClipRgn(m_hDC, hClipRgn) == 0) {
463 DeleteObject(hClipRgn); 463 DeleteObject(hClipRgn);
464 hClipRgn = NULL; 464 hClipRgn = NULL;
465 } 465 }
466 return (FX_LPVOID)hClipRgn; 466 return (void*)hClipRgn;
467 } 467 }
468 FX_BOOL CGdiDeviceDriver::GDI_SetDIBits(const CFX_DIBitmap* pBitmap1, const FX_R ECT* pSrcRect, int left, int top, void* pIccTransform) 468 FX_BOOL CGdiDeviceDriver::GDI_SetDIBits(const CFX_DIBitmap* pBitmap1, const FX_R ECT* pSrcRect, int left, int top, void* pIccTransform)
469 { 469 {
470 if (m_DeviceClass == FXDC_PRINTER) { 470 if (m_DeviceClass == FXDC_PRINTER) {
471 CFX_DIBitmap* pBitmap = pBitmap1->FlipImage(FALSE, TRUE); 471 CFX_DIBitmap* pBitmap = pBitmap1->FlipImage(FALSE, TRUE);
472 if (pBitmap == NULL) { 472 if (pBitmap == NULL) {
473 return FALSE; 473 return FALSE;
474 } 474 }
475 if ((pBitmap->IsCmykImage() || pIccTransform) && 475 if ((pBitmap->IsCmykImage() || pIccTransform) &&
476 !pBitmap->ConvertFormat(FXDIB_Rgb, pIccTransform)) { 476 !pBitmap->ConvertFormat(FXDIB_Rgb, pIccTransform)) {
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
590 590
591 SelectObject(m_hDC, hOld); 591 SelectObject(m_hDC, hOld);
592 DeleteObject(hPattern); 592 DeleteObject(hPattern);
593 593
594 return TRUE; 594 return TRUE;
595 } 595 }
596 BOOL CGdiDeviceDriver::GetClipBox(FX_RECT* pRect) 596 BOOL CGdiDeviceDriver::GetClipBox(FX_RECT* pRect)
597 { 597 {
598 return ::GetClipBox(m_hDC, (RECT*)pRect); 598 return ::GetClipBox(m_hDC, (RECT*)pRect);
599 } 599 }
600 FX_BOOL CGdiDeviceDriver::SetClipRgn(FX_LPVOID hRgn) 600 FX_BOOL CGdiDeviceDriver::SetClipRgn(void* hRgn)
601 { 601 {
602 ::SelectClipRgn(m_hDC, (HRGN)hRgn); 602 ::SelectClipRgn(m_hDC, (HRGN)hRgn);
603 return TRUE; 603 return TRUE;
604 } 604 }
605 static HPEN _CreatePen(const CFX_GraphStateData* pGraphState, const CFX_AffineMa trix* pMatrix, FX_DWORD argb) 605 static HPEN _CreatePen(const CFX_GraphStateData* pGraphState, const CFX_AffineMa trix* pMatrix, FX_DWORD argb)
606 { 606 {
607 FX_FLOAT width; 607 FX_FLOAT width;
608 FX_FLOAT scale = 1.f; 608 FX_FLOAT scale = 1.f;
609 if (pMatrix) 609 if (pMatrix)
610 scale = FXSYS_fabs(pMatrix->a) > FXSYS_fabs(pMatrix->b) ? 610 scale = FXSYS_fabs(pMatrix->a) > FXSYS_fabs(pMatrix->b) ?
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
920 return TRUE; 920 return TRUE;
921 } 921 }
922 HPEN hPen = CreatePen(PS_SOLID, 1, rgb); 922 HPEN hPen = CreatePen(PS_SOLID, 1, rgb);
923 hPen = (HPEN)SelectObject(m_hDC, hPen); 923 hPen = (HPEN)SelectObject(m_hDC, hPen);
924 MoveToEx(m_hDC, FXSYS_round(x1), FXSYS_round(y1), NULL); 924 MoveToEx(m_hDC, FXSYS_round(x1), FXSYS_round(y1), NULL);
925 LineTo(m_hDC, FXSYS_round(x2), FXSYS_round(y2)); 925 LineTo(m_hDC, FXSYS_round(x2), FXSYS_round(y2));
926 hPen = (HPEN)SelectObject(m_hDC, hPen); 926 hPen = (HPEN)SelectObject(m_hDC, hPen);
927 DeleteObject(hPen); 927 DeleteObject(hPen);
928 return TRUE; 928 return TRUE;
929 } 929 }
930 FX_BOOL CGdiDeviceDriver::DeleteDeviceRgn(FX_LPVOID pRgn) 930 FX_BOOL CGdiDeviceDriver::DeleteDeviceRgn(void* pRgn)
931 { 931 {
932 DeleteObject((HGDIOBJ)pRgn); 932 DeleteObject((HGDIOBJ)pRgn);
933 return TRUE; 933 return TRUE;
934 } 934 }
935 CGdiDisplayDriver::CGdiDisplayDriver(HDC hDC) : CGdiDeviceDriver(hDC, FXDC_DISPL AY) 935 CGdiDisplayDriver::CGdiDisplayDriver(HDC hDC) : CGdiDeviceDriver(hDC, FXDC_DISPL AY)
936 { 936 {
937 CWin32Platform* pPlatform = (CWin32Platform*)CFX_GEModule::Get()->GetPlatfor mData(); 937 CWin32Platform* pPlatform = (CWin32Platform*)CFX_GEModule::Get()->GetPlatfor mData();
938 if (pPlatform->m_GdiplusExt.IsAvailable()) { 938 if (pPlatform->m_GdiplusExt.IsAvailable()) {
939 m_RenderCaps |= FXRC_ALPHA_PATH | FXRC_ALPHA_IMAGE; 939 m_RenderCaps |= FXRC_ALPHA_PATH | FXRC_ALPHA_IMAGE;
940 } 940 }
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
1169 } 1169 }
1170 CFX_WinBitmapDevice::CFX_WinBitmapDevice(int width, int height, FXDIB_Format for mat) 1170 CFX_WinBitmapDevice::CFX_WinBitmapDevice(int width, int height, FXDIB_Format for mat)
1171 { 1171 {
1172 BITMAPINFOHEADER bmih; 1172 BITMAPINFOHEADER bmih;
1173 FXSYS_memset32(&bmih, 0, sizeof (BITMAPINFOHEADER)); 1173 FXSYS_memset32(&bmih, 0, sizeof (BITMAPINFOHEADER));
1174 bmih.biSize = sizeof(BITMAPINFOHEADER); 1174 bmih.biSize = sizeof(BITMAPINFOHEADER);
1175 bmih.biBitCount = format & 0xff; 1175 bmih.biBitCount = format & 0xff;
1176 bmih.biHeight = -height; 1176 bmih.biHeight = -height;
1177 bmih.biPlanes = 1; 1177 bmih.biPlanes = 1;
1178 bmih.biWidth = width; 1178 bmih.biWidth = width;
1179 FX_LPBYTE pBuffer; 1179 uint8_t* pBuffer;
1180 m_hBitmap = CreateDIBSection(NULL, (BITMAPINFO*)&bmih, DIB_RGB_COLORS, (FX_L PVOID*)&pBuffer, NULL, 0); 1180 m_hBitmap = CreateDIBSection(NULL, (BITMAPINFO*)&bmih, DIB_RGB_COLORS, (void **)&pBuffer, NULL, 0);
1181 if (m_hBitmap == NULL) { 1181 if (m_hBitmap == NULL) {
1182 return; 1182 return;
1183 } 1183 }
1184 CFX_DIBitmap* pBitmap = new CFX_DIBitmap; 1184 CFX_DIBitmap* pBitmap = new CFX_DIBitmap;
1185 pBitmap->Create(width, height, format, pBuffer); 1185 pBitmap->Create(width, height, format, pBuffer);
1186 SetBitmap(pBitmap); 1186 SetBitmap(pBitmap);
1187 m_hDC = ::CreateCompatibleDC(NULL); 1187 m_hDC = ::CreateCompatibleDC(NULL);
1188 m_hOldBitmap = (HBITMAP)SelectObject(m_hDC, m_hBitmap); 1188 m_hOldBitmap = (HBITMAP)SelectObject(m_hDC, m_hBitmap);
1189 IFX_RenderDeviceDriver* pDriver = new CGdiDisplayDriver(m_hDC); 1189 IFX_RenderDeviceDriver* pDriver = new CGdiDisplayDriver(m_hDC);
1190 SetDeviceDriver(pDriver); 1190 SetDeviceDriver(pDriver);
1191 } 1191 }
1192 CFX_WinBitmapDevice::~CFX_WinBitmapDevice() 1192 CFX_WinBitmapDevice::~CFX_WinBitmapDevice()
1193 { 1193 {
1194 if (m_hDC) { 1194 if (m_hDC) {
1195 SelectObject(m_hDC, m_hOldBitmap); 1195 SelectObject(m_hDC, m_hOldBitmap);
1196 DeleteDC(m_hDC); 1196 DeleteDC(m_hDC);
1197 } 1197 }
1198 if (m_hBitmap) { 1198 if (m_hBitmap) {
1199 DeleteObject(m_hBitmap); 1199 DeleteObject(m_hBitmap);
1200 } 1200 }
1201 delete GetBitmap(); 1201 delete GetBitmap();
1202 } 1202 }
1203 #endif 1203 #endif
OLDNEW
« no previous file with comments | « core/src/fxge/win32/dwrite_int.h ('k') | core/src/fxge/win32/fx_win32_dib.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698