PatchCache.h revision 2728f961614a385df1f056fc24803a9f65c90fab
1f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy/*
2f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy * Copyright (C) 2010 The Android Open Source Project
3f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy *
4f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy * Licensed under the Apache License, Version 2.0 (the "License");
5f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy * you may not use this file except in compliance with the License.
6f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy * You may obtain a copy of the License at
7f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy *
8f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy *      http://www.apache.org/licenses/LICENSE-2.0
9f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy *
10f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy * Unless required by applicable law or agreed to in writing, software
11f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy * distributed under the License is distributed on an "AS IS" BASIS,
12f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy * See the License for the specific language governing permissions and
14f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy * limitations under the License.
15f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy */
16f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
17f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy#ifndef ANDROID_UI_PATCH_CACHE_H
18f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy#define ANDROID_UI_PATCH_CACHE_H
19f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
202728f961614a385df1f056fc24803a9f65c90fabRomain Guy#include <utils/KeyedVector.h>
212728f961614a385df1f056fc24803a9f65c90fabRomain Guy
22f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy#include "Patch.h"
23f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
24f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guynamespace android {
25f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guynamespace uirenderer {
26f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
27f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy///////////////////////////////////////////////////////////////////////////////
28f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy// Defines
29f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy///////////////////////////////////////////////////////////////////////////////
30f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
31f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy// Debug
32f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy#define DEBUG_PATCHES 0
33f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
34f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy// Debug
35f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy#if DEBUG_PATCHES
36f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy    #define PATCH_LOGD(...) LOGD(__VA_ARGS__)
37f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy#else
38f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy    #define PATCH_LOGD(...)
39f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy#endif
40f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
41f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy///////////////////////////////////////////////////////////////////////////////
42f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy// Cache
43f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy///////////////////////////////////////////////////////////////////////////////
44f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
452728f961614a385df1f056fc24803a9f65c90fabRomain Guyclass PatchCache {
46f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guypublic:
47fb8b763f762ae21923c58d64caa729b012f40e05Romain Guy    PatchCache();
48f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy    PatchCache(uint32_t maxCapacity);
49f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy    ~PatchCache();
50f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
512728f961614a385df1f056fc24803a9f65c90fabRomain Guy    Patch* get(const float bitmapWidth, const float bitmapHeight,
522728f961614a385df1f056fc24803a9f65c90fabRomain Guy            const float pixelWidth, const float pixelHeight,
532728f961614a385df1f056fc24803a9f65c90fabRomain Guy            const int32_t* xDivs, const int32_t* yDivs,
542728f961614a385df1f056fc24803a9f65c90fabRomain Guy            const uint32_t width, const uint32_t height);
55f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy    void clear();
56f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
57f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guyprivate:
582728f961614a385df1f056fc24803a9f65c90fabRomain Guy    uint32_t mMaxEntries;
592728f961614a385df1f056fc24803a9f65c90fabRomain Guy    KeyedVector<PatchDescription, Patch*> mCache;
60f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy}; // class PatchCache
61f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
62f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy}; // namespace uirenderer
63f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy}; // namespace android
64f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
65f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy#endif // ANDROID_UI_PATCH_CACHE_H
66