1 /* 2 * Copyright 2013 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SkPaintPriv_DEFINED 9 #define SkPaintPriv_DEFINED 10 11 #include "SkTypes.h" 12 13 class SkBitmap; 14 class SkImage; 15 class SkPaint; 16 17 enum SkPaintBitmapOpacity { 18 // No content replaces the paint's color 19 kNoBitmap_SkPaintBitmapOpacity = 0, 20 // The color replacement is known to be opaque 21 kOpaque_SkPaintBitmapOpacity = 1, 22 // We have no information about the color or it is transparent 23 kUnknown_SkPaintBitmapOpacity = 2 24 }; 25 26 /** Returns true if draw calls that use the paint will completely occlude 27 canvas contents that are covered by the draw. 28 @param paint The paint to be analyzed, NULL is equivalent to 29 the default paint. 30 @param contentType The type of the content that will be drawn, 31 kNoBitmap_SkPaintBitmapOpacity if there is no content in adition to the paint. 32 @return true if paint is opaque 33 */ 34 bool isPaintOpaque(const SkPaint* paint, SkPaintBitmapOpacity contentType); 35 36 /** Returns true if draw calls that use the paint will completely occlude 37 canvas contents that are covered by the draw. 38 @param paint The paint to be analyzed, NULL is equivalent to 39 the default paint. 40 @param bmpReplacesShader a bitmap to be used in place of the paint's 41 shader. 42 @return true if paint is opaque 43 */ 44 bool isPaintOpaque(const SkPaint* paint, const SkBitmap* bmpReplacesShader = NULL); 45 bool isPaintOpaque(const SkPaint* paint, const SkImage* image); 46 47 #endif 48