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

Side by Side Diff: include/core/SkShader.h

Issue 23021015: Initial error handling code (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: New serialization method Created 7 years, 3 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 | Annotate | Revision Log
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 8
9 #ifndef SkShader_DEFINED 9 #ifndef SkShader_DEFINED
10 #define SkShader_DEFINED 10 #define SkShader_DEFINED
(...skipping 12 matching lines...) Expand all
23 * 23 *
24 * Shaders specify the source color(s) for what is being drawn. If a paint 24 * Shaders specify the source color(s) for what is being drawn. If a paint
25 * has no shader, then the paint's color is used. If the paint has a 25 * has no shader, then the paint's color is used. If the paint has a
26 * shader, then the shader's color(s) are use instead, but they are 26 * shader, then the shader's color(s) are use instead, but they are
27 * modulated by the paint's alpha. This makes it easy to create a shader 27 * modulated by the paint's alpha. This makes it easy to create a shader
28 * once (e.g. bitmap tiling or gradient) and then change its transparency 28 * once (e.g. bitmap tiling or gradient) and then change its transparency
29 * w/o having to modify the original shader... only the paint's alpha needs 29 * w/o having to modify the original shader... only the paint's alpha needs
30 * to be modified. 30 * to be modified.
31 */ 31 */
32 class SK_API SkShader : public SkFlattenable { 32 class SK_API SkShader : public SkFlattenable {
33 typedef SkFlattenable INHERITED;
34
33 public: 35 public:
34 SK_DECLARE_INST_COUNT(SkShader) 36 SK_DECLARE_INST_COUNT(SkShader)
35 37
36 SkShader(); 38 SkShader();
37 virtual ~SkShader(); 39 virtual ~SkShader();
38 40
39 /** 41 /**
40 * Returns true if the local matrix is not an identity matrix. 42 * Returns true if the local matrix is not an identity matrix.
41 */ 43 */
42 bool hasLocalMatrix() const { return !fLocalMatrix.isIdentity(); } 44 bool hasLocalMatrix() const { return !fLocalMatrix.isIdentity(); }
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 * @param src The bitmap to use inside the shader 339 * @param src The bitmap to use inside the shader
338 * @param tmx The tiling mode to use when sampling the bitmap in the x-dir ection. 340 * @param tmx The tiling mode to use when sampling the bitmap in the x-dir ection.
339 * @param tmy The tiling mode to use when sampling the bitmap in the y-dir ection. 341 * @param tmy The tiling mode to use when sampling the bitmap in the y-dir ection.
340 * @return Returns a new shader object. Note: this function never retur ns null. 342 * @return Returns a new shader object. Note: this function never retur ns null.
341 */ 343 */
342 static SkShader* CreateBitmapShader(const SkBitmap& src, 344 static SkShader* CreateBitmapShader(const SkBitmap& src,
343 TileMode tmx, TileMode tmy); 345 TileMode tmx, TileMode tmy);
344 346
345 SkDEVCODE(virtual void toString(SkString* str) const;) 347 SkDEVCODE(virtual void toString(SkString* str) const;)
346 348
349 SK_DEFINE_FLATTENABLE_TYPE(SkShader)
350
347 protected: 351 protected:
348 enum MatrixClass { 352 enum MatrixClass {
349 kLinear_MatrixClass, // no perspective 353 kLinear_MatrixClass, // no perspective
350 kFixedStepInX_MatrixClass, // fast perspective, need to call fixedS tepInX() each scanline 354 kFixedStepInX_MatrixClass, // fast perspective, need to call fixedS tepInX() each scanline
351 kPerspective_MatrixClass // slow perspective, need to mappoints e ach pixel 355 kPerspective_MatrixClass // slow perspective, need to mappoints e ach pixel
352 }; 356 };
353 static MatrixClass ComputeMatrixClass(const SkMatrix&); 357 static MatrixClass ComputeMatrixClass(const SkMatrix&);
354 358
355 // These can be called by your subclass after setContext() has been called 359 // These can be called by your subclass after setContext() has been called
356 uint8_t getPaintAlpha() const { return fPaintAlpha; } 360 uint8_t getPaintAlpha() const { return fPaintAlpha; }
357 SkBitmap::Config getDeviceConfig() const { return (SkBitmap::Config)fDevi ceConfig; } 361 SkBitmap::Config getDeviceConfig() const { return (SkBitmap::Config)fDevi ceConfig; }
358 const SkMatrix& getTotalInverse() const { return fTotalInverse; } 362 const SkMatrix& getTotalInverse() const { return fTotalInverse; }
359 MatrixClass getInverseClass() const { return (MatrixClass)fTotalInve rseClass; } 363 MatrixClass getInverseClass() const { return (MatrixClass)fTotalInve rseClass; }
360 364
361 SkShader(SkFlattenableReadBuffer& ); 365 SkShader(SkFlattenableReadBuffer& );
362 virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; 366 virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
363 private: 367 private:
364 SkMatrix fLocalMatrix; 368 SkMatrix fLocalMatrix;
365 SkMatrix fTotalInverse; 369 SkMatrix fTotalInverse;
366 uint8_t fPaintAlpha; 370 uint8_t fPaintAlpha;
367 uint8_t fDeviceConfig; 371 uint8_t fDeviceConfig;
368 uint8_t fTotalInverseClass; 372 uint8_t fTotalInverseClass;
369 SkDEBUGCODE(SkBool8 fInSetContext;) 373 SkDEBUGCODE(SkBool8 fInSetContext;)
370 374
371 static SkShader* CreateBitmapShader(const SkBitmap& src, 375 static SkShader* CreateBitmapShader(const SkBitmap& src,
372 TileMode, TileMode, 376 TileMode, TileMode,
373 void* storage, size_t storageSize); 377 void* storage, size_t storageSize);
374 friend class SkAutoBitmapShaderInstall; 378 friend class SkAutoBitmapShaderInstall;
375 typedef SkFlattenable INHERITED;
376 }; 379 };
377 380
378 #endif 381 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698