Chromium Code Reviews| 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 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 271 color, | 271 color, |
| 272 viewMatrix, | 272 viewMatrix, |
| 273 localMatrix, | 273 localMatrix, |
| 274 localCoordsWillBeRead, | 274 localCoordsWillBeRead, |
| 275 coverageWillBeIgnored, | 275 coverageWillBeIgnored, |
| 276 coverage); | 276 coverage); |
| 277 } | 277 } |
| 278 | 278 |
| 279 const GrGeometryProcessor* GrDefaultGeoProcFactory::Create(const Color& color, | 279 const GrGeometryProcessor* GrDefaultGeoProcFactory::Create(const Color& color, |
| 280 const Coverage& cover age, | 280 const Coverage& cover age, |
| 281 LocalCoords::Type loc alCoords, | 281 const LocalCoords& lo calCoords, |
| 282 const SkMatrix& viewM atrix, | 282 const SkMatrix& viewM atrix) { |
| 283 const SkMatrix& local Matrix) { | |
| 284 uint32_t flags = 0; | 283 uint32_t flags = 0; |
| 285 flags |= color.fType == Color::kAttribute_Type ? kColor_GPType : 0; | 284 flags |= color.fType == Color::kAttribute_Type ? kColor_GPType : 0; |
| 286 flags |= coverage.fType == Coverage::kAttribute_Type ? kCoverage_GPType : 0; | 285 flags |= coverage.fType == Coverage::kAttribute_Type ? kCoverage_GPType : 0; |
| 287 flags |= localCoords == LocalCoords::kHasExplicit_Type ? kLocalCoord_GPType : 0; | 286 flags |= localCoords.fType == LocalCoords::kHasExplicit_Type ? kLocalCoord_G PType : 0; |
| 288 | 287 |
| 289 uint8_t inCoverage = coverage.fCoverage; | 288 uint8_t inCoverage = coverage.fCoverage; |
| 290 bool coverageWillBeIgnored = coverage.fType == Coverage::kNone_Type; | 289 bool coverageWillBeIgnored = coverage.fType == Coverage::kNone_Type; |
| 291 bool localCoordsWillBeRead = localCoords != LocalCoords::kNone_Type; | 290 bool localCoordsWillBeRead = localCoords.fType != LocalCoords::kUnused_Type; |
| 292 | 291 |
| 293 GrColor inColor = color.fColor; | 292 GrColor inColor = color.fColor; |
| 294 return DefaultGeoProc::Create(flags, | 293 return DefaultGeoProc::Create(flags, |
|
bsalomon
2015/07/28 14:39:08
I think it'd be nice to get rid of this factory an
| |
| 295 inColor, | 294 inColor, |
| 296 viewMatrix, | 295 viewMatrix, |
| 297 localMatrix, | 296 localCoords.fMatrix ? *localCoords.fMatrix : S kMatrix::I(), |
| 298 localCoordsWillBeRead, | 297 localCoordsWillBeRead, |
| 299 coverageWillBeIgnored, | 298 coverageWillBeIgnored, |
| 300 inCoverage); | 299 inCoverage); |
| 301 } | 300 } |
| 301 | |
| 302 const GrGeometryProcessor* GrDefaultGeoProcFactory::CreateForDeviceSpace( | |
| 303 const Color & color, | |
| 304 const Cover age& coverage, | |
| 305 const Local Coords& localCoords, | |
| 306 const SkMat rix& viewMatrix) { | |
| 307 SkASSERT(LocalCoords::kUsePosition_Type == localCoords.fType); | |
| 308 SkMatrix invert = SkMatrix::I(); | |
| 309 if (!viewMatrix.isIdentity() && !viewMatrix.invert(&invert)) { | |
| 310 SkDebugf("Could not invert\n"); | |
| 311 return NULL; | |
| 312 } | |
| 313 | |
| 314 if (localCoords.hasLocalMatrix()) { | |
| 315 invert.preConcat(*localCoords.fMatrix); | |
| 316 } | |
| 317 | |
| 318 LocalCoords inverted(LocalCoords::kUsePosition_Type, &invert); | |
| 319 return Create(color, coverage, inverted); | |
| 320 } | |
| OLD | NEW |