diff options
author | joshualitt <joshualitt@chromium.org> | 2015-08-19 08:48:41 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-19 08:48:41 -0700 |
commit | ae5b2c623b22b24ea7c0d6200298e5bc366faa63 (patch) | |
tree | e9d170cfd76884346b125214bc016ab44da8536e /src/gpu/GrQuad.h | |
parent | bca86202a48b2afa527b6e40d8b360ce3bc7c2e7 (diff) |
Create GrQuad
BUG=skia:
Review URL: https://codereview.chromium.org/1294713009
Diffstat (limited to 'src/gpu/GrQuad.h')
-rw-r--r-- | src/gpu/GrQuad.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/gpu/GrQuad.h b/src/gpu/GrQuad.h new file mode 100644 index 0000000000..fc169ead6d --- /dev/null +++ b/src/gpu/GrQuad.h @@ -0,0 +1,58 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrQuad_DEFINED +#define GrQuad_DEFINED + +#include "SkPoint.h" +#include "SkMatrix.h" + +/** + * GrQuad is a collection of 4 points which can be used to represent an arbitrary quadrilateral + */ +class GrQuad { +public: + GrQuad(const GrQuad& that) { + *this = that; + } + + explicit GrQuad(const SkRect& rect) { + this->set(rect); + } + + void set(const SkRect& rect) { + fPoints->setRectFan(rect.fLeft, rect.fTop, rect.fRight, rect.fBottom); + } + + void map(const SkMatrix& matrix) { + matrix.mapPoints(fPoints, kNumPoints); + } + + void setFromMappedRect(const SkRect& rect, const SkMatrix& matrix) { + this->set(rect); + matrix.mapPoints(fPoints, kNumPoints); + } + + const GrQuad& operator=(const GrQuad& that) { + memcpy(fPoints, that.fPoints, sizeof(SkPoint) * kNumPoints); + return *this; + } + + SkPoint* points() { + return fPoints; + } + + const SkPoint* points() const { + return fPoints; + } + +private: + static const int kNumPoints = 4; + SkPoint fPoints[kNumPoints]; +}; + +#endif |