12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /*
- * Copyright 2014 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #ifndef SkLocalMatrixShader_DEFINED
- #define SkLocalMatrixShader_DEFINED
- #include "src/core/SkReadBuffer.h"
- #include "src/core/SkWriteBuffer.h"
- #include "src/shaders/SkShaderBase.h"
- class GrFragmentProcessor;
- class SkArenaAlloc;
- class SkLocalMatrixShader final : public SkShaderBase {
- public:
- SkLocalMatrixShader(sk_sp<SkShader> proxy, const SkMatrix& localMatrix)
- : INHERITED(&localMatrix)
- , fProxyShader(std::move(proxy))
- {}
- GradientType asAGradient(GradientInfo* info) const override {
- return fProxyShader->asAGradient(info);
- }
- #if SK_SUPPORT_GPU
- std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override;
- #endif
- sk_sp<SkShader> makeAsALocalMatrixShader(SkMatrix* localMatrix) const override {
- if (localMatrix) {
- *localMatrix = this->getLocalMatrix();
- }
- return fProxyShader;
- }
- SkPicture* isAPicture(SkMatrix*, SkTileMode[2], SkRect* tile) const override;
- protected:
- void flatten(SkWriteBuffer&) const override;
- #ifdef SK_ENABLE_LEGACY_SHADERCONTEXT
- Context* onMakeContext(const ContextRec&, SkArenaAlloc*) const override;
- #endif
- SkImage* onIsAImage(SkMatrix* matrix, SkTileMode* mode) const override;
- bool onAppendStages(const SkStageRec&) const override;
- private:
- SK_FLATTENABLE_HOOKS(SkLocalMatrixShader)
- sk_sp<SkShader> fProxyShader;
- typedef SkShaderBase INHERITED;
- };
- #endif
|