Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(585)

Side by Side Diff: src/gpu/SkGpuDevice.cpp

Issue 1015173002: Let text contexts fall back directly to paths (Closed) Base URL: https://skia.googlesource.com/skia.git@text-blob-to-context
Patch Set: move createTextContext to private Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/gpu/SkGpuDevice.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkGpuDevice.h" 8 #include "SkGpuDevice.h"
9 9
10 #include "GrBitmapTextContext.h" 10 #include "GrBitmapTextContext.h"
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 fNeedClear = flags & kNeedClear_Flag; 153 fNeedClear = flags & kNeedClear_Flag;
154 154
155 fRenderTarget = SkRef(rt); 155 fRenderTarget = SkRef(rt);
156 156
157 SkImageInfo info = rt->surfacePriv().info(); 157 SkImageInfo info = rt->surfacePriv().info();
158 SkPixelRef* pr = SkNEW_ARGS(SkGrPixelRef, (info, rt)); 158 SkPixelRef* pr = SkNEW_ARGS(SkGrPixelRef, (info, rt));
159 fLegacyBitmap.setInfo(info); 159 fLegacyBitmap.setInfo(info);
160 fLegacyBitmap.setPixelRef(pr)->unref(); 160 fLegacyBitmap.setPixelRef(pr)->unref();
161 161
162 bool useDFT = fSurfaceProps.isUseDistanceFieldFonts(); 162 bool useDFT = fSurfaceProps.isUseDistanceFieldFonts();
163 fTextContext = fContext->createTextContext(fRenderTarget, this->getLeakyProp erties(), useDFT); 163 fTextContext = fContext->createTextContext(fRenderTarget, this, this->getLea kyProperties(),
164 useDFT);
164 } 165 }
165 166
166 GrRenderTarget* SkGpuDevice::CreateRenderTarget(GrContext* context, SkSurface::B udgeted budgeted, 167 GrRenderTarget* SkGpuDevice::CreateRenderTarget(GrContext* context, SkSurface::B udgeted budgeted,
167 const SkImageInfo& origInfo, int sampleCount) { 168 const SkImageInfo& origInfo, int sampleCount) {
168 if (kUnknown_SkColorType == origInfo.colorType() || 169 if (kUnknown_SkColorType == origInfo.colorType() ||
169 origInfo.width() < 0 || origInfo.height() < 0) { 170 origInfo.width() < 0 || origInfo.height() < 0) {
170 return NULL; 171 return NULL;
171 } 172 }
172 173
173 if (!context) { 174 if (!context) {
(...skipping 1643 matching lines...) Expand 10 before | Expand all | Expand 10 after
1817 size_t byteLength, SkScalar x, SkScalar y, 1818 size_t byteLength, SkScalar x, SkScalar y,
1818 const SkPaint& paint) { 1819 const SkPaint& paint) {
1819 CHECK_SHOULD_DRAW(draw); 1820 CHECK_SHOULD_DRAW(draw);
1820 GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice::drawText", fContext); 1821 GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice::drawText", fContext);
1821 1822
1822 GrPaint grPaint; 1823 GrPaint grPaint;
1823 SkPaint2GrPaintShader(this->context(), fRenderTarget, paint, *draw.fMatrix, true, &grPaint); 1824 SkPaint2GrPaintShader(this->context(), fRenderTarget, paint, *draw.fMatrix, true, &grPaint);
1824 1825
1825 SkDEBUGCODE(this->validate();) 1826 SkDEBUGCODE(this->validate();)
1826 1827
1827 if (!fTextContext->drawText(fRenderTarget, fClip, grPaint, paint, *draw.fMat rix, 1828 fTextContext->drawText(fRenderTarget, fClip, grPaint, paint, *draw.fMatrix,
1828 (const char *)text, byteLength, x, y)) { 1829 (const char *)text, byteLength, x, y, draw.fClip->get Bounds());
1829 // this will just call our drawPath()
1830 draw.drawText_asPaths((const char*)text, byteLength, x, y, paint);
1831 }
1832 } 1830 }
1833 1831
1834 void SkGpuDevice::drawPosText(const SkDraw& draw, const void* text, size_t byteL ength, 1832 void SkGpuDevice::drawPosText(const SkDraw& draw, const void* text, size_t byteL ength,
1835 const SkScalar pos[], int scalarsPerPos, 1833 const SkScalar pos[], int scalarsPerPos,
1836 const SkPoint& offset, const SkPaint& paint) { 1834 const SkPoint& offset, const SkPaint& paint) {
1837 GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice::drawPosText", fContext); 1835 GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice::drawPosText", fContext);
1838 CHECK_SHOULD_DRAW(draw); 1836 CHECK_SHOULD_DRAW(draw);
1839 1837
1840 GrPaint grPaint; 1838 GrPaint grPaint;
1841 SkPaint2GrPaintShader(this->context(), fRenderTarget, paint, *draw.fMatrix, true, &grPaint); 1839 SkPaint2GrPaintShader(this->context(), fRenderTarget, paint, *draw.fMatrix, true, &grPaint);
1842 1840
1843 SkDEBUGCODE(this->validate();) 1841 SkDEBUGCODE(this->validate();)
1844 1842
1845 if (!fTextContext->drawPosText(fRenderTarget, fClip, grPaint, paint, *draw.f Matrix, 1843 fTextContext->drawPosText(fRenderTarget, fClip, grPaint, paint, *draw.fMatri x,
1846 (const char *)text, byteLength, pos, scalarsP erPos, offset)) { 1844 (const char *)text, byteLength, pos, scalarsPerPos , offset,
1847 // this will just call our drawPath() 1845 draw.fClip->getBounds());
1848 draw.drawPosText_asPaths((const char*)text, byteLength, pos, scalarsPerP os, offset, paint);
1849 }
1850 } 1846 }
1851 1847
1852 /////////////////////////////////////////////////////////////////////////////// 1848 ///////////////////////////////////////////////////////////////////////////////
1853 1849
1854 bool SkGpuDevice::onShouldDisableLCD(const SkPaint& paint) const { 1850 bool SkGpuDevice::onShouldDisableLCD(const SkPaint& paint) const {
1855 if (paint.getShader() || 1851 if (paint.getShader() ||
1856 !SkXfermode::IsMode(paint.getXfermode(), SkXfermode::kSrcOver_Mode) || 1852 !SkXfermode::IsMode(paint.getXfermode(), SkXfermode::kSrcOver_Mode) ||
1857 paint.getMaskFilter() || 1853 paint.getMaskFilter() ||
1858 paint.getRasterizer() || 1854 paint.getRasterizer() ||
1859 paint.getColorFilter() || 1855 paint.getColorFilter() ||
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
1976 #endif 1972 #endif
1977 } 1973 }
1978 1974
1979 SkImageFilter::Cache* SkGpuDevice::getImageFilterCache() { 1975 SkImageFilter::Cache* SkGpuDevice::getImageFilterCache() {
1980 // We always return a transient cache, so it is freed after each 1976 // We always return a transient cache, so it is freed after each
1981 // filter traversal. 1977 // filter traversal.
1982 return SkImageFilter::Cache::Create(kDefaultImageFilterCacheSize); 1978 return SkImageFilter::Cache::Create(kDefaultImageFilterCacheSize);
1983 } 1979 }
1984 1980
1985 #endif 1981 #endif
OLDNEW
« no previous file with comments | « src/gpu/SkGpuDevice.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698