| |
| /* |
| * Copyright 2006 The Android Open Source Project |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| |
| #ifndef SkGraphics_DEFINED |
| #define SkGraphics_DEFINED |
| |
| #include "SkTypes.h" |
| |
| class SkGraphics { |
| public: |
| /** |
| * Call this at process initialization time if your environment does not |
| * permit static global initializers that execute code. Note that |
| * Init() is not thread-safe. |
| */ |
| static void Init(); |
| |
| /** |
| * Call this to release any memory held privately, such as the font cache. |
| */ |
| static void Term(); |
| |
| /** |
| * Return the version numbers for the library. If the parameter is not |
| * null, it is set to the version number. |
| */ |
| static void GetVersion(int32_t* major, int32_t* minor, int32_t* patch); |
| |
| /** |
| * Return the max number of bytes that should be used by the font cache. |
| * If the cache needs to allocate more, it will purge previous entries. |
| * This max can be changed by calling SetFontCacheLimit(). |
| */ |
| static size_t GetFontCacheLimit(); |
| |
| /** |
| * Specify the max number of bytes that should be used by the font cache. |
| * If the cache needs to allocate more, it will purge previous entries. |
| * |
| * This function returns the previous setting, as if GetFontCacheLimit() |
| * had be called before the new limit was set. |
| */ |
| static size_t SetFontCacheLimit(size_t bytes); |
| |
| /** |
| * For debugging purposes, this will attempt to purge the font cache. It |
| * does not change the limit, but will cause subsequent font measures and |
| * draws to be recreated, since they will no longer be in the cache. |
| */ |
| static void PurgeFontCache(); |
| |
| /** |
| * Applications with command line options may pass optional state, such |
| * as cache sizes, here, for instance: |
| * font-cache-limit=12345678 |
| * |
| * The flags format is name=value[;name=value...] with no spaces. |
| * This format is subject to change. |
| */ |
| static void SetFlags(const char* flags); |
| |
| private: |
| /** This is automatically called by SkGraphics::Init(), and must be |
| implemented by the host OS. This allows the host OS to register a callback |
| with the C++ runtime to call SkGraphics::FreeCaches() |
| */ |
| static void InstallNewHandler(); |
| }; |
| |
| class SkAutoGraphics { |
| public: |
| SkAutoGraphics() { |
| SkGraphics::Init(); |
| } |
| ~SkAutoGraphics() { |
| SkGraphics::Term(); |
| } |
| }; |
| |
| #endif |
| |