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

Side by Side Diff: src/core/SkScalerContext.h

Issue 1872253004: Revert of Pass effects directly to fontcache (Closed) Base URL: https://skia.googlesource.com/skia.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 | « src/core/SkPaint.cpp ('k') | src/core/SkScalerContext.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2006 The Android Open Source Project 2 * Copyright 2006 The Android Open Source Project
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef SkScalerContext_DEFINED 8 #ifndef SkScalerContext_DEFINED
9 #define SkScalerContext_DEFINED 9 #define SkScalerContext_DEFINED
10 10
11 #include "SkMask.h" 11 #include "SkMask.h"
12 #include "SkMaskGamma.h" 12 #include "SkMaskGamma.h"
13 #include "SkMatrix.h" 13 #include "SkMatrix.h"
14 #include "SkPaint.h" 14 #include "SkPaint.h"
15 #include "SkTypeface.h" 15 #include "SkTypeface.h"
16 16
17 class SkGlyph; 17 class SkGlyph;
18 class SkDescriptor; 18 class SkDescriptor;
19 class SkMaskFilter; 19 class SkMaskFilter;
20 class SkPathEffect; 20 class SkPathEffect;
21 class SkRasterizer; 21 class SkRasterizer;
22 22
23 struct SkScalerContextEffects {
24 SkScalerContextEffects() : fPathEffect(nullptr), fMaskFilter(nullptr), fRast erizer(nullptr) {}
25 SkScalerContextEffects(SkPathEffect* pe, SkMaskFilter* mf, SkRasterizer* ra)
26 : fPathEffect(pe), fMaskFilter(mf), fRasterizer(ra) {}
27
28 SkPathEffect* fPathEffect;
29 SkMaskFilter* fMaskFilter;
30 SkRasterizer* fRasterizer;
31 };
32
33 enum SkAxisAlignment { 23 enum SkAxisAlignment {
34 kNone_SkAxisAlignment, 24 kNone_SkAxisAlignment,
35 kX_SkAxisAlignment, 25 kX_SkAxisAlignment,
36 kY_SkAxisAlignment 26 kY_SkAxisAlignment
37 }; 27 };
38 28
39 /* 29 /*
40 * To allow this to be forward-declared, it must be its own typename, rather 30 * To allow this to be forward-declared, it must be its own typename, rather
41 * than a nested struct inside SkScalerContext (where it started). 31 * than a nested struct inside SkScalerContext (where it started).
42 */ 32 */
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 // Generate A8 from LCD source (for GDI and CoreGraphics). 193 // Generate A8 from LCD source (for GDI and CoreGraphics).
204 // only meaningful if fMaskFormat is kA8 194 // only meaningful if fMaskFormat is kA8
205 kGenA8FromLCD_Flag = 0x0800, // could be 0x200 (bit meaning depen dent on fMaskFormat) 195 kGenA8FromLCD_Flag = 0x0800, // could be 0x200 (bit meaning depen dent on fMaskFormat)
206 }; 196 };
207 197
208 // computed values 198 // computed values
209 enum { 199 enum {
210 kHinting_Mask = kHintingBit1_Flag | kHintingBit2_Flag, 200 kHinting_Mask = kHintingBit1_Flag | kHintingBit2_Flag,
211 }; 201 };
212 202
213 SkScalerContext(SkTypeface*, const SkScalerContextEffects&, const SkDescript or*); 203
204 SkScalerContext(SkTypeface*, const SkDescriptor*);
214 virtual ~SkScalerContext(); 205 virtual ~SkScalerContext();
215 206
216 SkTypeface* getTypeface() const { return fTypeface.get(); } 207 SkTypeface* getTypeface() const { return fTypeface.get(); }
217 208
218 SkMask::Format getMaskFormat() const { 209 SkMask::Format getMaskFormat() const {
219 return (SkMask::Format)fRec.fMaskFormat; 210 return (SkMask::Format)fRec.fMaskFormat;
220 } 211 }
221 212
222 bool isSubpixel() const { 213 bool isSubpixel() const {
223 return SkToBool(fRec.fFlags & kSubpixelPositioning_Flag); 214 return SkToBool(fRec.fFlags & kSubpixelPositioning_Flag);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 void* data); 253 void* data);
263 254
264 static void MakeRec(const SkPaint&, const SkSurfaceProps* surfaceProps, 255 static void MakeRec(const SkPaint&, const SkSurfaceProps* surfaceProps,
265 const SkMatrix*, Rec* rec); 256 const SkMatrix*, Rec* rec);
266 static inline void PostMakeRec(const SkPaint&, Rec*); 257 static inline void PostMakeRec(const SkPaint&, Rec*);
267 258
268 static SkMaskGamma::PreBlend GetMaskPreBlend(const Rec& rec); 259 static SkMaskGamma::PreBlend GetMaskPreBlend(const Rec& rec);
269 260
270 const Rec& getRec() const { return fRec; } 261 const Rec& getRec() const { return fRec; }
271 262
272 SkScalerContextEffects getEffects() const {
273 return { fPathEffect.get(), fMaskFilter.get(), fRasterizer.get() };
274 }
275
276 /** 263 /**
277 * Return the axis (if any) that the baseline for horizontal text should lan d on. 264 * Return the axis (if any) that the baseline for horizontal text should lan d on.
278 * As an example, the identity matrix will return kX_SkAxisAlignment 265 * As an example, the identity matrix will return kX_SkAxisAlignment
279 */ 266 */
280 SkAxisAlignment computeAxisAlignmentForHText(); 267 SkAxisAlignment computeAxisAlignmentForHText();
281 268
269
282 protected: 270 protected:
283 Rec fRec; 271 Rec fRec;
284 272
285 /** Generates the contents of glyph.fAdvanceX and glyph.fAdvanceY. 273 /** Generates the contents of glyph.fAdvanceX and glyph.fAdvanceY.
286 * May call getMetrics if that would be just as fast. 274 * May call getMetrics if that would be just as fast.
287 */ 275 */
288 virtual void generateAdvance(SkGlyph* glyph) = 0; 276 virtual void generateAdvance(SkGlyph* glyph) = 0;
289 277
290 /** Generates the contents of glyph.fWidth, fHeight, fTop, fLeft, 278 /** Generates the contents of glyph.fWidth, fHeight, fTop, fLeft,
291 * as well as fAdvanceX and fAdvanceY if not already set. 279 * as well as fAdvanceX and fAdvanceY if not already set.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 */ 319 */
332 virtual SkUnichar generateGlyphToChar(uint16_t glyphId); 320 virtual SkUnichar generateGlyphToChar(uint16_t glyphId);
333 321
334 void forceGenerateImageFromPath() { fGenerateImageFromPath = true; } 322 void forceGenerateImageFromPath() { fGenerateImageFromPath = true; }
335 void forceOffGenerateImageFromPath() { fGenerateImageFromPath = false; } 323 void forceOffGenerateImageFromPath() { fGenerateImageFromPath = false; }
336 324
337 private: 325 private:
338 friend class SkRandomScalerContext; // For debug purposes 326 friend class SkRandomScalerContext; // For debug purposes
339 327
340 // never null 328 // never null
341 sk_sp<SkTypeface> fTypeface; 329 SkAutoTUnref<SkTypeface> fTypeface;
342 330
343 // optional objects, which may be null 331 // optional object, which may be null
344 sk_sp<SkPathEffect> fPathEffect; 332 SkPathEffect* fPathEffect;
345 sk_sp<SkMaskFilter> fMaskFilter; 333 SkMaskFilter* fMaskFilter;
346 sk_sp<SkRasterizer> fRasterizer; 334 SkRasterizer* fRasterizer;
347 335
348 // if this is set, we draw the image from a path, rather than 336 // if this is set, we draw the image from a path, rather than
349 // calling generateImage. 337 // calling generateImage.
350 bool fGenerateImageFromPath; 338 bool fGenerateImageFromPath;
351 339
352 void internalGetPath(const SkGlyph& glyph, SkPath* fillPath, 340 void internalGetPath(const SkGlyph& glyph, SkPath* fillPath,
353 SkPath* devPath, SkMatrix* fillToDevMatrix); 341 SkPath* devPath, SkMatrix* fillToDevMatrix);
354 342
355 // returns the right context from our link-list for this char. If no match 343 // returns the right context from our link-list for this char. If no match
356 // is found it returns nullptr. If a match is found then the glyphID param i s 344 // is found it returns nullptr. If a match is found then the glyphID param i s
(...skipping 23 matching lines...) Expand all
380 return static_cast<SkPaint::Hinting>(hint); 368 return static_cast<SkPaint::Hinting>(hint);
381 } 369 }
382 370
383 void SkScalerContextRec::setHinting(SkPaint::Hinting hinting) { 371 void SkScalerContextRec::setHinting(SkPaint::Hinting hinting) {
384 fFlags = (fFlags & ~SkScalerContext::kHinting_Mask) | 372 fFlags = (fFlags & ~SkScalerContext::kHinting_Mask) |
385 (hinting << SkScalerContext::kHinting_Shift); 373 (hinting << SkScalerContext::kHinting_Shift);
386 } 374 }
387 375
388 376
389 #endif 377 #endif
OLDNEW
« no previous file with comments | « src/core/SkPaint.cpp ('k') | src/core/SkScalerContext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698