CachedGlyphInfo.h revision 9f5dab3fc228fa11c32b483e6101ec086895a32b
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 Guy#include <SkFixed.h>
219f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy
229f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#include "CacheTexture.h"
239f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy
249f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guynamespace android {
259f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guynamespace uirenderer {
269f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy
279f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guystruct CachedGlyphInfo {
289f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    // Has the cache been invalidated?
299f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    bool mIsValid;
309f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    // Location of the cached glyph in the bitmap
319f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    // in case we need to resize the texture or
329f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    // render to bitmap
339f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    uint32_t mStartX;
349f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    uint32_t mStartY;
359f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    uint32_t mBitmapWidth;
369f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    uint32_t mBitmapHeight;
379f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    // Also cache texture coords for the quad
389f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    float mBitmapMinU;
399f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    float mBitmapMinV;
409f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    float mBitmapMaxU;
419f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    float mBitmapMaxV;
429f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    // Minimize how much we call freetype
439f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    uint32_t mGlyphIndex;
449f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    uint32_t mAdvanceX;
459f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    uint32_t mAdvanceY;
469f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    // Values below contain a glyph's origin in the bitmap
479f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    int32_t mBitmapLeft;
489f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    int32_t mBitmapTop;
499f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    // Auto-kerning
509f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    SkFixed mLsbDelta;
519f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    SkFixed mRsbDelta;
529f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy    CacheTexture* mCacheTexture;
539f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy};
549f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy
559f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy}; // namespace uirenderer
569f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy}; // namespace android
579f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy
589f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#endif // ANDROID_HWUI_CACHED_GLYPH_INFO_H
59