| /* | |
| * Copyright 2012 Google Inc. | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #ifndef GrTextureObj_DEFINED | |
| #define GrTextureObj_DEFINED | |
| #include "GrFBBindableObj.h" | |
| class GrTextureUnitObj; | |
| //////////////////////////////////////////////////////////////////////////////// | |
| class GrTextureObj : public GrFBBindableObj { | |
| GR_DEFINE_CREATOR(GrTextureObj); | |
| public: | |
| GrTextureObj() | |
| : GrFBBindableObj() { | |
| } | |
| virtual ~GrTextureObj() { | |
| GrAlwaysAssert(0 == fTextureUnitReferees.count()); | |
| } | |
| void setBound(GrTextureUnitObj *referee) { | |
| fTextureUnitReferees.append(1, &referee); | |
| } | |
| void resetBound(GrTextureUnitObj *referee) { | |
| int index = fTextureUnitReferees.find(referee); | |
| GrAlwaysAssert(0 <= index); | |
| fTextureUnitReferees.removeShuffle(index); | |
| } | |
| bool getBound(GrTextureUnitObj *referee) const { | |
| int index = fTextureUnitReferees.find(referee); | |
| return 0 <= index; | |
| } | |
| bool getBound() const { | |
| return 0 != fTextureUnitReferees.count(); | |
| } | |
| void deleteAction() override; | |
| protected: | |
| private: | |
| // texture units that bind this texture (via "glBindTexture") | |
| SkTDArray<GrTextureUnitObj *> fTextureUnitReferees; | |
| typedef GrFBBindableObj INHERITED; | |
| }; | |
| #endif // GrTextureObj_DEFINED |