OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 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 "GrNonAAStrokeRectBatch.h" | 8 #include "GrNonAAStrokeRectBatch.h" |
9 | 9 |
10 #include "GrBatchTest.h" | 10 #include "GrBatchTest.h" |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
65 return nullptr; | 65 return nullptr; |
66 } | 66 } |
67 NonAAStrokeRectBatch* batch = new NonAAStrokeRectBatch(); | 67 NonAAStrokeRectBatch* batch = new NonAAStrokeRectBatch(); |
68 batch->fColor = color; | 68 batch->fColor = color; |
69 batch->fViewMatrix = viewMatrix; | 69 batch->fViewMatrix = viewMatrix; |
70 batch->fRect = rect; | 70 batch->fRect = rect; |
71 // Sort the rect for hairlines | 71 // Sort the rect for hairlines |
72 batch->fRect.sort(); | 72 batch->fRect.sort(); |
73 batch->fStrokeWidth = stroke.getWidth(); | 73 batch->fStrokeWidth = stroke.getWidth(); |
74 | 74 |
75 batch->fBounds = batch->fRect; | |
76 SkScalar rad = SkScalarHalf(batch->fStrokeWidth); | 75 SkScalar rad = SkScalarHalf(batch->fStrokeWidth); |
77 batch->fBounds.outset(rad, rad); | 76 SkRect bounds = rect; |
78 batch->fViewMatrix.mapRect(&batch->fBounds); | 77 bounds.outset(rad, rad); |
79 | 78 |
80 // If our caller snaps to pixel centers then we have to round out the bo unds | 79 // If our caller snaps to pixel centers then we have to round out the bo unds |
81 if (snapToPixelCenters) { | 80 if (snapToPixelCenters) { |
81 viewMatrix.mapRect(&bounds); | |
82 // We want to be consistent with how we snap non-aa lines. To match what we do in | 82 // We want to be consistent with how we snap non-aa lines. To match what we do in |
83 // GrGLSLVertexShaderBuilder, we first floor all the vertex values a nd then add half a | 83 // GrGLSLVertexShaderBuilder, we first floor all the vertex values a nd then add half a |
84 // pixel to force us to pixel centers. | 84 // pixel to force us to pixel centers. |
85 batch->fBounds.set(SkScalarFloorToScalar(batch->fBounds.fLeft), | 85 bounds.set(SkScalarFloorToScalar(bounds.fLeft), |
86 SkScalarFloorToScalar(batch->fBounds.fTop), | 86 SkScalarFloorToScalar(bounds.fTop), |
87 SkScalarFloorToScalar(batch->fBounds.fRight), | 87 SkScalarFloorToScalar(bounds.fRight), |
88 SkScalarFloorToScalar(batch->fBounds.fBottom)); | 88 SkScalarFloorToScalar(bounds.fBottom)); |
89 batch->fBounds.offset(0.5f, 0.5f); | 89 bounds.offset(0.5f, 0.5f); |
robertphillips
2016/07/07 20:26:42
xtra space here ?
bsalomon
2016/07/07 23:40:57
Done.
| |
90 | 90 batch->setBounds(bounds, HasAABloat ::kNo, IsZeroArea::kNo); |
91 // Round out the bounds to integer values | 91 } else { |
92 batch->fBounds.roundOut(); | 92 batch->setTransformedBounds(bounds, batch->fViewMatrix, HasAABloat : :kNo, |
93 IsZeroArea::kNo); | |
93 } | 94 } |
94 return batch; | 95 return batch; |
95 } | 96 } |
96 | 97 |
97 private: | 98 private: |
98 NonAAStrokeRectBatch() : INHERITED(ClassID()) {} | 99 NonAAStrokeRectBatch() : INHERITED(ClassID()) {} |
99 | 100 |
100 void onPrepareDraws(Target* target) const override { | 101 void onPrepareDraws(Target* target) const override { |
101 sk_sp<GrGeometryProcessor> gp; | 102 sk_sp<GrGeometryProcessor> gp; |
102 { | 103 { |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
196 SkScalar strokeWidth = random->nextBool() ? 0.0f : 2.0f; | 197 SkScalar strokeWidth = random->nextBool() ? 0.0f : 2.0f; |
197 SkPaint paint; | 198 SkPaint paint; |
198 paint.setStrokeWidth(strokeWidth); | 199 paint.setStrokeWidth(strokeWidth); |
199 paint.setStyle(SkPaint::kStroke_Style); | 200 paint.setStyle(SkPaint::kStroke_Style); |
200 paint.setStrokeJoin(SkPaint::kMiter_Join); | 201 paint.setStrokeJoin(SkPaint::kMiter_Join); |
201 SkStrokeRec strokeRec(paint); | 202 SkStrokeRec strokeRec(paint); |
202 return GrNonAAStrokeRectBatch::Create(color, viewMatrix, rect, strokeRec, ra ndom->nextBool()); | 203 return GrNonAAStrokeRectBatch::Create(color, viewMatrix, rect, strokeRec, ra ndom->nextBool()); |
203 } | 204 } |
204 | 205 |
205 #endif | 206 #endif |
OLD | NEW |