GrCustomXfermodePriv.h revision 0063a9b69a6a5d377f207c2aa1ea1e7220c19ba9
10063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel/* 20063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel * Copyright 2015 Google Inc. 30063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel * 40063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel * Use of this source code is governed by a BSD-style license that can be 50063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel * found in the LICENSE file. 60063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel */ 70063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel 80063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel#ifndef GrCustomXfermodePriv_DEFINED 90063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel#define GrCustomXfermodePriv_DEFINED 100063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel 110063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel#include "GrCoordTransform.h" 120063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel#include "GrFragmentProcessor.h" 130063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel#include "GrTextureAccess.h" 140063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel#include "SkXfermode.h" 150063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel 160063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdanielclass GrGLCaps; 170063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdanielclass GrGLFragmentProcessor; 180063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdanielclass GrInvariantOutput; 190063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdanielclass GrProcessorKeyBuilder; 200063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdanielclass GrTexture; 210063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel 220063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel/////////////////////////////////////////////////////////////////////////////// 230063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel// Fragment Processor 240063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel/////////////////////////////////////////////////////////////////////////////// 250063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel 260063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdanielclass GrCustomXferFP : public GrFragmentProcessor { 270063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdanielpublic: 280063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel GrCustomXferFP(SkXfermode::Mode mode, GrTexture* background); 290063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel 300063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel void getGLProcessorKey(const GrGLCaps& caps, GrProcessorKeyBuilder* b) const SK_OVERRIDE; 310063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel 320063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel GrGLFragmentProcessor* createGLInstance() const SK_OVERRIDE; 330063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel 340063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel const char* name() const SK_OVERRIDE { return "Custom Xfermode"; } 350063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel 360063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel SkXfermode::Mode mode() const { return fMode; } 370063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel const GrTextureAccess& backgroundAccess() const { return fBackgroundAccess; } 380063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel 390063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdanielprivate: 400063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel bool onIsEqual(const GrFragmentProcessor& other) const SK_OVERRIDE; 410063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel 420063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVERRIDE; 430063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel 440063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel GR_DECLARE_FRAGMENT_PROCESSOR_TEST; 450063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel 460063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel SkXfermode::Mode fMode; 470063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel GrCoordTransform fBackgroundTransform; 480063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel GrTextureAccess fBackgroundAccess; 490063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel 500063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel typedef GrFragmentProcessor INHERITED; 510063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel}; 520063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel 530063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel#endif 540063a9b69a6a5d377f207c2aa1ea1e7220c19ba9egdaniel 55