• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* libs/graphics/sgl/SkBitmapShader.h
2 **
3 ** Copyright 2006, The Android Open Source Project
4 **
5 ** Licensed under the Apache License, Version 2.0 (the "License");
6 ** you may not use this file except in compliance with the License.
7 ** You may obtain a copy of the License at
8 **
9 **     http://www.apache.org/licenses/LICENSE-2.0
10 **
11 ** Unless required by applicable law or agreed to in writing, software
12 ** distributed under the License is distributed on an "AS IS" BASIS,
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 ** See the License for the specific language governing permissions and
15 ** limitations under the License.
16 */
17 
18 #ifndef SkBitmapProcShader_DEFINED
19 #define SkBitmapProcShader_DEFINED
20 
21 #include "SkShader.h"
22 #include "SkBitmapProcState.h"
23 
24 class SkBitmapProcShader : public SkShader {
25 public:
26     SkBitmapProcShader(const SkBitmap& src, TileMode tx, TileMode ty);
27 
28     // overrides from SkShader
29     virtual bool setContext(const SkBitmap&, const SkPaint&, const SkMatrix&);
getFlags()30     virtual uint32_t getFlags() { return fFlags; }
31     virtual void shadeSpan(int x, int y, SkPMColor dstC[], int count);
32     virtual void shadeSpan16(int x, int y, uint16_t dstC[], int count);
33     virtual void beginSession();
34     virtual void endSession();
35     virtual bool asABitmap(SkBitmap*, SkMatrix*, TileMode*);
36 
37     static bool CanDo(const SkBitmap&, TileMode tx, TileMode ty);
38 
CreateProc(SkFlattenableReadBuffer & buffer)39     static SkFlattenable* CreateProc(SkFlattenableReadBuffer& buffer) {
40         return SkNEW_ARGS(SkBitmapProcShader, (buffer));
41     }
42 
43     // override from flattenable
44     virtual bool toDumpString(SkString* str) const;
45 
46 protected:
47     SkBitmapProcShader(SkFlattenableReadBuffer& );
48     virtual void flatten(SkFlattenableWriteBuffer& );
getFactory()49     virtual Factory getFactory() { return CreateProc; }
50 
51     SkBitmap          fRawBitmap;   // experimental for RLE encoding
52     SkBitmapProcState fState;
53     uint32_t          fFlags;
54 
55 private:
56     typedef SkShader INHERITED;
57 };
58 
59 #endif
60