blob: fa573354c0cfcdad76dd223f977a0d2856fe5f1d [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
reed@google.comac10a2d2010-12-22 21:39:39 +00002/*
epoger@google.comec3ed6a2011-07-28 14:26:00 +00003 * Copyright 2010 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
reed@google.comac10a2d2010-12-22 21:39:39 +00007 */
8
9
epoger@google.comec3ed6a2011-07-28 14:26:00 +000010
reed@google.comac10a2d2010-12-22 21:39:39 +000011#include "GrContext.h"
12
13#include "SkGpuCanvas.h"
14#include "SkGpuDevice.h"
15
16///////////////////////////////////////////////////////////////////////////////
17
mike@reedtribe.orgea4ac972011-04-26 11:48:33 +000018SkGpuCanvas::SkGpuCanvas(GrContext* context, GrRenderTarget* renderTarget) {
reed@google.comac10a2d2010-12-22 21:39:39 +000019 SkASSERT(context);
20 fContext = context;
21 fContext->ref();
reed@google.comcde92112011-07-06 20:00:52 +000022
23 this->setDevice(new SkGpuDevice(context, renderTarget))->unref();
reed@google.comac10a2d2010-12-22 21:39:39 +000024}
25
26SkGpuCanvas::~SkGpuCanvas() {
27 // call this now, while our override of restore() is in effect
28 this->restoreToCount(1);
29 fContext->flush(false);
30 fContext->unref();
31}
32
33///////////////////////////////////////////////////////////////////////////////
34
35bool SkGpuCanvas::getViewport(SkIPoint* size) const {
36 if (size) {
37 SkDevice* device = this->getDevice();
38 if (device) {
39 size->set(device->width(), device->height());
40 } else {
41 size->set(0, 0);
42 }
43 }
44 return true;
45}
46