11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/*
31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2006 The Android Open Source Project
41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger *
51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be
61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file.
71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */
81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifndef SkSpriteBlitter_DEFINED
110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkSpriteBlitter_DEFINED
120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkBlitter.h"
140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkBitmap.h"
150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkPaint;
170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkSpriteBlitter : public SkBlitter {
190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic:
200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project            SkSpriteBlitter(const SkBitmap& source);
210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual ~SkSpriteBlitter();
220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void setup(const SkBitmap& device, int left, int top,
240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                       const SkPaint& paint);
250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    // overrides
270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef SK_DEBUG
280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void    blitH(int x, int y, int width);
290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void    blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void    blitV(int x, int y, int height, SkAlpha alpha);
310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void    blitMask(const SkMask&, const SkIRect& clip);
320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    static SkSpriteBlitter* ChooseD16(const SkBitmap& source, const SkPaint&,
350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                                      void* storage, size_t storageSize);
360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    static SkSpriteBlitter* ChooseD32(const SkBitmap& source, const SkPaint&,
370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                                      void* storage, size_t storageSize);
380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprotected:
400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    const SkBitmap* fDevice;
410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    const SkBitmap* fSource;
420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    int             fLeft, fTop;
430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    const SkPaint*  fPaint;
440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
48