Example #1
0
bool SkGlyphCache::initializePath(SkGlyph* glyph, const volatile void* data, size_t size) {
    // Don't overwrite the path if we already have one. We could have used a fallback if the
    // glyph was missing earlier.
    if (glyph->fPathData) return true;

    if (glyph->fWidth) {
        SkGlyph::PathData* pathData = fAlloc.make<SkGlyph::PathData>();
        glyph->fPathData = pathData;
        pathData->fIntercept = nullptr;
        SkPath* path = new SkPath;
        if (!path->readFromMemory(const_cast<const void*>(data), size)) {
            delete path;
            return false;
        }
        pathData->fPath = path;
        fMemoryUsed += compute_path_size(*path);
    }

    return true;
}