/*
|
* Copyright 2016 Google Inc.
|
*
|
* Use of this source code is governed by a BSD-style license that can be
|
* found in the LICENSE file.
|
*/
|
|
#ifndef GrSurfaceContextPriv_DEFINED
|
#define GrSurfaceContextPriv_DEFINED
|
|
#include "GrSurfaceContext.h"
|
|
/** Class that adds methods to GrSurfaceContext that are only intended for use internal to
|
Skia. This class is purely a privileged window into GrSurfaceContext. It should never have
|
additional data members or virtual methods. */
|
class GrSurfaceContextPriv {
|
public:
|
GrContext* getContext() { return fSurfaceContext->fContext; }
|
|
private:
|
explicit GrSurfaceContextPriv(GrSurfaceContext* surfaceContext)
|
: fSurfaceContext(surfaceContext) {
|
}
|
|
GrSurfaceContextPriv(const GrSurfaceContextPriv&) {} // unimpl
|
GrSurfaceContextPriv& operator=(const GrSurfaceContextPriv&); // unimpl
|
|
// No taking addresses of this type.
|
const GrSurfaceContextPriv* operator&() const;
|
GrSurfaceContextPriv* operator&();
|
|
GrSurfaceContext* fSurfaceContext;
|
|
friend class GrSurfaceContext; // to construct/copy this type.
|
};
|
|
inline GrSurfaceContextPriv GrSurfaceContext::surfPriv() {
|
return GrSurfaceContextPriv(this);
|
}
|
|
inline const GrSurfaceContextPriv GrSurfaceContext::surfPriv() const {
|
return GrSurfaceContextPriv(const_cast<GrSurfaceContext*>(this));
|
}
|
|
#endif
|