/*
 * 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

class SkBitmap;
class SkPaint;

#include "SkTypes.h"
/** 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);

/** Returns true if the provided paint has fields which are not
    immutable (and will thus require deep copying).
    @param paint the paint to be analyzed
    @return true if the paint requires a deep copy
*/
bool NeedsDeepCopy(const SkPaint& paint);
#endif
