aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkPaintPriv.h
blob: 88fc4fc3494ca1aed8d0eee6d71ea362bf2da50d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/*
 * 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"

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);
#endif