/* * 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