Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 /* | 3 /* |
| 4 * Copyright 2006 The Android Open Source Project | 4 * Copyright 2006 The Android Open Source Project |
| 5 * | 5 * |
| 6 * Use of this source code is governed by a BSD-style license that can be | 6 * Use of this source code is governed by a BSD-style license that can be |
| 7 * found in the LICENSE file. | 7 * found in the LICENSE file. |
| 8 */ | 8 */ |
| 9 | 9 |
| 10 | 10 |
| 11 #ifndef SkPaint_DEFINED | 11 #ifndef SkPaint_DEFINED |
| 12 #define SkPaint_DEFINED | 12 #define SkPaint_DEFINED |
| 13 | 13 |
| 14 #include "SkColor.h" | 14 #include "SkPaintParts.h" |
| 15 #include "SkDrawLooper.h" | 15 #include "SkDrawLooper.h" |
| 16 #include "SkMatrix.h" | 16 #include "SkMatrix.h" |
| 17 #include "SkXfermode.h" | 17 #include "SkXfermode.h" |
| 18 #ifdef SK_BUILD_FOR_ANDROID | |
| 19 #include "SkPaintOptionsAndroid.h" | |
| 20 #endif | |
| 21 | |
| 22 class SkAnnotation; | |
| 23 class SkAutoGlyphCache; | |
| 24 class SkColorFilter; | |
| 25 class SkDescriptor; | |
| 26 struct SkDeviceProperties; | |
| 27 class SkReadBuffer; | |
| 28 class SkWriteBuffer; | |
| 29 struct SkGlyph; | |
| 30 struct SkRect; | |
| 31 class SkGlyphCache; | |
| 32 class SkImageFilter; | |
| 33 class SkMaskFilter; | |
| 34 class SkPath; | |
| 35 class SkPathEffect; | |
| 36 struct SkPoint; | |
| 37 class SkRasterizer; | |
| 38 class SkShader; | |
| 39 class SkTypeface; | |
| 40 | 18 |
| 41 typedef const SkGlyph& (*SkDrawCacheProc)(SkGlyphCache*, const char**, | 19 typedef const SkGlyph& (*SkDrawCacheProc)(SkGlyphCache*, const char**, |
| 42 SkFixed x, SkFixed y); | 20 SkFixed x, SkFixed y); |
| 43 | 21 |
| 44 typedef const SkGlyph& (*SkMeasureCacheProc)(SkGlyphCache*, const char**); | 22 typedef const SkGlyph& (*SkMeasureCacheProc)(SkGlyphCache*, const char**); |
| 45 | 23 |
| 46 #define kBicubicFilterBitmap_Flag kHighQualityFilterBitmap_Flag | 24 #define kBicubicFilterBitmap_Flag kHighQualityFilterBitmap_Flag |
| 47 | 25 |
| 48 /** \class SkPaint | 26 /** \class SkPaint |
| 49 | 27 |
| 50 The SkPaint class holds the style and color information about how to draw | 28 The SkPaint class holds the style and color information about how to draw |
| 51 geometries, text and bitmaps. | 29 geometries, text and bitmaps. |
| 52 */ | 30 */ |
| 53 | 31 |
| 54 class SK_API SkPaint { | 32 class SK_API SkPaint { |
| 55 enum { | 33 enum { |
| 56 // DEPRECATED -- use setFilterLevel instead | 34 // DEPRECATED -- use setFilterLevel instead |
| 57 kFilterBitmap_Flag = 0x02, // temporary flag | 35 kFilterBitmap_Flag = 0x02, // temporary flag |
| 58 // DEPRECATED -- use setFilterLevel instead | 36 // DEPRECATED -- use setFilterLevel instead |
| 59 kHighQualityFilterBitmap_Flag = 0x4000, // temporary flag | 37 kHighQualityFilterBitmap_Flag = 0x4000, // temporary flag |
| 60 // DEPRECATED -- use setFilterLevel instead | 38 // DEPRECATED -- use setFilterLevel instead |
| 61 kHighQualityDownsampleBitmap_Flag = 0x8000, // temporary flag | 39 kHighQualityDownsampleBitmap_Flag = 0x8000, // temporary flag |
| 62 }; | 40 }; |
| 63 public: | 41 public: |
| 64 SkPaint(); | 42 SkPaint(); |
| 65 SkPaint(const SkPaint& paint); | 43 SkPaint(const SkPaint& paint); |
| 66 ~SkPaint(); | 44 ~SkPaint(); |
| 67 | 45 |
| 46 operator const SkPaintParts& () const { return fParts; } | |
| 47 | |
| 68 SkPaint& operator=(const SkPaint&); | 48 SkPaint& operator=(const SkPaint&); |
| 69 | 49 |
| 70 SK_API friend bool operator==(const SkPaint& a, const SkPaint& b); | 50 SK_API friend bool operator==(const SkPaint& a, const SkPaint& b); |
| 71 friend bool operator!=(const SkPaint& a, const SkPaint& b) { | 51 friend bool operator!=(const SkPaint& a, const SkPaint& b) { |
| 72 return !(a == b); | 52 return !(a == b); |
| 73 } | 53 } |
| 74 | 54 |
| 75 void flatten(SkWriteBuffer&) const; | 55 void flatten(SkWriteBuffer&) const; |
| 76 void unflatten(SkReadBuffer&); | 56 void unflatten(SkReadBuffer&); |
| 77 | 57 |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 89 subpixel glyphs, in which case TARGET_LCD or | 69 subpixel glyphs, in which case TARGET_LCD or |
| 90 TARGET_LCD_V is used> | 70 TARGET_LCD_V is used> |
| 91 */ | 71 */ |
| 92 enum Hinting { | 72 enum Hinting { |
| 93 kNo_Hinting = 0, | 73 kNo_Hinting = 0, |
| 94 kSlight_Hinting = 1, | 74 kSlight_Hinting = 1, |
| 95 kNormal_Hinting = 2, //!< this is the default | 75 kNormal_Hinting = 2, //!< this is the default |
| 96 kFull_Hinting = 3 | 76 kFull_Hinting = 3 |
| 97 }; | 77 }; |
| 98 | 78 |
| 99 Hinting getHinting() const { | 79 Hinting getHinting() const { return (Hinting)fParts.getHinting(); } |
| 100 return static_cast<Hinting>(fHinting); | |
| 101 } | |
| 102 | |
| 103 void setHinting(Hinting hintingLevel); | 80 void setHinting(Hinting hintingLevel); |
| 104 | 81 |
| 105 /** Specifies the bit values that are stored in the paint's flags. | 82 /** Specifies the bit values that are stored in the paint's flags. |
| 106 */ | 83 */ |
| 107 enum Flags { | 84 enum Flags { |
| 108 kAntiAlias_Flag = 0x01, //!< mask to enable antialiasing | 85 kAntiAlias_Flag = 0x01, //!< mask to enable antialiasing |
| 109 kDither_Flag = 0x04, //!< mask to enable dithering | 86 kDither_Flag = 0x04, //!< mask to enable dithering |
| 110 kUnderlineText_Flag = 0x08, //!< mask to enable underline text | 87 kUnderlineText_Flag = 0x08, //!< mask to enable underline text |
| 111 kStrikeThruText_Flag = 0x10, //!< mask to enable strike-thru text | 88 kStrikeThruText_Flag = 0x10, //!< mask to enable strike-thru text |
| 112 kFakeBoldText_Flag = 0x20, //!< mask to enable fake-bold text | 89 kFakeBoldText_Flag = 0x20, //!< mask to enable fake-bold text |
| 113 kLinearText_Flag = 0x40, //!< mask to enable linear-text | 90 kLinearText_Flag = 0x40, //!< mask to enable linear-text |
| 114 kSubpixelText_Flag = 0x80, //!< mask to enable subpixel text positi oning | 91 kSubpixelText_Flag = 0x80, //!< mask to enable subpixel text positi oning |
| 115 kDevKernText_Flag = 0x100, //!< mask to enable device kerning text | 92 kDevKernText_Flag = 0x100, //!< mask to enable device kerning text |
| 116 kLCDRenderText_Flag = 0x200, //!< mask to enable subpixel glyph rende rering | 93 kLCDRenderText_Flag = 0x200, //!< mask to enable subpixel glyph rende rering |
| 117 kEmbeddedBitmapText_Flag = 0x400, //!< mask to enable embedded bitmap st rikes | 94 kEmbeddedBitmapText_Flag = 0x400, //!< mask to enable embedded bitmap st rikes |
| 118 kAutoHinting_Flag = 0x800, //!< mask to force Freetype's autohinter | 95 kAutoHinting_Flag = 0x800, //!< mask to force Freetype's autohinter |
| 119 kVerticalText_Flag = 0x1000, | 96 kVerticalText_Flag = 0x1000, |
| 120 kGenA8FromLCD_Flag = 0x2000, // hack for GDI -- do not use if you can help it | 97 kGenA8FromLCD_Flag = 0x2000, // hack for GDI -- do not use if you can help it |
| 121 kDistanceFieldTextTEMP_Flag = 0x4000, //!< TEMPORARY mask to enable dist ance fields | 98 kDistanceFieldTextTEMP_Flag = 0x4000, //!< TEMPORARY mask to enable dist ance fields |
| 122 // currently overrides LCD and sub pixel rendering | 99 // currently overrides LCD and sub pixel rendering |
| 123 // when adding extra flags, note that the fFlags member is specified | 100 // when adding extra flags, note that the fFlags member is specified |
| 124 // with a bit-width and you'll have to expand it. | 101 // with a bit-width and you'll have to expand it. |
| 125 | 102 |
| 126 kAllFlags = 0xFFFF | 103 kAllFlags = 0xFFFF |
| 127 }; | 104 }; |
| 128 | 105 |
| 129 /** Return the paint's flags. Use the Flag enum to test flag values. | 106 /** Return the paint's flags. Use the Flag enum to test flag values. |
| 130 @return the paint's flags (see enums ending in _Flag for bit masks) | 107 @return the paint's flags (see enums ending in _Flag for bit masks) |
| 131 */ | 108 */ |
| 132 uint32_t getFlags() const { return fFlags; } | 109 uint32_t getFlags() const { return fParts.getFlags(); } |
| 133 | 110 |
| 134 /** Set the paint's flags. Use the Flag enum to specific flag values. | 111 /** Set the paint's flags. Use the Flag enum to specific flag values. |
| 135 @param flags The new flag bits for the paint (see Flags enum) | 112 @param flags The new flag bits for the paint (see Flags enum) |
| 136 */ | 113 */ |
| 137 void setFlags(uint32_t flags); | 114 void setFlags(uint32_t flags); |
| 138 | 115 |
| 139 /** Helper for getFlags(), returning true if kAntiAlias_Flag bit is set | 116 /** Helper for getFlags(), returning true if kAntiAlias_Flag bit is set |
| 140 @return true if the antialias bit is set in the paint's flags. | 117 @return true if the antialias bit is set in the paint's flags. |
| 141 */ | 118 */ |
| 142 bool isAntiAlias() const { | 119 bool isAntiAlias() const { |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 351 }; | 328 }; |
| 352 enum { | 329 enum { |
| 353 kStyleCount = kStrokeAndFill_Style + 1 | 330 kStyleCount = kStrokeAndFill_Style + 1 |
| 354 }; | 331 }; |
| 355 | 332 |
| 356 /** Return the paint's style, used for controlling how primitives' | 333 /** Return the paint's style, used for controlling how primitives' |
| 357 geometries are interpreted (except for drawBitmap, which always assumes | 334 geometries are interpreted (except for drawBitmap, which always assumes |
| 358 kFill_Style). | 335 kFill_Style). |
| 359 @return the paint's Style | 336 @return the paint's Style |
| 360 */ | 337 */ |
| 361 Style getStyle() const { return (Style)fStyle; } | 338 Style getStyle() const { return (Style)fParts.getStyle(); } |
| 362 | 339 |
| 363 /** Set the paint's style, used for controlling how primitives' | 340 /** Set the paint's style, used for controlling how primitives' |
| 364 geometries are interpreted (except for drawBitmap, which always assumes | 341 geometries are interpreted (except for drawBitmap, which always assumes |
| 365 Fill). | 342 Fill). |
| 366 @param style The new style to set in the paint | 343 @param style The new style to set in the paint |
| 367 */ | 344 */ |
| 368 void setStyle(Style style); | 345 void setStyle(Style style); |
| 369 | 346 |
| 370 /** Return the paint's color. Note that the color is a 32bit value | 347 /** Return the paint's color. Note that the color is a 32bit value |
| 371 containing alpha as well as r,g,b. This 32bit value is not | 348 containing alpha as well as r,g,b. This 32bit value is not |
| 372 premultiplied, meaning that its alpha can be any value, regardless of | 349 premultiplied, meaning that its alpha can be any value, regardless of |
| 373 the values of r,g,b. | 350 the values of r,g,b. |
| 374 @return the paint's color (and alpha). | 351 @return the paint's color (and alpha). |
| 375 */ | 352 */ |
| 376 SkColor getColor() const { return fColor; } | 353 SkColor getColor() const { return fParts.fColor; } |
| 377 | 354 |
| 378 /** Set the paint's color. Note that the color is a 32bit value containing | 355 /** Set the paint's color. Note that the color is a 32bit value containing |
| 379 alpha as well as r,g,b. This 32bit value is not premultiplied, meaning | 356 alpha as well as r,g,b. This 32bit value is not premultiplied, meaning |
| 380 that its alpha can be any value, regardless of the values of r,g,b. | 357 that its alpha can be any value, regardless of the values of r,g,b. |
| 381 @param color The new color (including alpha) to set in the paint. | 358 @param color The new color (including alpha) to set in the paint. |
| 382 */ | 359 */ |
| 383 void setColor(SkColor color); | 360 void setColor(SkColor color); |
| 384 | 361 |
| 385 /** Helper to getColor() that just returns the color's alpha value. | 362 /** Helper to getColor() that just returns the color's alpha value. |
| 386 @return the alpha component of the paint's color. | 363 @return the alpha component of the paint's color. |
| 387 */ | 364 */ |
| 388 uint8_t getAlpha() const { return SkToU8(SkColorGetA(fColor)); } | 365 uint8_t getAlpha() const { return SkToU8(SkColorGetA(this->getColor())); } |
| 389 | 366 |
| 390 /** Helper to setColor(), that only assigns the color's alpha value, | 367 /** Helper to setColor(), that only assigns the color's alpha value, |
| 391 leaving its r,g,b values unchanged. | 368 leaving its r,g,b values unchanged. |
| 392 @param a set the alpha component (0..255) of the paint's color. | 369 @param a set the alpha component (0..255) of the paint's color. |
| 393 */ | 370 */ |
| 394 void setAlpha(U8CPU a); | 371 void setAlpha(U8CPU a); |
| 395 | 372 |
| 396 /** Helper to setColor(), that takes a,r,g,b and constructs the color value | 373 /** Helper to setColor(), that takes a,r,g,b and constructs the color value |
| 397 using SkColorSetARGB() | 374 using SkColorSetARGB() |
| 398 @param a The new alpha component (0..255) of the paint's color. | 375 @param a The new alpha component (0..255) of the paint's color. |
| 399 @param r The new red component (0..255) of the paint's color. | 376 @param r The new red component (0..255) of the paint's color. |
| 400 @param g The new green component (0..255) of the paint's color. | 377 @param g The new green component (0..255) of the paint's color. |
| 401 @param b The new blue component (0..255) of the paint's color. | 378 @param b The new blue component (0..255) of the paint's color. |
| 402 */ | 379 */ |
| 403 void setARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b); | 380 void setARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b); |
| 404 | 381 |
| 405 /** Return the width for stroking. | 382 /** Return the width for stroking. |
| 406 <p /> | 383 <p /> |
| 407 A value of 0 strokes in hairline mode. | 384 A value of 0 strokes in hairline mode. |
| 408 Hairlines always draw 1-pixel wide, regardless of the matrix. | 385 Hairlines always draw 1-pixel wide, regardless of the matrix. |
| 409 @return the paint's stroke width, used whenever the paint's style is | 386 @return the paint's stroke width, used whenever the paint's style is |
| 410 Stroke or StrokeAndFill. | 387 Stroke or StrokeAndFill. |
| 411 */ | 388 */ |
| 412 SkScalar getStrokeWidth() const { return fWidth; } | 389 SkScalar getStrokeWidth() const { return fParts.getStrokeWidth(); } |
| 413 | 390 |
| 414 /** Set the width for stroking. | 391 /** Set the width for stroking. |
| 415 Pass 0 to stroke in hairline mode. | 392 Pass 0 to stroke in hairline mode. |
| 416 Hairlines always draw 1-pixel wide, regardless of the matrix. | 393 Hairlines always draw 1-pixel wide, regardless of the matrix. |
| 417 @param width set the paint's stroke width, used whenever the paint's | 394 @param width set the paint's stroke width, used whenever the paint's |
| 418 style is Stroke or StrokeAndFill. | 395 style is Stroke or StrokeAndFill. |
| 419 */ | 396 */ |
| 420 void setStrokeWidth(SkScalar width); | 397 void setStrokeWidth(SkScalar width); |
| 421 | 398 |
| 422 /** Return the paint's stroke miter value. This is used to control the | 399 /** Return the paint's stroke miter value. This is used to control the |
| 423 behavior of miter joins when the joins angle is sharp. | 400 behavior of miter joins when the joins angle is sharp. |
| 424 @return the paint's miter limit, used whenever the paint's style is | 401 @return the paint's miter limit, used whenever the paint's style is |
| 425 Stroke or StrokeAndFill. | 402 Stroke or StrokeAndFill. |
| 426 */ | 403 */ |
| 427 SkScalar getStrokeMiter() const { return fMiterLimit; } | 404 SkScalar getStrokeMiter() const { return fParts.getStrokeMiter(); } |
| 428 | 405 |
| 429 /** Set the paint's stroke miter value. This is used to control the | 406 /** Set the paint's stroke miter value. This is used to control the |
| 430 behavior of miter joins when the joins angle is sharp. This value must | 407 behavior of miter joins when the joins angle is sharp. This value must |
| 431 be >= 0. | 408 be >= 0. |
| 432 @param miter set the miter limit on the paint, used whenever the | 409 @param miter set the miter limit on the paint, used whenever the |
| 433 paint's style is Stroke or StrokeAndFill. | 410 paint's style is Stroke or StrokeAndFill. |
| 434 */ | 411 */ |
| 435 void setStrokeMiter(SkScalar miter); | 412 void setStrokeMiter(SkScalar miter); |
| 436 | 413 |
| 437 /** Cap enum specifies the settings for the paint's strokecap. This is the | 414 /** Cap enum specifies the settings for the paint's strokecap. This is the |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 457 | 434 |
| 458 kJoinCount, | 435 kJoinCount, |
| 459 kDefault_Join = kMiter_Join | 436 kDefault_Join = kMiter_Join |
| 460 }; | 437 }; |
| 461 | 438 |
| 462 /** Return the paint's stroke cap type, controlling how the start and end | 439 /** Return the paint's stroke cap type, controlling how the start and end |
| 463 of stroked lines and paths are treated. | 440 of stroked lines and paths are treated. |
| 464 @return the line cap style for the paint, used whenever the paint's | 441 @return the line cap style for the paint, used whenever the paint's |
| 465 style is Stroke or StrokeAndFill. | 442 style is Stroke or StrokeAndFill. |
| 466 */ | 443 */ |
| 467 Cap getStrokeCap() const { return (Cap)fCapType; } | 444 Cap getStrokeCap() const { return (Cap)fParts.getStrokeCap(); } |
| 468 | 445 |
| 469 /** Set the paint's stroke cap type. | 446 /** Set the paint's stroke cap type. |
| 470 @param cap set the paint's line cap style, used whenever the paint's | 447 @param cap set the paint's line cap style, used whenever the paint's |
| 471 style is Stroke or StrokeAndFill. | 448 style is Stroke or StrokeAndFill. |
| 472 */ | 449 */ |
| 473 void setStrokeCap(Cap cap); | 450 void setStrokeCap(Cap cap); |
| 474 | 451 |
| 475 /** Return the paint's stroke join type. | 452 /** Return the paint's stroke join type. |
| 476 @return the paint's line join style, used whenever the paint's style is | 453 @return the paint's line join style, used whenever the paint's style is |
| 477 Stroke or StrokeAndFill. | 454 Stroke or StrokeAndFill. |
| 478 */ | 455 */ |
| 479 Join getStrokeJoin() const { return (Join)fJoinType; } | 456 Join getStrokeJoin() const { return (Join)fParts.getStrokeJoin(); } |
|
scroggo
2014/04/15 17:21:07
Wait, are you casting from an SkPaintParts::Join t
reed1
2014/04/18 14:04:31
Temporary, to simplify all 1000+ callsites of SkPa
| |
| 480 | 457 |
| 481 /** Set the paint's stroke join type. | 458 /** Set the paint's stroke join type. |
| 482 @param join set the paint's line join style, used whenever the paint's | 459 @param join set the paint's line join style, used whenever the paint's |
| 483 style is Stroke or StrokeAndFill. | 460 style is Stroke or StrokeAndFill. |
| 484 */ | 461 */ |
| 485 void setStrokeJoin(Join join); | 462 void setStrokeJoin(Join join); |
| 486 | 463 |
| 487 /** | 464 /** |
| 488 * Applies any/all effects (patheffect, stroking) to src, returning the | 465 * Applies any/all effects (patheffect, stroking) to src, returning the |
| 489 * result in dst. The result is that drawing src with this paint will be | 466 * result in dst. The result is that drawing src with this paint will be |
| 490 * the same as drawing dst with a default paint (at least from the | 467 * the same as drawing dst with a default paint (at least from the |
| 491 * geometric perspective). | 468 * geometric perspective). |
| 492 * | 469 * |
| 493 * @param src input path | 470 * @param src input path |
| 494 * @param dst output path (may be the same as src) | 471 * @param dst output path (may be the same as src) |
| 495 * @param cullRect If not null, the dst path may be culled to this rect. | 472 * @param cullRect If not null, the dst path may be culled to this rect. |
| 496 * @return true if the path should be filled, or false if it should be | 473 * @return true if the path should be filled, or false if it should be |
| 497 * drawn with a hairline (width == 0) | 474 * drawn with a hairline (width == 0) |
| 498 */ | 475 */ |
| 499 bool getFillPath(const SkPath& src, SkPath* dst, | 476 bool getFillPath(const SkPath& src, SkPath* dst, |
| 500 const SkRect* cullRect = NULL) const; | 477 const SkRect* cullRect = NULL) const; |
| 501 | 478 |
| 502 /** Get the paint's shader object. | 479 /** Get the paint's shader object. |
| 503 <p /> | 480 <p /> |
| 504 The shader's reference count is not affected. | 481 The shader's reference count is not affected. |
| 505 @return the paint's shader (or NULL) | 482 @return the paint's shader (or NULL) |
| 506 */ | 483 */ |
| 507 SkShader* getShader() const { return fShader; } | 484 SkShader* getShader() const { return fParts.fShader; } |
| 508 | 485 |
| 509 /** Set or clear the shader object. | 486 /** Set or clear the shader object. |
| 510 * Shaders specify the source color(s) for what is being drawn. If a paint | 487 * Shaders specify the source color(s) for what is being drawn. If a paint |
| 511 * has no shader, then the paint's color is used. If the paint has a | 488 * has no shader, then the paint's color is used. If the paint has a |
| 512 * shader, then the shader's color(s) are use instead, but they are | 489 * shader, then the shader's color(s) are use instead, but they are |
| 513 * modulated by the paint's alpha. This makes it easy to create a shader | 490 * modulated by the paint's alpha. This makes it easy to create a shader |
| 514 * once (e.g. bitmap tiling or gradient) and then change its transparency | 491 * once (e.g. bitmap tiling or gradient) and then change its transparency |
| 515 * w/o having to modify the original shader... only the paint's alpha needs | 492 * w/o having to modify the original shader... only the paint's alpha needs |
| 516 * to be modified. | 493 * to be modified. |
| 517 * | 494 * |
| 518 * There is an exception to this only-respect-paint's-alpha rule: If the sh ader only generates | 495 * There is an exception to this only-respect-paint's-alpha rule: If the sh ader only generates |
| 519 * alpha (e.g. SkShader::CreateBitmapShader(bitmap, ...) where bitmap's col ortype is kAlpha_8) | 496 * alpha (e.g. SkShader::CreateBitmapShader(bitmap, ...) where bitmap's col ortype is kAlpha_8) |
| 520 * then the shader will use the paint's entire color to "colorize" its outp ut (modulating the | 497 * then the shader will use the paint's entire color to "colorize" its outp ut (modulating the |
| 521 * bitmap's alpha with the paint's color+alpha). | 498 * bitmap's alpha with the paint's color+alpha). |
| 522 * | 499 * |
| 523 * Pass NULL to clear any previous shader. | 500 * Pass NULL to clear any previous shader. |
| 524 * As a convenience, the parameter passed is also returned. | 501 * As a convenience, the parameter passed is also returned. |
| 525 * If a previous shader exists, its reference count is decremented. | 502 * If a previous shader exists, its reference count is decremented. |
| 526 * If shader is not NULL, its reference count is incremented. | 503 * If shader is not NULL, its reference count is incremented. |
| 527 * @param shader May be NULL. The shader to be installed in the paint | 504 * @param shader May be NULL. The shader to be installed in the paint |
| 528 * @return shader | 505 * @return shader |
| 529 */ | 506 */ |
| 530 SkShader* setShader(SkShader* shader); | 507 SkShader* setShader(SkShader* shader); |
| 531 | 508 |
| 532 /** Get the paint's colorfilter. If there is a colorfilter, its reference | 509 /** Get the paint's colorfilter. If there is a colorfilter, its reference |
| 533 count is not changed. | 510 count is not changed. |
| 534 @return the paint's colorfilter (or NULL) | 511 @return the paint's colorfilter (or NULL) |
| 535 */ | 512 */ |
| 536 SkColorFilter* getColorFilter() const { return fColorFilter; } | 513 SkColorFilter* getColorFilter() const { return fParts.fColorFilter; } |
| 537 | 514 |
| 538 /** Set or clear the paint's colorfilter, returning the parameter. | 515 /** Set or clear the paint's colorfilter, returning the parameter. |
| 539 <p /> | 516 <p /> |
| 540 If the paint already has a filter, its reference count is decremented. | 517 If the paint already has a filter, its reference count is decremented. |
| 541 If filter is not NULL, its reference count is incremented. | 518 If filter is not NULL, its reference count is incremented. |
| 542 @param filter May be NULL. The filter to be installed in the paint | 519 @param filter May be NULL. The filter to be installed in the paint |
| 543 @return filter | 520 @return filter |
| 544 */ | 521 */ |
| 545 SkColorFilter* setColorFilter(SkColorFilter* filter); | 522 SkColorFilter* setColorFilter(SkColorFilter* filter); |
| 546 | 523 |
| 547 /** Get the paint's xfermode object. | 524 /** Get the paint's xfermode object. |
| 548 <p /> | 525 <p /> |
| 549 The xfermode's reference count is not affected. | 526 The xfermode's reference count is not affected. |
| 550 @return the paint's xfermode (or NULL) | 527 @return the paint's xfermode (or NULL) |
| 551 */ | 528 */ |
| 552 SkXfermode* getXfermode() const { return fXfermode; } | 529 SkXfermode* getXfermode() const { return fParts.fXfermode; } |
| 553 | 530 |
| 554 /** Set or clear the xfermode object. | 531 /** Set or clear the xfermode object. |
| 555 <p /> | 532 <p /> |
| 556 Pass NULL to clear any previous xfermode. | 533 Pass NULL to clear any previous xfermode. |
| 557 As a convenience, the parameter passed is also returned. | 534 As a convenience, the parameter passed is also returned. |
| 558 If a previous xfermode exists, its reference count is decremented. | 535 If a previous xfermode exists, its reference count is decremented. |
| 559 If xfermode is not NULL, its reference count is incremented. | 536 If xfermode is not NULL, its reference count is incremented. |
| 560 @param xfermode May be NULL. The new xfermode to be installed in the | 537 @param xfermode May be NULL. The new xfermode to be installed in the |
| 561 paint | 538 paint |
| 562 @return xfermode | 539 @return xfermode |
| 563 */ | 540 */ |
| 564 SkXfermode* setXfermode(SkXfermode* xfermode); | 541 SkXfermode* setXfermode(SkXfermode* xfermode); |
| 565 | 542 |
| 566 /** Create an xfermode based on the specified Mode, and assign it into the | 543 /** Create an xfermode based on the specified Mode, and assign it into the |
| 567 paint, returning the mode that was set. If the Mode is SrcOver, then | 544 paint, returning the mode that was set. If the Mode is SrcOver, then |
| 568 the paint's xfermode is set to null. | 545 the paint's xfermode is set to null. |
| 569 */ | 546 */ |
| 570 SkXfermode* setXfermodeMode(SkXfermode::Mode); | 547 SkXfermode* setXfermodeMode(SkXfermode::Mode); |
| 571 | 548 |
| 572 /** Get the paint's patheffect object. | 549 /** Get the paint's patheffect object. |
| 573 <p /> | 550 <p /> |
| 574 The patheffect reference count is not affected. | 551 The patheffect reference count is not affected. |
| 575 @return the paint's patheffect (or NULL) | 552 @return the paint's patheffect (or NULL) |
| 576 */ | 553 */ |
| 577 SkPathEffect* getPathEffect() const { return fPathEffect; } | 554 SkPathEffect* getPathEffect() const { return fParts.fPathEffect; } |
| 578 | 555 |
| 579 /** Set or clear the patheffect object. | 556 /** Set or clear the patheffect object. |
| 580 <p /> | 557 <p /> |
| 581 Pass NULL to clear any previous patheffect. | 558 Pass NULL to clear any previous patheffect. |
| 582 As a convenience, the parameter passed is also returned. | 559 As a convenience, the parameter passed is also returned. |
| 583 If a previous patheffect exists, its reference count is decremented. | 560 If a previous patheffect exists, its reference count is decremented. |
| 584 If patheffect is not NULL, its reference count is incremented. | 561 If patheffect is not NULL, its reference count is incremented. |
| 585 @param effect May be NULL. The new patheffect to be installed in the | 562 @param effect May be NULL. The new patheffect to be installed in the |
| 586 paint | 563 paint |
| 587 @return effect | 564 @return effect |
| 588 */ | 565 */ |
| 589 SkPathEffect* setPathEffect(SkPathEffect* effect); | 566 SkPathEffect* setPathEffect(SkPathEffect* effect); |
| 590 | 567 |
| 591 /** Get the paint's maskfilter object. | 568 /** Get the paint's maskfilter object. |
| 592 <p /> | 569 <p /> |
| 593 The maskfilter reference count is not affected. | 570 The maskfilter reference count is not affected. |
| 594 @return the paint's maskfilter (or NULL) | 571 @return the paint's maskfilter (or NULL) |
| 595 */ | 572 */ |
| 596 SkMaskFilter* getMaskFilter() const { return fMaskFilter; } | 573 SkMaskFilter* getMaskFilter() const { return fParts.fMaskFilter; } |
| 597 | 574 |
| 598 /** Set or clear the maskfilter object. | 575 /** Set or clear the maskfilter object. |
| 599 <p /> | 576 <p /> |
| 600 Pass NULL to clear any previous maskfilter. | 577 Pass NULL to clear any previous maskfilter. |
| 601 As a convenience, the parameter passed is also returned. | 578 As a convenience, the parameter passed is also returned. |
| 602 If a previous maskfilter exists, its reference count is decremented. | 579 If a previous maskfilter exists, its reference count is decremented. |
| 603 If maskfilter is not NULL, its reference count is incremented. | 580 If maskfilter is not NULL, its reference count is incremented. |
| 604 @param maskfilter May be NULL. The new maskfilter to be installed in | 581 @param maskfilter May be NULL. The new maskfilter to be installed in |
| 605 the paint | 582 the paint |
| 606 @return maskfilter | 583 @return maskfilter |
| 607 */ | 584 */ |
| 608 SkMaskFilter* setMaskFilter(SkMaskFilter* maskfilter); | 585 SkMaskFilter* setMaskFilter(SkMaskFilter* maskfilter); |
| 609 | 586 |
| 610 // These attributes are for text/fonts | 587 // These attributes are for text/fonts |
| 611 | 588 |
| 612 /** Get the paint's typeface object. | 589 /** Get the paint's typeface object. |
| 613 <p /> | 590 <p /> |
| 614 The typeface object identifies which font to use when drawing or | 591 The typeface object identifies which font to use when drawing or |
| 615 measuring text. The typeface reference count is not affected. | 592 measuring text. The typeface reference count is not affected. |
| 616 @return the paint's typeface (or NULL) | 593 @return the paint's typeface (or NULL) |
| 617 */ | 594 */ |
| 618 SkTypeface* getTypeface() const { return fTypeface; } | 595 SkTypeface* getTypeface() const { return fParts.fTypeface; } |
| 619 | 596 |
| 620 /** Set or clear the typeface object. | 597 /** Set or clear the typeface object. |
| 621 <p /> | 598 <p /> |
| 622 Pass NULL to clear any previous typeface. | 599 Pass NULL to clear any previous typeface. |
| 623 As a convenience, the parameter passed is also returned. | 600 As a convenience, the parameter passed is also returned. |
| 624 If a previous typeface exists, its reference count is decremented. | 601 If a previous typeface exists, its reference count is decremented. |
| 625 If typeface is not NULL, its reference count is incremented. | 602 If typeface is not NULL, its reference count is incremented. |
| 626 @param typeface May be NULL. The new typeface to be installed in the | 603 @param typeface May be NULL. The new typeface to be installed in the |
| 627 paint | 604 paint |
| 628 @return typeface | 605 @return typeface |
| 629 */ | 606 */ |
| 630 SkTypeface* setTypeface(SkTypeface* typeface); | 607 SkTypeface* setTypeface(SkTypeface* typeface); |
| 631 | 608 |
| 632 /** Get the paint's rasterizer (or NULL). | 609 /** Get the paint's rasterizer (or NULL). |
| 633 <p /> | 610 <p /> |
| 634 The raster controls how paths/text are turned into alpha masks. | 611 The raster controls how paths/text are turned into alpha masks. |
| 635 @return the paint's rasterizer (or NULL) | 612 @return the paint's rasterizer (or NULL) |
| 636 */ | 613 */ |
| 637 SkRasterizer* getRasterizer() const { return fRasterizer; } | 614 SkRasterizer* getRasterizer() const { return fParts.fRasterizer; } |
| 638 | 615 |
| 639 /** Set or clear the rasterizer object. | 616 /** Set or clear the rasterizer object. |
| 640 <p /> | 617 <p /> |
| 641 Pass NULL to clear any previous rasterizer. | 618 Pass NULL to clear any previous rasterizer. |
| 642 As a convenience, the parameter passed is also returned. | 619 As a convenience, the parameter passed is also returned. |
| 643 If a previous rasterizer exists in the paint, its reference count is | 620 If a previous rasterizer exists in the paint, its reference count is |
| 644 decremented. If rasterizer is not NULL, its reference count is | 621 decremented. If rasterizer is not NULL, its reference count is |
| 645 incremented. | 622 incremented. |
| 646 @param rasterizer May be NULL. The new rasterizer to be installed in | 623 @param rasterizer May be NULL. The new rasterizer to be installed in |
| 647 the paint. | 624 the paint. |
| 648 @return rasterizer | 625 @return rasterizer |
| 649 */ | 626 */ |
| 650 SkRasterizer* setRasterizer(SkRasterizer* rasterizer); | 627 SkRasterizer* setRasterizer(SkRasterizer* rasterizer); |
| 651 | 628 |
| 652 SkImageFilter* getImageFilter() const { return fImageFilter; } | 629 SkImageFilter* getImageFilter() const { return fParts.fImageFilter; } |
| 653 SkImageFilter* setImageFilter(SkImageFilter*); | 630 SkImageFilter* setImageFilter(SkImageFilter*); |
| 654 | 631 |
| 655 SkAnnotation* getAnnotation() const { return fAnnotation; } | 632 SkAnnotation* getAnnotation() const { return fParts.fAnnotation; } |
| 656 SkAnnotation* setAnnotation(SkAnnotation*); | 633 SkAnnotation* setAnnotation(SkAnnotation*); |
| 657 | 634 |
| 658 /** | 635 /** |
| 659 * Returns true if there is an annotation installed on this paint, and | 636 * Returns true if there is an annotation installed on this paint, and |
| 660 * the annotation specifics no-drawing. | 637 * the annotation specifics no-drawing. |
| 661 */ | 638 */ |
| 662 SK_ATTR_DEPRECATED("use getAnnotation and check for non-null") | 639 SK_ATTR_DEPRECATED("use getAnnotation and check for non-null") |
| 663 bool isNoDrawAnnotation() const { return this->getAnnotation() != NULL; } | 640 bool isNoDrawAnnotation() const { return this->getAnnotation() != NULL; } |
| 664 | 641 |
| 665 /** | 642 /** |
| 666 * Return the paint's SkDrawLooper (if any). Does not affect the looper's | 643 * Return the paint's SkDrawLooper (if any). Does not affect the looper's |
| 667 * reference count. | 644 * reference count. |
| 668 */ | 645 */ |
| 669 SkDrawLooper* getLooper() const { return fLooper; } | 646 SkDrawLooper* getLooper() const { return fParts.fLooper; } |
| 670 | 647 |
| 671 /** | 648 /** |
| 672 * Set or clear the looper object. | 649 * Set or clear the looper object. |
| 673 * <p /> | 650 * <p /> |
| 674 * Pass NULL to clear any previous looper. | 651 * Pass NULL to clear any previous looper. |
| 675 * As a convenience, the parameter passed is also returned. | 652 * As a convenience, the parameter passed is also returned. |
| 676 * If a previous looper exists in the paint, its reference count is | 653 * If a previous looper exists in the paint, its reference count is |
| 677 * decremented. If looper is not NULL, its reference count is | 654 * decremented. If looper is not NULL, its reference count is |
| 678 * incremented. | 655 * incremented. |
| 679 * @param looper May be NULL. The new looper to be installed in the paint. | 656 * @param looper May be NULL. The new looper to be installed in the paint. |
| 680 * @return looper | 657 * @return looper |
| 681 */ | 658 */ |
| 682 SkDrawLooper* setLooper(SkDrawLooper* looper); | 659 SkDrawLooper* setLooper(SkDrawLooper* looper); |
| 683 | 660 |
| 684 enum Align { | 661 enum Align { |
| 685 kLeft_Align, | 662 kLeft_Align, |
| 686 kCenter_Align, | 663 kCenter_Align, |
| 687 kRight_Align, | 664 kRight_Align, |
| 688 }; | 665 }; |
| 689 enum { | 666 enum { |
| 690 kAlignCount = 3 | 667 kAlignCount = 3 |
| 691 }; | 668 }; |
| 692 | 669 |
| 693 /** Return the paint's Align value for drawing text. | 670 /** Return the paint's Align value for drawing text. |
| 694 @return the paint's Align value for drawing text. | 671 @return the paint's Align value for drawing text. |
| 695 */ | 672 */ |
| 696 Align getTextAlign() const { return (Align)fTextAlign; } | 673 Align getTextAlign() const { return (Align)fParts.getTextAlign(); } |
|
scroggo
2014/04/15 17:21:07
If we remove the duplication, this cast is unneces
| |
| 697 | 674 |
| 698 /** Set the paint's text alignment. | 675 /** Set the paint's text alignment. |
| 699 @param align set the paint's Align value for drawing text. | 676 @param align set the paint's Align value for drawing text. |
| 700 */ | 677 */ |
| 701 void setTextAlign(Align align); | 678 void setTextAlign(Align align); |
| 702 | 679 |
| 703 /** Return the paint's text size. | 680 /** Return the paint's text size. |
| 704 @return the paint's text size. | 681 @return the paint's text size. |
| 705 */ | 682 */ |
| 706 SkScalar getTextSize() const { return fTextSize; } | 683 SkScalar getTextSize() const { return fParts.getTextSize(); } |
| 707 | 684 |
| 708 /** Set the paint's text size. This value must be > 0 | 685 /** Set the paint's text size. This value must be > 0 |
| 709 @param textSize set the paint's text size. | 686 @param textSize set the paint's text size. |
| 710 */ | 687 */ |
| 711 void setTextSize(SkScalar textSize); | 688 void setTextSize(SkScalar textSize); |
| 712 | 689 |
| 713 /** Return the paint's horizontal scale factor for text. The default value | 690 /** Return the paint's horizontal scale factor for text. The default value |
| 714 is 1.0. | 691 is 1.0. |
| 715 @return the paint's scale factor in X for drawing/measuring text | 692 @return the paint's scale factor in X for drawing/measuring text |
| 716 */ | 693 */ |
| 717 SkScalar getTextScaleX() const { return fTextScaleX; } | 694 SkScalar getTextScaleX() const { return fParts.getTextScaleX(); } |
| 718 | 695 |
| 719 /** Set the paint's horizontal scale factor for text. The default value | 696 /** Set the paint's horizontal scale factor for text. The default value |
| 720 is 1.0. Values > 1.0 will stretch the text wider. Values < 1.0 will | 697 is 1.0. Values > 1.0 will stretch the text wider. Values < 1.0 will |
| 721 stretch the text narrower. | 698 stretch the text narrower. |
| 722 @param scaleX set the paint's scale factor in X for drawing/measuring | 699 @param scaleX set the paint's scale factor in X for drawing/measuring |
| 723 text. | 700 text. |
| 724 */ | 701 */ |
| 725 void setTextScaleX(SkScalar scaleX); | 702 void setTextScaleX(SkScalar scaleX); |
| 726 | 703 |
| 727 /** Return the paint's horizontal skew factor for text. The default value | 704 /** Return the paint's horizontal skew factor for text. The default value |
| 728 is 0. | 705 is 0. |
| 729 @return the paint's skew factor in X for drawing text. | 706 @return the paint's skew factor in X for drawing text. |
| 730 */ | 707 */ |
| 731 SkScalar getTextSkewX() const { return fTextSkewX; } | 708 SkScalar getTextSkewX() const { return fParts.getTextSkewX(); } |
| 732 | 709 |
| 733 /** Set the paint's horizontal skew factor for text. The default value | 710 /** Set the paint's horizontal skew factor for text. The default value |
| 734 is 0. For approximating oblique text, use values around -0.25. | 711 is 0. For approximating oblique text, use values around -0.25. |
| 735 @param skewX set the paint's skew factor in X for drawing text. | 712 @param skewX set the paint's skew factor in X for drawing text. |
| 736 */ | 713 */ |
| 737 void setTextSkewX(SkScalar skewX); | 714 void setTextSkewX(SkScalar skewX); |
| 738 | 715 |
| 739 /** Describes how to interpret the text parameters that are passed to paint | 716 /** Describes how to interpret the text parameters that are passed to paint |
| 740 methods like measureText() and getTextWidths(). | 717 methods like measureText() and getTextWidths(). |
| 741 */ | 718 */ |
| 742 enum TextEncoding { | 719 enum TextEncoding { |
| 743 kUTF8_TextEncoding, //!< the text parameters are UTF8 | 720 kUTF8_TextEncoding, //!< the text parameters are UTF8 |
| 744 kUTF16_TextEncoding, //!< the text parameters are UTF16 | 721 kUTF16_TextEncoding, //!< the text parameters are UTF16 |
| 745 kUTF32_TextEncoding, //!< the text parameters are UTF32 | 722 kUTF32_TextEncoding, //!< the text parameters are UTF32 |
| 746 kGlyphID_TextEncoding //!< the text parameters are glyph indices | 723 kGlyphID_TextEncoding //!< the text parameters are glyph indices |
| 747 }; | 724 }; |
| 748 | 725 |
| 749 TextEncoding getTextEncoding() const { return (TextEncoding)fTextEncoding; } | 726 TextEncoding getTextEncoding() const { return (TextEncoding)fParts.getTextEn coding(); } |
|
scroggo
2014/04/15 17:21:07
Same casting issue.
| |
| 750 | 727 |
| 751 void setTextEncoding(TextEncoding encoding); | 728 void setTextEncoding(TextEncoding encoding); |
| 752 | 729 |
| 753 struct FontMetrics { | 730 struct FontMetrics { |
| 754 /** Flags which indicate the confidence level of various metrics. | 731 /** Flags which indicate the confidence level of various metrics. |
| 755 A set flag indicates that the metric may be trusted. | 732 A set flag indicates that the metric may be trusted. |
| 756 */ | 733 */ |
| 757 enum FontMetricsFlags { | 734 enum FontMetricsFlags { |
| 758 kUnderlineThinknessIsValid_Flag = 1 << 0, | 735 kUnderlineThinknessIsValid_Flag = 1 << 0, |
| 759 kUnderlinePositionIsValid_Flag = 1 << 1, | 736 kUnderlinePositionIsValid_Flag = 1 << 1, |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1027 static SkMatrix* SetTextMatrix(SkMatrix* matrix, SkScalar size, | 1004 static SkMatrix* SetTextMatrix(SkMatrix* matrix, SkScalar size, |
| 1028 SkScalar scaleX, SkScalar skewX) { | 1005 SkScalar scaleX, SkScalar skewX) { |
| 1029 matrix->setScale(size * scaleX, size); | 1006 matrix->setScale(size * scaleX, size); |
| 1030 if (skewX) { | 1007 if (skewX) { |
| 1031 matrix->postSkew(skewX, 0); | 1008 matrix->postSkew(skewX, 0); |
| 1032 } | 1009 } |
| 1033 return matrix; | 1010 return matrix; |
| 1034 } | 1011 } |
| 1035 | 1012 |
| 1036 SkMatrix* setTextMatrix(SkMatrix* matrix) const { | 1013 SkMatrix* setTextMatrix(SkMatrix* matrix) const { |
| 1037 return SetTextMatrix(matrix, fTextSize, fTextScaleX, fTextSkewX); | 1014 return SetTextMatrix(matrix, fParts.fTextSize, fParts.fTextScaleX, fPart s.fTextSkewX); |
| 1038 } | 1015 } |
| 1039 | 1016 |
| 1040 SK_TO_STRING_NONVIRT() | 1017 SK_TO_STRING_NONVIRT() |
| 1041 | 1018 |
| 1042 struct FlatteningTraits { | 1019 struct FlatteningTraits { |
| 1043 static void Flatten(SkWriteBuffer& buffer, const SkPaint& paint); | 1020 static void Flatten(SkWriteBuffer& buffer, const SkPaint& paint); |
| 1044 static void Unflatten(SkReadBuffer& buffer, SkPaint* paint); | 1021 static void Unflatten(SkReadBuffer& buffer, SkPaint* paint); |
| 1045 }; | 1022 }; |
| 1046 | 1023 |
| 1047 private: | 1024 private: |
| 1048 SkTypeface* fTypeface; | 1025 SkPaintParts fParts; |
| 1049 SkPathEffect* fPathEffect; | 1026 uint32_t fDirtyBits; |
| 1050 SkShader* fShader; | 1027 |
| 1051 SkXfermode* fXfermode; | 1028 #ifdef SK_BUILD_FOR_ANDROID |
| 1052 SkMaskFilter* fMaskFilter; | 1029 SkPaintOptionsAndroid fPaintOptionsAndroid; |
| 1053 SkColorFilter* fColorFilter; | 1030 // In order for the == operator to work properly this must be the last field |
| 1054 SkRasterizer* fRasterizer; | 1031 // in the struct so that we can do a memcmp to this field's offset. |
| 1055 SkDrawLooper* fLooper; | 1032 uint32_t fGenerationID; |
| 1056 SkImageFilter* fImageFilter; | 1033 #endif |
| 1057 SkAnnotation* fAnnotation; | |
| 1058 | 1034 |
| 1059 SkScalar fTextSize; | 1035 uint32_t getBitfields() const { return fParts.fBitfields; } |
| 1060 SkScalar fTextScaleX; | |
| 1061 SkScalar fTextSkewX; | |
| 1062 SkColor fColor; | |
| 1063 SkScalar fWidth; | |
| 1064 SkScalar fMiterLimit; | |
| 1065 union { | |
| 1066 struct { | |
| 1067 // all of these bitfields should add up to 32 | |
| 1068 unsigned fFlags : 16; | |
| 1069 unsigned fTextAlign : 2; | |
| 1070 unsigned fCapType : 2; | |
| 1071 unsigned fJoinType : 2; | |
| 1072 unsigned fStyle : 2; | |
| 1073 unsigned fTextEncoding : 2; // 3 values | |
| 1074 unsigned fHinting : 2; | |
| 1075 //unsigned fFreeBits : 4; | |
| 1076 }; | |
| 1077 uint32_t fBitfields; | |
| 1078 }; | |
| 1079 uint32_t fDirtyBits; | |
| 1080 | |
| 1081 uint32_t getBitfields() const { return fBitfields; } | |
| 1082 void setBitfields(uint32_t bitfields); | 1036 void setBitfields(uint32_t bitfields); |
| 1083 | 1037 |
| 1084 SkDrawCacheProc getDrawCacheProc() const; | 1038 SkDrawCacheProc getDrawCacheProc() const; |
| 1085 SkMeasureCacheProc getMeasureCacheProc(TextBufferDirection dir, | 1039 SkMeasureCacheProc getMeasureCacheProc(TextBufferDirection dir, |
| 1086 bool needFullMetrics) const; | 1040 bool needFullMetrics) const; |
| 1087 | 1041 |
| 1088 SkScalar measure_text(SkGlyphCache*, const char* text, size_t length, | 1042 SkScalar measure_text(SkGlyphCache*, const char* text, size_t length, |
| 1089 int* count, SkRect* bounds) const; | 1043 int* count, SkRect* bounds) const; |
| 1090 | 1044 |
| 1091 SkGlyphCache* detachCache(const SkDeviceProperties* deviceProperties, const SkMatrix*) const; | 1045 SkGlyphCache* detachCache(const SkDeviceProperties* deviceProperties, const SkMatrix*) const; |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1139 | 1093 |
| 1140 friend class SkAutoGlyphCache; | 1094 friend class SkAutoGlyphCache; |
| 1141 friend class SkCanvas; | 1095 friend class SkCanvas; |
| 1142 friend class SkDraw; | 1096 friend class SkDraw; |
| 1143 friend class SkGraphics; // So Term() can be called. | 1097 friend class SkGraphics; // So Term() can be called. |
| 1144 friend class SkPDFDevice; | 1098 friend class SkPDFDevice; |
| 1145 friend class GrBitmapTextContext; | 1099 friend class GrBitmapTextContext; |
| 1146 friend class GrDistanceFieldTextContext; | 1100 friend class GrDistanceFieldTextContext; |
| 1147 friend class SkTextToPathIter; | 1101 friend class SkTextToPathIter; |
| 1148 friend class SkCanonicalizePaint; | 1102 friend class SkCanonicalizePaint; |
| 1149 | |
| 1150 #ifdef SK_BUILD_FOR_ANDROID | |
| 1151 SkPaintOptionsAndroid fPaintOptionsAndroid; | |
| 1152 | |
| 1153 // In order for the == operator to work properly this must be the last field | |
| 1154 // in the struct so that we can do a memcmp to this field's offset. | |
| 1155 uint32_t fGenerationID; | |
| 1156 #endif | |
| 1157 }; | 1103 }; |
| 1158 | 1104 |
| 1159 #endif | 1105 #endif |
| OLD | NEW |