1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/*
3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2006 The Android Open Source Project
4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com *
5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be
6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file.
7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */
8ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef SkSpriteBlitter_DEFINED
118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#define SkSpriteBlitter_DEFINED
128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkBitmap.h"
14a5572e5bb2a2bbeeb59de0741c2527869d365a0ccommit-bot@chromium.org#include "SkBitmapProcShader.h"
15a5572e5bb2a2bbeeb59de0741c2527869d365a0ccommit-bot@chromium.org#include "SkBlitter.h"
16a5572e5bb2a2bbeeb59de0741c2527869d365a0ccommit-bot@chromium.org#include "SkShader.h"
17a5572e5bb2a2bbeeb59de0741c2527869d365a0ccommit-bot@chromium.org#include "SkSmallAllocator.h"
188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkPaint;
208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkSpriteBlitter : public SkBlitter {
228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.compublic:
238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com            SkSpriteBlitter(const SkBitmap& source);
248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual ~SkSpriteBlitter();
258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual void setup(const SkBitmap& device, int left, int top,
278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com                       const SkPaint& paint);
288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    // overrides
308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DEBUG
318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual void    blitH(int x, int y, int width);
328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual void    blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual void    blitV(int x, int y, int height, SkAlpha alpha);
348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual void    blitMask(const SkMask&, const SkIRect& clip);
358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    static SkSpriteBlitter* ChooseD16(const SkBitmap& source, const SkPaint&,
38a5572e5bb2a2bbeeb59de0741c2527869d365a0ccommit-bot@chromium.org                                      SkTBlitterAllocator*);
398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    static SkSpriteBlitter* ChooseD32(const SkBitmap& source, const SkPaint&,
40a5572e5bb2a2bbeeb59de0741c2527869d365a0ccommit-bot@chromium.org                                      SkTBlitterAllocator*);
418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected:
438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    const SkBitmap* fDevice;
448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    const SkBitmap* fSource;
458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    int             fLeft, fTop;
468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    const SkPaint*  fPaint;
478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
50