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_FONT_UTIL_H 189f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#define ANDROID_HWUI_FONT_UTIL_H 199f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy 209f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#include <SkUtils.h> 219f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy 229f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#include "Properties.h" 239f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy 249f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy/////////////////////////////////////////////////////////////////////////////// 259f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy// Defines 269f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy/////////////////////////////////////////////////////////////////////////////// 279f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy 289f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#define DEFAULT_TEXT_SMALL_CACHE_WIDTH 1024 299f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#define DEFAULT_TEXT_SMALL_CACHE_HEIGHT 256 309f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#define DEFAULT_TEXT_LARGE_CACHE_WIDTH 2048 319f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#define DEFAULT_TEXT_LARGE_CACHE_HEIGHT 512 329f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy 339f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#define TEXTURE_BORDER_SIZE 1 349f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy 359f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#define CACHE_BLOCK_ROUNDING_SIZE 4 369f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy 379f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#if RENDER_TEXT_AS_GLYPHS 389f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy typedef uint16_t glyph_t; 399f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy #define TO_GLYPH(g) g 409f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy #define GET_METRICS(paint, glyph) paint->getGlyphMetrics(glyph) 419f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy #define GET_GLYPH(text) nextGlyph((const uint16_t**) &text) 429f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy #define IS_END_OF_STRING(glyph) false 439f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy 449f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy static glyph_t nextGlyph(const uint16_t** srcPtr) { 459f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy const uint16_t* src = *srcPtr; 469f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy glyph_t g = *src++; 479f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy *srcPtr = src; 489f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy return g; 499f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy } 509f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#else 519f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy typedef SkUnichar glyph_t; 529f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy #define TO_GLYPH(g) ((SkUnichar) g) 539f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy #define GET_METRICS(paint, glyph) paint->getUnicharMetrics(glyph) 549f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy #define GET_GLYPH(text) SkUTF16_NextUnichar((const uint16_t**) &text) 559f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy #define IS_END_OF_STRING(glyph) glyph < 0 569f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#endif 579f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy 589f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#define AUTO_KERN(prev, next) (((next) - (prev) + 32) >> 6 << 16) 599f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy 609f5dab3fc228fa11c32b483e6101ec086895a32bRomain Guy#endif // ANDROID_HWUI_FONT_UTIL_H 61