1685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com
2685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com/*
3685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * Copyright 2006 The Android Open Source Project
4685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com *
5685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * Use of this source code is governed by a BSD-style license that can be
6685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * found in the LICENSE file.
7685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com */
8685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com
9bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
10bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#ifndef SkBitmapProcShader_DEFINED
11bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#define SkBitmapProcShader_DEFINED
12bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
13bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#include "SkShader.h"
14bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#include "SkBitmapProcState.h"
15bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
16bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comclass SkBitmapProcShader : public SkShader {
17bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.compublic:
18bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    SkBitmapProcShader(const SkBitmap& src, TileMode tx, TileMode ty);
19bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
20bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    // overrides from SkShader
219601a62f74301f2f773240b3b0614e3cb152a024junov@chromium.org    virtual bool isOpaque() const SK_OVERRIDE;
22bc0c7b3fc892adc21eeac2d56b02a525ee811fdbrobertphillips@google.com    virtual bool setContext(const SkBitmap&, const SkPaint&, const SkMatrix&) SK_OVERRIDE;
23bc0c7b3fc892adc21eeac2d56b02a525ee811fdbrobertphillips@google.com    virtual void endContext() SK_OVERRIDE;
24bc0c7b3fc892adc21eeac2d56b02a525ee811fdbrobertphillips@google.com    virtual uint32_t getFlags() SK_OVERRIDE { return fFlags; }
25bc0c7b3fc892adc21eeac2d56b02a525ee811fdbrobertphillips@google.com    virtual void shadeSpan(int x, int y, SkPMColor dstC[], int count) SK_OVERRIDE;
26f1bbd533e266687c5c2b6b406e06ae28bc500920reed@google.com    virtual ShadeProc asAShadeProc(void** ctx) SK_OVERRIDE;
27bc0c7b3fc892adc21eeac2d56b02a525ee811fdbrobertphillips@google.com    virtual void shadeSpan16(int x, int y, uint16_t dstC[], int count) SK_OVERRIDE;
28bc0c7b3fc892adc21eeac2d56b02a525ee811fdbrobertphillips@google.com    virtual BitmapType asABitmap(SkBitmap*, SkMatrix*, TileMode*) const SK_OVERRIDE;
29bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
30bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    static bool CanDo(const SkBitmap&, TileMode tx, TileMode ty);
31cd3b04168750d8eeba11a037360792c12f83f313skia.committer@gmail.com
32bc0c7b3fc892adc21eeac2d56b02a525ee811fdbrobertphillips@google.com    SK_DEVELOPER_TO_STRING()
334d1d95c61576960796347e1dd5006d878e9d2dc0djsollen@google.com    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBitmapProcShader)
34bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
3505614588d877c5112445a5a0478619b187c2dbc4bsalomon@google.com#if SK_SUPPORT_GPU
3638b58f31a3070ea9254d55894a59528270ac67ddbsalomon@google.com    GrEffectRef* asNewEffect(GrContext*, const SkPaint&) const SK_OVERRIDE;
3705614588d877c5112445a5a0478619b187c2dbc4bsalomon@google.com#endif
3805614588d877c5112445a5a0478619b187c2dbc4bsalomon@google.com
39bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comprotected:
40bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    SkBitmapProcShader(SkFlattenableReadBuffer& );
41cd2e444e946f5cfec4723f5bc46e9487d82e8e54djsollen@google.com    virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
42bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
43bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    SkBitmap          fRawBitmap;   // experimental for RLE encoding
44bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    SkBitmapProcState fState;
45bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    uint32_t          fFlags;
46bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
47092e2ef83749d3711c0772677502df77a622f75areed@google.comprivate:
48bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    typedef SkShader INHERITED;
49bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com};
50bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
51bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#endif
52