| /* | |
| * Copyright 2015 Google Inc. | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #include "src/core/SkArenaAlloc.h" | |
| #include "src/core/SkDistanceFieldGen.h" | |
| #include "src/core/SkStrikeSpec.h" | |
| #include "src/gpu/GrCaps.h" | |
| #include "src/gpu/GrColor.h" | |
| #include "src/gpu/GrDistanceFieldGenFromVector.h" | |
| #include "src/gpu/text/GrAtlasManager.h" | |
| #include "src/gpu/text/GrStrikeCache.h" | |
| GrStrikeCache::~GrStrikeCache() { | |
| this->freeAll(); | |
| } | |
| void GrStrikeCache::freeAll() { | |
| fCache.reset(); | |
| } | |
| /////////////////////////////////////////////////////////////////////////////// | |
| /* | |
| The text strike is specific to a given font/style/matrix setup, which is | |
| represented by the GrHostFontScaler object we are given in getGlyph(). | |
| We map a 32bit glyphID to a GrGlyph record, which in turn points to a | |
| atlas and a position within that texture. | |
| */ | |
| GrTextStrike::GrTextStrike(const SkDescriptor& key) : fFontScalerKey(key) {} | |
| GrGlyph* GrTextStrike::getGlyph(SkPackedGlyphID packedGlyphID) { | |
| GrGlyph* grGlyph = fCache.findOrNull(packedGlyphID); | |
| if (grGlyph == nullptr) { | |
| grGlyph = fAlloc.make<GrGlyph>(packedGlyphID); | |
| fCache.set(grGlyph); | |
| } | |
| return grGlyph; | |
| } | |