71c3c760a8
BUG=skia: Review URL: https://codereview.chromium.org/1181913003
50 lines
1020 B
C
50 lines
1020 B
C
/*
|
|
* 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 SkRSXform_DEFINED
|
|
#define SkRSXform_DEFINED
|
|
|
|
#include "SkScalar.h"
|
|
|
|
/**
|
|
* A compressed form of a rotation+scale matrix.
|
|
*
|
|
* [ fSCos -fSSin fTx ]
|
|
* [ fSSin fSCos fTy ]
|
|
* [ 0 0 1 ]
|
|
*/
|
|
struct SkRSXform {
|
|
SkScalar fSCos;
|
|
SkScalar fSSin;
|
|
SkScalar fTx;
|
|
SkScalar fTy;
|
|
|
|
bool rectStaysRect() const {
|
|
return 0 == fSCos || 0 == fSSin;
|
|
}
|
|
|
|
void setIdentity() {
|
|
fSCos = 1;
|
|
fSSin = fTx = fTy = 0;
|
|
}
|
|
|
|
void set(SkScalar scos, SkScalar ssin, SkScalar tx, SkScalar ty) {
|
|
fSCos = scos;
|
|
fSSin = ssin;
|
|
fTx = tx;
|
|
fTy = ty;
|
|
}
|
|
|
|
void toQuad(SkScalar width, SkScalar height, SkPoint quad[4]) const;
|
|
void toQuad(const SkSize& size, SkPoint quad[4]) const {
|
|
this->toQuad(size.width(), size.height(), quad);
|
|
}
|
|
};
|
|
|
|
#endif
|
|
|