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

Unified Diff: src/gpu/gl/GrGLPathRange.cpp

Issue 1967513002: Revert of Replace GrStrokeInfo with GrStyle. (Closed) Base URL: https://chromium.googlesource.com/skia.git@resscale
Patch Set: Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/gl/GrGLPathRange.h ('k') | src/gpu/gl/GrGLPathRendering.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/gl/GrGLPathRange.cpp
diff --git a/src/gpu/gl/GrGLPathRange.cpp b/src/gpu/gl/GrGLPathRange.cpp
index da1e9fe709da7320d833d0667a405aa073b0cf30..6ed7bcc425dfdc89b499a050ed245f9e4fa5fa69 100644
--- a/src/gpu/gl/GrGLPathRange.cpp
+++ b/src/gpu/gl/GrGLPathRange.cpp
@@ -10,9 +10,9 @@
#include "GrGLPathRendering.h"
#include "GrGLGpu.h"
-GrGLPathRange::GrGLPathRange(GrGLGpu* gpu, PathGenerator* pathGenerator, const GrStyle& style)
+GrGLPathRange::GrGLPathRange(GrGLGpu* gpu, PathGenerator* pathGenerator, const GrStrokeInfo& stroke)
: INHERITED(gpu, pathGenerator),
- fStyle(style),
+ fStroke(stroke),
fBasePathID(gpu->glPathRendering()->genPaths(this->getNumPaths())),
fGpuMemorySize(0) {
this->init();
@@ -23,9 +23,9 @@
GrGLuint basePathID,
int numPaths,
size_t gpuMemorySize,
- const GrStyle& style)
+ const GrStrokeInfo& stroke)
: INHERITED(gpu, numPaths),
- fStyle(style),
+ fStroke(stroke),
fBasePathID(basePathID),
fGpuMemorySize(gpuMemorySize) {
this->init();
@@ -33,20 +33,19 @@
}
void GrGLPathRange::init() {
- const SkStrokeRec& stroke = fStyle.strokeRec();
// Must force fill:
// * dashing: NVPR stroke dashing is different to Skia.
// * end caps: NVPR stroking degenerate contours with end caps is different to Skia.
- bool forceFill = fStyle.pathEffect() ||
- (stroke.needToApply() && stroke.getCap() != SkPaint::kButt_Cap);
+ bool forceFill = fStroke.isDashed() ||
+ (fStroke.needToApply() && fStroke.getCap() != SkPaint::kButt_Cap);
if (forceFill) {
fShouldStroke = false;
fShouldFill = true;
} else {
- fShouldStroke = stroke.needToApply();
- fShouldFill = stroke.isFillStyle() ||
- stroke.getStyle() == SkStrokeRec::kStrokeAndFill_Style;
+ fShouldStroke = fStroke.needToApply();
+ fShouldFill = fStroke.isFillStyle() ||
+ fStroke.getStyle() == SkStrokeRec::kStrokeAndFill_Style;
}
}
@@ -55,6 +54,7 @@
if (nullptr == gpu) {
return;
}
+
// Make sure the path at this index hasn't been initted already.
SkDEBUGCODE(
GrGLboolean isPath;
@@ -65,25 +65,32 @@
GrGLPath::InitPathObjectEmptyPath(gpu, fBasePathID + index);
} else if (fShouldStroke) {
GrGLPath::InitPathObjectPathData(gpu, fBasePathID + index, origSkPath);
- GrGLPath::InitPathObjectStroke(gpu, fBasePathID + index, fStyle.strokeRec());
+ GrGLPath::InitPathObjectStroke(gpu, fBasePathID + index, fStroke);
} else {
const SkPath* skPath = &origSkPath;
SkTLazy<SkPath> tmpPath;
- if (!fStyle.isSimpleFill()) {
- SkStrokeRec::InitStyle fill;
- // The path effect must be applied to the path. However, if a path effect is present,
- // we must convert all the paths to fills. The path effect application may leave
- // simple paths as strokes but converts other paths to fills.
- // Thus we must stroke the strokes here, so that all paths in the
- // path range are using the same style.
- if (!fStyle.applyToPath(tmpPath.init(), &fill, *skPath, SK_Scalar1)) {
+ const GrStrokeInfo* stroke = &fStroke;
+ GrStrokeInfo tmpStroke(SkStrokeRec::kFill_InitStyle);
+
+ // Dashing must be applied to the path. However, if dashing is present,
+ // we must convert all the paths to fills. The GrStrokeInfo::applyDash leaves
+ // simple paths as strokes but converts other paths to fills.
+ // Thus we must stroke the strokes here, so that all paths in the
+ // path range are using the same style.
+ if (fStroke.isDashed()) {
+ if (!stroke->applyDashToPath(tmpPath.init(), &tmpStroke, *skPath)) {
return;
}
- // We shouldn't have allowed hairlines or arbitrary path effect styles to get here
- // so after application we better have a filled path.
- SkASSERT(SkStrokeRec::kFill_InitStyle == fill);
skPath = tmpPath.get();
-
+ stroke = &tmpStroke;
+ }
+ if (stroke->needToApply()) {
+ if (!tmpPath.isValid()) {
+ tmpPath.init();
+ }
+ if (!stroke->applyToPath(tmpPath.get(), *tmpPath.get())) {
+ return;
+ }
}
GrGLPath::InitPathObjectPathData(gpu, fBasePathID + index, *skPath);
}
« no previous file with comments | « src/gpu/gl/GrGLPathRange.h ('k') | src/gpu/gl/GrGLPathRendering.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698