1/*
2 * Copyright 2014 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 SkMaskCache_DEFINED
9#define SkMaskCache_DEFINED
10
11#include "SkBlurTypes.h"
12#include "SkCachedData.h"
13#include "SkMask.h"
14#include "SkRect.h"
15#include "SkResourceCache.h"
16#include "SkRRect.h"
17
18class SkMaskCache {
19public:
20    /**
21     * On success, return a ref to the SkCachedData that holds the pixels, and have mask
22     * already point to that memory.
23     *
24     * On failure, return nullptr.
25     */
26    static SkCachedData* FindAndRef(SkScalar sigma, SkBlurStyle style, SkBlurQuality quality,
27                                    const SkRRect& rrect, SkMask* mask,
28                                    SkResourceCache* localCache = nullptr);
29    static SkCachedData* FindAndRef(SkScalar sigma, SkBlurStyle style, SkBlurQuality quality,
30                                    const SkRect rects[], int count, SkMask* mask,
31                                    SkResourceCache* localCache = nullptr);
32
33    /**
34     * Add a mask and its pixel-data to the cache.
35     */
36    static void Add(SkScalar sigma, SkBlurStyle style, SkBlurQuality quality,
37                    const SkRRect& rrect, const SkMask& mask, SkCachedData* data,
38                    SkResourceCache* localCache = nullptr);
39    static void Add(SkScalar sigma, SkBlurStyle style, SkBlurQuality quality,
40                    const SkRect rects[], int count, const SkMask& mask, SkCachedData* data,
41                    SkResourceCache* localCache = nullptr);
42};
43
44#endif
45