19f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy/*
29f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy * Copyright (C) 2012 The Android Open Source Project
39f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy *
49f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy * Licensed under the Apache License, Version 2.0 (the "License");
59f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy * you may not use this file except in compliance with the License.
69f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy * You may obtain a copy of the License at
79f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy *
89f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy *      http://www.apache.org/licenses/LICENSE-2.0
99f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy *
109f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy * Unless required by applicable law or agreed to in writing, software
119f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy * distributed under the License is distributed on an "AS IS" BASIS,
129f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy * See the License for the specific language governing permissions and
149f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy * limitations under the License.
159f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy */
169f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy
179f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#ifndef ANDROID_HWUI_CACHED_GLYPH_INFO_H
189f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#define ANDROID_HWUI_CACHED_GLYPH_INFO_H
199f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy
209f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guynamespace android {
219f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guynamespace uirenderer {
229f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy
232dc236b2bae13b9a0ed9b3f7320502aecd7983b3Tom Hudsonclass CacheTexture;
242dc236b2bae13b9a0ed9b3f7320502aecd7983b3Tom Hudson
259f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guystruct CachedGlyphInfo {
269f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    // Has the cache been invalidated?
279f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    bool mIsValid;
289f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    // Location of the cached glyph in the bitmap
299f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    // in case we need to resize the texture or
309f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    // render to bitmap
319f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    uint32_t mStartX;
329f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    uint32_t mStartY;
339f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    uint32_t mBitmapWidth;
349f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    uint32_t mBitmapHeight;
359f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    // Also cache texture coords for the quad
369f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    float mBitmapMinU;
379f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    float mBitmapMinV;
389f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    float mBitmapMaxU;
399f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    float mBitmapMaxV;
409f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    // Minimize how much we call freetype
419f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    uint32_t mGlyphIndex;
42f4f18a25b305bb16355e3e1883d9bd454b36cdf7Ben Wagner    float mAdvanceX;
43f4f18a25b305bb16355e3e1883d9bd454b36cdf7Ben Wagner    float mAdvanceY;
449f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    // Values below contain a glyph's origin in the bitmap
459f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    int32_t mBitmapLeft;
469f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    int32_t mBitmapTop;
47f4f18a25b305bb16355e3e1883d9bd454b36cdf7Ben Wagner    // Auto-kerning; represents a 2.6 fixed-point value with range [-1, 1].
48f4f18a25b305bb16355e3e1883d9bd454b36cdf7Ben Wagner    int8_t mLsbDelta;
49f4f18a25b305bb16355e3e1883d9bd454b36cdf7Ben Wagner    int8_t mRsbDelta;
509f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    CacheTexture* mCacheTexture;
519f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy};
529f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy
539f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy}; // namespace uirenderer
549f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy}; // namespace android
559f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy
569f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#endif // ANDROID_HWUI_CACHED_GLYPH_INFO_H
57