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

Side by Side Diff: core/fpdfapi/fpdf_render/fpdf_render_text.cpp

Issue 1841313004: Rename _CPDF_UniqueKeyGen to CPDF_UniqueKeyGen (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 8 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 | « no previous file | core/fpdfapi/fpdf_render/render_int.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 "core/fpdfapi/fpdf_render/render_int.h" 7 #include "core/fpdfapi/fpdf_render/render_int.h"
8 8
9 #include "core/fpdfapi/fpdf_font/cpdf_cidfont.h" 9 #include "core/fpdfapi/fpdf_font/cpdf_cidfont.h"
10 #include "core/fpdfapi/fpdf_font/cpdf_type3char.h" 10 #include "core/fpdfapi/fpdf_font/cpdf_type3char.h"
11 #include "core/fpdfapi/fpdf_font/cpdf_type3font.h" 11 #include "core/fpdfapi/fpdf_font/cpdf_type3font.h"
12 #include "core/fpdfapi/fpdf_font/include/cpdf_font.h" 12 #include "core/fpdfapi/fpdf_font/include/cpdf_font.h"
13 #include "core/fpdfapi/fpdf_page/cpdf_parseoptions.h" 13 #include "core/fpdfapi/fpdf_page/cpdf_parseoptions.h"
14 #include "core/fpdfapi/fpdf_page/include/cpdf_form.h" 14 #include "core/fpdfapi/fpdf_page/include/cpdf_form.h"
15 #include "core/fpdfapi/fpdf_page/include/cpdf_imageobject.h" 15 #include "core/fpdfapi/fpdf_page/include/cpdf_imageobject.h"
16 #include "core/fpdfapi/fpdf_page/include/cpdf_pageobject.h" 16 #include "core/fpdfapi/fpdf_page/include/cpdf_pageobject.h"
17 #include "core/fpdfapi/fpdf_page/include/cpdf_pathobject.h" 17 #include "core/fpdfapi/fpdf_page/include/cpdf_pathobject.h"
18 #include "core/fpdfapi/fpdf_page/include/cpdf_textobject.h" 18 #include "core/fpdfapi/fpdf_page/include/cpdf_textobject.h"
19 #include "core/fpdfapi/fpdf_page/pageint.h" 19 #include "core/fpdfapi/fpdf_page/pageint.h"
20 #include "core/fpdfapi/fpdf_parser/include/cpdf_dictionary.h" 20 #include "core/fpdfapi/fpdf_parser/include/cpdf_dictionary.h"
21 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" 21 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h"
22 #include "core/fpdfapi/fpdf_render/include/cpdf_renderoptions.h" 22 #include "core/fpdfapi/fpdf_render/include/cpdf_renderoptions.h"
23 #include "core/fpdfapi/fpdf_render/include/cpdf_textrenderer.h" 23 #include "core/fpdfapi/fpdf_render/include/cpdf_textrenderer.h"
24 #include "core/include/fxge/fx_ge.h" 24 #include "core/include/fxge/fx_ge.h"
25 25
26 namespace {
27
28 struct CPDF_UniqueKeyGen {
29 void Generate(int count, ...);
30 FX_CHAR m_Key[128];
31 int m_KeyLen;
32 };
33
34 void CPDF_UniqueKeyGen::Generate(int count, ...) {
35 va_list argList;
36 va_start(argList, count);
37 for (int i = 0; i < count; i++) {
38 int p = va_arg(argList, int);
39 ((uint32_t*)m_Key)[i] = p;
40 }
41 va_end(argList);
42 m_KeyLen = count * sizeof(uint32_t);
43 }
44
45 } // namespace
46
26 CPDF_Type3Cache::~CPDF_Type3Cache() { 47 CPDF_Type3Cache::~CPDF_Type3Cache() {
27 for (const auto& pair : m_SizeMap) { 48 for (const auto& pair : m_SizeMap) {
28 delete pair.second; 49 delete pair.second;
29 } 50 }
30 m_SizeMap.clear(); 51 m_SizeMap.clear();
31 } 52 }
32 CFX_GlyphBitmap* CPDF_Type3Cache::LoadGlyph(uint32_t charcode, 53 CFX_GlyphBitmap* CPDF_Type3Cache::LoadGlyph(uint32_t charcode,
33 const CFX_Matrix* pMatrix, 54 const CFX_Matrix* pMatrix,
34 FX_FLOAT retinaScaleX, 55 FX_FLOAT retinaScaleX,
35 FX_FLOAT retinaScaleY) { 56 FX_FLOAT retinaScaleY) {
36 _CPDF_UniqueKeyGen keygen; 57 CPDF_UniqueKeyGen keygen;
37 keygen.Generate( 58 keygen.Generate(
38 4, FXSYS_round(pMatrix->a * 10000), FXSYS_round(pMatrix->b * 10000), 59 4, FXSYS_round(pMatrix->a * 10000), FXSYS_round(pMatrix->b * 10000),
39 FXSYS_round(pMatrix->c * 10000), FXSYS_round(pMatrix->d * 10000)); 60 FXSYS_round(pMatrix->c * 10000), FXSYS_round(pMatrix->d * 10000));
40 CFX_ByteStringC FaceGlyphsKey(keygen.m_Key, keygen.m_KeyLen); 61 CFX_ByteStringC FaceGlyphsKey(keygen.m_Key, keygen.m_KeyLen);
41 CPDF_Type3Glyphs* pSizeCache; 62 CPDF_Type3Glyphs* pSizeCache;
42 auto it = m_SizeMap.find(FaceGlyphsKey); 63 auto it = m_SizeMap.find(FaceGlyphsKey);
43 if (it == m_SizeMap.end()) { 64 if (it == m_SizeMap.end()) {
44 pSizeCache = new CPDF_Type3Glyphs; 65 pSizeCache = new CPDF_Type3Glyphs;
45 m_SizeMap[FaceGlyphsKey] = pSizeCache; 66 m_SizeMap[FaceGlyphsKey] = pSizeCache;
46 } else { 67 } else {
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 if (!pResBitmap) { 201 if (!pResBitmap) {
181 return NULL; 202 return NULL;
182 } 203 }
183 CFX_GlyphBitmap* pGlyph = new CFX_GlyphBitmap; 204 CFX_GlyphBitmap* pGlyph = new CFX_GlyphBitmap;
184 pGlyph->m_Left = left; 205 pGlyph->m_Left = left;
185 pGlyph->m_Top = -top; 206 pGlyph->m_Top = -top;
186 pGlyph->m_Bitmap.TakeOver(pResBitmap); 207 pGlyph->m_Bitmap.TakeOver(pResBitmap);
187 delete pResBitmap; 208 delete pResBitmap;
188 return pGlyph; 209 return pGlyph;
189 } 210 }
190 void _CPDF_UniqueKeyGen::Generate(int count, ...) { 211
191 va_list argList;
192 va_start(argList, count);
193 for (int i = 0; i < count; i++) {
194 int p = va_arg(argList, int);
195 ((uint32_t*)m_Key)[i] = p;
196 }
197 va_end(argList);
198 m_KeyLen = count * sizeof(uint32_t);
199 }
200 FX_BOOL CPDF_RenderStatus::ProcessText(const CPDF_TextObject* textobj, 212 FX_BOOL CPDF_RenderStatus::ProcessText(const CPDF_TextObject* textobj,
201 const CFX_Matrix* pObj2Device, 213 const CFX_Matrix* pObj2Device,
202 CFX_PathData* pClippingPath) { 214 CFX_PathData* pClippingPath) {
203 if (textobj->m_nChars == 0) { 215 if (textobj->m_nChars == 0) {
204 return TRUE; 216 return TRUE;
205 } 217 }
206 int text_render_mode = textobj->m_TextState.GetObject()->m_TextMode; 218 int text_render_mode = textobj->m_TextState.GetObject()->m_TextMode;
207 if (text_render_mode == 3) { 219 if (text_render_mode == 3) {
208 return TRUE; 220 return TRUE;
209 } 221 }
(...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after
767 matrix.Concat(font_size, 0, 0, font_size, charpos.m_OriginX, 779 matrix.Concat(font_size, 0, 0, font_size, charpos.m_OriginX,
768 charpos.m_OriginY); 780 charpos.m_OriginY);
769 path.m_Path.New()->Append(pPath, &matrix); 781 path.m_Path.New()->Append(pPath, &matrix);
770 path.m_Matrix = *pTextMatrix; 782 path.m_Matrix = *pTextMatrix;
771 path.m_bStroke = bStroke; 783 path.m_bStroke = bStroke;
772 path.m_FillType = bFill ? FXFILL_WINDING : 0; 784 path.m_FillType = bFill ? FXFILL_WINDING : 0;
773 path.CalcBoundingBox(); 785 path.CalcBoundingBox();
774 ProcessPath(&path, pObj2Device); 786 ProcessPath(&path, pObj2Device);
775 } 787 }
776 } 788 }
OLDNEW
« no previous file with comments | « no previous file | core/fpdfapi/fpdf_render/render_int.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698