Revert r3321 because of GM failure
git-svn-id: http://skia.googlecode.com/svn/trunk@3323 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
84405e095c
commit
6d2733a1eb
@ -202,11 +202,10 @@ void update_degenerate_test(DegenerateTestData* data, const GrPoint& pt) {
|
||||
}
|
||||
|
||||
bool get_segments(const GrPath& path,
|
||||
const GrMatrix& m,
|
||||
SegmentArray* segments,
|
||||
SkPoint* fanPt,
|
||||
int* vCount,
|
||||
int* iCount) {
|
||||
SegmentArray* segments,
|
||||
SkPoint* fanPt,
|
||||
int* vCount,
|
||||
int* iCount) {
|
||||
SkPath::Iter iter(path, true);
|
||||
// This renderer overemphasises very thin path regions. We use the distance
|
||||
// to the path from the sample to compute coverage. Every pixel intersected
|
||||
@ -226,7 +225,6 @@ bool get_segments(const GrPath& path,
|
||||
break;
|
||||
case kLine_PathCmd: {
|
||||
update_degenerate_test(°enerateData, pts[1]);
|
||||
m.mapPoints(pts + 1, 1);
|
||||
segments->push_back();
|
||||
segments->back().fType = Segment::kLine;
|
||||
segments->back().fPts[0] = pts[1];
|
||||
@ -235,7 +233,6 @@ bool get_segments(const GrPath& path,
|
||||
case kQuadratic_PathCmd:
|
||||
update_degenerate_test(°enerateData, pts[1]);
|
||||
update_degenerate_test(°enerateData, pts[2]);
|
||||
m.mapPoints(pts + 1, 2);
|
||||
segments->push_back();
|
||||
segments->back().fType = Segment::kQuad;
|
||||
segments->back().fPts[0] = pts[1];
|
||||
@ -245,9 +242,6 @@ bool get_segments(const GrPath& path,
|
||||
update_degenerate_test(°enerateData, pts[1]);
|
||||
update_degenerate_test(°enerateData, pts[2]);
|
||||
update_degenerate_test(°enerateData, pts[3]);
|
||||
// unlike quads and lines, the pts[0] will also be read (in
|
||||
// convertCubicToQuads).
|
||||
m.mapPoints(pts, 4);
|
||||
SkSTArray<15, SkPoint, true> quads;
|
||||
GrPathUtils::convertCubicToQuads(pts, SK_Scalar1, &quads);
|
||||
int count = quads.count();
|
||||
@ -437,8 +431,8 @@ bool GrAAConvexPathRenderer::onDrawPath(const SkPath& origPath,
|
||||
GrDrawState::StageMask stageMask,
|
||||
bool antiAlias) {
|
||||
|
||||
const SkPath* path = &origPath;
|
||||
if (path->isEmpty()) {
|
||||
|
||||
if (origPath.isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
GrDrawState* drawState = target->drawState();
|
||||
@ -455,6 +449,9 @@ bool GrAAConvexPathRenderer::onDrawPath(const SkPath& origPath,
|
||||
}
|
||||
drawState->setViewMatrix(GrMatrix::I());
|
||||
|
||||
SkPath path;
|
||||
origPath.transform(vm, &path);
|
||||
|
||||
GrVertexLayout layout = 0;
|
||||
for (int s = 0; s < GrDrawState::kNumStages; ++s) {
|
||||
if ((1 << s) & stageMask) {
|
||||
@ -463,16 +460,6 @@ bool GrAAConvexPathRenderer::onDrawPath(const SkPath& origPath,
|
||||
}
|
||||
layout |= GrDrawTarget::kEdge_VertexLayoutBit;
|
||||
|
||||
// We use the fact that SkPath::transform path does subdivision based on
|
||||
// perspective. Otherwise, we apply the view matrix when copying to the
|
||||
// segment representation.
|
||||
SkPath tmpPath;
|
||||
if (vm.hasPerspective()) {
|
||||
origPath.transform(vm, &tmpPath);
|
||||
path = &tmpPath;
|
||||
vm.reset();
|
||||
}
|
||||
|
||||
QuadVertex *verts;
|
||||
uint16_t* idxs;
|
||||
|
||||
@ -483,8 +470,7 @@ bool GrAAConvexPathRenderer::onDrawPath(const SkPath& origPath,
|
||||
};
|
||||
SkSTArray<kPreallocSegmentCnt, Segment, true> segments;
|
||||
SkPoint fanPt;
|
||||
|
||||
if (!get_segments(*path, vm, &segments, &fanPt, &vCount, &iCount)) {
|
||||
if (!get_segments(path, &segments, &fanPt, &vCount, &iCount)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user