10a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger
20a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger/*
30a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger * Copyright 2013 Google Inc.
40a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger *
50a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger * Use of this source code is governed by a BSD-style license that can be
60a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger * found in the LICENSE file.
70a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger */
80a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger
90a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger#ifndef GrTest_DEFINED
100a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger#define GrTest_DEFINED
110a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger
120a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger#include "GrContext.h"
130a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger#include "GrDrawTarget.h"
140a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger
150a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger/** Allows a test to temporarily draw to a GrDrawTarget owned by a GrContext. Tests that use this
160a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    should be careful not to mix using the GrDrawTarget directly and drawing via SkCanvas or
170a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    GrContext. In the future this object may provide some guards to prevent this. */
180a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenbergerclass GrTestTarget {
190a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenbergerpublic:
200a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    GrTestTarget() {};
210a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger
220a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    void init(GrContext*, GrDrawTarget*);
230a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger
240a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    GrDrawTarget* target() { return fDrawTarget.get(); }
250a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger
260a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenbergerprivate:
270a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    SkTLazy<GrDrawTarget::AutoStateRestore> fASR;
280a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    SkTLazy<GrDrawTarget::AutoClipRestore>  fACR;
290a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    SkTLazy<GrDrawTarget::AutoGeometryPush> fAGP;
300a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger
310a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    SkAutoTUnref<GrDrawTarget>              fDrawTarget;
320a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    SkAutoTUnref<GrContext>                 fContext;
330a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger};
340a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger
350a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger#endif
36