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

Side by Side Diff: core/src/fxge/apple/fx_apple_platform.cpp

Issue 453133004: clang-format all code (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 6 years, 4 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
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/fxcrt/fx_ext.h" 7 #include "../../../include/fxcrt/fx_ext.h"
8 #include "../../../include/fxge/fx_ge.h" 8 #include "../../../include/fxge/fx_ge.h"
9 #if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ 9 #if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
10 #include "apple_int.h" 10 #include "apple_int.h"
11 #include "../../../include/fxge/fx_ge_apple.h" 11 #include "../../../include/fxge/fx_ge_apple.h"
12 #include "../agg/include/fxfx_agg_clip_liang_barsky.h" 12 #include "../agg/include/fxfx_agg_clip_liang_barsky.h"
13 #include "../ge/text_int.h" 13 #include "../ge/text_int.h"
14 #include "../dib/dib_int.h" 14 #include "../dib/dib_int.h"
15 #include "../agg/include/fx_agg_driver.h" 15 #include "../agg/include/fx_agg_driver.h"
16 #include "../../../include/fxge/fx_freetype.h" 16 #include "../../../include/fxge/fx_freetype.h"
17 #if (_FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ && (!defined(_FPDFAPI_MINI_))) 17 #if (_FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ && (!defined(_FPDFAPI_MINI_)))
18 void CFX_AggDeviceDriver::InitPlatform() 18 void CFX_AggDeviceDriver::InitPlatform() {
19 { 19 CQuartz2D& quartz2d =
20 CQuartz2D & quartz2d = ((CApplePlatform *) CFX_GEModule::Get()->GetPlatformD ata())->_quartz2d; 20 ((CApplePlatform*)CFX_GEModule::Get()->GetPlatformData())->_quartz2d;
21 m_pPlatformGraphics = quartz2d.createGraphics(m_pBitmap); 21 m_pPlatformGraphics = quartz2d.createGraphics(m_pBitmap);
22 } 22 }
23 void CFX_AggDeviceDriver::DestroyPlatform() 23 void CFX_AggDeviceDriver::DestroyPlatform() {
24 { 24 CQuartz2D& quartz2d =
25 CQuartz2D & quartz2d = ((CApplePlatform *) CFX_GEModule::Get()->GetPlatformD ata())->_quartz2d; 25 ((CApplePlatform*)CFX_GEModule::Get()->GetPlatformData())->_quartz2d;
26 if (m_pPlatformGraphics) { 26 if (m_pPlatformGraphics) {
27 quartz2d.destroyGraphics(m_pPlatformGraphics); 27 quartz2d.destroyGraphics(m_pPlatformGraphics);
28 m_pPlatformGraphics = NULL; 28 m_pPlatformGraphics = NULL;
29 }
30 }
31 void CFX_FaceCache::InitPlatform() {
32 }
33 void CFX_FaceCache::DestroyPlatform() {
34 }
35 CFX_GlyphBitmap* CFX_FaceCache::RenderGlyph_Nativetext(
36 CFX_Font* pFont,
37 FX_DWORD glyph_index,
38 const CFX_AffineMatrix* pMatrix,
39 int dest_width,
40 int anti_alias) {
41 return NULL;
42 }
43 static FX_BOOL _CGDrawGlyphRun(CGContextRef pContext,
44 int nChars,
45 const FXTEXT_CHARPOS* pCharPos,
46 CFX_Font* pFont,
47 CFX_FontCache* pCache,
48 const CFX_AffineMatrix* pObject2Device,
49 FX_FLOAT font_size,
50 FX_DWORD argb,
51 int alpha_flag,
52 void* pIccTransform) {
53 if (nChars == 0) {
54 return TRUE;
55 }
56 CFX_AffineMatrix new_matrix;
57 FX_BOOL bNegSize = font_size < 0;
58 if (bNegSize) {
59 font_size = -font_size;
60 }
61 FX_FLOAT ori_x = pCharPos[0].m_OriginX, ori_y = pCharPos[0].m_OriginY;
62 new_matrix.Transform(ori_x, ori_y);
63 if (pObject2Device) {
64 new_matrix.Concat(*pObject2Device);
65 }
66 CQuartz2D& quartz2d =
67 ((CApplePlatform*)CFX_GEModule::Get()->GetPlatformData())->_quartz2d;
68 if (!pFont->m_pPlatformFont) {
69 if (pFont->GetPsName() == CFX_WideString::FromLocal("DFHeiStd-W5")) {
70 return FALSE;
29 } 71 }
72 pFont->m_pPlatformFont =
73 quartz2d.CreateFont(pFont->m_pFontData, pFont->m_dwSize);
74 if (NULL == pFont->m_pPlatformFont) {
75 return FALSE;
76 }
77 }
78 CFX_FixedBufGrow<FX_WORD, 32> glyph_indices(nChars);
79 CFX_FixedBufGrow<CGPoint, 32> glyph_positions(nChars);
80 for (int i = 0; i < nChars; i++) {
81 glyph_indices[i] = pCharPos[i].m_ExtGID;
82 if (bNegSize) {
83 glyph_positions[i].x = -pCharPos[i].m_OriginX;
84 } else {
85 glyph_positions[i].x = pCharPos[i].m_OriginX;
86 }
87 glyph_positions[i].y = pCharPos[i].m_OriginY;
88 }
89 if (bNegSize) {
90 new_matrix.a = -new_matrix.a;
91 } else {
92 new_matrix.b = -new_matrix.b;
93 new_matrix.d = -new_matrix.d;
94 }
95 quartz2d.setGraphicsTextMatrix(pContext, &new_matrix);
96 return quartz2d.drawGraphicsString(pContext,
97 pFont->m_pPlatformFont,
98 font_size,
99 glyph_indices,
100 glyph_positions,
101 nChars,
102 argb,
103 NULL);
30 } 104 }
31 void CFX_FaceCache::InitPlatform() {} 105 static void _DoNothing(void* info, const void* data, size_t size) {
32 void CFX_FaceCache::DestroyPlatform() {}
33 CFX_GlyphBitmap* CFX_FaceCache::RenderGlyph_Nativetext(CFX_Font *» » » » pFont,
34 FX_DWORD» » » » » glyph_index,
35 const CFX_AffineMatrix *» pMatrix,
36 int» » » » » » dest_width,
37 int» » » » » » anti_alias)
38 {
39 return NULL;
40 } 106 }
41 static FX_BOOL _CGDrawGlyphRun(CGContextRef pContext, 107 FX_BOOL CFX_AggDeviceDriver::DrawDeviceText(
42 int nChars, 108 int nChars,
43 const FXTEXT_CHARPOS* pCharPos, 109 const FXTEXT_CHARPOS* pCharPos,
44 CFX_Font* pFont, 110 CFX_Font* pFont,
45 CFX_FontCache* pCache, 111 CFX_FontCache* pCache,
46 const CFX_AffineMatrix* pObject2Device, 112 const CFX_AffineMatrix* pObject2Device,
47 FX_FLOAT font_size, 113 FX_FLOAT font_size,
48 FX_DWORD argb, 114 FX_DWORD argb,
49 int alpha_flag, 115 int alpha_flag,
50 void* pIccTransform) 116 void* pIccTransform) {
51 { 117 if (!pFont) {
52 if (nChars == 0) { 118 return FALSE;
53 return TRUE; 119 }
120 FX_BOOL bBold = pFont->IsBold();
121 if (!bBold && pFont->GetSubstFont() &&
122 pFont->GetSubstFont()->m_Weight >= 500 &&
123 pFont->GetSubstFont()->m_Weight <= 600) {
124 return FALSE;
125 }
126 for (int i = 0; i < nChars; i++) {
127 if (pCharPos[i].m_bGlyphAdjust) {
128 return FALSE;
54 } 129 }
55 CFX_AffineMatrix new_matrix; 130 }
56 FX_BOOL bNegSize = font_size < 0; 131 CGContextRef ctx = CGContextRef(m_pPlatformGraphics);
57 if (bNegSize) { 132 if (NULL == ctx) {
58 font_size = -font_size; 133 return FALSE;
134 }
135 CGContextSaveGState(ctx);
136 CGContextSetTextDrawingMode(ctx, kCGTextFillClip);
137 CGRect rect_cg;
138 CGImageRef pImageCG = NULL;
139 if (m_pClipRgn) {
140 rect_cg = CGRectMake(m_pClipRgn->GetBox().left,
141 m_pClipRgn->GetBox().top,
142 m_pClipRgn->GetBox().Width(),
143 m_pClipRgn->GetBox().Height());
144 const CFX_DIBitmap* pClipMask = m_pClipRgn->GetMask();
145 if (pClipMask) {
146 CGDataProviderRef pClipMaskDataProvider = CGDataProviderCreateWithData(
147 NULL,
148 pClipMask->GetBuffer(),
149 pClipMask->GetPitch() * pClipMask->GetHeight(),
150 _DoNothing);
151 CGFloat decode_f[2] = { 255.f, 0.f };
152 pImageCG = CGImageMaskCreate(pClipMask->GetWidth(),
153 pClipMask->GetHeight(),
154 8,
155 8,
156 pClipMask->GetPitch(),
157 pClipMaskDataProvider,
158 decode_f,
159 FALSE);
160 CGDataProviderRelease(pClipMaskDataProvider);
59 } 161 }
60 FX_FLOAT ori_x = pCharPos[0].m_OriginX, ori_y = pCharPos[0].m_OriginY; 162 } else {
61 new_matrix.Transform(ori_x, ori_y); 163 rect_cg = CGRectMake(0, 0, m_pBitmap->GetWidth(), m_pBitmap->GetHeight());
62 if (pObject2Device) { 164 }
63 new_matrix.Concat(*pObject2Device); 165 rect_cg = CGContextConvertRectToDeviceSpace(ctx, rect_cg);
64 } 166 if (pImageCG) {
65 CQuartz2D& quartz2d = ((CApplePlatform *) CFX_GEModule::Get()->GetPlatformDa ta())->_quartz2d; 167 CGContextClipToMask(ctx, rect_cg, pImageCG);
66 if (!pFont->m_pPlatformFont) { 168 } else {
67 if (pFont->GetPsName() == CFX_WideString::FromLocal("DFHeiStd-W5")) { 169 CGContextClipToRect(ctx, rect_cg);
68 return FALSE; 170 }
69 } 171 FX_BOOL ret = _CGDrawGlyphRun(ctx,
70 pFont->m_pPlatformFont = quartz2d.CreateFont(pFont->m_pFontData, pFont-> m_dwSize); 172 nChars,
71 if (NULL == pFont->m_pPlatformFont) { 173 pCharPos,
72 return FALSE; 174 pFont,
73 } 175 pCache,
74 } 176 pObject2Device,
75 CFX_FixedBufGrow<FX_WORD, 32> glyph_indices(nChars); 177 font_size,
76 CFX_FixedBufGrow<CGPoint, 32> glyph_positions(nChars); 178 argb,
77 for (int i = 0; i < nChars; i++ ) { 179 alpha_flag,
78 glyph_indices[i] = pCharPos[i].m_ExtGID; 180 pIccTransform);
79 if (bNegSize) { 181 if (pImageCG) {
80 glyph_positions[i].x = -pCharPos[i].m_OriginX; 182 CGImageRelease(pImageCG);
81 } else { 183 }
82 glyph_positions[i].x = pCharPos[i].m_OriginX; 184 CGContextRestoreGState(ctx);
83 } 185 return ret;
84 glyph_positions[i].y = pCharPos[i].m_OriginY;
85 }
86 if (bNegSize) {
87 new_matrix.a = -new_matrix.a;
88 } else {
89 new_matrix.b = -new_matrix.b;
90 new_matrix.d = -new_matrix.d;
91 }
92 quartz2d.setGraphicsTextMatrix(pContext, &new_matrix);
93 return quartz2d.drawGraphicsString(pContext,
94 pFont->m_pPlatformFont,
95 font_size,
96 glyph_indices,
97 glyph_positions,
98 nChars,
99 argb,
100 NULL);
101 } 186 }
102 static void _DoNothing(void *info, const void *data, size_t size) {} 187 void CFX_Font::ReleasePlatformResource() {
103 FX_BOOL CFX_AggDeviceDriver::DrawDeviceText(int»» » » » » nChars, 188 if (m_pPlatformFont) {
104 const FXTEXT_CHARPOS *» pCharPos, 189 CQuartz2D& quartz2d =
105 CFX_Font *» » » » pFont, 190 ((CApplePlatform*)CFX_GEModule::Get()->GetPlatformData())->_quartz2d;
106 CFX_FontCache *»» » pCache, 191 quartz2d.DestroyFont(m_pPlatformFont);
107 const CFX_AffineMatrix * pObject2Device, 192 m_pPlatformFont = NULL;
108 FX_FLOAT» » » » font_size, 193 }
109 FX_DWORD» » » » argb,
110 int alpha_flag, void* pIccTransform)
111 {
112 if (!pFont) {
113 return FALSE;
114 }
115 FX_BOOL bBold = pFont->IsBold();
116 if (!bBold && pFont->GetSubstFont() &&
117 pFont->GetSubstFont()->m_Weight >= 500 &&
118 pFont->GetSubstFont()->m_Weight <= 600) {
119 return FALSE;
120 }
121 for (int i = 0; i < nChars; i ++) {
122 if (pCharPos[i].m_bGlyphAdjust) {
123 return FALSE;
124 }
125 }
126 CGContextRef ctx = CGContextRef(m_pPlatformGraphics);
127 if (NULL == ctx) {
128 return FALSE;
129 }
130 CGContextSaveGState(ctx);
131 CGContextSetTextDrawingMode(ctx, kCGTextFillClip);
132 CGRect rect_cg;
133 CGImageRef pImageCG = NULL;
134 if (m_pClipRgn) {
135 rect_cg = CGRectMake(m_pClipRgn->GetBox().left, m_pClipRgn->GetBox().top , m_pClipRgn->GetBox().Width(), m_pClipRgn->GetBox().Height());
136 const CFX_DIBitmap*» pClipMask = m_pClipRgn->GetMask();
137 if (pClipMask) {
138 CGDataProviderRef pClipMaskDataProvider = CGDataProviderCreateWithDa ta(NULL,
139 pClipMask->GetBuffer(),
140 pClipMask->GetPitch() * pClipMask->GetHeight(),
141 _DoNothing);
142 CGFloat decode_f[2] = {255.f, 0.f};
143 pImageCG = CGImageMaskCreate(pClipMask->GetWidth(), pClipMask->GetHe ight(),
144 8, 8, pClipMask->GetPitch(), pClipMaskD ataProvider,
145 decode_f, FALSE);
146 CGDataProviderRelease(pClipMaskDataProvider);
147 }
148 } else {
149 rect_cg = CGRectMake(0, 0, m_pBitmap->GetWidth(), m_pBitmap->GetHeight() );
150 }
151 rect_cg = CGContextConvertRectToDeviceSpace(ctx, rect_cg);
152 if (pImageCG) {
153 CGContextClipToMask(ctx, rect_cg, pImageCG);
154 } else {
155 CGContextClipToRect(ctx, rect_cg);
156 }
157 FX_BOOL ret = _CGDrawGlyphRun(ctx, nChars, pCharPos, pFont, pCache, pObject2 Device, font_size, argb, alpha_flag, pIccTransform);
158 if (pImageCG) {
159 CGImageRelease(pImageCG);
160 }
161 CGContextRestoreGState(ctx);
162 return ret;
163 }
164 void CFX_Font::ReleasePlatformResource()
165 {
166 if (m_pPlatformFont) {
167 CQuartz2D & quartz2d = ((CApplePlatform *) CFX_GEModule::Get()->GetPlatf ormData())->_quartz2d;
168 quartz2d.DestroyFont(m_pPlatformFont);
169 m_pPlatformFont = NULL;
170 }
171 } 194 }
172 #endif 195 #endif
173 #endif 196 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698