• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright 2006 The Android Open Source Project
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  */
8 
9 
10 #ifndef SkGraphics_DEFINED
11 #define SkGraphics_DEFINED
12 
13 #include "SkTypes.h"
14 
15 class SkGraphics {
16 public:
17     /**
18      *  Call this at process initialization time if your environment does not
19      *  permit static global initializers that execute code. Note that
20      *  Init() is not thread-safe.
21      */
22     static void Init();
23 
24     /**
25      *  Call this to release any memory held privately, such as the font cache.
26      */
27     static void Term();
28 
29     /**
30      *  Return the version numbers for the library. If the parameter is not
31      *  null, it is set to the version number.
32      */
33     static void GetVersion(int32_t* major, int32_t* minor, int32_t* patch);
34 
35     /**
36      *  Return the max number of bytes that should be used by the font cache.
37      *  If the cache needs to allocate more, it will purge previous entries.
38      *  This max can be changed by calling SetFontCacheLimit().
39      */
40     static size_t GetFontCacheLimit();
41 
42     /**
43      *  Specify the max number of bytes that should be used by the font cache.
44      *  If the cache needs to allocate more, it will purge previous entries.
45      *
46      *  This function returns the previous setting, as if GetFontCacheLimit()
47      *  had be called before the new limit was set.
48      */
49     static size_t SetFontCacheLimit(size_t bytes);
50 
51     /**
52      *  For debugging purposes, this will attempt to purge the font cache. It
53      *  does not change the limit, but will cause subsequent font measures and
54      *  draws to be recreated, since they will no longer be in the cache.
55      */
56     static void PurgeFontCache();
57 
58     /**
59      *  Applications with command line options may pass optional state, such
60      *  as cache sizes, here, for instance:
61      *  font-cache-limit=12345678
62      *
63      *  The flags format is name=value[;name=value...] with no spaces.
64      *  This format is subject to change.
65      */
66     static void SetFlags(const char* flags);
67 
68 private:
69     /** This is automatically called by SkGraphics::Init(), and must be
70         implemented by the host OS. This allows the host OS to register a callback
71         with the C++ runtime to call SkGraphics::FreeCaches()
72     */
73     static void InstallNewHandler();
74 };
75 
76 class SkAutoGraphics {
77 public:
SkAutoGraphics()78     SkAutoGraphics() {
79         SkGraphics::Init();
80     }
~SkAutoGraphics()81     ~SkAutoGraphics() {
82         SkGraphics::Term();
83     }
84 };
85 
86 #endif
87 
88