11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 20910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2006 The Android Open Source Project 40910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 70910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project */ 80910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifndef SkGraphics_DEFINED 110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkGraphics_DEFINED 120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkTypes.h" 140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkGraphics { 160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic: 171cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger /** 181cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Call this at process initialization time if your environment does not 191cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * permit static global initializers that execute code. Note that 201cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Init() is not thread-safe. 211cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 225956d1c224aadf1d2712b46b32d3fc69a19915bdThe Android Open Source Project static void Init(); 230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 241cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger /** 251cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Call this to release any memory held privately, such as the font cache. 261cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 271cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger static void Term(); 284c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed 291cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger /** 301cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Return the version numbers for the library. If the parameter is not 311cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * null, it is set to the version number. 324c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed */ 334c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed static void GetVersion(int32_t* major, int32_t* minor, int32_t* patch); 344c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed 351cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger /** 361cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Return the max number of bytes that should be used by the font cache. 371cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * If the cache needs to allocate more, it will purge previous entries. 381cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * This max can be changed by calling SetFontCacheLimit(). 391cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 401cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger static size_t GetFontCacheLimit(); 411cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 421cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger /** 431cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Specify the max number of bytes that should be used by the font cache. 441cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * If the cache needs to allocate more, it will purge previous entries. 451cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 461cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * This function returns the previous setting, as if GetFontCacheLimit() 471cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * had be called before the new limit was set. 481cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 491cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger static size_t SetFontCacheLimit(size_t bytes); 501cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 511cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger /** 521cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * For debugging purposes, this will attempt to purge the font cache. It 531cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * does not change the limit, but will cause subsequent font measures and 541cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * draws to be recreated, since they will no longer be in the cache. 551cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 561cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger static void PurgeFontCache(); 571cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 581cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger /** 591cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Applications with command line options may pass optional state, such 601cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * as cache sizes, here, for instance: 611cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * font-cache-limit=12345678 621cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 631cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * The flags format is name=value[;name=value...] with no spaces. 641cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * This format is subject to change. 651cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 661cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger static void SetFlags(const char* flags); 671cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 680910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate: 690910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project /** This is automatically called by SkGraphics::Init(), and must be 700910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project implemented by the host OS. This allows the host OS to register a callback 710910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project with the C++ runtime to call SkGraphics::FreeCaches() 720910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project */ 730910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project static void InstallNewHandler(); 740910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 750910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 769f0b433bdd1680cd1d371c19d7e0ffde8fb2c484Mike Reedclass SkAutoGraphics { 779f0b433bdd1680cd1d371c19d7e0ffde8fb2c484Mike Reedpublic: 789f0b433bdd1680cd1d371c19d7e0ffde8fb2c484Mike Reed SkAutoGraphics() { 799f0b433bdd1680cd1d371c19d7e0ffde8fb2c484Mike Reed SkGraphics::Init(); 809f0b433bdd1680cd1d371c19d7e0ffde8fb2c484Mike Reed } 819f0b433bdd1680cd1d371c19d7e0ffde8fb2c484Mike Reed ~SkAutoGraphics() { 829f0b433bdd1680cd1d371c19d7e0ffde8fb2c484Mike Reed SkGraphics::Term(); 839f0b433bdd1680cd1d371c19d7e0ffde8fb2c484Mike Reed } 849f0b433bdd1680cd1d371c19d7e0ffde8fb2c484Mike Reed}; 859f0b433bdd1680cd1d371c19d7e0ffde8fb2c484Mike Reed 860910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 870910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 88