• 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 BitmapType asABitmap(SkBitmap*, SkMatrix*, TileMode*,
36                                  SkScalar* twoPointRadialParams) const;
37 
38     static bool CanDo(const SkBitmap&, TileMode tx, TileMode ty);
39 
CreateProc(SkFlattenableReadBuffer & buffer)40     static SkFlattenable* CreateProc(SkFlattenableReadBuffer& buffer) {
41         return SkNEW_ARGS(SkBitmapProcShader, (buffer));
42     }
43 
44     // override from flattenable
45     virtual bool toDumpString(SkString* str) const;
46 
47 protected:
48     SkBitmapProcShader(SkFlattenableReadBuffer& );
49     virtual void flatten(SkFlattenableWriteBuffer& );
getFactory()50     virtual Factory getFactory() { return CreateProc; }
51 
52     SkBitmap          fRawBitmap;   // experimental for RLE encoding
53     SkBitmapProcState fState;
54     uint32_t          fFlags;
55 
56 private:
57     typedef SkShader INHERITED;
58 };
59 
60 #endif
61