| /* |
| * 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. |
| */ |
| |
| #include "include/core/SkGraphics.h" |
| |
| #include "src/core/SkBitmapProcState.h" |
| #include "src/core/SkBlitMask.h" |
| #include "src/core/SkBlitRow.h" |
| #include "src/core/SkCpu.h" |
| #include "src/core/SkImageFilter_Base.h" |
| #include "src/core/SkMemset.h" |
| #include "src/core/SkOpts.h" |
| #include "src/core/SkResourceCache.h" |
| #include "src/core/SkStrikeCache.h" |
| #include "src/core/SkSwizzlePriv.h" |
| #include "src/core/SkTypefaceCache.h" |
| |
| void SkGraphics::Init() { |
| // SkGraphics::Init() must be thread-safe and idempotent. |
| SkCpu::CacheRuntimeFeatures(); |
| SkOpts::Init(); |
| SkOpts::Init_BitmapProcState(); |
| SkOpts::Init_BlitMask(); |
| SkOpts::Init_BlitRow(); |
| SkOpts::Init_Memset(); |
| SkOpts::Init_Swizzler(); |
| } |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| void SkGraphics::DumpMemoryStatistics(SkTraceMemoryDump* dump) { |
| SkResourceCache::DumpMemoryStatistics(dump); |
| SkStrikeCache::DumpMemoryStatistics(dump); |
| } |
| |
| void SkGraphics::PurgeAllCaches() { |
| SkGraphics::PurgeFontCache(); |
| SkGraphics::PurgeResourceCache(); |
| SkImageFilter_Base::PurgeCache(); |
| } |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| size_t SkGraphics::GetFontCacheLimit() { |
| return SkStrikeCache::GlobalStrikeCache()->getCacheSizeLimit(); |
| } |
| |
| size_t SkGraphics::SetFontCacheLimit(size_t bytes) { |
| return SkStrikeCache::GlobalStrikeCache()->setCacheSizeLimit(bytes); |
| } |
| |
| size_t SkGraphics::GetFontCacheUsed() { |
| return SkStrikeCache::GlobalStrikeCache()->getTotalMemoryUsed(); |
| } |
| |
| int SkGraphics::GetFontCacheCountLimit() { |
| return SkStrikeCache::GlobalStrikeCache()->getCacheCountLimit(); |
| } |
| |
| int SkGraphics::SetFontCacheCountLimit(int count) { |
| return SkStrikeCache::GlobalStrikeCache()->setCacheCountLimit(count); |
| } |
| |
| int SkGraphics::GetFontCacheCountUsed() { |
| return SkStrikeCache::GlobalStrikeCache()->getCacheCountUsed(); |
| } |
| |
| void SkGraphics::PurgeFontCache() { |
| SkStrikeCache::GlobalStrikeCache()->purgeAll(); |
| SkTypefaceCache::PurgeAll(); |
| } |
| |
| void SkGraphics::PurgePinnedFontCache() { |
| SkStrikeCache::GlobalStrikeCache()->purgePinned(); |
| } |
| |
| static int gTypefaceCacheCountLimit = 1024; // historical default value |
| |
| int SkGraphics::GetTypefaceCacheCountLimit() { |
| return gTypefaceCacheCountLimit; |
| } |
| |
| int SkGraphics::SetTypefaceCacheCountLimit(int count) { |
| const int prev = gTypefaceCacheCountLimit; |
| gTypefaceCacheCountLimit = count; |
| return prev; |
| } |
| |
| static SkGraphics::OpenTypeSVGDecoderFactory gSVGDecoderFactory = nullptr; |
| |
| SkGraphics::OpenTypeSVGDecoderFactory |
| SkGraphics::SetOpenTypeSVGDecoderFactory(OpenTypeSVGDecoderFactory svgDecoderFactory) { |
| OpenTypeSVGDecoderFactory old(gSVGDecoderFactory); |
| gSVGDecoderFactory = svgDecoderFactory; |
| return old; |
| } |
| |
| SkGraphics::OpenTypeSVGDecoderFactory SkGraphics::GetOpenTypeSVGDecoderFactory() { |
| return gSVGDecoderFactory; |
| } |