105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2010 Google Inc. 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger */ 805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 905b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 101cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 1105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#ifndef SkGpuCanvas_DEFINED 1205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#define SkGpuCanvas_DEFINED 1305b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 1405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#include "SkCanvas.h" 1505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 1605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerclass GrContext; 1705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerclass GrRenderTarget; 1805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 1905b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger/** 2005b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger * Subclass of canvas that creates devices compatible with the GrContext pass 2105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger * to the canvas' constructor. 2205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger */ 2305b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerclass SkGpuCanvas : public SkCanvas { 2405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerpublic: 2505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger /** 2605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger * The GrContext object is reference counted. When passed to our 2705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger * constructor, its reference count is incremented. In our destructor, the 2805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger * GrGpu's reference count will be decremented. 2905b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger * GrRenderTarget represents the rendering destination in the underlying 3005b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger * 3D API. Its reference count is incremented in the constructor and 3105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger * decremented in the destructor. 3205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger */ 3305b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger explicit SkGpuCanvas(GrContext*, GrRenderTarget*); 3405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger virtual ~SkGpuCanvas(); 3505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 3605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger /** 3705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger * Override from SkCanvas. Returns true, and if not-null, sets size to 3805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger * be the width/height of our viewport. 3905b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger */ 4005b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger virtual bool getViewport(SkIPoint* size) const; 4105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 4205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#if 0 4305b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger virtual int saveLayer(const SkRect* bounds, const SkPaint* paint, 4405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger SaveFlags flags = kARGB_ClipLayer_SaveFlag) { 4505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger return this->save(flags); 4605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger } 4705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#endif 4805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 4905b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerprivate: 5005b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger GrContext* fContext; 5105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 5205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger typedef SkCanvas INHERITED; 5305b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger}; 5405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 5505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#endif 5605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 5705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 58