1 | /* |
---|---|
2 | * Copyright 2019 Google Inc. |
3 | * |
4 | * Use of this source code is governed by a BSD-style license that can be |
5 | * found in the LICENSE file. |
6 | */ |
7 | |
8 | #ifndef GrBaseContextPriv_DEFINED |
9 | #define GrBaseContextPriv_DEFINED |
10 | |
11 | #include "include/private/GrContext_Base.h" |
12 | |
13 | /** Class that exposes methods on GrContext_Base that are only intended for use internal to Skia. |
14 | This class is purely a privileged window into GrContext_Base. It should never have |
15 | additional data members or virtual methods. */ |
16 | class GrBaseContextPriv { |
17 | public: |
18 | // from GrContext_Base |
19 | uint32_t contextID() const { return fContext->contextID(); } |
20 | |
21 | bool matches(GrContext_Base* candidate) const { return fContext->matches(candidate); } |
22 | |
23 | const GrContextOptions& options() const { return fContext->options(); } |
24 | |
25 | const GrCaps* caps() const { return fContext->caps(); } |
26 | sk_sp<const GrCaps> refCaps() const; |
27 | |
28 | GrImageContext* asImageContext() { return fContext->asImageContext(); } |
29 | GrRecordingContext* asRecordingContext() { return fContext->asRecordingContext(); } |
30 | GrContext* asDirectContext() { return fContext->asDirectContext(); } |
31 | |
32 | GrContextOptions::ShaderErrorHandler* getShaderErrorHandler() const; |
33 | |
34 | private: |
35 | explicit GrBaseContextPriv(GrContext_Base* context) : fContext(context) {} |
36 | GrBaseContextPriv(const GrBaseContextPriv&); // unimpl |
37 | GrBaseContextPriv& operator=(const GrBaseContextPriv&); // unimpl |
38 | |
39 | // No taking addresses of this type. |
40 | const GrBaseContextPriv* operator&() const; |
41 | GrBaseContextPriv* operator&(); |
42 | |
43 | GrContext_Base* fContext; |
44 | |
45 | friend class GrContext_Base; // to construct/copy this type. |
46 | }; |
47 | |
48 | inline GrBaseContextPriv GrContext_Base::priv() { return GrBaseContextPriv(this); } |
49 | |
50 | inline const GrBaseContextPriv GrContext_Base::priv () const { |
51 | return GrBaseContextPriv(const_cast<GrContext_Base*>(this)); |
52 | } |
53 | |
54 | #endif |
55 |