1f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org/* 2f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org * Copyright 2012 The Android Open Source Project 3f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org * 4f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org * Use of this source code is governed by a BSD-style license that can be 5f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org * found in the LICENSE file. 6f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org */ 7f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org 8f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org#ifndef SkBitmapSource_DEFINED 9f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org#define SkBitmapSource_DEFINED 10f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org 11f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org#include "SkImageFilter.h" 12f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org#include "SkBitmap.h" 13f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org 14f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.orgclass SK_API SkBitmapSource : public SkImageFilter { 15f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.orgpublic: 16cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org static SkBitmapSource* Create(const SkBitmap& bitmap) { 17cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org return SkNEW_ARGS(SkBitmapSource, (bitmap)); 18cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org } 19e275fdf812b1dc09beaa3b14570eb0b641a07e6arobertphillips static SkBitmapSource* Create(const SkBitmap& bitmap, 20e275fdf812b1dc09beaa3b14570eb0b641a07e6arobertphillips const SkRect& srcRect, const SkRect& dstRect, 21e275fdf812b1dc09beaa3b14570eb0b641a07e6arobertphillips SkFilterQuality filterQuality = kHigh_SkFilterQuality) { 22e275fdf812b1dc09beaa3b14570eb0b641a07e6arobertphillips return SkNEW_ARGS(SkBitmapSource, (bitmap, srcRect, dstRect, filterQuality)); 23cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org } 2436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void computeFastBounds(const SkRect& src, SkRect* dst) const override; 25f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org 26f3f5bad7ded35265c0b5d042cc4174386b197a33robertphillips SK_TO_STRING_OVERRIDE() 27f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBitmapSource) 28f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org 29f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.orgprotected: 30bd0be25074e53a6d1abc284562568c9745191984commit-bot@chromium.org explicit SkBitmapSource(const SkBitmap& bitmap); 31e275fdf812b1dc09beaa3b14570eb0b641a07e6arobertphillips SkBitmapSource(const SkBitmap& bitmap, 32e275fdf812b1dc09beaa3b14570eb0b641a07e6arobertphillips const SkRect& srcRect, const SkRect& dstRect, 33e275fdf812b1dc09beaa3b14570eb0b641a07e6arobertphillips SkFilterQuality filterQuality); 3436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void flatten(SkWriteBuffer&) const override; 35bd0be25074e53a6d1abc284562568c9745191984commit-bot@chromium.org 364cb543d6057b692e1099e9f115155f0bf323a0c8senorblanco@chromium.org virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&, 3736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein SkBitmap* result, SkIPoint* offset) const override; 38f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org 39f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.orgprivate: 40f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org SkBitmap fBitmap; 41e93e1dbf0eced1e1b9aeed7c0c170961e2d61e32senorblanco@chromium.org SkRect fSrcRect, fDstRect; 42e275fdf812b1dc09beaa3b14570eb0b641a07e6arobertphillips SkFilterQuality fFilterQuality; 43e275fdf812b1dc09beaa3b14570eb0b641a07e6arobertphillips 44f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org typedef SkImageFilter INHERITED; 45f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org}; 46f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org 47f1369ce607adf55ffffe58fb93893bafb6ff6ebesenorblanco@chromium.org#endif 48