| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 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 "GrDefaultGeoProcFactory.h" | 8 #include "GrDefaultGeoProcFactory.h" |
| 9 | 9 |
| 10 #include "GrInvariantOutput.h" | 10 #include "GrInvariantOutput.h" |
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 | 251 |
| 252 return DefaultGeoProc::Create(flags, | 252 return DefaultGeoProc::Create(flags, |
| 253 GrRandomColor(d->fRandom), | 253 GrRandomColor(d->fRandom), |
| 254 GrTest::TestMatrix(d->fRandom), | 254 GrTest::TestMatrix(d->fRandom), |
| 255 GrTest::TestMatrix(d->fRandom), | 255 GrTest::TestMatrix(d->fRandom), |
| 256 d->fRandom->nextBool(), | 256 d->fRandom->nextBool(), |
| 257 d->fRandom->nextBool(), | 257 d->fRandom->nextBool(), |
| 258 GrRandomCoverage(d->fRandom)); | 258 GrRandomCoverage(d->fRandom)); |
| 259 } | 259 } |
| 260 | 260 |
| 261 const GrGeometryProcessor* GrDefaultGeoProcFactory::Create(uint32_t gpTypeFlags, | |
| 262 GrColor color, | |
| 263 bool localCoordsWillB
eRead, | |
| 264 bool coverageWillBeIg
nored, | |
| 265 const SkMatrix& viewM
atrix, | |
| 266 const SkMatrix& local
Matrix, | |
| 267 uint8_t coverage) { | |
| 268 return DefaultGeoProc::Create(gpTypeFlags, | |
| 269 color, | |
| 270 viewMatrix, | |
| 271 localMatrix, | |
| 272 localCoordsWillBeRead, | |
| 273 coverageWillBeIgnored, | |
| 274 coverage); | |
| 275 } | |
| 276 | |
| 277 const GrGeometryProcessor* GrDefaultGeoProcFactory::Create(const Color& color, | 261 const GrGeometryProcessor* GrDefaultGeoProcFactory::Create(const Color& color, |
| 278 const Coverage& cover
age, | 262 const Coverage& cover
age, |
| 279 const LocalCoords& lo
calCoords, | 263 const LocalCoords& lo
calCoords, |
| 280 const SkMatrix& viewM
atrix) { | 264 const SkMatrix& viewM
atrix) { |
| 281 uint32_t flags = 0; | 265 uint32_t flags = 0; |
| 282 flags |= color.fType == Color::kAttribute_Type ? kColor_GPType : 0; | 266 flags |= color.fType == Color::kAttribute_Type ? kColor_GPType : 0; |
| 283 flags |= coverage.fType == Coverage::kAttribute_Type ? kCoverage_GPType : 0; | 267 flags |= coverage.fType == Coverage::kAttribute_Type ? kCoverage_GPType : 0; |
| 284 flags |= localCoords.fType == LocalCoords::kHasExplicit_Type ? kLocalCoord_G
PType : 0; | 268 flags |= localCoords.fType == LocalCoords::kHasExplicit_Type ? kLocalCoord_G
PType : 0; |
| 285 | 269 |
| 286 uint8_t inCoverage = coverage.fCoverage; | 270 uint8_t inCoverage = coverage.fCoverage; |
| 287 bool coverageWillBeIgnored = coverage.fType == Coverage::kNone_Type; | 271 bool coverageWillBeIgnored = coverage.fType == Coverage::kNone_Type; |
| 288 bool localCoordsWillBeRead = localCoords.fType != LocalCoords::kUnused_Type; | 272 bool localCoordsWillBeRead = localCoords.fType != LocalCoords::kUnused_Type; |
| 289 | 273 |
| 290 GrColor inColor = color.fColor; | 274 GrColor inColor = color.fColor; |
| 291 return DefaultGeoProc::Create(flags, | 275 return DefaultGeoProc::Create(flags, |
| 292 inColor, | 276 inColor, |
| 293 viewMatrix, | 277 viewMatrix, |
| 294 localCoords.fMatrix ? *localCoords.fMatrix : S
kMatrix::I(), | 278 localCoords.fMatrix ? *localCoords.fMatrix : S
kMatrix::I(), |
| 295 localCoordsWillBeRead, | 279 localCoordsWillBeRead, |
| 296 coverageWillBeIgnored, | 280 coverageWillBeIgnored, |
| 297 inCoverage); | 281 inCoverage); |
| 298 } | 282 } |
| 299 | 283 |
| 300 const GrGeometryProcessor* GrDefaultGeoProcFactory::CreateForDeviceSpace( | 284 const GrGeometryProcessor* GrDefaultGeoProcFactory::CreateForDeviceSpace( |
| 301 const Color
& color, | 285 const Color
& color, |
| 302 const Cover
age& coverage, | 286 const Cover
age& coverage, |
| 303 const Local
Coords& localCoords, | 287 const Local
Coords& localCoords, |
| 304 const SkMat
rix& viewMatrix) { | 288 const SkMat
rix& viewMatrix) { |
| 305 SkASSERT(LocalCoords::kUsePosition_Type == localCoords.fType); | |
| 306 SkMatrix invert = SkMatrix::I(); | 289 SkMatrix invert = SkMatrix::I(); |
| 307 if (!viewMatrix.isIdentity() && !viewMatrix.invert(&invert)) { | 290 if (LocalCoords::kUnused_Type != localCoords.fType) { |
| 308 SkDebugf("Could not invert\n"); | 291 SkASSERT(LocalCoords::kUsePosition_Type == localCoords.fType); |
| 309 return NULL; | 292 if (!viewMatrix.isIdentity() && !viewMatrix.invert(&invert)) { |
| 310 } | 293 SkDebugf("Could not invert\n"); |
| 294 return NULL; |
| 295 } |
| 311 | 296 |
| 312 if (localCoords.hasLocalMatrix()) { | 297 if (localCoords.hasLocalMatrix()) { |
| 313 invert.preConcat(*localCoords.fMatrix); | 298 invert.preConcat(*localCoords.fMatrix); |
| 299 } |
| 314 } | 300 } |
| 315 | 301 |
| 316 LocalCoords inverted(LocalCoords::kUsePosition_Type, &invert); | 302 LocalCoords inverted(LocalCoords::kUsePosition_Type, &invert); |
| 317 return Create(color, coverage, inverted); | 303 return Create(color, coverage, inverted, SkMatrix::I()); |
| 318 } | 304 } |
| OLD | NEW |