1f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com/* 25bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com * Copyright 2007 The Android Open Source Project 3f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com * 45bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com * Use of this source code is governed by a BSD-style license that can be 55bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com * found in the LICENSE file. 6f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com */ 7f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 8f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#ifndef SkColorMatrixFilter_DEFINED 9f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#define SkColorMatrixFilter_DEFINED 10f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 11f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#include "SkColorFilter.h" 12f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#include "SkColorMatrix.h" 13f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 14ed73f727e3d6088b312fd58cc0aca07278638b34senorblanco@chromium.orgclass SK_API SkColorMatrixFilter : public SkColorFilter { 15f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.compublic: 16f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com explicit SkColorMatrixFilter(const SkColorMatrix&); 17f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com SkColorMatrixFilter(const SkScalar array[20]); 18718c2c29e99f7c9b6177847dd353298284dba964tomhudson@google.com 19f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com // overrides from SkColorFilter 205b80c642da8c265b2c0aaeeb10194aed37ddcf40reed@google.com virtual void filterSpan(const SkPMColor src[], int count, SkPMColor[]) const SK_OVERRIDE; 215b80c642da8c265b2c0aaeeb10194aed37ddcf40reed@google.com virtual void filterSpan16(const uint16_t src[], int count, uint16_t[]) const SK_OVERRIDE; 225b80c642da8c265b2c0aaeeb10194aed37ddcf40reed@google.com virtual uint32_t getFlags() const SK_OVERRIDE; 235b80c642da8c265b2c0aaeeb10194aed37ddcf40reed@google.com virtual bool asColorMatrix(SkScalar matrix[20]) const SK_OVERRIDE; 24e2090cb09aa8667b0e84e64edc21dbede436697dbsalomon@google.com#if SK_SUPPORT_GPU 251bc435a41e1424b78b9cd44bd060e7d8b7a9bdfebsalomon@google.com virtual GrEffectRef* asNewEffect(GrContext*) const SK_OVERRIDE; 26e2090cb09aa8667b0e84e64edc21dbede436697dbsalomon@google.com#endif 27718c2c29e99f7c9b6177847dd353298284dba964tomhudson@google.com 28f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com struct State { 29f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com int32_t fArray[20]; 30f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com int fShift; 31f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com }; 32f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 3361cd8826648066a512de73c922d375467fb0bcd1robertphillips@google.com SkDEVCODE(virtual void toString(SkString* str) const SK_OVERRIDE;) 3461cd8826648066a512de73c922d375467fb0bcd1robertphillips@google.com 3514f592f823cedde633bf7d468c3a14b02ee56674djsollen@google.com SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkColorMatrixFilter) 36718c2c29e99f7c9b6177847dd353298284dba964tomhudson@google.com 37f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.comprotected: 38f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com SkColorMatrixFilter(SkFlattenableReadBuffer& buffer); 39e133d6ad314603114c7ef80423391f65cbb599d7djsollen@google.com virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; 40718c2c29e99f7c9b6177847dd353298284dba964tomhudson@google.com 41f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.comprivate: 42644efe36bae77caaffcf231b104648209694007breed@google.com SkColorMatrix fMatrix; 43f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 445b80c642da8c265b2c0aaeeb10194aed37ddcf40reed@google.com typedef void (*Proc)(const State&, unsigned r, unsigned g, unsigned b, 455b80c642da8c265b2c0aaeeb10194aed37ddcf40reed@google.com unsigned a, int32_t result[4]); 46f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 47f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com Proc fProc; 48f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com State fState; 49f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com uint32_t fFlags; 50718c2c29e99f7c9b6177847dd353298284dba964tomhudson@google.com 51644efe36bae77caaffcf231b104648209694007breed@google.com void initState(const SkScalar array[20]); 52718c2c29e99f7c9b6177847dd353298284dba964tomhudson@google.com 53f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com typedef SkColorFilter INHERITED; 54f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com}; 55f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 56f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#endif 57