10910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project/* libs/graphics/sgl/SkSpriteBlitter.h
20910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project**
30910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** Copyright 2006, The Android Open Source Project
40910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project**
50910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License");
60910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** you may not use this file except in compliance with the License.
70910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** You may obtain a copy of the License at
80910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project**
90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project**     http://www.apache.org/licenses/LICENSE-2.0
100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project**
110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** Unless required by applicable law or agreed to in writing, software
120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** distributed under the License is distributed on an "AS IS" BASIS,
130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** See the License for the specific language governing permissions and
150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project** limitations under the License.
160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project*/
170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifndef SkSpriteBlitter_DEFINED
190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkSpriteBlitter_DEFINED
200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkBlitter.h"
220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkBitmap.h"
230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkPaint;
250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkSpriteBlitter : public SkBlitter {
270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic:
280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project            SkSpriteBlitter(const SkBitmap& source);
290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual ~SkSpriteBlitter();
300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void setup(const SkBitmap& device, int left, int top,
320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                       const SkPaint& paint);
330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    // overrides
350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef SK_DEBUG
360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void    blitH(int x, int y, int width);
370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void    blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void    blitV(int x, int y, int height, SkAlpha alpha);
390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void    blitMask(const SkMask&, const SkIRect& clip);
400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    static SkSpriteBlitter* ChooseD16(const SkBitmap& source, const SkPaint&,
430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                                      void* storage, size_t storageSize);
440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    static SkSpriteBlitter* ChooseD32(const SkBitmap& source, const SkPaint&,
450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                                      void* storage, size_t storageSize);
460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprotected:
480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    const SkBitmap* fDevice;
490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    const SkBitmap* fSource;
500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    int             fLeft, fTop;
510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    const SkPaint*  fPaint;
520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
56