/*
* Copyright 2013 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SkPaintPriv_DEFINED
#define SkPaintPriv_DEFINED
#include "SkTypes.h"
class SkBitmap;
class SkImage;
class SkPaint;
enum SkPaintBitmapOpacity {
// No content replaces the paint's color
kNoBitmap_SkPaintBitmapOpacity = 0,
// The color replacement is known to be opaque
kOpaque_SkPaintBitmapOpacity = 1,
// We have no information about the color or it is transparent
kUnknown_SkPaintBitmapOpacity = 2
};
/** Returns true if draw calls that use the paint will completely occlude
canvas contents that are covered by the draw.
@param paint The paint to be analyzed, NULL is equivalent to
the default paint.
@param contentType The type of the content that will be drawn,
kNoBitmap_SkPaintBitmapOpacity if there is no content in adition to the paint.
@return true if paint is opaque
*/
bool isPaintOpaque(const SkPaint* paint, SkPaintBitmapOpacity contentType);
/** Returns true if draw calls that use the paint will completely occlude
canvas contents that are covered by the draw.
@param paint The paint to be analyzed, NULL is equivalent to
the default paint.
@param bmpReplacesShader a bitmap to be used in place of the paint's
shader.
@return true if paint is opaque
*/
bool isPaintOpaque(const SkPaint* paint, const SkBitmap* bmpReplacesShader = NULL);
bool isPaintOpaque(const SkPaint* paint, const SkImage* image);
#endif