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

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

Issue 1128113008: Make GrStrokeInfo inherit from SkStrokeRec (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Address review comments Created 5 years, 7 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/GrStrokeInfo.cpp ('k') | src/gpu/effects/GrDashingEffect.cpp » ('j') | 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 "GrContext.h" 10 #include "GrContext.h"
(...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 maskRect.roundOut(&finalIRect); 510 maskRect.roundOut(&finalIRect);
511 if (draw.fClip->quickReject(finalIRect)) { 511 if (draw.fClip->quickReject(finalIRect)) {
512 // clipped out 512 // clipped out
513 return; 513 return;
514 } 514 }
515 if (paint.getMaskFilter()->directFilterRRectMaskGPU(fContext , 515 if (paint.getMaskFilter()->directFilterRRectMaskGPU(fContext ,
516 fRenderT arget, 516 fRenderT arget,
517 &grPaint , 517 &grPaint ,
518 fClip, 518 fClip,
519 *draw.fM atrix, 519 *draw.fM atrix,
520 strokeIn fo.getStrokeRec(), 520 strokeIn fo,
521 devRRect )) { 521 devRRect )) {
522 return; 522 return;
523 } 523 }
524 } 524 }
525 525
526 } 526 }
527 } 527 }
528 528
529 } 529 }
530 530
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 SkTLazy<SkPath> tmpPath; 781 SkTLazy<SkPath> tmpPath;
782 SkTLazy<SkPath> effectPath; 782 SkTLazy<SkPath> effectPath;
783 SkPathEffect* pathEffect = paint.getPathEffect(); 783 SkPathEffect* pathEffect = paint.getPathEffect();
784 784
785 SkMatrix viewMatrix = origViewMatrix; 785 SkMatrix viewMatrix = origViewMatrix;
786 786
787 if (prePathMatrix) { 787 if (prePathMatrix) {
788 // stroking, path effects, and blurs are supposed to be applied *after* the prePathMatrix. 788 // stroking, path effects, and blurs are supposed to be applied *after* the prePathMatrix.
789 // The pre-path-matrix also should not affect shading. 789 // The pre-path-matrix also should not affect shading.
790 if (NULL == paint.getMaskFilter() && NULL == pathEffect && NULL == paint .getShader() && 790 if (NULL == paint.getMaskFilter() && NULL == pathEffect && NULL == paint .getShader() &&
791 (strokeInfo.getStrokeRec().isFillStyle() || 791 (strokeInfo.isFillStyle() || strokeInfo.isHairlineStyle())) {
792 strokeInfo.getStrokeRec().isHairlineStyle())) {
793 viewMatrix.preConcat(*prePathMatrix); 792 viewMatrix.preConcat(*prePathMatrix);
794 } else { 793 } else {
795 SkPath* result = pathPtr; 794 SkPath* result = pathPtr;
796 795
797 if (!pathIsMutable) { 796 if (!pathIsMutable) {
798 result = tmpPath.init(); 797 result = tmpPath.init();
799 result->setIsVolatile(true); 798 result->setIsVolatile(true);
800 pathIsMutable = true; 799 pathIsMutable = true;
801 } 800 }
802 // should I push prePathMatrix on our MV stack temporarily, instead 801 // should I push prePathMatrix on our MV stack temporarily, instead
803 // of applying it here? See SkDraw.cpp 802 // of applying it here? See SkDraw.cpp
804 pathPtr->transform(*prePathMatrix, result); 803 pathPtr->transform(*prePathMatrix, result);
805 pathPtr = result; 804 pathPtr = result;
806 } 805 }
807 } 806 }
808 // at this point we're done with prePathMatrix 807 // at this point we're done with prePathMatrix
809 SkDEBUGCODE(prePathMatrix = (const SkMatrix*)0x50FF8001;) 808 SkDEBUGCODE(prePathMatrix = (const SkMatrix*)0x50FF8001;)
810 809
811 GrPaint grPaint; 810 GrPaint grPaint;
812 if (!SkPaint2GrPaint(this->context(), fRenderTarget, paint, viewMatrix, true , &grPaint)) { 811 if (!SkPaint2GrPaint(this->context(), fRenderTarget, paint, viewMatrix, true , &grPaint)) {
813 return; 812 return;
814 } 813 }
815 814
816 const SkRect* cullRect = NULL; // TODO: what is our bounds? 815 const SkRect* cullRect = NULL; // TODO: what is our bounds?
817 SkStrokeRec* strokePtr = strokeInfo.getStrokeRecPtr();
818 if (!strokeInfo.isDashed() && pathEffect && pathEffect->filterPath(effectPat h.init(), *pathPtr, 816 if (!strokeInfo.isDashed() && pathEffect && pathEffect->filterPath(effectPat h.init(), *pathPtr,
819 strokePtr , cullRect)) { 817 &strokeIn fo, cullRect)) {
820 pathPtr = effectPath.get(); 818 pathPtr = effectPath.get();
821 pathIsMutable = true; 819 pathIsMutable = true;
822 } 820 }
823 821
824 const SkStrokeRec& stroke = strokeInfo.getStrokeRec();
825 if (paint.getMaskFilter()) { 822 if (paint.getMaskFilter()) {
826 if (!stroke.isHairlineStyle()) { 823 if (!strokeInfo.isHairlineStyle()) {
827 SkPath* strokedPath = pathIsMutable ? pathPtr : tmpPath.init(); 824 SkPath* strokedPath = pathIsMutable ? pathPtr : tmpPath.init();
828 if (strokeInfo.isDashed()) { 825 if (strokeInfo.isDashed()) {
829 if (pathEffect->filterPath(strokedPath, *pathPtr, strokePtr, cul lRect)) { 826 if (pathEffect->filterPath(strokedPath, *pathPtr, &strokeInfo, c ullRect)) {
830 pathPtr = strokedPath; 827 pathPtr = strokedPath;
831 pathIsMutable = true; 828 pathIsMutable = true;
832 } 829 }
833 strokeInfo.removeDash(); 830 strokeInfo.removeDash();
834 } 831 }
835 if (stroke.applyToPath(strokedPath, *pathPtr)) { 832 if (strokeInfo.applyToPath(strokedPath, *pathPtr)) {
836 pathPtr = strokedPath; 833 pathPtr = strokedPath;
837 pathIsMutable = true; 834 pathIsMutable = true;
838 strokeInfo.setFillStyle(); 835 strokeInfo.setFillStyle();
839 } 836 }
840 } 837 }
841 838
842 // avoid possibly allocating a new path in transform if we can 839 // avoid possibly allocating a new path in transform if we can
843 SkPath* devPathPtr = pathIsMutable ? pathPtr : tmpPath.init(); 840 SkPath* devPathPtr = pathIsMutable ? pathPtr : tmpPath.init();
844 if (!pathIsMutable) { 841 if (!pathIsMutable) {
845 devPathPtr->setIsVolatile(true); 842 devPathPtr->setIsVolatile(true);
(...skipping 12 matching lines...) Expand all
858 if (clip_bounds_quick_reject(clipBounds, finalIRect)) { 855 if (clip_bounds_quick_reject(clipBounds, finalIRect)) {
859 // clipped out 856 // clipped out
860 return; 857 return;
861 } 858 }
862 859
863 if (paint.getMaskFilter()->directFilterMaskGPU(fContext, 860 if (paint.getMaskFilter()->directFilterMaskGPU(fContext,
864 fRenderTarget, 861 fRenderTarget,
865 &grPaint, 862 &grPaint,
866 fClip, 863 fClip,
867 viewMatrix, 864 viewMatrix,
868 stroke, 865 strokeInfo,
869 *devPathPtr)) { 866 *devPathPtr)) {
870 // the mask filter was able to draw itself directly, so there's nothing 867 // the mask filter was able to draw itself directly, so there's nothing
871 // left to do. 868 // left to do.
872 return; 869 return;
873 } 870 }
874 871
875 872
876 SkAutoTUnref<GrTexture> mask(create_mask_GPU(fContext, 873 SkAutoTUnref<GrTexture> mask(create_mask_GPU(fContext,
877 fRenderTarget, 874 fRenderTarget,
878 maskRect, 875 maskRect,
(...skipping 16 matching lines...) Expand all
895 filtered)) { 892 filtered)) {
896 // This path is completely drawn 893 // This path is completely drawn
897 return; 894 return;
898 } 895 }
899 } 896 }
900 } 897 }
901 } 898 }
902 899
903 // draw the mask on the CPU - this is a fallthrough path in case the 900 // draw the mask on the CPU - this is a fallthrough path in case the
904 // GPU path fails 901 // GPU path fails
905 SkPaint::Style style = stroke.isHairlineStyle() ? SkPaint::kStroke_Style : 902 SkPaint::Style style = strokeInfo.isHairlineStyle() ? SkPaint::kStroke_S tyle :
906 SkPaint::kFill_Style; 903 SkPaint::kFill_Sty le;
907 draw_with_mask_filter(fContext, fRenderTarget, fClip, viewMatrix, *devPa thPtr, 904 draw_with_mask_filter(fContext, fRenderTarget, fClip, viewMatrix, *devPa thPtr,
908 paint.getMaskFilter(), clipBounds, &grPaint, style ); 905 paint.getMaskFilter(), clipBounds, &grPaint, style );
909 return; 906 return;
910 } 907 }
911 908
912 fContext->drawPath(fRenderTarget, fClip, grPaint, viewMatrix, *pathPtr, stro keInfo); 909 fContext->drawPath(fRenderTarget, fClip, grPaint, viewMatrix, *pathPtr, stro keInfo);
913 } 910 }
914 911
915 static const int kBmpSmallTileSize = 1 << 10; 912 static const int kBmpSmallTileSize = 1 << 10;
916 913
(...skipping 1140 matching lines...) Expand 10 before | Expand all | Expand 10 after
2057 #endif 2054 #endif
2058 } 2055 }
2059 2056
2060 SkImageFilter::Cache* SkGpuDevice::getImageFilterCache() { 2057 SkImageFilter::Cache* SkGpuDevice::getImageFilterCache() {
2061 // We always return a transient cache, so it is freed after each 2058 // We always return a transient cache, so it is freed after each
2062 // filter traversal. 2059 // filter traversal.
2063 return SkImageFilter::Cache::Create(kDefaultImageFilterCacheSize); 2060 return SkImageFilter::Cache::Create(kDefaultImageFilterCacheSize);
2064 } 2061 }
2065 2062
2066 #endif 2063 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrStrokeInfo.cpp ('k') | src/gpu/effects/GrDashingEffect.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698