/* * 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; }