summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorNeal Orman <nyx@lindenlab.com>2009-07-14 15:50:34 +0000
committerNeal Orman <nyx@lindenlab.com>2009-07-14 15:50:34 +0000
commit29e5f09d12e8a92e07f3bb9d2cf898cc0e3b06cf (patch)
tree6b9ff0b441b553af912fc0cf58967d10aa9e9893 /indra/newview
parent4447005b72aaebd8446c183ac2a3dc8432f6eb0f (diff)
QAR-1602 checkpoint for avatar pipeline multiple textures
merge missed the addition of two new files. committing separately. -Nyx
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/lllocaltextureobject.cpp149
-rw-r--r--indra/newview/lllocaltextureobject.h85
2 files changed, 234 insertions, 0 deletions
diff --git a/indra/newview/lllocaltextureobject.cpp b/indra/newview/lllocaltextureobject.cpp
new file mode 100644
index 0000000000..8a40c80e76
--- /dev/null
+++ b/indra/newview/lllocaltextureobject.cpp
@@ -0,0 +1,149 @@
+/**
+ * @file lllocaltextureobject.cpp
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ *
+ * Copyright (c) 2009-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "lllocaltextureobject.h"
+
+#include "lltexlayer.h"
+#include "llviewerimage.h"
+#include "lltextureentry.h"
+#include "lluuid.h"
+
+
+LLLocalTextureObject::LLLocalTextureObject() :
+ mIsBakedReady(FALSE),
+ mDiscard(MAX_DISCARD_LEVEL+1)
+{
+ mImage = NULL;
+}
+
+LLLocalTextureObject::LLLocalTextureObject(LLViewerImage *image, LLTextureEntry *entry, LLTexLayer *layer, LLUUID id)
+{
+ if (entry)
+ {
+ LLTextureEntry * te = new LLTextureEntry(*entry);
+ mTexEntry = boost::shared_ptr<LLTextureEntry>(te);
+ }
+
+ if (layer)
+ {
+ LLTexLayer *texLayer = new LLTexLayer(*layer);
+ mTexLayer = boost::shared_ptr<LLTexLayer>(texLayer);
+ }
+ mImage = image;
+ mID = id;
+}
+
+LLLocalTextureObject::LLLocalTextureObject(const LLLocalTextureObject &lto) :
+mImage(lto.mImage),
+mTexEntry(lto.mTexEntry),
+mTexLayer(lto.mTexLayer),
+mID(lto.mID),
+mIsBakedReady(lto.mIsBakedReady),
+mDiscard(lto.mDiscard)
+{
+}
+
+LLLocalTextureObject::~LLLocalTextureObject()
+{
+}
+
+LLViewerImage* LLLocalTextureObject::getImage() const
+{
+ return mImage;
+}
+
+LLTextureEntry* LLLocalTextureObject::getTexEntry() const
+{
+ return mTexEntry.get();
+}
+
+LLTexLayer* LLLocalTextureObject::getTexLayer() const
+{
+ return mTexLayer.get();
+}
+
+LLUUID LLLocalTextureObject::getID() const
+{
+ return mID;
+}
+
+S32 LLLocalTextureObject::getDiscard() const
+{
+ return mDiscard;
+}
+
+BOOL LLLocalTextureObject::getBakedReady() const
+{
+ return mIsBakedReady;
+}
+
+void LLLocalTextureObject::setImage(LLViewerImage* new_image)
+{
+ mImage = new_image;
+}
+
+void LLLocalTextureObject::setTexEntry(LLTextureEntry *new_te)
+{
+ LLTextureEntry *ptr = NULL;
+ if (new_te)
+ {
+ ptr = new LLTextureEntry(*new_te);
+ }
+ mTexEntry = boost::shared_ptr<LLTextureEntry>(ptr);
+}
+
+void LLLocalTextureObject::setTexLayer(LLTexLayer *new_tex_layer)
+{
+ LLTexLayer *ptr = NULL;
+ if (new_tex_layer)
+ {
+ ptr = new LLTexLayer(*new_tex_layer);
+ }
+ mTexLayer = boost::shared_ptr<LLTexLayer>(ptr);
+}
+
+void LLLocalTextureObject::setID(LLUUID new_id)
+{
+ mID = new_id;
+}
+
+void LLLocalTextureObject::setDiscard(S32 new_discard)
+{
+ mDiscard = new_discard;
+}
+
+void LLLocalTextureObject::setBakedReady(BOOL ready)
+{
+ mIsBakedReady = ready;
+}
+
diff --git a/indra/newview/lllocaltextureobject.h b/indra/newview/lllocaltextureobject.h
new file mode 100644
index 0000000000..38db098ab2
--- /dev/null
+++ b/indra/newview/lllocaltextureobject.h
@@ -0,0 +1,85 @@
+/**
+ * @file lllocaltextureobject.h
+ * @brief LLLocalTextureObject class header file
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ *
+ * Copyright (c) 2009-2009, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LOCALTEXTUREOBJECT_H
+#define LL_LOCALTEXTUREOBJECT_H
+
+#include <boost/shared_ptr.hpp>
+
+class LLViewerImage;
+class LLUUID;
+class LLTexLayer;
+class LLTextureEntry;
+
+// Stores all relevant information for a single texture
+// assumed to have ownership of all objects referred to -
+// will delete objects when being replaced or if object is destroyed.
+class LLLocalTextureObject
+{
+public:
+ LLLocalTextureObject();
+ LLLocalTextureObject(LLViewerImage *image, LLTextureEntry *entry, LLTexLayer *layer, LLUUID id);
+ LLLocalTextureObject(const LLLocalTextureObject &lto);
+ ~LLLocalTextureObject();
+
+ LLViewerImage* getImage() const;
+ LLTextureEntry* getTexEntry() const;
+ LLTexLayer* getTexLayer() const;
+ LLUUID getID() const;
+ S32 getDiscard() const;
+ BOOL getBakedReady() const;
+
+ void setImage(LLViewerImage* new_image);
+ void setTexEntry(LLTextureEntry *new_te);
+ void setTexLayer(LLTexLayer *new_tex_layer);
+ void setID(LLUUID new_id);
+ void setDiscard(S32 new_discard);
+ void setBakedReady(BOOL ready);
+
+protected:
+
+private:
+
+ LLPointer<LLViewerImage> mImage;
+ // NOTE: LLLocalTextureObject should be the exclusive owner of mTexEntry and mTexLayer
+ // using shared pointers here only for smart assignment & cleanup
+ // do NOT create new shared pointers to these objects, or keep pointers to them around
+ boost::shared_ptr<LLTextureEntry> mTexEntry;
+ boost::shared_ptr<LLTexLayer> mTexLayer;
+ LLUUID mID;
+
+ BOOL mIsBakedReady;
+ S32 mDiscard;
+};
+
+ #endif // LL_LOCALTEXTUREOBJECT_H
+