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