Index: src/gpu/gl/GrGLPathRendering.cpp |
diff --git a/src/gpu/gl/GrGLPathRendering.cpp b/src/gpu/gl/GrGLPathRendering.cpp |
index e81d54c338250fa16a4331d4a90055bfbfd723ea..eb9f5a86f751a0b483c684478994eb3bfe372d3a 100644 |
--- a/src/gpu/gl/GrGLPathRendering.cpp |
+++ b/src/gpu/gl/GrGLPathRendering.cpp |
@@ -69,8 +69,6 @@ GrGLPathRendering::GrGLPathRendering(GrGLGpu* gpu) |
NULL != glInterface->fFunctions.fStencilThenCoverStrokePathInstanced; |
fCaps.fragmentInputGenSupport = |
NULL != glInterface->fFunctions.fProgramPathFragmentInputGen; |
- fCaps.glyphLoadingSupport = |
- NULL != glInterface->fFunctions.fPathMemoryGlyphIndexArray; |
SkASSERT(fCaps.fragmentInputGenSupport); |
} |
@@ -100,63 +98,6 @@ GrPathRange* GrGLPathRendering::createPathRange(GrPathRange::PathGenerator* path |
return SkNEW_ARGS(GrGLPathRange, (this->gpu(), pathGenerator, stroke)); |
} |
-GrPathRange* GrGLPathRendering::createGlyphs(const SkTypeface* typeface, |
- const SkDescriptor* desc, |
- const GrStrokeInfo& stroke) { |
- if (NULL != desc || !caps().glyphLoadingSupport || stroke.isDashed()) { |
- return GrPathRendering::createGlyphs(typeface, desc, stroke); |
- } |
- |
- if (NULL == typeface) { |
- typeface = SkTypeface::GetDefaultTypeface(); |
- SkASSERT(NULL != typeface); |
- } |
- |
- int faceIndex; |
- SkStreamAsset* asset = typeface->openStream(&faceIndex); |
- if (!asset) { |
- return GrPathRendering::createGlyphs(typeface, NULL, stroke); |
- } |
- SkAutoTDelete<SkStream> fontStream(asset); |
- |
- const size_t fontDataLength = fontStream->getLength(); |
- if (0 == fontDataLength) { |
- return GrPathRendering::createGlyphs(typeface, NULL, stroke); |
- } |
- |
- SkTArray<uint8_t> fontTempBuffer; |
- const void* fontData = fontStream->getMemoryBase(); |
- if (NULL == fontData) { |
- // TODO: Find a more efficient way to pass the font data (e.g. open file descriptor). |
- fontTempBuffer.reset(SkToInt(fontDataLength)); |
- fontStream->read(&fontTempBuffer.front(), fontDataLength); |
- fontData = &fontTempBuffer.front(); |
- } |
- |
- const int numPaths = typeface->countGlyphs(); |
- const GrGLuint basePathID = this->genPaths(numPaths); |
- |
- // Init the basePathID as the template path. |
- GrGLPath::InitPathObject(this->gpu(), basePathID, SkPath(), stroke); |
- |
- GrGLenum status; |
- GL_CALL_RET(status, PathMemoryGlyphIndexArray(basePathID, GR_GL_STANDARD_FONT_FORMAT, |
- fontDataLength, fontData, faceIndex, 0, |
- numPaths, basePathID, |
- SkPaint::kCanonicalTextSizeForPaths)); |
- |
- if (GR_GL_FONT_GLYPHS_AVAILABLE != status) { |
- this->deletePaths(basePathID, numPaths); |
- return GrPathRendering::createGlyphs(typeface, NULL, stroke); |
- } |
- |
- // This is a crude approximation. We may want to consider giving this class |
- // a pseudo PathGenerator whose sole purpose is to track the approximate gpu |
- // memory size. |
- const size_t gpuMemorySize = fontDataLength / 4; |
- return SkNEW_ARGS(GrGLPathRange, (this->gpu(), basePathID, numPaths, gpuMemorySize, stroke)); |
-} |
- |
void GrGLPathRendering::onStencilPath(const StencilPathArgs& args, const GrPath* path) { |
GrGLGpu* gpu = this->gpu(); |
SkASSERT(gpu->caps()->shaderCaps()->pathRenderingSupport()); |