| 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> |
| (...skipping 766 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 777 | 777 |
| 778 void CGdiDeviceDriver::RestoreState(bool bKeepSaved) { | 778 void CGdiDeviceDriver::RestoreState(bool bKeepSaved) { |
| 779 RestoreDC(m_hDC, -1); | 779 RestoreDC(m_hDC, -1); |
| 780 if (bKeepSaved) | 780 if (bKeepSaved) |
| 781 SaveDC(m_hDC); | 781 SaveDC(m_hDC); |
| 782 } | 782 } |
| 783 | 783 |
| 784 FX_BOOL CGdiDeviceDriver::GDI_SetDIBits(CFX_DIBitmap* pBitmap1, | 784 FX_BOOL CGdiDeviceDriver::GDI_SetDIBits(CFX_DIBitmap* pBitmap1, |
| 785 const FX_RECT* pSrcRect, | 785 const FX_RECT* pSrcRect, |
| 786 int left, | 786 int left, |
| 787 int top, | 787 int top) { |
| 788 void* pIccTransform) { | |
| 789 if (m_DeviceClass == FXDC_PRINTER) { | 788 if (m_DeviceClass == FXDC_PRINTER) { |
| 790 std::unique_ptr<CFX_DIBitmap> pBitmap(pBitmap1->FlipImage(FALSE, TRUE)); | 789 std::unique_ptr<CFX_DIBitmap> pBitmap(pBitmap1->FlipImage(FALSE, TRUE)); |
| 791 if (!pBitmap) | 790 if (!pBitmap) |
| 792 return FALSE; | 791 return FALSE; |
| 793 | 792 |
| 794 if ((pBitmap->IsCmykImage() || pIccTransform) && | 793 if (pBitmap->IsCmykImage() && !pBitmap->ConvertFormat(FXDIB_Rgb)) |
| 795 !pBitmap->ConvertFormat(FXDIB_Rgb, pIccTransform)) { | |
| 796 return FALSE; | 794 return FALSE; |
| 797 } | |
| 798 | 795 |
| 799 int width = pSrcRect->Width(), height = pSrcRect->Height(); | 796 int width = pSrcRect->Width(), height = pSrcRect->Height(); |
| 800 LPBYTE pBuffer = pBitmap->GetBuffer(); | 797 LPBYTE pBuffer = pBitmap->GetBuffer(); |
| 801 CFX_ByteString info = CFX_WindowsDIB::GetBitmapInfo(pBitmap.get()); | 798 CFX_ByteString info = CFX_WindowsDIB::GetBitmapInfo(pBitmap.get()); |
| 802 ((BITMAPINFOHEADER*)info.c_str())->biHeight *= -1; | 799 ((BITMAPINFOHEADER*)info.c_str())->biHeight *= -1; |
| 803 FX_RECT dst_rect(0, 0, width, height); | 800 FX_RECT dst_rect(0, 0, width, height); |
| 804 dst_rect.Intersect(0, 0, pBitmap->GetWidth(), pBitmap->GetHeight()); | 801 dst_rect.Intersect(0, 0, pBitmap->GetWidth(), pBitmap->GetHeight()); |
| 805 int dst_width = dst_rect.Width(); | 802 int dst_width = dst_rect.Width(); |
| 806 int dst_height = dst_rect.Height(); | 803 int dst_height = dst_rect.Height(); |
| 807 ::StretchDIBits(m_hDC, left, top, dst_width, dst_height, 0, 0, dst_width, | 804 ::StretchDIBits(m_hDC, left, top, dst_width, dst_height, 0, 0, dst_width, |
| 808 dst_height, pBuffer, (BITMAPINFO*)info.c_str(), | 805 dst_height, pBuffer, (BITMAPINFO*)info.c_str(), |
| 809 DIB_RGB_COLORS, SRCCOPY); | 806 DIB_RGB_COLORS, SRCCOPY); |
| 810 } else { | 807 } else { |
| 811 CFX_DIBitmap* pBitmap = pBitmap1; | 808 CFX_DIBitmap* pBitmap = pBitmap1; |
| 812 if (pBitmap->IsCmykImage() || pIccTransform) { | 809 if (pBitmap->IsCmykImage()) { |
| 813 pBitmap = pBitmap->CloneConvert(FXDIB_Rgb, nullptr, pIccTransform); | 810 pBitmap = pBitmap->CloneConvert(FXDIB_Rgb); |
| 814 if (!pBitmap) | 811 if (!pBitmap) |
| 815 return FALSE; | 812 return FALSE; |
| 816 } | 813 } |
| 817 int width = pSrcRect->Width(), height = pSrcRect->Height(); | 814 int width = pSrcRect->Width(), height = pSrcRect->Height(); |
| 818 LPBYTE pBuffer = pBitmap->GetBuffer(); | 815 LPBYTE pBuffer = pBitmap->GetBuffer(); |
| 819 CFX_ByteString info = CFX_WindowsDIB::GetBitmapInfo(pBitmap); | 816 CFX_ByteString info = CFX_WindowsDIB::GetBitmapInfo(pBitmap); |
| 820 ::SetDIBitsToDevice(m_hDC, left, top, width, height, pSrcRect->left, | 817 ::SetDIBitsToDevice(m_hDC, left, top, width, height, pSrcRect->left, |
| 821 pBitmap->GetHeight() - pSrcRect->bottom, 0, | 818 pBitmap->GetHeight() - pSrcRect->bottom, 0, |
| 822 pBitmap->GetHeight(), pBuffer, | 819 pBitmap->GetHeight(), pBuffer, |
| 823 (BITMAPINFO*)info.c_str(), DIB_RGB_COLORS); | 820 (BITMAPINFO*)info.c_str(), DIB_RGB_COLORS); |
| 824 if (pBitmap != pBitmap1) { | 821 if (pBitmap != pBitmap1) { |
| 825 delete pBitmap; | 822 delete pBitmap; |
| 826 } | 823 } |
| 827 } | 824 } |
| 828 return TRUE; | 825 return TRUE; |
| 829 } | 826 } |
| 830 | 827 |
| 831 FX_BOOL CGdiDeviceDriver::GDI_StretchDIBits(CFX_DIBitmap* pBitmap1, | 828 FX_BOOL CGdiDeviceDriver::GDI_StretchDIBits(CFX_DIBitmap* pBitmap1, |
| 832 int dest_left, | 829 int dest_left, |
| 833 int dest_top, | 830 int dest_top, |
| 834 int dest_width, | 831 int dest_width, |
| 835 int dest_height, | 832 int dest_height, |
| 836 uint32_t flags, | 833 uint32_t flags) { |
| 837 void* pIccTransform) { | |
| 838 CFX_DIBitmap* pBitmap = pBitmap1; | 834 CFX_DIBitmap* pBitmap = pBitmap1; |
| 839 if (!pBitmap || dest_width == 0 || dest_height == 0) | 835 if (!pBitmap || dest_width == 0 || dest_height == 0) |
| 840 return FALSE; | 836 return FALSE; |
| 841 | 837 |
| 842 if ((pBitmap->IsCmykImage() || pIccTransform) && | 838 if (pBitmap->IsCmykImage() && !pBitmap->ConvertFormat(FXDIB_Rgb)) |
| 843 !pBitmap->ConvertFormat(FXDIB_Rgb, pIccTransform)) { | |
| 844 return FALSE; | 839 return FALSE; |
| 845 } | 840 |
| 846 CFX_ByteString info = CFX_WindowsDIB::GetBitmapInfo(pBitmap); | 841 CFX_ByteString info = CFX_WindowsDIB::GetBitmapInfo(pBitmap); |
| 847 if ((int64_t)abs(dest_width) * abs(dest_height) < | 842 if ((int64_t)abs(dest_width) * abs(dest_height) < |
| 848 (int64_t)pBitmap1->GetWidth() * pBitmap1->GetHeight() * 4 || | 843 (int64_t)pBitmap1->GetWidth() * pBitmap1->GetHeight() * 4 || |
| 849 (flags & FXDIB_INTERPOL) || (flags & FXDIB_BICUBIC_INTERPOL)) { | 844 (flags & FXDIB_INTERPOL) || (flags & FXDIB_BICUBIC_INTERPOL)) { |
| 850 SetStretchBltMode(m_hDC, HALFTONE); | 845 SetStretchBltMode(m_hDC, HALFTONE); |
| 851 } else { | 846 } else { |
| 852 SetStretchBltMode(m_hDC, COLORONCOLOR); | 847 SetStretchBltMode(m_hDC, COLORONCOLOR); |
| 853 } | 848 } |
| 854 CFX_DIBitmap* pToStrechBitmap = pBitmap; | 849 CFX_DIBitmap* pToStrechBitmap = pBitmap; |
| 855 bool del = false; | 850 bool del = false; |
| 856 if (m_DeviceClass == FXDC_PRINTER && | 851 if (m_DeviceClass == FXDC_PRINTER && |
| 857 ((int64_t)pBitmap->GetWidth() * pBitmap->GetHeight() > | 852 ((int64_t)pBitmap->GetWidth() * pBitmap->GetHeight() > |
| 858 (int64_t)abs(dest_width) * abs(dest_height))) { | 853 (int64_t)abs(dest_width) * abs(dest_height))) { |
| 859 pToStrechBitmap = pBitmap->StretchTo(dest_width, dest_height); | 854 pToStrechBitmap = pBitmap->StretchTo(dest_width, dest_height); |
| 860 del = true; | 855 del = true; |
| 861 } | 856 } |
| 862 CFX_ByteString toStrechBitmapInfo = | 857 CFX_ByteString toStrechBitmapInfo = |
| 863 CFX_WindowsDIB::GetBitmapInfo(pToStrechBitmap); | 858 CFX_WindowsDIB::GetBitmapInfo(pToStrechBitmap); |
| 864 ::StretchDIBits(m_hDC, dest_left, dest_top, dest_width, dest_height, 0, 0, | 859 ::StretchDIBits(m_hDC, dest_left, dest_top, dest_width, dest_height, 0, 0, |
| 865 pToStrechBitmap->GetWidth(), pToStrechBitmap->GetHeight(), | 860 pToStrechBitmap->GetWidth(), pToStrechBitmap->GetHeight(), |
| 866 pToStrechBitmap->GetBuffer(), | 861 pToStrechBitmap->GetBuffer(), |
| 867 (BITMAPINFO*)toStrechBitmapInfo.c_str(), DIB_RGB_COLORS, | 862 (BITMAPINFO*)toStrechBitmapInfo.c_str(), DIB_RGB_COLORS, |
| 868 SRCCOPY); | 863 SRCCOPY); |
| 869 if (del) { | 864 if (del) |
| 870 delete pToStrechBitmap; | 865 delete pToStrechBitmap; |
| 871 } | |
| 872 return TRUE; | 866 return TRUE; |
| 873 } | 867 } |
| 874 | 868 |
| 875 FX_BOOL CGdiDeviceDriver::GDI_StretchBitMask(CFX_DIBitmap* pBitmap1, | 869 FX_BOOL CGdiDeviceDriver::GDI_StretchBitMask(CFX_DIBitmap* pBitmap1, |
| 876 int dest_left, | 870 int dest_left, |
| 877 int dest_top, | 871 int dest_top, |
| 878 int dest_width, | 872 int dest_width, |
| 879 int dest_height, | 873 int dest_height, |
| 880 uint32_t bitmap_color, | 874 uint32_t bitmap_color, |
| 881 uint32_t flags, | 875 uint32_t flags) { |
| 882 int alpha_flag, | |
| 883 void* pIccTransform) { | |
| 884 CFX_DIBitmap* pBitmap = pBitmap1; | 876 CFX_DIBitmap* pBitmap = pBitmap1; |
| 885 if (!pBitmap || dest_width == 0 || dest_height == 0) | 877 if (!pBitmap || dest_width == 0 || dest_height == 0) |
| 886 return FALSE; | 878 return FALSE; |
| 887 | 879 |
| 888 Color2Argb(bitmap_color, bitmap_color, alpha_flag | (1 << 24), pIccTransform); | |
| 889 int width = pBitmap->GetWidth(), height = pBitmap->GetHeight(); | 880 int width = pBitmap->GetWidth(), height = pBitmap->GetHeight(); |
| 890 struct { | 881 struct { |
| 891 BITMAPINFOHEADER bmiHeader; | 882 BITMAPINFOHEADER bmiHeader; |
| 892 uint32_t bmiColors[2]; | 883 uint32_t bmiColors[2]; |
| 893 } bmi; | 884 } bmi; |
| 894 FXSYS_memset(&bmi.bmiHeader, 0, sizeof(BITMAPINFOHEADER)); | 885 FXSYS_memset(&bmi.bmiHeader, 0, sizeof(BITMAPINFOHEADER)); |
| 895 bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); | 886 bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); |
| 896 bmi.bmiHeader.biBitCount = 1; | 887 bmi.bmiHeader.biBitCount = 1; |
| 897 bmi.bmiHeader.biCompression = BI_RGB; | 888 bmi.bmiHeader.biCompression = BI_RGB; |
| 898 bmi.bmiHeader.biHeight = -height; | 889 bmi.bmiHeader.biHeight = -height; |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 992 FX_BOOL CGdiDeviceDriver::DrawPath(const CFX_PathData* pPathData, | 983 FX_BOOL CGdiDeviceDriver::DrawPath(const CFX_PathData* pPathData, |
| 993 const CFX_Matrix* pMatrix, | 984 const CFX_Matrix* pMatrix, |
| 994 const CFX_GraphStateData* pGraphState, | 985 const CFX_GraphStateData* pGraphState, |
| 995 uint32_t fill_color, | 986 uint32_t fill_color, |
| 996 uint32_t stroke_color, | 987 uint32_t stroke_color, |
| 997 int fill_mode, | 988 int fill_mode, |
| 998 int blend_type) { | 989 int blend_type) { |
| 999 if (blend_type != FXDIB_BLEND_NORMAL) | 990 if (blend_type != FXDIB_BLEND_NORMAL) |
| 1000 return FALSE; | 991 return FALSE; |
| 1001 | 992 |
| 1002 Color2Argb(fill_color, fill_color, 1 << 24, nullptr); | |
| 1003 Color2Argb(stroke_color, stroke_color, 0, nullptr); | |
| 1004 CWin32Platform* pPlatform = | 993 CWin32Platform* pPlatform = |
| 1005 (CWin32Platform*)CFX_GEModule::Get()->GetPlatformData(); | 994 (CWin32Platform*)CFX_GEModule::Get()->GetPlatformData(); |
| 1006 if (!(pGraphState || stroke_color == 0) && | 995 if (!(pGraphState || stroke_color == 0) && |
| 1007 !pPlatform->m_GdiplusExt.IsAvailable()) { | 996 !pPlatform->m_GdiplusExt.IsAvailable()) { |
| 1008 CFX_FloatRect bbox_f = pPathData->GetBoundingBox(); | 997 CFX_FloatRect bbox_f = pPathData->GetBoundingBox(); |
| 1009 if (pMatrix) { | 998 if (pMatrix) { |
| 1010 bbox_f.Transform(pMatrix); | 999 bbox_f.Transform(pMatrix); |
| 1011 } | 1000 } |
| 1012 FX_RECT bbox = bbox_f.GetInnerRect(); | 1001 FX_RECT bbox = bbox_f.GetInnerRect(); |
| 1013 if (bbox.Width() <= 0) { | 1002 if (bbox.Width() <= 0) { |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1094 } | 1083 } |
| 1095 return TRUE; | 1084 return TRUE; |
| 1096 } | 1085 } |
| 1097 | 1086 |
| 1098 FX_BOOL CGdiDeviceDriver::FillRectWithBlend(const FX_RECT* pRect, | 1087 FX_BOOL CGdiDeviceDriver::FillRectWithBlend(const FX_RECT* pRect, |
| 1099 uint32_t fill_color, | 1088 uint32_t fill_color, |
| 1100 int blend_type) { | 1089 int blend_type) { |
| 1101 if (blend_type != FXDIB_BLEND_NORMAL) | 1090 if (blend_type != FXDIB_BLEND_NORMAL) |
| 1102 return FALSE; | 1091 return FALSE; |
| 1103 | 1092 |
| 1104 Color2Argb(fill_color, fill_color, 1 << 24, nullptr); | |
| 1105 int alpha; | 1093 int alpha; |
| 1106 FX_COLORREF rgb; | 1094 FX_COLORREF rgb; |
| 1107 ArgbDecode(fill_color, alpha, rgb); | 1095 ArgbDecode(fill_color, alpha, rgb); |
| 1108 if (alpha == 0) | 1096 if (alpha == 0) |
| 1109 return TRUE; | 1097 return TRUE; |
| 1110 | 1098 |
| 1111 if (alpha < 255) | 1099 if (alpha < 255) |
| 1112 return FALSE; | 1100 return FALSE; |
| 1113 | 1101 |
| 1114 HBRUSH hBrush = CreateSolidBrush(rgb); | 1102 HBRUSH hBrush = CreateSolidBrush(rgb); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1151 | 1139 |
| 1152 FX_BOOL CGdiDeviceDriver::DrawCosmeticLine(FX_FLOAT x1, | 1140 FX_BOOL CGdiDeviceDriver::DrawCosmeticLine(FX_FLOAT x1, |
| 1153 FX_FLOAT y1, | 1141 FX_FLOAT y1, |
| 1154 FX_FLOAT x2, | 1142 FX_FLOAT x2, |
| 1155 FX_FLOAT y2, | 1143 FX_FLOAT y2, |
| 1156 uint32_t color, | 1144 uint32_t color, |
| 1157 int blend_type) { | 1145 int blend_type) { |
| 1158 if (blend_type != FXDIB_BLEND_NORMAL) | 1146 if (blend_type != FXDIB_BLEND_NORMAL) |
| 1159 return FALSE; | 1147 return FALSE; |
| 1160 | 1148 |
| 1161 Color2Argb(color, color, 1 << 24, nullptr); | |
| 1162 int a; | 1149 int a; |
| 1163 FX_COLORREF rgb; | 1150 FX_COLORREF rgb; |
| 1164 ArgbDecode(color, a, rgb); | 1151 ArgbDecode(color, a, rgb); |
| 1165 if (a == 0) | 1152 if (a == 0) |
| 1166 return TRUE; | 1153 return TRUE; |
| 1167 | 1154 |
| 1168 HPEN hPen = CreatePen(PS_SOLID, 1, rgb); | 1155 HPEN hPen = CreatePen(PS_SOLID, 1, rgb); |
| 1169 hPen = (HPEN)SelectObject(m_hDC, hPen); | 1156 hPen = (HPEN)SelectObject(m_hDC, hPen); |
| 1170 MoveToEx(m_hDC, FXSYS_round(x1), FXSYS_round(y1), nullptr); | 1157 MoveToEx(m_hDC, FXSYS_round(x1), FXSYS_round(y1), nullptr); |
| 1171 LineTo(m_hDC, FXSYS_round(x2), FXSYS_round(y2)); | 1158 LineTo(m_hDC, FXSYS_round(x2), FXSYS_round(y2)); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1203 bmi.bmiHeader.biWidth = width; | 1190 bmi.bmiHeader.biWidth = width; |
| 1204 if (pBitmap->GetBPP() > 8 && !pBitmap->IsCmykImage()) { | 1191 if (pBitmap->GetBPP() > 8 && !pBitmap->IsCmykImage()) { |
| 1205 ret = ::GetDIBits(hDCMemory, hbmp, 0, height, pBitmap->GetBuffer(), &bmi, | 1192 ret = ::GetDIBits(hDCMemory, hbmp, 0, height, pBitmap->GetBuffer(), &bmi, |
| 1206 DIB_RGB_COLORS) == height; | 1193 DIB_RGB_COLORS) == height; |
| 1207 } else { | 1194 } else { |
| 1208 CFX_DIBitmap bitmap; | 1195 CFX_DIBitmap bitmap; |
| 1209 if (bitmap.Create(width, height, FXDIB_Rgb)) { | 1196 if (bitmap.Create(width, height, FXDIB_Rgb)) { |
| 1210 bmi.bmiHeader.biBitCount = 24; | 1197 bmi.bmiHeader.biBitCount = 24; |
| 1211 ::GetDIBits(hDCMemory, hbmp, 0, height, bitmap.GetBuffer(), &bmi, | 1198 ::GetDIBits(hDCMemory, hbmp, 0, height, bitmap.GetBuffer(), &bmi, |
| 1212 DIB_RGB_COLORS); | 1199 DIB_RGB_COLORS); |
| 1213 ret = | 1200 ret = pBitmap->TransferBitmap(0, 0, width, height, &bitmap, 0, 0); |
| 1214 pBitmap->TransferBitmap(0, 0, width, height, &bitmap, 0, 0, nullptr); | |
| 1215 } else { | 1201 } else { |
| 1216 ret = FALSE; | 1202 ret = FALSE; |
| 1217 } | 1203 } |
| 1218 } | 1204 } |
| 1219 if (pBitmap->HasAlpha() && ret) | 1205 if (pBitmap->HasAlpha() && ret) |
| 1220 pBitmap->LoadChannel(FXDIB_Alpha, 0xff); | 1206 pBitmap->LoadChannel(FXDIB_Alpha, 0xff); |
| 1221 | 1207 |
| 1222 DeleteObject(hbmp); | 1208 DeleteObject(hbmp); |
| 1223 DeleteObject(hDCMemory); | 1209 DeleteObject(hDCMemory); |
| 1224 return ret; | 1210 return ret; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1263 FALSE, nullptr)) { | 1249 FALSE, nullptr)) { |
| 1264 return FALSE; | 1250 return FALSE; |
| 1265 } | 1251 } |
| 1266 FX_RECT src_rect(0, 0, width, height); | 1252 FX_RECT src_rect(0, 0, width, height); |
| 1267 return SetDIBits(&bitmap, 0, &src_rect, left, top, FXDIB_BLEND_NORMAL); | 1253 return SetDIBits(&bitmap, 0, &src_rect, left, top, FXDIB_BLEND_NORMAL); |
| 1268 } | 1254 } |
| 1269 CFX_DIBExtractor temp(pSource); | 1255 CFX_DIBExtractor temp(pSource); |
| 1270 CFX_DIBitmap* pBitmap = temp; | 1256 CFX_DIBitmap* pBitmap = temp; |
| 1271 if (!pBitmap) | 1257 if (!pBitmap) |
| 1272 return FALSE; | 1258 return FALSE; |
| 1273 return GDI_SetDIBits(pBitmap, pSrcRect, left, top, nullptr); | 1259 return GDI_SetDIBits(pBitmap, pSrcRect, left, top); |
| 1274 } | 1260 } |
| 1275 | 1261 |
| 1276 FX_BOOL CGdiDisplayDriver::UseFoxitStretchEngine(const CFX_DIBSource* pSource, | 1262 FX_BOOL CGdiDisplayDriver::UseFoxitStretchEngine(const CFX_DIBSource* pSource, |
| 1277 uint32_t color, | 1263 uint32_t color, |
| 1278 int dest_left, | 1264 int dest_left, |
| 1279 int dest_top, | 1265 int dest_top, |
| 1280 int dest_width, | 1266 int dest_width, |
| 1281 int dest_height, | 1267 int dest_height, |
| 1282 const FX_RECT* pClipRect, | 1268 const FX_RECT* pClipRect, |
| 1283 int render_flags) { | 1269 int render_flags) { |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1357 pClipRect, flags); | 1343 pClipRect, flags); |
| 1358 } | 1344 } |
| 1359 return UseFoxitStretchEngine(pSource, color, dest_left, dest_top, | 1345 return UseFoxitStretchEngine(pSource, color, dest_left, dest_top, |
| 1360 dest_width, dest_height, pClipRect, flags); | 1346 dest_width, dest_height, pClipRect, flags); |
| 1361 } | 1347 } |
| 1362 CFX_DIBExtractor temp(pSource); | 1348 CFX_DIBExtractor temp(pSource); |
| 1363 CFX_DIBitmap* pBitmap = temp; | 1349 CFX_DIBitmap* pBitmap = temp; |
| 1364 if (!pBitmap) | 1350 if (!pBitmap) |
| 1365 return FALSE; | 1351 return FALSE; |
| 1366 return GDI_StretchDIBits(pBitmap, dest_left, dest_top, dest_width, | 1352 return GDI_StretchDIBits(pBitmap, dest_left, dest_top, dest_width, |
| 1367 dest_height, flags, nullptr); | 1353 dest_height, flags); |
| 1368 } | 1354 } |
| 1369 | 1355 |
| 1370 FX_BOOL CGdiDisplayDriver::StartDIBits(const CFX_DIBSource* pBitmap, | 1356 FX_BOOL CGdiDisplayDriver::StartDIBits(const CFX_DIBSource* pBitmap, |
| 1371 int bitmap_alpha, | 1357 int bitmap_alpha, |
| 1372 uint32_t color, | 1358 uint32_t color, |
| 1373 const CFX_Matrix* pMatrix, | 1359 const CFX_Matrix* pMatrix, |
| 1374 uint32_t render_flags, | 1360 uint32_t render_flags, |
| 1375 void*& handle, | 1361 void*& handle, |
| 1376 int blend_type) { | 1362 int blend_type) { |
| 1377 return FALSE; | 1363 return FALSE; |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1429 if (m_hDC) { | 1415 if (m_hDC) { |
| 1430 SelectObject(m_hDC, m_hOldBitmap); | 1416 SelectObject(m_hDC, m_hOldBitmap); |
| 1431 DeleteDC(m_hDC); | 1417 DeleteDC(m_hDC); |
| 1432 } | 1418 } |
| 1433 if (m_hBitmap) | 1419 if (m_hBitmap) |
| 1434 DeleteObject(m_hBitmap); | 1420 DeleteObject(m_hBitmap); |
| 1435 delete GetBitmap(); | 1421 delete GetBitmap(); |
| 1436 } | 1422 } |
| 1437 | 1423 |
| 1438 #endif // _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_ | 1424 #endif // _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_ |
| OLD | NEW |