1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/*
2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc.
3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com *
4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be
5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file.
637a201231b8f6381938282675eb9abb50ab3b389reed@google.com */
737a201231b8f6381938282675eb9abb50ab3b389reed@google.com
837a201231b8f6381938282675eb9abb50ab3b389reed@google.com#ifndef SkEmptyShader_DEFINED
937a201231b8f6381938282675eb9abb50ab3b389reed@google.com#define SkEmptyShader_DEFINED
1037a201231b8f6381938282675eb9abb50ab3b389reed@google.com
1137a201231b8f6381938282675eb9abb50ab3b389reed@google.com#include "SkShader.h"
1237a201231b8f6381938282675eb9abb50ab3b389reed@google.com
13ce56d965069c1649afe14319cb239e6ad670682acommit-bot@chromium.org// TODO: move this to private, as there is a public factory on SkShader
14ce56d965069c1649afe14319cb239e6ad670682acommit-bot@chromium.org
1537a201231b8f6381938282675eb9abb50ab3b389reed@google.com/**
1637a201231b8f6381938282675eb9abb50ab3b389reed@google.com *  \class SkEmptyShader
1787fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org *  A Shader that always draws nothing. Its createContext always returns NULL.
1837a201231b8f6381938282675eb9abb50ab3b389reed@google.com */
1937a201231b8f6381938282675eb9abb50ab3b389reed@google.comclass SK_API SkEmptyShader : public SkShader {
2037a201231b8f6381938282675eb9abb50ab3b389reed@google.compublic:
2159ccef695cef28a74ab2ea13d5a6c9017af45402reed@google.com    SkEmptyShader() {}
2237a201231b8f6381938282675eb9abb50ab3b389reed@google.com
2387fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org    virtual size_t contextSize() const SK_OVERRIDE {
2487fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org        // Even though createContext returns NULL we have to return a value of at least
2587fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org        // sizeof(SkShader::Context) to satisfy SkSmallAllocator.
2687fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org        return sizeof(SkShader::Context);
2787fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org    }
2887fcd950198a16211b3988610beebb5ca5bcf323commit-bot@chromium.org
290f10f7bf1fb43ca6346dc220a076773b1f19a367commit-bot@chromium.org    SK_TO_STRING_OVERRIDE()
30ba28d03e94dc221d6a803bf2a84a420b9159255cdjsollen@google.com    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkEmptyShader)
31a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com
3237a201231b8f6381938282675eb9abb50ab3b389reed@google.comprotected:
339fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed#ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
348b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org    SkEmptyShader(SkReadBuffer& buffer) : INHERITED(buffer) {}
359fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed#endif
3637a201231b8f6381938282675eb9abb50ab3b389reed@google.com
37ce56d965069c1649afe14319cb239e6ad670682acommit-bot@chromium.org    virtual SkShader::Context* onCreateContext(const ContextRec&, void*) const SK_OVERRIDE {
38ce56d965069c1649afe14319cb239e6ad670682acommit-bot@chromium.org        return NULL;
39ce56d965069c1649afe14319cb239e6ad670682acommit-bot@chromium.org    }
40ce56d965069c1649afe14319cb239e6ad670682acommit-bot@chromium.org
4137a201231b8f6381938282675eb9abb50ab3b389reed@google.comprivate:
4237a201231b8f6381938282675eb9abb50ab3b389reed@google.com    typedef SkShader INHERITED;
4337a201231b8f6381938282675eb9abb50ab3b389reed@google.com};
4437a201231b8f6381938282675eb9abb50ab3b389reed@google.com
4537a201231b8f6381938282675eb9abb50ab3b389reed@google.com#endif
46