/* include/graphics/SkTransparentShader.h ** ** Copyright 2006, Google Inc. ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** ** http://www.apache.org/licenses/LICENSE-2.0 ** ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. */ #ifndef SkTransparentShader_DEFINED #define SkTransparentShader_DEFINED #include "SkShader.h" class SkTransparentShader : public SkShader { public: SkTransparentShader() {} virtual uint32_t getFlags(); virtual bool setContext( const SkBitmap& device, const SkPaint& paint, const SkMatrix& matrix); virtual void shadeSpan(int x, int y, SkPMColor[], int count); virtual void shadeSpan16(int x, int y, uint16_t span[], int count); // overrides for SkFlattenable virtual Factory getFactory() { return Create; } virtual void flatten(SkFlattenableWriteBuffer& buffer) { this->INHERITED::flatten(buffer); } private: // these are a cache from the call to setContext() const SkBitmap* fDevice; uint8_t fAlpha; SkTransparentShader(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {} static SkFlattenable* Create(SkFlattenableReadBuffer& buffer) { return SkNEW_ARGS(SkTransparentShader, (buffer)); } typedef SkShader INHERITED; }; #endif