11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2011 The Android Open Source Project 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 9bb98807a9a02751ed2fcc98376f323ad93e15fa4Wei-Ta Chen#ifndef SkBitmapRegionDecoder_DEFINED 10bb98807a9a02751ed2fcc98376f323ad93e15fa4Wei-Ta Chen#define SkBitmapRegionDecoder_DEFINED 1197fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen 1297fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen#include "SkBitmap.h" 1397fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen#include "SkRect.h" 1497fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen#include "SkImageDecoder.h" 156210a7c68844602ee390bcce61dbb637910a3c6bChih-Chung Chang#include "SkStream.h" 1697fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen 17bb98807a9a02751ed2fcc98376f323ad93e15fa4Wei-Ta Chenclass SkBitmapRegionDecoder { 1897fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wenpublic: 196210a7c68844602ee390bcce61dbb637910a3c6bChih-Chung Chang SkBitmapRegionDecoder(SkImageDecoder *decoder, SkStream *stream, 206210a7c68844602ee390bcce61dbb637910a3c6bChih-Chung Chang int width, int height) { 2197fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen fDecoder = decoder; 226210a7c68844602ee390bcce61dbb637910a3c6bChih-Chung Chang fStream = stream; 2397fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen fWidth = width; 2497fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen fHeight = height; 2597fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen } 26bb98807a9a02751ed2fcc98376f323ad93e15fa4Wei-Ta Chen virtual ~SkBitmapRegionDecoder() { 2797fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen delete fDecoder; 286210a7c68844602ee390bcce61dbb637910a3c6bChih-Chung Chang fStream->unref(); 2997fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen } 3097fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen 3197fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen virtual bool decodeRegion(SkBitmap* bitmap, SkIRect rect, 3297fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen SkBitmap::Config pref, int sampleSize); 3397fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen 3497fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen virtual int getWidth() { return fWidth; } 3597fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen virtual int getHeight() { return fHeight; } 3697fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen 3797fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen virtual SkImageDecoder* getDecoder() { return fDecoder; } 3897fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen 3997fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wenprivate: 4097fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen SkImageDecoder *fDecoder; 416210a7c68844602ee390bcce61dbb637910a3c6bChih-Chung Chang SkStream *fStream; 4297fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen int fWidth; 4397fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen int fHeight; 4497fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen}; 4597fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen 4697fa2e455b2040c99c5b6f3e3d2ad6c9b4062081Joseph Wen#endif 47