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 2336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein size_t contextSize() const 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: 3336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein SkShader::Context* onCreateContext(const ContextRec&, void*) const override { 34ce56d965069c1649afe14319cb239e6ad670682acommit-bot@chromium.org return NULL; 35ce56d965069c1649afe14319cb239e6ad670682acommit-bot@chromium.org } 36ce56d965069c1649afe14319cb239e6ad670682acommit-bot@chromium.org 376ef68ab2cd0597a6f1141b686f82f64ac1e89ccfmtklein void flatten(SkWriteBuffer& buffer) const override { 386ef68ab2cd0597a6f1141b686f82f64ac1e89ccfmtklein // Do nothing. 396ef68ab2cd0597a6f1141b686f82f64ac1e89ccfmtklein // We just don't want to fall through to SkShader::flatten(), 406ef68ab2cd0597a6f1141b686f82f64ac1e89ccfmtklein // which will write data we don't care to serialize or decode. 416ef68ab2cd0597a6f1141b686f82f64ac1e89ccfmtklein } 426ef68ab2cd0597a6f1141b686f82f64ac1e89ccfmtklein 4337a201231b8f6381938282675eb9abb50ab3b389reed@google.comprivate: 4437a201231b8f6381938282675eb9abb50ab3b389reed@google.com typedef SkShader INHERITED; 4537a201231b8f6381938282675eb9abb50ab3b389reed@google.com}; 4637a201231b8f6381938282675eb9abb50ab3b389reed@google.com 4737a201231b8f6381938282675eb9abb50ab3b389reed@google.com#endif 48