TextureCache.h revision ce0537b80087a6225273040a987414b1dd081aa0
1ce0537b80087a6225273040a987414b1dd081aa0Romain Guy/*
2ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * Copyright (C) 2010 The Android Open Source Project
3ce0537b80087a6225273040a987414b1dd081aa0Romain Guy *
4ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * Licensed under the Apache License, Version 2.0 (the "License");
5ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * you may not use this file except in compliance with the License.
6ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * You may obtain a copy of the License at
7ce0537b80087a6225273040a987414b1dd081aa0Romain Guy *
8ce0537b80087a6225273040a987414b1dd081aa0Romain Guy *      http://www.apache.org/licenses/LICENSE-2.0
9ce0537b80087a6225273040a987414b1dd081aa0Romain Guy *
10ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * Unless required by applicable law or agreed to in writing, software
11ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * distributed under the License is distributed on an "AS IS" BASIS,
12ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * See the License for the specific language governing permissions and
14ce0537b80087a6225273040a987414b1dd081aa0Romain Guy * limitations under the License.
15ce0537b80087a6225273040a987414b1dd081aa0Romain Guy */
16ce0537b80087a6225273040a987414b1dd081aa0Romain Guy
17ce0537b80087a6225273040a987414b1dd081aa0Romain Guy#ifndef ANDROID_UI_TEXTURE_CACHE_H
18ce0537b80087a6225273040a987414b1dd081aa0Romain Guy#define ANDROID_UI_TEXTURE_CACHE_H
19ce0537b80087a6225273040a987414b1dd081aa0Romain Guy
20ce0537b80087a6225273040a987414b1dd081aa0Romain Guy#include <SkBitmap.h>
21ce0537b80087a6225273040a987414b1dd081aa0Romain Guy
22ce0537b80087a6225273040a987414b1dd081aa0Romain Guy#include "Texture.h"
23ce0537b80087a6225273040a987414b1dd081aa0Romain Guy#include "GenerationCache.h"
24ce0537b80087a6225273040a987414b1dd081aa0Romain Guy
25ce0537b80087a6225273040a987414b1dd081aa0Romain Guynamespace android {
26ce0537b80087a6225273040a987414b1dd081aa0Romain Guynamespace uirenderer {
27ce0537b80087a6225273040a987414b1dd081aa0Romain Guy
28ce0537b80087a6225273040a987414b1dd081aa0Romain Guyclass TextureCache: public OnEntryRemoved<SkBitmap*, Texture*> {
29ce0537b80087a6225273040a987414b1dd081aa0Romain Guypublic:
30ce0537b80087a6225273040a987414b1dd081aa0Romain Guy    TextureCache(unsigned int maxEntries);
31ce0537b80087a6225273040a987414b1dd081aa0Romain Guy    ~TextureCache();
32ce0537b80087a6225273040a987414b1dd081aa0Romain Guy
33ce0537b80087a6225273040a987414b1dd081aa0Romain Guy    void operator()(SkBitmap* key, Texture* value);
34ce0537b80087a6225273040a987414b1dd081aa0Romain Guy
35ce0537b80087a6225273040a987414b1dd081aa0Romain Guy    Texture* get(SkBitmap* bitmap);
36ce0537b80087a6225273040a987414b1dd081aa0Romain Guy    Texture* remove(SkBitmap* bitmap);
37ce0537b80087a6225273040a987414b1dd081aa0Romain Guy    void clear();
38ce0537b80087a6225273040a987414b1dd081aa0Romain Guy
39ce0537b80087a6225273040a987414b1dd081aa0Romain Guyprivate:
40ce0537b80087a6225273040a987414b1dd081aa0Romain Guy    Texture* generateTexture(SkBitmap* bitmap);
41ce0537b80087a6225273040a987414b1dd081aa0Romain Guy
42ce0537b80087a6225273040a987414b1dd081aa0Romain Guy    GenerationCache<SkBitmap, Texture> mCache;
43ce0537b80087a6225273040a987414b1dd081aa0Romain Guy}; // class TextureCache
44ce0537b80087a6225273040a987414b1dd081aa0Romain Guy
45ce0537b80087a6225273040a987414b1dd081aa0Romain Guy}; // namespace uirenderer
46ce0537b80087a6225273040a987414b1dd081aa0Romain Guy}; // namespace android
47ce0537b80087a6225273040a987414b1dd081aa0Romain Guy
48ce0537b80087a6225273040a987414b1dd081aa0Romain Guy#endif // ANDROID_UI_TEXTURE_CACHE_H
49