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/agg/fx_agg_driver.h" | 7 #include "core/fxge/agg/fx_agg_driver.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 | 10 |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
226 void CFX_AggDeviceDriver::InitPlatform() {} | 226 void CFX_AggDeviceDriver::InitPlatform() {} |
227 | 227 |
228 void CFX_AggDeviceDriver::DestroyPlatform() {} | 228 void CFX_AggDeviceDriver::DestroyPlatform() {} |
229 | 229 |
230 FX_BOOL CFX_AggDeviceDriver::DrawDeviceText(int nChars, | 230 FX_BOOL CFX_AggDeviceDriver::DrawDeviceText(int nChars, |
231 const FXTEXT_CHARPOS* pCharPos, | 231 const FXTEXT_CHARPOS* pCharPos, |
232 CFX_Font* pFont, | 232 CFX_Font* pFont, |
233 CFX_FontCache* pCache, | 233 CFX_FontCache* pCache, |
234 const CFX_Matrix* pObject2Device, | 234 const CFX_Matrix* pObject2Device, |
235 FX_FLOAT font_size, | 235 FX_FLOAT font_size, |
236 FX_DWORD color, | 236 uint32_t color, |
237 int alpha_flag, | 237 int alpha_flag, |
238 void* pIccTransform) { | 238 void* pIccTransform) { |
239 return FALSE; | 239 return FALSE; |
240 } // _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ | 240 } // _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ |
241 #endif | 241 #endif |
242 | 242 |
243 int CFX_AggDeviceDriver::GetDeviceCaps(int caps_id) { | 243 int CFX_AggDeviceDriver::GetDeviceCaps(int caps_id) { |
244 switch (caps_id) { | 244 switch (caps_id) { |
245 case FXDC_DEVICE_CLASS: | 245 case FXDC_DEVICE_CLASS: |
246 return FXDC_DISPLAY; | 246 return FXDC_DISPLAY; |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 RasterizeStroke(rasterizer, path_data.m_PathData, pObject2Device, | 377 RasterizeStroke(rasterizer, path_data.m_PathData, pObject2Device, |
378 pGraphState); | 378 pGraphState); |
379 rasterizer.filling_rule(agg::fill_non_zero); | 379 rasterizer.filling_rule(agg::fill_non_zero); |
380 SetClipMask(rasterizer); | 380 SetClipMask(rasterizer); |
381 return TRUE; | 381 return TRUE; |
382 } | 382 } |
383 | 383 |
384 class CFX_Renderer { | 384 class CFX_Renderer { |
385 private: | 385 private: |
386 int m_Alpha, m_Red, m_Green, m_Blue, m_Gray; | 386 int m_Alpha, m_Red, m_Green, m_Blue, m_Gray; |
387 FX_DWORD m_Color; | 387 uint32_t m_Color; |
388 FX_BOOL m_bFullCover; | 388 FX_BOOL m_bFullCover; |
389 FX_BOOL m_bRgbByteOrder; | 389 FX_BOOL m_bRgbByteOrder; |
390 CFX_DIBitmap* m_pOriDevice; | 390 CFX_DIBitmap* m_pOriDevice; |
391 FX_RECT m_ClipBox; | 391 FX_RECT m_ClipBox; |
392 const CFX_DIBitmap* m_pClipMask; | 392 const CFX_DIBitmap* m_pClipMask; |
393 CFX_DIBitmap* m_pDevice; | 393 CFX_DIBitmap* m_pDevice; |
394 const CFX_ClipRgn* m_pClipRgn; | 394 const CFX_ClipRgn* m_pClipRgn; |
395 void (CFX_Renderer::*composite_span)(uint8_t*, | 395 void (CFX_Renderer::*composite_span)(uint8_t*, |
396 int, | 396 int, |
397 int, | 397 int, |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
739 } | 739 } |
740 } else { | 740 } else { |
741 if (clip_scan) { | 741 if (clip_scan) { |
742 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; | 742 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; |
743 } else { | 743 } else { |
744 src_alpha = m_Alpha * cover_scan[col] / 255; | 744 src_alpha = m_Alpha * cover_scan[col] / 255; |
745 } | 745 } |
746 } | 746 } |
747 if (src_alpha) { | 747 if (src_alpha) { |
748 if (src_alpha == 255) { | 748 if (src_alpha == 255) { |
749 *(FX_DWORD*)dest_scan = m_Color; | 749 *(uint32_t*)dest_scan = m_Color; |
750 } else { | 750 } else { |
751 uint8_t dest_alpha = | 751 uint8_t dest_alpha = |
752 dest_scan[3] + src_alpha - dest_scan[3] * src_alpha / 255; | 752 dest_scan[3] + src_alpha - dest_scan[3] * src_alpha / 255; |
753 dest_scan[3] = dest_alpha; | 753 dest_scan[3] = dest_alpha; |
754 int alpha_ratio = src_alpha * 255 / dest_alpha; | 754 int alpha_ratio = src_alpha * 255 / dest_alpha; |
755 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ratio); | 755 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ratio); |
756 dest_scan++; | 756 dest_scan++; |
757 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alpha_ratio); | 757 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alpha_ratio); |
758 dest_scan++; | 758 dest_scan++; |
759 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha_ratio); | 759 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha_ratio); |
(...skipping 15 matching lines...) Expand all Loading... |
775 } | 775 } |
776 } else { | 776 } else { |
777 if (clip_scan) { | 777 if (clip_scan) { |
778 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; | 778 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; |
779 } else { | 779 } else { |
780 src_alpha = m_Alpha * cover_scan[col] / 255; | 780 src_alpha = m_Alpha * cover_scan[col] / 255; |
781 } | 781 } |
782 } | 782 } |
783 if (src_alpha) { | 783 if (src_alpha) { |
784 if (src_alpha == 255) { | 784 if (src_alpha == 255) { |
785 *(FX_DWORD*)dest_scan = m_Color; | 785 *(uint32_t*)dest_scan = m_Color; |
786 } else { | 786 } else { |
787 if (dest_scan[3] == 0) { | 787 if (dest_scan[3] == 0) { |
788 dest_scan[3] = src_alpha; | 788 dest_scan[3] = src_alpha; |
789 *dest_scan++ = m_Blue; | 789 *dest_scan++ = m_Blue; |
790 *dest_scan++ = m_Green; | 790 *dest_scan++ = m_Green; |
791 *dest_scan = m_Red; | 791 *dest_scan = m_Red; |
792 dest_scan += 2; | 792 dest_scan += 2; |
793 continue; | 793 continue; |
794 } | 794 } |
795 uint8_t dest_alpha = | 795 uint8_t dest_alpha = |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
827 for (int col = col_start; col < col_end; col++) { | 827 for (int col = col_start; col < col_end; col++) { |
828 int src_alpha; | 828 int src_alpha; |
829 if (clip_scan) { | 829 if (clip_scan) { |
830 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; | 830 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; |
831 } else { | 831 } else { |
832 src_alpha = m_Alpha * cover_scan[col] / 255; | 832 src_alpha = m_Alpha * cover_scan[col] / 255; |
833 } | 833 } |
834 if (src_alpha) { | 834 if (src_alpha) { |
835 if (src_alpha == 255) { | 835 if (src_alpha == 255) { |
836 if (Bpp == 4) { | 836 if (Bpp == 4) { |
837 *(FX_DWORD*)dest_scan = m_Color; | 837 *(uint32_t*)dest_scan = m_Color; |
838 } else if (Bpp == 3) { | 838 } else if (Bpp == 3) { |
839 *dest_scan++ = m_Red; | 839 *dest_scan++ = m_Red; |
840 *dest_scan++ = m_Green; | 840 *dest_scan++ = m_Green; |
841 *dest_scan++ = m_Blue; | 841 *dest_scan++ = m_Blue; |
842 continue; | 842 continue; |
843 } | 843 } |
844 } else { | 844 } else { |
845 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, src_alpha); | 845 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, src_alpha); |
846 dest_scan++; | 846 dest_scan++; |
847 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, src_alpha); | 847 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, src_alpha); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
907 } else { | 907 } else { |
908 if (clip_scan) { | 908 if (clip_scan) { |
909 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; | 909 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; |
910 } else { | 910 } else { |
911 src_alpha = m_Alpha * cover_scan[col] / 255; | 911 src_alpha = m_Alpha * cover_scan[col] / 255; |
912 } | 912 } |
913 } | 913 } |
914 if (src_alpha) { | 914 if (src_alpha) { |
915 if (src_alpha == 255) { | 915 if (src_alpha == 255) { |
916 if (Bpp == 4) { | 916 if (Bpp == 4) { |
917 *(FX_DWORD*)dest_scan = m_Color; | 917 *(uint32_t*)dest_scan = m_Color; |
918 } else if (Bpp == 3) { | 918 } else if (Bpp == 3) { |
919 *dest_scan++ = m_Blue; | 919 *dest_scan++ = m_Blue; |
920 *dest_scan++ = m_Green; | 920 *dest_scan++ = m_Green; |
921 *dest_scan++ = m_Red; | 921 *dest_scan++ = m_Red; |
922 continue; | 922 continue; |
923 } | 923 } |
924 } else { | 924 } else { |
925 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, src_alpha); | 925 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, src_alpha); |
926 dest_scan++; | 926 dest_scan++; |
927 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, src_alpha); | 927 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, src_alpha); |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1074 if (--num_spans == 0) { | 1074 if (--num_spans == 0) { |
1075 break; | 1075 break; |
1076 } | 1076 } |
1077 ++span; | 1077 ++span; |
1078 } | 1078 } |
1079 } | 1079 } |
1080 | 1080 |
1081 FX_BOOL Init(CFX_DIBitmap* pDevice, | 1081 FX_BOOL Init(CFX_DIBitmap* pDevice, |
1082 CFX_DIBitmap* pOriDevice, | 1082 CFX_DIBitmap* pOriDevice, |
1083 const CFX_ClipRgn* pClipRgn, | 1083 const CFX_ClipRgn* pClipRgn, |
1084 FX_DWORD color, | 1084 uint32_t color, |
1085 FX_BOOL bFullCover, | 1085 FX_BOOL bFullCover, |
1086 FX_BOOL bRgbByteOrder, | 1086 FX_BOOL bRgbByteOrder, |
1087 int alpha_flag = 0, | 1087 int alpha_flag = 0, |
1088 void* pIccTransform = NULL) { | 1088 void* pIccTransform = NULL) { |
1089 m_pDevice = pDevice; | 1089 m_pDevice = pDevice; |
1090 m_pClipRgn = pClipRgn; | 1090 m_pClipRgn = pClipRgn; |
1091 composite_span = NULL; | 1091 composite_span = NULL; |
1092 m_bRgbByteOrder = bRgbByteOrder; | 1092 m_bRgbByteOrder = bRgbByteOrder; |
1093 m_pOriDevice = pOriDevice; | 1093 m_pOriDevice = pOriDevice; |
1094 if (m_pClipRgn) { | 1094 if (m_pClipRgn) { |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1204 } | 1204 } |
1205 if (m_pDevice->GetBPP() == 1) { | 1205 if (m_pDevice->GetBPP() == 1) { |
1206 composite_span = &CFX_Renderer::CompositeSpan1bpp; | 1206 composite_span = &CFX_Renderer::CompositeSpan1bpp; |
1207 } | 1207 } |
1208 return TRUE; | 1208 return TRUE; |
1209 } | 1209 } |
1210 }; | 1210 }; |
1211 | 1211 |
1212 FX_BOOL CFX_AggDeviceDriver::RenderRasterizer( | 1212 FX_BOOL CFX_AggDeviceDriver::RenderRasterizer( |
1213 agg::rasterizer_scanline_aa& rasterizer, | 1213 agg::rasterizer_scanline_aa& rasterizer, |
1214 FX_DWORD color, | 1214 uint32_t color, |
1215 FX_BOOL bFullCover, | 1215 FX_BOOL bFullCover, |
1216 FX_BOOL bGroupKnockout, | 1216 FX_BOOL bGroupKnockout, |
1217 int alpha_flag, | 1217 int alpha_flag, |
1218 void* pIccTransform) { | 1218 void* pIccTransform) { |
1219 CFX_DIBitmap* pt = bGroupKnockout ? m_pOriDevice : NULL; | 1219 CFX_DIBitmap* pt = bGroupKnockout ? m_pOriDevice : NULL; |
1220 CFX_Renderer render; | 1220 CFX_Renderer render; |
1221 if (!render.Init(m_pBitmap, pt, m_pClipRgn, color, bFullCover, | 1221 if (!render.Init(m_pBitmap, pt, m_pClipRgn, color, bFullCover, |
1222 m_bRgbByteOrder, alpha_flag, pIccTransform)) { | 1222 m_bRgbByteOrder, alpha_flag, pIccTransform)) { |
1223 return FALSE; | 1223 return FALSE; |
1224 } | 1224 } |
1225 agg::scanline_u8 scanline; | 1225 agg::scanline_u8 scanline; |
1226 agg::render_scanlines(rasterizer, scanline, render, | 1226 agg::render_scanlines(rasterizer, scanline, render, |
1227 (m_FillFlags & FXFILL_NOPATHSMOOTH) != 0); | 1227 (m_FillFlags & FXFILL_NOPATHSMOOTH) != 0); |
1228 return TRUE; | 1228 return TRUE; |
1229 } | 1229 } |
1230 | 1230 |
1231 FX_BOOL CFX_AggDeviceDriver::DrawPath(const CFX_PathData* pPathData, | 1231 FX_BOOL CFX_AggDeviceDriver::DrawPath(const CFX_PathData* pPathData, |
1232 const CFX_Matrix* pObject2Device, | 1232 const CFX_Matrix* pObject2Device, |
1233 const CFX_GraphStateData* pGraphState, | 1233 const CFX_GraphStateData* pGraphState, |
1234 FX_DWORD fill_color, | 1234 uint32_t fill_color, |
1235 FX_DWORD stroke_color, | 1235 uint32_t stroke_color, |
1236 int fill_mode, | 1236 int fill_mode, |
1237 int alpha_flag, | 1237 int alpha_flag, |
1238 void* pIccTransform, | 1238 void* pIccTransform, |
1239 int blend_type) { | 1239 int blend_type) { |
1240 if (blend_type != FXDIB_BLEND_NORMAL) { | 1240 if (blend_type != FXDIB_BLEND_NORMAL) { |
1241 return FALSE; | 1241 return FALSE; |
1242 } | 1242 } |
1243 if (!GetBuffer()) { | 1243 if (!GetBuffer()) { |
1244 return TRUE; | 1244 return TRUE; |
1245 } | 1245 } |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1305 FXGETFLAG_ALPHA_STROKE(alpha_flag); | 1305 FXGETFLAG_ALPHA_STROKE(alpha_flag); |
1306 if (!RenderRasterizer(rasterizer, stroke_color, | 1306 if (!RenderRasterizer(rasterizer, stroke_color, |
1307 fill_mode & FXFILL_FULLCOVER, m_bGroupKnockout, | 1307 fill_mode & FXFILL_FULLCOVER, m_bGroupKnockout, |
1308 fill_flag, pIccTransform)) { | 1308 fill_flag, pIccTransform)) { |
1309 return FALSE; | 1309 return FALSE; |
1310 } | 1310 } |
1311 } | 1311 } |
1312 return TRUE; | 1312 return TRUE; |
1313 } | 1313 } |
1314 | 1314 |
1315 void RgbByteOrderSetPixel(CFX_DIBitmap* pBitmap, int x, int y, FX_DWORD argb) { | 1315 void RgbByteOrderSetPixel(CFX_DIBitmap* pBitmap, int x, int y, uint32_t argb) { |
1316 if (x < 0 || x >= pBitmap->GetWidth() || y < 0 || y >= pBitmap->GetHeight()) { | 1316 if (x < 0 || x >= pBitmap->GetWidth() || y < 0 || y >= pBitmap->GetHeight()) { |
1317 return; | 1317 return; |
1318 } | 1318 } |
1319 uint8_t* pos = (uint8_t*)pBitmap->GetBuffer() + y * pBitmap->GetPitch() + | 1319 uint8_t* pos = (uint8_t*)pBitmap->GetBuffer() + y * pBitmap->GetPitch() + |
1320 x * pBitmap->GetBPP() / 8; | 1320 x * pBitmap->GetBPP() / 8; |
1321 if (pBitmap->GetFormat() == FXDIB_Argb) { | 1321 if (pBitmap->GetFormat() == FXDIB_Argb) { |
1322 FXARGB_SETRGBORDERDIB(pos, ArgbGamma(argb)); | 1322 FXARGB_SETRGBORDERDIB(pos, ArgbGamma(argb)); |
1323 } else { | 1323 } else { |
1324 int alpha = FXARGB_A(argb); | 1324 int alpha = FXARGB_A(argb); |
1325 pos[0] = (FXARGB_R(argb) * alpha + pos[0] * (255 - alpha)) / 255; | 1325 pos[0] = (FXARGB_R(argb) * alpha + pos[0] * (255 - alpha)) / 255; |
(...skipping 18 matching lines...) Expand all Loading... |
1344 int src_r = FXARGB_R(argb), src_g = FXARGB_G(argb), src_b = FXARGB_B(argb); | 1344 int src_r = FXARGB_R(argb), src_g = FXARGB_G(argb), src_b = FXARGB_B(argb); |
1345 int Bpp = pBitmap->GetBPP() / 8; | 1345 int Bpp = pBitmap->GetBPP() / 8; |
1346 FX_BOOL bAlpha = pBitmap->HasAlpha(); | 1346 FX_BOOL bAlpha = pBitmap->HasAlpha(); |
1347 int dib_argb = FXARGB_TOBGRORDERDIB(argb); | 1347 int dib_argb = FXARGB_TOBGRORDERDIB(argb); |
1348 uint8_t* pBuffer = pBitmap->GetBuffer(); | 1348 uint8_t* pBuffer = pBitmap->GetBuffer(); |
1349 if (src_alpha == 255) { | 1349 if (src_alpha == 255) { |
1350 for (int row = rect.top; row < rect.bottom; row++) { | 1350 for (int row = rect.top; row < rect.bottom; row++) { |
1351 uint8_t* dest_scan = | 1351 uint8_t* dest_scan = |
1352 pBuffer + row * pBitmap->GetPitch() + rect.left * Bpp; | 1352 pBuffer + row * pBitmap->GetPitch() + rect.left * Bpp; |
1353 if (Bpp == 4) { | 1353 if (Bpp == 4) { |
1354 FX_DWORD* scan = (FX_DWORD*)dest_scan; | 1354 uint32_t* scan = (uint32_t*)dest_scan; |
1355 for (int col = 0; col < width; col++) { | 1355 for (int col = 0; col < width; col++) { |
1356 *scan++ = dib_argb; | 1356 *scan++ = dib_argb; |
1357 } | 1357 } |
1358 } else { | 1358 } else { |
1359 for (int col = 0; col < width; col++) { | 1359 for (int col = 0; col < width; col++) { |
1360 *dest_scan++ = src_r; | 1360 *dest_scan++ = src_r; |
1361 *dest_scan++ = src_g; | 1361 *dest_scan++ = src_g; |
1362 *dest_scan++ = src_b; | 1362 *dest_scan++ = src_b; |
1363 } | 1363 } |
1364 } | 1364 } |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1516 FX_ARGB _DefaultCMYK2ARGB(FX_CMYK cmyk, uint8_t alpha) { | 1516 FX_ARGB _DefaultCMYK2ARGB(FX_CMYK cmyk, uint8_t alpha) { |
1517 uint8_t r, g, b; | 1517 uint8_t r, g, b; |
1518 AdobeCMYK_to_sRGB1(FXSYS_GetCValue(cmyk), FXSYS_GetMValue(cmyk), | 1518 AdobeCMYK_to_sRGB1(FXSYS_GetCValue(cmyk), FXSYS_GetMValue(cmyk), |
1519 FXSYS_GetYValue(cmyk), FXSYS_GetKValue(cmyk), r, g, b); | 1519 FXSYS_GetYValue(cmyk), FXSYS_GetKValue(cmyk), r, g, b); |
1520 return ArgbEncode(alpha, r, g, b); | 1520 return ArgbEncode(alpha, r, g, b); |
1521 } | 1521 } |
1522 | 1522 |
1523 FX_BOOL _DibSetPixel(CFX_DIBitmap* pDevice, | 1523 FX_BOOL _DibSetPixel(CFX_DIBitmap* pDevice, |
1524 int x, | 1524 int x, |
1525 int y, | 1525 int y, |
1526 FX_DWORD color, | 1526 uint32_t color, |
1527 int alpha_flag, | 1527 int alpha_flag, |
1528 void* pIccTransform) { | 1528 void* pIccTransform) { |
1529 FX_BOOL bObjCMYK = FXGETFLAG_COLORTYPE(alpha_flag); | 1529 FX_BOOL bObjCMYK = FXGETFLAG_COLORTYPE(alpha_flag); |
1530 int alpha = bObjCMYK ? FXGETFLAG_ALPHA_FILL(alpha_flag) : FXARGB_A(color); | 1530 int alpha = bObjCMYK ? FXGETFLAG_ALPHA_FILL(alpha_flag) : FXARGB_A(color); |
1531 if (pIccTransform) { | 1531 if (pIccTransform) { |
1532 ICodec_IccModule* pIccModule = | 1532 ICodec_IccModule* pIccModule = |
1533 CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); | 1533 CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); |
1534 color = bObjCMYK ? FXCMYK_TODIB(color) : FXARGB_TODIB(color); | 1534 color = bObjCMYK ? FXCMYK_TODIB(color) : FXARGB_TODIB(color); |
1535 pIccModule->TranslateScanline(pIccTransform, (uint8_t*)&color, | 1535 pIccModule->TranslateScanline(pIccTransform, (uint8_t*)&color, |
1536 (uint8_t*)&color, 1); | 1536 (uint8_t*)&color, 1); |
(...skipping 14 matching lines...) Expand all Loading... |
1551 } | 1551 } |
1552 pDevice->SetPixel(x, y, color); | 1552 pDevice->SetPixel(x, y, color); |
1553 if (pDevice->m_pAlphaMask) { | 1553 if (pDevice->m_pAlphaMask) { |
1554 pDevice->m_pAlphaMask->SetPixel(x, y, alpha << 24); | 1554 pDevice->m_pAlphaMask->SetPixel(x, y, alpha << 24); |
1555 } | 1555 } |
1556 return TRUE; | 1556 return TRUE; |
1557 } | 1557 } |
1558 | 1558 |
1559 FX_BOOL CFX_AggDeviceDriver::SetPixel(int x, | 1559 FX_BOOL CFX_AggDeviceDriver::SetPixel(int x, |
1560 int y, | 1560 int y, |
1561 FX_DWORD color, | 1561 uint32_t color, |
1562 int alpha_flag, | 1562 int alpha_flag, |
1563 void* pIccTransform) { | 1563 void* pIccTransform) { |
1564 if (!m_pBitmap->GetBuffer()) { | 1564 if (!m_pBitmap->GetBuffer()) { |
1565 return TRUE; | 1565 return TRUE; |
1566 } | 1566 } |
1567 if (!CFX_GEModule::Get()->GetCodecModule() || | 1567 if (!CFX_GEModule::Get()->GetCodecModule() || |
1568 !CFX_GEModule::Get()->GetCodecModule()->GetIccModule()) { | 1568 !CFX_GEModule::Get()->GetCodecModule()->GetIccModule()) { |
1569 pIccTransform = NULL; | 1569 pIccTransform = NULL; |
1570 } | 1570 } |
1571 if (!m_pClipRgn) { | 1571 if (!m_pClipRgn) { |
(...skipping 25 matching lines...) Expand all Loading... |
1597 } else { | 1597 } else { |
1598 color = (color & 0xffffff) | (new_alpha << 24); | 1598 color = (color & 0xffffff) | (new_alpha << 24); |
1599 } | 1599 } |
1600 return _DibSetPixel(m_pBitmap, x, y, color, alpha_flag, pIccTransform); | 1600 return _DibSetPixel(m_pBitmap, x, y, color, alpha_flag, pIccTransform); |
1601 } | 1601 } |
1602 } | 1602 } |
1603 return TRUE; | 1603 return TRUE; |
1604 } | 1604 } |
1605 | 1605 |
1606 FX_BOOL CFX_AggDeviceDriver::FillRect(const FX_RECT* pRect, | 1606 FX_BOOL CFX_AggDeviceDriver::FillRect(const FX_RECT* pRect, |
1607 FX_DWORD fill_color, | 1607 uint32_t fill_color, |
1608 int alpha_flag, | 1608 int alpha_flag, |
1609 void* pIccTransform, | 1609 void* pIccTransform, |
1610 int blend_type) { | 1610 int blend_type) { |
1611 if (blend_type != FXDIB_BLEND_NORMAL) { | 1611 if (blend_type != FXDIB_BLEND_NORMAL) { |
1612 return FALSE; | 1612 return FALSE; |
1613 } | 1613 } |
1614 if (!m_pBitmap->GetBuffer()) { | 1614 if (!m_pBitmap->GetBuffer()) { |
1615 return TRUE; | 1615 return TRUE; |
1616 } | 1616 } |
1617 FX_RECT clip_rect; | 1617 FX_RECT clip_rect; |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1697 pBack, left, top); | 1697 pBack, left, top); |
1698 } else { | 1698 } else { |
1699 bRet = pBitmap->TransferBitmap(0, 0, rect.Width(), rect.Height(), pBack, | 1699 bRet = pBitmap->TransferBitmap(0, 0, rect.Width(), rect.Height(), pBack, |
1700 left, top, pIccTransform); | 1700 left, top, pIccTransform); |
1701 } | 1701 } |
1702 delete pBack; | 1702 delete pBack; |
1703 return bRet; | 1703 return bRet; |
1704 } | 1704 } |
1705 | 1705 |
1706 FX_BOOL CFX_AggDeviceDriver::SetDIBits(const CFX_DIBSource* pBitmap, | 1706 FX_BOOL CFX_AggDeviceDriver::SetDIBits(const CFX_DIBSource* pBitmap, |
1707 FX_DWORD argb, | 1707 uint32_t argb, |
1708 const FX_RECT* pSrcRect, | 1708 const FX_RECT* pSrcRect, |
1709 int left, | 1709 int left, |
1710 int top, | 1710 int top, |
1711 int blend_type, | 1711 int blend_type, |
1712 int alpha_flag, | 1712 int alpha_flag, |
1713 void* pIccTransform) { | 1713 void* pIccTransform) { |
1714 if (!m_pBitmap->GetBuffer()) { | 1714 if (!m_pBitmap->GetBuffer()) { |
1715 return TRUE; | 1715 return TRUE; |
1716 } | 1716 } |
1717 if (pBitmap->IsAlphaMask()) | 1717 if (pBitmap->IsAlphaMask()) |
1718 return m_pBitmap->CompositeMask( | 1718 return m_pBitmap->CompositeMask( |
1719 left, top, pSrcRect->Width(), pSrcRect->Height(), pBitmap, argb, | 1719 left, top, pSrcRect->Width(), pSrcRect->Height(), pBitmap, argb, |
1720 pSrcRect->left, pSrcRect->top, blend_type, m_pClipRgn, m_bRgbByteOrder, | 1720 pSrcRect->left, pSrcRect->top, blend_type, m_pClipRgn, m_bRgbByteOrder, |
1721 alpha_flag, pIccTransform); | 1721 alpha_flag, pIccTransform); |
1722 return m_pBitmap->CompositeBitmap( | 1722 return m_pBitmap->CompositeBitmap( |
1723 left, top, pSrcRect->Width(), pSrcRect->Height(), pBitmap, pSrcRect->left, | 1723 left, top, pSrcRect->Width(), pSrcRect->Height(), pBitmap, pSrcRect->left, |
1724 pSrcRect->top, blend_type, m_pClipRgn, m_bRgbByteOrder, pIccTransform); | 1724 pSrcRect->top, blend_type, m_pClipRgn, m_bRgbByteOrder, pIccTransform); |
1725 } | 1725 } |
1726 | 1726 |
1727 FX_BOOL CFX_AggDeviceDriver::StretchDIBits(const CFX_DIBSource* pSource, | 1727 FX_BOOL CFX_AggDeviceDriver::StretchDIBits(const CFX_DIBSource* pSource, |
1728 FX_DWORD argb, | 1728 uint32_t argb, |
1729 int dest_left, | 1729 int dest_left, |
1730 int dest_top, | 1730 int dest_top, |
1731 int dest_width, | 1731 int dest_width, |
1732 int dest_height, | 1732 int dest_height, |
1733 const FX_RECT* pClipRect, | 1733 const FX_RECT* pClipRect, |
1734 FX_DWORD flags, | 1734 uint32_t flags, |
1735 int alpha_flag, | 1735 int alpha_flag, |
1736 void* pIccTransform, | 1736 void* pIccTransform, |
1737 int blend_type) { | 1737 int blend_type) { |
1738 if (!m_pBitmap->GetBuffer()) { | 1738 if (!m_pBitmap->GetBuffer()) { |
1739 return TRUE; | 1739 return TRUE; |
1740 } | 1740 } |
1741 if (dest_width == pSource->GetWidth() && | 1741 if (dest_width == pSource->GetWidth() && |
1742 dest_height == pSource->GetHeight()) { | 1742 dest_height == pSource->GetHeight()) { |
1743 FX_RECT rect(0, 0, dest_width, dest_height); | 1743 FX_RECT rect(0, 0, dest_width, dest_height); |
1744 return SetDIBits(pSource, argb, &rect, dest_left, dest_top, blend_type, | 1744 return SetDIBits(pSource, argb, &rect, dest_left, dest_top, blend_type, |
(...skipping 12 matching lines...) Expand all Loading... |
1757 CFX_ImageStretcher stretcher; | 1757 CFX_ImageStretcher stretcher; |
1758 if (stretcher.Start(&composer, pSource, dest_width, dest_height, dest_clip, | 1758 if (stretcher.Start(&composer, pSource, dest_width, dest_height, dest_clip, |
1759 flags)) { | 1759 flags)) { |
1760 stretcher.Continue(NULL); | 1760 stretcher.Continue(NULL); |
1761 } | 1761 } |
1762 return TRUE; | 1762 return TRUE; |
1763 } | 1763 } |
1764 | 1764 |
1765 FX_BOOL CFX_AggDeviceDriver::StartDIBits(const CFX_DIBSource* pSource, | 1765 FX_BOOL CFX_AggDeviceDriver::StartDIBits(const CFX_DIBSource* pSource, |
1766 int bitmap_alpha, | 1766 int bitmap_alpha, |
1767 FX_DWORD argb, | 1767 uint32_t argb, |
1768 const CFX_Matrix* pMatrix, | 1768 const CFX_Matrix* pMatrix, |
1769 FX_DWORD render_flags, | 1769 uint32_t render_flags, |
1770 void*& handle, | 1770 void*& handle, |
1771 int alpha_flag, | 1771 int alpha_flag, |
1772 void* pIccTransform, | 1772 void* pIccTransform, |
1773 int blend_type) { | 1773 int blend_type) { |
1774 if (!m_pBitmap->GetBuffer()) { | 1774 if (!m_pBitmap->GetBuffer()) { |
1775 return TRUE; | 1775 return TRUE; |
1776 } | 1776 } |
1777 CFX_ImageRenderer* pRenderer = new CFX_ImageRenderer; | 1777 CFX_ImageRenderer* pRenderer = new CFX_ImageRenderer; |
1778 pRenderer->Start(m_pBitmap, m_pClipRgn, pSource, bitmap_alpha, argb, pMatrix, | 1778 pRenderer->Start(m_pBitmap, m_pClipRgn, pSource, bitmap_alpha, argb, pMatrix, |
1779 render_flags, m_bRgbByteOrder, alpha_flag, pIccTransform); | 1779 render_flags, m_bRgbByteOrder, alpha_flag, pIccTransform); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1830 new CFX_AggDeviceDriver(pBitmap, dither_bits, FALSE, pOriDevice, FALSE); | 1830 new CFX_AggDeviceDriver(pBitmap, dither_bits, FALSE, pOriDevice, FALSE); |
1831 SetDeviceDriver(pDriver); | 1831 SetDeviceDriver(pDriver); |
1832 return true; | 1832 return true; |
1833 } | 1833 } |
1834 | 1834 |
1835 CFX_FxgeDevice::~CFX_FxgeDevice() { | 1835 CFX_FxgeDevice::~CFX_FxgeDevice() { |
1836 if (m_bOwnedBitmap) { | 1836 if (m_bOwnedBitmap) { |
1837 delete GetBitmap(); | 1837 delete GetBitmap(); |
1838 } | 1838 } |
1839 } | 1839 } |
OLD | NEW |