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

Side by Side Diff: core/src/fxge/ge/fx_ge_text.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/ge/fx_ge_ps.cpp ('k') | core/src/fxge/skia/fx_skia_blitter_new.h » ('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 #include "../../../include/fxge/fx_freetype.h" 8 #include "../../../include/fxge/fx_freetype.h"
9 #include "../../../include/fxcodec/fx_codec.h" 9 #include "../../../include/fxcodec/fx_codec.h"
10 #include "text_int.h" 10 #include "text_int.h"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 argb = color; 104 argb = color;
105 return; 105 return;
106 } 106 }
107 if (!CFX_GEModule::Get()->GetCodecModule() || !CFX_GEModule::Get()->GetCodec Module()->GetIccModule()) { 107 if (!CFX_GEModule::Get()->GetCodecModule() || !CFX_GEModule::Get()->GetCodec Module()->GetIccModule()) {
108 pIccTransform = NULL; 108 pIccTransform = NULL;
109 } 109 }
110 uint8_t bgra[4]; 110 uint8_t bgra[4];
111 if (pIccTransform) { 111 if (pIccTransform) {
112 ICodec_IccModule* pIccModule = CFX_GEModule::Get()->GetCodecModule()->Ge tIccModule(); 112 ICodec_IccModule* pIccModule = CFX_GEModule::Get()->GetCodecModule()->Ge tIccModule();
113 color = FXGETFLAG_COLORTYPE(alpha_flag) ? FXCMYK_TODIB(color) : FXARGB_T ODIB(color); 113 color = FXGETFLAG_COLORTYPE(alpha_flag) ? FXCMYK_TODIB(color) : FXARGB_T ODIB(color);
114 pIccModule->TranslateScanline(pIccTransform, bgra, (FX_LPCBYTE)&color, 1 ); 114 pIccModule->TranslateScanline(pIccTransform, bgra, (const uint8_t*)&colo r, 1);
115 bgra[3] = FXGETFLAG_COLORTYPE(alpha_flag) ? 115 bgra[3] = FXGETFLAG_COLORTYPE(alpha_flag) ?
116 (alpha_flag >> 24) ? FXGETFLAG_ALPHA_FILL(alpha_flag) : FXGETF LAG_ALPHA_STROKE(alpha_flag) : 116 (alpha_flag >> 24) ? FXGETFLAG_ALPHA_FILL(alpha_flag) : FXGETF LAG_ALPHA_STROKE(alpha_flag) :
117 FXARGB_A(color); 117 FXARGB_A(color);
118 argb = FXARGB_MAKE(bgra[3], bgra[2], bgra[1], bgra[0]); 118 argb = FXARGB_MAKE(bgra[3], bgra[2], bgra[1], bgra[0]);
119 return; 119 return;
120 } 120 }
121 AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMValue(color), 121 AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMValue(color),
122 FXSYS_GetYValue(color), FXSYS_GetKValue(color), 122 FXSYS_GetYValue(color), FXSYS_GetKValue(color),
123 bgra[2], bgra[1], bgra[0]); 123 bgra[2], bgra[1], bgra[0]);
124 bgra[3] = (alpha_flag >> 24) ? FXGETFLAG_ALPHA_FILL(alpha_flag) : FXGETFLAG_ ALPHA_STROKE(alpha_flag); 124 bgra[3] = (alpha_flag >> 24) ? FXGETFLAG_ALPHA_FILL(alpha_flag) : FXGETFLAG_ ALPHA_STROKE(alpha_flag);
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 FX_Free(pGlyphAndPos); 291 FX_Free(pGlyphAndPos);
292 return FALSE; 292 return FALSE;
293 } 293 }
294 } else { 294 } else {
295 bitmap.Clear(0); 295 bitmap.Clear(0);
296 if (bitmap.m_pAlphaMask) { 296 if (bitmap.m_pAlphaMask) {
297 bitmap.m_pAlphaMask->Clear(0); 297 bitmap.m_pAlphaMask->Clear(0);
298 } 298 }
299 } 299 }
300 int dest_width = pixel_width; 300 int dest_width = pixel_width;
301 FX_LPBYTE dest_buf = bitmap.GetBuffer(); 301 uint8_t* dest_buf = bitmap.GetBuffer();
302 int dest_pitch = bitmap.GetPitch(); 302 int dest_pitch = bitmap.GetPitch();
303 int Bpp = bitmap.GetBPP() / 8; 303 int Bpp = bitmap.GetBPP() / 8;
304 int a, r, g, b; 304 int a, r, g, b;
305 if (anti_alias == FXFT_RENDER_MODE_LCD) { 305 if (anti_alias == FXFT_RENDER_MODE_LCD) {
306 _Color2Argb(fill_color, fill_color, alpha_flag | (1 << 24), pIccTransfor m); 306 _Color2Argb(fill_color, fill_color, alpha_flag | (1 << 24), pIccTransfor m);
307 ArgbDecode(fill_color, a, r, g, b); 307 ArgbDecode(fill_color, a, r, g, b);
308 r = FX_GAMMA(r); 308 r = FX_GAMMA(r);
309 g = FX_GAMMA(g); 309 g = FX_GAMMA(g);
310 b = FX_GAMMA(b); 310 b = FX_GAMMA(b);
311 } 311 }
(...skipping 11 matching lines...) Expand all
323 if (!bitmap.CompositeMask(left, top, ncols, nrows, pGlyph, fill_colo r, 323 if (!bitmap.CompositeMask(left, top, ncols, nrows, pGlyph, fill_colo r,
324 0, 0, FXDIB_BLEND_NORMAL, NULL, FALSE, alp ha_flag, pIccTransform)) { 324 0, 0, FXDIB_BLEND_NORMAL, NULL, FALSE, alp ha_flag, pIccTransform)) {
325 FX_Free(pGlyphAndPos); 325 FX_Free(pGlyphAndPos);
326 return FALSE; 326 return FALSE;
327 } 327 }
328 continue; 328 continue;
329 } 329 }
330 FX_BOOL bBGRStripe = text_flags & FXTEXT_BGR_STRIPE; 330 FX_BOOL bBGRStripe = text_flags & FXTEXT_BGR_STRIPE;
331 ncols /= 3; 331 ncols /= 3;
332 int x_subpixel = (int)(glyph.m_fOriginX * 3) % 3; 332 int x_subpixel = (int)(glyph.m_fOriginX * 3) % 3;
333 FX_LPBYTE src_buf = pGlyph->GetBuffer(); 333 uint8_t* src_buf = pGlyph->GetBuffer();
334 int src_pitch = pGlyph->GetPitch(); 334 int src_pitch = pGlyph->GetPitch();
335 int start_col = left; 335 int start_col = left;
336 if (start_col < 0) { 336 if (start_col < 0) {
337 start_col = 0; 337 start_col = 0;
338 } 338 }
339 int end_col = left + ncols; 339 int end_col = left + ncols;
340 if (end_col > dest_width) { 340 if (end_col > dest_width) {
341 end_col = dest_width; 341 end_col = dest_width;
342 } 342 }
343 if (start_col >= end_col) { 343 if (start_col >= end_col) {
344 continue; 344 continue;
345 } 345 }
346 if (bitmap.GetFormat() == FXDIB_Argb) { 346 if (bitmap.GetFormat() == FXDIB_Argb) {
347 for (int row = 0; row < nrows; row ++) { 347 for (int row = 0; row < nrows; row ++) {
348 int dest_row = row + top; 348 int dest_row = row + top;
349 if (dest_row < 0 || dest_row >= bitmap.GetHeight()) { 349 if (dest_row < 0 || dest_row >= bitmap.GetHeight()) {
350 continue; 350 continue;
351 } 351 }
352 FX_LPBYTE src_scan = src_buf + row * src_pitch + (start_col - le ft) * 3; 352 uint8_t* src_scan = src_buf + row * src_pitch + (start_col - lef t) * 3;
353 FX_LPBYTE dest_scan = dest_buf + dest_row * dest_pitch + (start_ col << 2); 353 uint8_t* dest_scan = dest_buf + dest_row * dest_pitch + (start_c ol << 2);
354 if (bBGRStripe) { 354 if (bBGRStripe) {
355 if (x_subpixel == 0) { 355 if (x_subpixel == 0) {
356 for (int col = start_col; col < end_col; col ++) { 356 for (int col = start_col; col < end_col; col ++) {
357 int src_alpha = src_scan[2]; 357 int src_alpha = src_scan[2];
358 src_alpha = src_alpha * a / 255; 358 src_alpha = src_alpha * a / 255;
359 dest_scan[2] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE(FX _GAMMA(dest_scan[2]), r, src_alpha)); 359 dest_scan[2] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE(FX _GAMMA(dest_scan[2]), r, src_alpha));
360 src_alpha = src_scan[1]; 360 src_alpha = src_scan[1];
361 src_alpha = src_alpha * a / 255; 361 src_alpha = src_alpha * a / 255;
362 dest_scan[1] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE(FX _GAMMA(dest_scan[1]), g, src_alpha)); 362 dest_scan[1] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE(FX _GAMMA(dest_scan[1]), g, src_alpha));
363 src_alpha = src_scan[0]; 363 src_alpha = src_scan[0];
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
655 } 655 }
656 } 656 }
657 } 657 }
658 } 658 }
659 } else { 659 } else {
660 for (int row = 0; row < nrows; row ++) { 660 for (int row = 0; row < nrows; row ++) {
661 int dest_row = row + top; 661 int dest_row = row + top;
662 if (dest_row < 0 || dest_row >= bitmap.GetHeight()) { 662 if (dest_row < 0 || dest_row >= bitmap.GetHeight()) {
663 continue; 663 continue;
664 } 664 }
665 FX_LPBYTE src_scan = src_buf + row * src_pitch + (start_col - le ft) * 3; 665 uint8_t* src_scan = src_buf + row * src_pitch + (start_col - lef t) * 3;
666 FX_LPBYTE dest_scan = dest_buf + dest_row * dest_pitch + start_c ol * Bpp; 666 uint8_t* dest_scan = dest_buf + dest_row * dest_pitch + start_co l * Bpp;
667 if (bBGRStripe) { 667 if (bBGRStripe) {
668 if (x_subpixel == 0) { 668 if (x_subpixel == 0) {
669 for (int col = start_col; col < end_col; col ++) { 669 for (int col = start_col; col < end_col; col ++) {
670 int src_alpha = src_scan[2]; 670 int src_alpha = src_scan[2];
671 ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_ flags, a); 671 ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_ flags, a);
672 src_alpha = src_alpha * a / 255; 672 src_alpha = src_alpha * a / 255;
673 dest_scan[2] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE(FX _GAMMA(dest_scan[2]), r, src_alpha)); 673 dest_scan[2] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE(FX _GAMMA(dest_scan[2]), r, src_alpha));
674 src_alpha = src_scan[1]; 674 src_alpha = src_scan[1];
675 ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_ flags, a); 675 ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_ flags, a);
676 src_alpha = src_alpha * a / 255; 676 src_alpha = src_alpha * a / 255;
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
1038 { 1038 {
1039 FX_POSITION pos = m_SizeMap.GetStartPosition(); 1039 FX_POSITION pos = m_SizeMap.GetStartPosition();
1040 CFX_ByteString Key; 1040 CFX_ByteString Key;
1041 CFX_SizeGlyphCache* pSizeCache = NULL; 1041 CFX_SizeGlyphCache* pSizeCache = NULL;
1042 while(pos) { 1042 while(pos) {
1043 m_SizeMap.GetNextAssoc( pos, Key, (void*&)pSizeCache); 1043 m_SizeMap.GetNextAssoc( pos, Key, (void*&)pSizeCache);
1044 delete pSizeCache; 1044 delete pSizeCache;
1045 } 1045 }
1046 m_SizeMap.RemoveAll(); 1046 m_SizeMap.RemoveAll();
1047 pos = m_PathMap.GetStartPosition(); 1047 pos = m_PathMap.GetStartPosition();
1048 FX_LPVOID key1; 1048 void* key1;
1049 CFX_PathData* pPath; 1049 CFX_PathData* pPath;
1050 while (pos) { 1050 while (pos) {
1051 m_PathMap.GetNextAssoc(pos, key1, (FX_LPVOID&)pPath); 1051 m_PathMap.GetNextAssoc(pos, key1, (void*&)pPath);
1052 delete pPath; 1052 delete pPath;
1053 } 1053 }
1054 if (m_pBitmap) { 1054 if (m_pBitmap) {
1055 delete m_pBitmap; 1055 delete m_pBitmap;
1056 } 1056 }
1057 m_PathMap.RemoveAll(); 1057 m_PathMap.RemoveAll();
1058 } 1058 }
1059 #if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ 1059 #if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_
1060 void CFX_FaceCache::InitPlatform() 1060 void CFX_FaceCache::InitPlatform()
1061 { 1061 {
1062 } 1062 }
1063 #endif 1063 #endif
1064 CFX_GlyphBitmap* CFX_FaceCache::LookUpGlyphBitmap(CFX_Font* pFont, const CFX_Aff ineMatrix* pMatrix, 1064 CFX_GlyphBitmap* CFX_FaceCache::LookUpGlyphBitmap(CFX_Font* pFont, const CFX_Aff ineMatrix* pMatrix,
1065 CFX_ByteStringC& FaceGlyphsKey, FX_DWORD glyph_index, FX_BOOL bFontStyle , 1065 CFX_ByteStringC& FaceGlyphsKey, FX_DWORD glyph_index, FX_BOOL bFontStyle ,
1066 int dest_width, int anti_alias) 1066 int dest_width, int anti_alias)
1067 { 1067 {
1068 CFX_SizeGlyphCache* pSizeCache = NULL; 1068 CFX_SizeGlyphCache* pSizeCache = NULL;
1069 if (!m_SizeMap.Lookup(FaceGlyphsKey, (void*&)pSizeCache)) { 1069 if (!m_SizeMap.Lookup(FaceGlyphsKey, (void*&)pSizeCache)) {
1070 pSizeCache = new CFX_SizeGlyphCache; 1070 pSizeCache = new CFX_SizeGlyphCache;
1071 m_SizeMap.SetAt(FaceGlyphsKey, pSizeCache); 1071 m_SizeMap.SetAt(FaceGlyphsKey, pSizeCache);
1072 } 1072 }
1073 CFX_GlyphBitmap* pGlyphBitmap = NULL; 1073 CFX_GlyphBitmap* pGlyphBitmap = NULL;
1074 if (pSizeCache->m_GlyphMap.Lookup((FX_LPVOID)(uintptr_t)glyph_index, (void*& )pGlyphBitmap)) { 1074 if (pSizeCache->m_GlyphMap.Lookup((void*)(uintptr_t)glyph_index, (void*&)pGl yphBitmap)) {
1075 return pGlyphBitmap; 1075 return pGlyphBitmap;
1076 } 1076 }
1077 pGlyphBitmap = RenderGlyph(pFont, glyph_index, bFontStyle, pMatrix, dest_wid th, anti_alias); 1077 pGlyphBitmap = RenderGlyph(pFont, glyph_index, bFontStyle, pMatrix, dest_wid th, anti_alias);
1078 if (pGlyphBitmap == NULL) { 1078 if (pGlyphBitmap == NULL) {
1079 return NULL; 1079 return NULL;
1080 } 1080 }
1081 pSizeCache->m_GlyphMap.SetAt((FX_LPVOID)(uintptr_t)glyph_index, pGlyphBitmap ); 1081 pSizeCache->m_GlyphMap.SetAt((void*)(uintptr_t)glyph_index, pGlyphBitmap);
1082 return pGlyphBitmap; 1082 return pGlyphBitmap;
1083 } 1083 }
1084 const CFX_GlyphBitmap* CFX_FaceCache::LoadGlyphBitmap(CFX_Font* pFont, FX_DWORD glyph_index, FX_BOOL bFontStyle, const CFX_AffineMatrix* pMatrix, 1084 const CFX_GlyphBitmap* CFX_FaceCache::LoadGlyphBitmap(CFX_Font* pFont, FX_DWORD glyph_index, FX_BOOL bFontStyle, const CFX_AffineMatrix* pMatrix,
1085 int dest_width, int anti_alias, int& text_flags) 1085 int dest_width, int anti_alias, int& text_flags)
1086 { 1086 {
1087 if (glyph_index == (FX_DWORD) - 1) { 1087 if (glyph_index == (FX_DWORD) - 1) {
1088 return NULL; 1088 return NULL;
1089 } 1089 }
1090 _CFX_UniqueKeyGen keygen; 1090 _CFX_UniqueKeyGen keygen;
1091 #if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ 1091 #if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_
(...skipping 26 matching lines...) Expand all
1118 CFX_ByteStringC FaceGlyphsKey(keygen.m_Key, keygen.m_KeyLen); 1118 CFX_ByteStringC FaceGlyphsKey(keygen.m_Key, keygen.m_KeyLen);
1119 #if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ 1119 #if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_
1120 return LookUpGlyphBitmap(pFont, pMatrix, FaceGlyphsKey, glyph_index, bFontSt yle, dest_width, anti_alias); 1120 return LookUpGlyphBitmap(pFont, pMatrix, FaceGlyphsKey, glyph_index, bFontSt yle, dest_width, anti_alias);
1121 #else 1121 #else
1122 if (text_flags & FXTEXT_NO_NATIVETEXT) { 1122 if (text_flags & FXTEXT_NO_NATIVETEXT) {
1123 return LookUpGlyphBitmap(pFont, pMatrix, FaceGlyphsKey, glyph_index, bFo ntStyle, dest_width, anti_alias); 1123 return LookUpGlyphBitmap(pFont, pMatrix, FaceGlyphsKey, glyph_index, bFo ntStyle, dest_width, anti_alias);
1124 } else { 1124 } else {
1125 CFX_GlyphBitmap* pGlyphBitmap; 1125 CFX_GlyphBitmap* pGlyphBitmap;
1126 CFX_SizeGlyphCache* pSizeCache = NULL; 1126 CFX_SizeGlyphCache* pSizeCache = NULL;
1127 if (m_SizeMap.Lookup(FaceGlyphsKey, (void*&)pSizeCache)) { 1127 if (m_SizeMap.Lookup(FaceGlyphsKey, (void*&)pSizeCache)) {
1128 if (pSizeCache->m_GlyphMap.Lookup((FX_LPVOID)(uintptr_t)glyph_index, (void*&)pGlyphBitmap)) { 1128 if (pSizeCache->m_GlyphMap.Lookup((void*)(uintptr_t)glyph_index, (vo id*&)pGlyphBitmap)) {
1129 return pGlyphBitmap; 1129 return pGlyphBitmap;
1130 } 1130 }
1131 pGlyphBitmap = RenderGlyph_Nativetext(pFont, glyph_index, pMatrix, d est_width, anti_alias); 1131 pGlyphBitmap = RenderGlyph_Nativetext(pFont, glyph_index, pMatrix, d est_width, anti_alias);
1132 if (pGlyphBitmap) { 1132 if (pGlyphBitmap) {
1133 pSizeCache->m_GlyphMap.SetAt((FX_LPVOID)(uintptr_t)glyph_index, pGlyphBitmap); 1133 pSizeCache->m_GlyphMap.SetAt((void*)(uintptr_t)glyph_index, pGly phBitmap);
1134 return pGlyphBitmap; 1134 return pGlyphBitmap;
1135 } 1135 }
1136 } else { 1136 } else {
1137 pGlyphBitmap = RenderGlyph_Nativetext(pFont, glyph_index, pMatrix, d est_width, anti_alias); 1137 pGlyphBitmap = RenderGlyph_Nativetext(pFont, glyph_index, pMatrix, d est_width, anti_alias);
1138 if (pGlyphBitmap) { 1138 if (pGlyphBitmap) {
1139 pSizeCache = new CFX_SizeGlyphCache; 1139 pSizeCache = new CFX_SizeGlyphCache;
1140 m_SizeMap.SetAt(FaceGlyphsKey, pSizeCache); 1140 m_SizeMap.SetAt(FaceGlyphsKey, pSizeCache);
1141 pSizeCache->m_GlyphMap.SetAt((FX_LPVOID)(uintptr_t)glyph_index, pGlyphBitmap); 1141 pSizeCache->m_GlyphMap.SetAt((void*)(uintptr_t)glyph_index, pGly phBitmap);
1142 return pGlyphBitmap; 1142 return pGlyphBitmap;
1143 } 1143 }
1144 } 1144 }
1145 if (pFont->GetSubstFont()) 1145 if (pFont->GetSubstFont())
1146 keygen.Generate(9, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 100 00), 1146 keygen.Generate(9, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 100 00),
1147 (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000) , dest_width, anti_alias, 1147 (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000) , dest_width, anti_alias,
1148 pFont->GetSubstFont()->m_Weight, pFont->GetSubstFont ()->m_ItalicAngle, pFont->IsVertical()); 1148 pFont->GetSubstFont()->m_Weight, pFont->GetSubstFont ()->m_ItalicAngle, pFont->IsVertical());
1149 else 1149 else
1150 keygen.Generate(6, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 100 00), 1150 keygen.Generate(6, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 100 00),
1151 (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000) , dest_width, anti_alias); 1151 (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000) , dest_width, anti_alias);
1152 CFX_ByteStringC FaceGlyphsKey(keygen.m_Key, keygen.m_KeyLen); 1152 CFX_ByteStringC FaceGlyphsKey(keygen.m_Key, keygen.m_KeyLen);
1153 text_flags |= FXTEXT_NO_NATIVETEXT; 1153 text_flags |= FXTEXT_NO_NATIVETEXT;
1154 return LookUpGlyphBitmap(pFont, pMatrix, FaceGlyphsKey, glyph_index, bFo ntStyle, dest_width, anti_alias); 1154 return LookUpGlyphBitmap(pFont, pMatrix, FaceGlyphsKey, glyph_index, bFo ntStyle, dest_width, anti_alias);
1155 } 1155 }
1156 #endif 1156 #endif
1157 } 1157 }
1158 CFX_SizeGlyphCache::~CFX_SizeGlyphCache() 1158 CFX_SizeGlyphCache::~CFX_SizeGlyphCache()
1159 { 1159 {
1160 FX_POSITION pos = m_GlyphMap.GetStartPosition(); 1160 FX_POSITION pos = m_GlyphMap.GetStartPosition();
1161 FX_LPVOID Key; 1161 void* Key;
1162 CFX_GlyphBitmap* pGlyphBitmap = NULL; 1162 CFX_GlyphBitmap* pGlyphBitmap = NULL;
1163 while(pos) { 1163 while(pos) {
1164 m_GlyphMap.GetNextAssoc(pos, Key, (void*&)pGlyphBitmap); 1164 m_GlyphMap.GetNextAssoc(pos, Key, (void*&)pGlyphBitmap);
1165 delete pGlyphBitmap; 1165 delete pGlyphBitmap;
1166 } 1166 }
1167 m_GlyphMap.RemoveAll(); 1167 m_GlyphMap.RemoveAll();
1168 } 1168 }
1169 #define CONTRAST_RAMP_STEP 1 1169 #define CONTRAST_RAMP_STEP 1
1170 void CFX_Font::AdjustMMParams(int glyph_index, int dest_width, int weight) 1170 void CFX_Font::AdjustMMParams(int glyph_index, int dest_width, int weight)
1171 { 1171 {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1225 52, 52, 53, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55, 55, 56, 56, 1225 52, 52, 53, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55, 55, 56, 56,
1226 56, 56, 56, 57, 57, 57, 57, 57, 58, 58, 58, 58, 58, 1226 56, 56, 56, 57, 57, 57, 57, 57, 58, 58, 58, 58, 58,
1227 }; 1227 };
1228 static const uint8_t g_WeightPow_SHIFTJIS[WEIGHTPOW_ARRAY_SIZE] = { 1228 static const uint8_t g_WeightPow_SHIFTJIS[WEIGHTPOW_ARRAY_SIZE] = {
1229 0, 0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 21, 22, 24, 26, 28, 1229 0, 0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 21, 22, 24, 26, 28,
1230 30, 32, 33, 35, 37, 39, 41, 43, 45, 48, 48, 48, 48, 49, 49, 49, 50, 50, 50, 50, 1230 30, 32, 33, 35, 37, 39, 41, 43, 45, 48, 48, 48, 48, 49, 49, 49, 50, 50, 50, 50,
1231 51, 51, 51, 51, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 54, 54, 54, 54, 54, 55, 55, 1231 51, 51, 51, 51, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 54, 54, 54, 54, 54, 55, 55,
1232 55, 55, 55, 56, 56, 56, 56, 56 , 56, 57, 57, 57 , 57 , 57, 57, 57, 58, 58, 5 8, 58, 58, 1232 55, 55, 55, 56, 56, 56, 56, 56 , 56, 57, 57, 57 , 57 , 57, 57, 57, 58, 58, 5 8, 58, 58,
1233 58, 58, 59, 59, 59, 59, 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, 60, 1233 58, 58, 59, 59, 59, 59, 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, 60,
1234 }; 1234 };
1235 static void _GammaAdjust(FX_LPBYTE pData, int nWid, int nHei, int src_pitch, FX_ LPCBYTE gammaTable) 1235 static void _GammaAdjust(uint8_t* pData, int nWid, int nHei, int src_pitch, cons t uint8_t* gammaTable)
1236 { 1236 {
1237 int count = nHei * src_pitch; 1237 int count = nHei * src_pitch;
1238 for(int i = 0; i < count; i++) { 1238 for(int i = 0; i < count; i++) {
1239 pData[i] = gammaTable[pData[i]]; 1239 pData[i] = gammaTable[pData[i]];
1240 } 1240 }
1241 } 1241 }
1242 static void _ContrastAdjust(FX_LPBYTE pDataIn, FX_LPBYTE pDataOut, int nWid, int nHei, int nSrcRowBytes, int nDstRowBytes) 1242 static void _ContrastAdjust(uint8_t* pDataIn, uint8_t* pDataOut, int nWid, int n Hei, int nSrcRowBytes, int nDstRowBytes)
1243 { 1243 {
1244 int col, row, temp; 1244 int col, row, temp;
1245 int max = 0, min = 255; 1245 int max = 0, min = 255;
1246 FX_FLOAT rate; 1246 FX_FLOAT rate;
1247 for (row = 0; row < nHei; row ++) { 1247 for (row = 0; row < nHei; row ++) {
1248 FX_LPBYTE pRow = pDataIn + row * nSrcRowBytes; 1248 uint8_t* pRow = pDataIn + row * nSrcRowBytes;
1249 for (col = 0; col < nWid; col++) { 1249 for (col = 0; col < nWid; col++) {
1250 temp = *pRow ++; 1250 temp = *pRow ++;
1251 if (temp > max) { 1251 if (temp > max) {
1252 max = temp; 1252 max = temp;
1253 } 1253 }
1254 if (temp < min) { 1254 if (temp < min) {
1255 min = temp; 1255 min = temp;
1256 } 1256 }
1257 } 1257 }
1258 } 1258 }
1259 temp = max - min; 1259 temp = max - min;
1260 if (0 == temp || 255 == temp) { 1260 if (0 == temp || 255 == temp) {
1261 int rowbytes = FXSYS_abs(nSrcRowBytes) > nDstRowBytes ? nDstRowBytes : F XSYS_abs(nSrcRowBytes); 1261 int rowbytes = FXSYS_abs(nSrcRowBytes) > nDstRowBytes ? nDstRowBytes : F XSYS_abs(nSrcRowBytes);
1262 for (row = 0; row < nHei; row ++) { 1262 for (row = 0; row < nHei; row ++) {
1263 FXSYS_memcpy32(pDataOut + row * nDstRowBytes, pDataIn + row * nSrcRo wBytes, rowbytes); 1263 FXSYS_memcpy32(pDataOut + row * nDstRowBytes, pDataIn + row * nSrcRo wBytes, rowbytes);
1264 } 1264 }
1265 return; 1265 return;
1266 } 1266 }
1267 rate = 255.f / temp; 1267 rate = 255.f / temp;
1268 for (row = 0; row < nHei; row ++) { 1268 for (row = 0; row < nHei; row ++) {
1269 FX_LPBYTE pSrcRow = pDataIn + row * nSrcRowBytes; 1269 uint8_t* pSrcRow = pDataIn + row * nSrcRowBytes;
1270 FX_LPBYTE pDstRow = pDataOut + row * nDstRowBytes; 1270 uint8_t* pDstRow = pDataOut + row * nDstRowBytes;
1271 for (col = 0; col < nWid; col ++) { 1271 for (col = 0; col < nWid; col ++) {
1272 temp = (int)((*(pSrcRow++) - min) * rate + 0.5); 1272 temp = (int)((*(pSrcRow++) - min) * rate + 0.5);
1273 if (temp > 255) { 1273 if (temp > 255) {
1274 temp = 255; 1274 temp = 255;
1275 } else if (temp < 0) { 1275 } else if (temp < 0) {
1276 temp = 0; 1276 temp = 0;
1277 } 1277 }
1278 *pDstRow ++ = (uint8_t)temp; 1278 *pDstRow ++ = (uint8_t)temp;
1279 } 1279 }
1280 } 1280 }
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
1400 return FALSE; 1400 return FALSE;
1401 } 1401 }
1402 error = FXFT_Render_Glyph(face, FXFT_RENDER_MODE_NORMAL); 1402 error = FXFT_Render_Glyph(face, FXFT_RENDER_MODE_NORMAL);
1403 if (error) { 1403 if (error) {
1404 return FALSE; 1404 return FALSE;
1405 } 1405 }
1406 int bmwidth = FXFT_Get_Bitmap_Width(FXFT_Get_Glyph_Bitmap(face)); 1406 int bmwidth = FXFT_Get_Bitmap_Width(FXFT_Get_Glyph_Bitmap(face));
1407 int bmheight = FXFT_Get_Bitmap_Rows(FXFT_Get_Glyph_Bitmap(face)); 1407 int bmheight = FXFT_Get_Bitmap_Rows(FXFT_Get_Glyph_Bitmap(face));
1408 int left = FXFT_Get_Glyph_BitmapLeft(face); 1408 int left = FXFT_Get_Glyph_BitmapLeft(face);
1409 int top = FXFT_Get_Glyph_BitmapTop(face); 1409 int top = FXFT_Get_Glyph_BitmapTop(face);
1410 FX_LPCBYTE src_buf = (FX_LPCBYTE)FXFT_Get_Bitmap_Buffer(FXFT_Get_Glyph_Bitma p(face)); 1410 const uint8_t* src_buf = (const uint8_t*)FXFT_Get_Bitmap_Buffer(FXFT_Get_Gly ph_Bitmap(face));
1411 int src_pitch = FXFT_Get_Bitmap_Pitch(FXFT_Get_Glyph_Bitmap(face)); 1411 int src_pitch = FXFT_Get_Bitmap_Pitch(FXFT_Get_Glyph_Bitmap(face));
1412 CFX_DIBitmap mask; 1412 CFX_DIBitmap mask;
1413 mask.Create(bmwidth, bmheight, FXDIB_8bppMask); 1413 mask.Create(bmwidth, bmheight, FXDIB_8bppMask);
1414 FX_LPBYTE dest_buf = mask.GetBuffer(); 1414 uint8_t* dest_buf = mask.GetBuffer();
1415 int dest_pitch = mask.GetPitch(); 1415 int dest_pitch = mask.GetPitch();
1416 for (int row = 0; row < bmheight; row ++) { 1416 for (int row = 0; row < bmheight; row ++) {
1417 FX_LPCBYTE src_scan = src_buf + row * src_pitch; 1417 const uint8_t* src_scan = src_buf + row * src_pitch;
1418 FX_LPBYTE dest_scan = dest_buf + row * dest_pitch; 1418 uint8_t* dest_scan = dest_buf + row * dest_pitch;
1419 FXSYS_memcpy32(dest_scan, src_scan, dest_pitch); 1419 FXSYS_memcpy32(dest_scan, src_scan, dest_pitch);
1420 } 1420 }
1421 pDib->CompositeMask(x + left, y - top, bmwidth, bmheight, &mask, argb, 0, 0) ; 1421 pDib->CompositeMask(x + left, y - top, bmwidth, bmheight, &mask, argb, 0, 0) ;
1422 return TRUE; 1422 return TRUE;
1423 } 1423 }
1424 FX_BOOL OutputText(void* dib, int x, int y, CFX_Font* pFont, double font_size, 1424 FX_BOOL OutputText(void* dib, int x, int y, CFX_Font* pFont, double font_size,
1425 CFX_AffineMatrix* pText_matrix, unsigned short const* text, u nsigned long argb) 1425 CFX_AffineMatrix* pText_matrix, unsigned short const* text, u nsigned long argb)
1426 { 1426 {
1427 if (!pFont) { 1427 if (!pFont) {
1428 return FALSE; 1428 return FALSE;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1476 FX_BOOL ret = _OutputGlyph(dib, x, y, pFont, 1476 FX_BOOL ret = _OutputGlyph(dib, x, y, pFont,
1477 glyph_index, argb); 1477 glyph_index, argb);
1478 return ret; 1478 return ret;
1479 } 1479 }
1480 const CFX_PathData* CFX_FaceCache::LoadGlyphPath(CFX_Font* pFont, FX_DWORD glyph _index, int dest_width) 1480 const CFX_PathData* CFX_FaceCache::LoadGlyphPath(CFX_Font* pFont, FX_DWORD glyph _index, int dest_width)
1481 { 1481 {
1482 if (m_Face == NULL || glyph_index == (FX_DWORD) - 1) { 1482 if (m_Face == NULL || glyph_index == (FX_DWORD) - 1) {
1483 return NULL; 1483 return NULL;
1484 } 1484 }
1485 CFX_PathData* pGlyphPath = NULL; 1485 CFX_PathData* pGlyphPath = NULL;
1486 FX_LPVOID key; 1486 void* key;
1487 if (pFont->GetSubstFont()) 1487 if (pFont->GetSubstFont())
1488 key = (FX_LPVOID)(uintptr_t)(glyph_index + ((pFont->GetSubstFont()->m_We ight / 16) << 15) + 1488 key = (void*)(uintptr_t)(glyph_index + ((pFont->GetSubstFont()->m_Weight / 16) << 15) +
1489 ((pFont->GetSubstFont()->m_ItalicAngle / 2 ) << 21) + ((dest_width / 16) << 25) + 1489 ((pFont->GetSubstFont()->m_ItalicAngle / 2 ) << 21) + ((dest_width / 16) << 25) +
1490 (pFont->IsVertical() << 31)); 1490 (pFont->IsVertical() << 31));
1491 else { 1491 else {
1492 key = (FX_LPVOID)(uintptr_t)glyph_index; 1492 key = (void*)(uintptr_t)glyph_index;
1493 } 1493 }
1494 if (m_PathMap.Lookup(key, (FX_LPVOID&)pGlyphPath)) { 1494 if (m_PathMap.Lookup(key, (void*&)pGlyphPath)) {
1495 return pGlyphPath; 1495 return pGlyphPath;
1496 } 1496 }
1497 pGlyphPath = pFont->LoadGlyphPath(glyph_index, dest_width); 1497 pGlyphPath = pFont->LoadGlyphPath(glyph_index, dest_width);
1498 m_PathMap.SetAt(key, pGlyphPath); 1498 m_PathMap.SetAt(key, pGlyphPath);
1499 return pGlyphPath; 1499 return pGlyphPath;
1500 } 1500 }
1501 typedef struct { 1501 typedef struct {
1502 FX_BOOL m_bCount; 1502 FX_BOOL m_bCount;
1503 int m_PointCount; 1503 int m_PointCount;
1504 FX_PATHPOINT* m_pPoints; 1504 FX_PATHPOINT* m_pPoints;
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
1672 { 1672 {
1673 va_list argList; 1673 va_list argList;
1674 va_start(argList, count); 1674 va_start(argList, count);
1675 for (int i = 0; i < count; i ++) { 1675 for (int i = 0; i < count; i ++) {
1676 int p = va_arg(argList, int); 1676 int p = va_arg(argList, int);
1677 ((FX_DWORD*)m_Key)[i] = p; 1677 ((FX_DWORD*)m_Key)[i] = p;
1678 } 1678 }
1679 va_end(argList); 1679 va_end(argList);
1680 m_KeyLen = count * sizeof(FX_DWORD); 1680 m_KeyLen = count * sizeof(FX_DWORD);
1681 } 1681 }
OLDNEW
« no previous file with comments | « core/src/fxge/ge/fx_ge_ps.cpp ('k') | core/src/fxge/skia/fx_skia_blitter_new.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698