1/*
2 * Copyright 2011 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkEmptyShader_DEFINED
9#define SkEmptyShader_DEFINED
10
11#include "SkShaderBase.h"
12
13// TODO: move this to private, as there is a public factory on SkShader
14
15/**
16 *  \class SkEmptyShader
17 *  A Shader that always draws nothing. Its createContext always returns nullptr.
18 */
19class SkEmptyShader : public SkShaderBase {
20public:
21    SkEmptyShader() {}
22
23    SK_TO_STRING_OVERRIDE()
24    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkEmptyShader)
25
26protected:
27    Context* onMakeContext(const ContextRec&, SkArenaAlloc*) const override {
28        return nullptr;
29    }
30
31    void flatten(SkWriteBuffer& buffer) const override {
32        // Do nothing.
33        // We just don't want to fall through to SkShader::flatten(),
34        // which will write data we don't care to serialize or decode.
35    }
36
37    bool onAppendStages(const StageRec&) const override {
38        return false;
39    }
40
41private:
42    typedef SkShaderBase INHERITED;
43};
44
45#endif
46