18 : fShader{shader}, fAllowPerspective{allowPerspective} {
23 if (!fAllowPerspective &&
matrix.hasPerspective()) {
27 matrix.get9(fMatrixStorage);
40 std::optional<SkShaders::MatrixRec> childMRec = mRec.
apply(rec);
41 if (!childMRec.has_value()) {
47 childMRec->markTotalMatrixInvalid();
49 auto type = fAllowPerspective ? SkRasterPipelineOp::matrix_perspective
50 : SkRasterPipelineOp::matrix_2x3;
static const SkMatrix & I()
void get9(SkScalar buffer[9]) const
void append(SkRasterPipelineOp, void *=nullptr)
virtual bool appendStages(const SkStageRec &, const SkShaders::MatrixRec &) const =0
std::optional< MatrixRec > apply(const SkStageRec &rec, const SkMatrix &postInv={}) const
bool hasPendingMatrix() const
unsigned useCenter Optional< SkMatrix > matrix
SkRasterPipeline * fPipeline