17b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips/*
27b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips * Copyright 2014 Google Inc.
37b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips *
47b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips * Use of this source code is governed by a BSD-style license that can be
57b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips * found in the LICENSE file.
67b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips */
77b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips
87b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips#ifndef SkSurface_Gpu_DEFINED
97b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips#define SkSurface_Gpu_DEFINED
107b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips
117b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips#include "SkSurface_Base.h"
127b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips
137b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips#if SK_SUPPORT_GPU
147b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips
157b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillipsclass SkGpuDevice;
167b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips
177b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillipsclass SkSurface_Gpu : public SkSurface_Base {
187b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillipspublic:
197b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips    SK_DECLARE_INST_COUNT(SkSurface_Gpu)
207b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips
21afe3005be3392e43bc51eb7eb2017eefaed85ad1bsalomon    SkSurface_Gpu(SkGpuDevice*);
227b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips    virtual ~SkSurface_Gpu();
237b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips
2436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    SkCanvas* onNewCanvas() override;
2536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    SkSurface* onNewSurface(const SkImageInfo&) override;
2636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    SkImage* onNewImageSnapshot(Budgeted) override;
277831a4bbb46a919316efc7c70808dcaaf8ee629atfarina    void onDraw(SkCanvas*, SkScalar x, SkScalar y, const SkPaint*) override;
2836352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    void onCopyOnWrite(ContentChangeMode) override;
2936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    void onDiscard() override;
307b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips
317b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips    SkGpuDevice* getDevice() { return fDevice; }
327b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips
337b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillipsprivate:
347b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips    SkGpuDevice* fDevice;
357b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips
367b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips    typedef SkSurface_Base INHERITED;
377b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips};
387b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips
397b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips#endif // SK_SUPPORT_GPU
407b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips
417b9e8a4b6af0f3df9bf20a5fdc0977bcd7c3c1abrobertphillips#endif // SkSurface_Gpu_DEFINED
42