[shaderz] r28 committed - Material parameters...

1 view
Skip to first unread message

sha...@googlecode.com

unread,
Sep 11, 2010, 2:41:17 AM9/11/10
to shade...@googlegroups.com
Revision: 28
Author: vijay.michaeljoseph
Date: Fri Sep 10 23:40:37 2010
Log: Material parameters
+ Added support for materials. All materials will be shader based for
uniformity, even the simple textures based materials.
+ Added code to dynamically determine what parameters are editable by the
user
+ Added widget support for displaying all editable properties of a shader
+ Expanded the shader information structure to include fields like the
semantic and direction of the parameter.
+ Renamed the shaderInfo to shaderInterface as it will be containing code
for reading and manipulation of shader parameters also.
http://code.google.com/p/shaderz/source/detail?r=28

Added:
/trunk/include/qt/qtmaterialinfowidget.h
/trunk/include/shmaterial.h
/trunk/include/shshaderinterface.h
/trunk/src/qt/qtmaterialinfowidget.cpp
/trunk/src/shmaterial.cpp
/trunk/src/shshaderinterface.cpp
Deleted:
/trunk/include/shshaderinfo.h
/trunk/src/shshaderinfo.cpp
Modified:
/trunk/data/osgnvcg1.cg
/trunk/include/qt/qtmainwindow.h
/trunk/shaderz.xcodeproj/project.pbxproj
/trunk/shaderz.xcodeproj/vijayjoseph.mode1v3
/trunk/shaderz.xcodeproj/vijayjoseph.pbxuser
/trunk/src/qt/qtmainwindow.cpp

=======================================
--- /dev/null
+++ /trunk/include/qt/qtmaterialinfowidget.h Fri Sep 10 23:40:37 2010
@@ -0,0 +1,46 @@
+/*
+ * qtmaterialinfo.h
+ * shaderz
+ *
+ * Encapsulates the functionality for displaying a material prarameters
on qt widget
+ *
+ * Created by Vijay Michael Joseph on 9/10/10.
+ * EMail: shade...@googlegroups.com
+ *
+ */
+
+
+#ifndef __SHADERZ_MATERIAL_INFO_WIDGET__
+#define __SHADERZ_MATERIAL_INFO_WIDGET__
+
+#include <QWidget>
+#include "shshaderinterface.h"
+
+class QTreeWidget;
+class QTreeWidgetItem;
+
+namespace Shaderz
+{
+ class shMaterial;
+
+ class qtMaterialInfoWidget : public QWidget
+ {
+ public:
+ qtMaterialInfoWidget(QWidget* pParent, shMaterial* pMaterial);
+
+ // parses the material and loads all user editable parameters in widget
layout
+ void populateMaterialParams();
+
+ protected:
+ void populateStructMembers(QTreeWidgetItem* parentItem, const
std::vector<shShaderInterface::shShaderParameter>& memberList) const;
+
+ protected:
+ shMaterial* m_pMaterial;
+ QTreeWidget* m_pParamWidget;
+
+ private:
+ typedef QWidget ParentClass;
+ };
+}
+
+#endif // __SHADERZ_MATERIAL_INFO_WIDGET__
=======================================
--- /dev/null
+++ /trunk/include/shmaterial.h Fri Sep 10 23:40:37 2010
@@ -0,0 +1,42 @@
+/*
+ * shMaterial.h
+ * shaderz
+ *
+ * Created by Vijay Michael Joseph on 9/9/10.
+ * EMail: vijay.mic...@gmail.com
+ *
+ */
+
+#ifndef __SHMATERIAL_H__
+#define __SHMATERIAL_H__
+
+#include <osgNVCg/Program>
+#include "shshaderinterface.h"
+
+namespace Shaderz
+{
+ class shMaterial : public osgNVCg::Program
+ {
+ public:
+ shMaterial();
+ shMaterial(const shMaterial& rhs, const osg::CopyOp op =
osg::CopyOp::SHALLOW_COPY );
+ virtual ~shMaterial();
+
+ META_StateAttribute(shaderz, shMaterial, OSGNVCG_PROGRAM);
+
+ virtual void loadMaterialFromFile( std::string sFileName );
+ virtual std::vector<shShaderInterface::shShaderParameter>
getUserEditableParameters() const;
+
+ protected:
+ virtual bool IsParameterUserEditable(const
shShaderInterface::shShaderParameter& InParam) const;
+ virtual shShaderInterface::shShaderParameter
filterStructEditableProperties(const shShaderInterface::shShaderParameter&
InStructParam) const;
+
+ protected:
+ shShaderInterface* m_pShaderInterface;
+
+ private:
+ typedef osgNVCg::Program ParentClass;
+ };
+}
+
+#endif // __SHMATERIAL_H__
=======================================
--- /dev/null
+++ /trunk/include/shshaderinterface.h Fri Sep 10 23:40:37 2010
@@ -0,0 +1,140 @@
+#ifndef SHSHADERINTERFACE_H
+#define SHSHADERINTERFACE_H
+
+#include "shdefs.h"
+#include <CG/cg.h>
+#include <CG/cggl.h>
+#include <vector>
+#include <string>
+
+/**
+ * Technical Note: The shader interface implementation for CG does not get
a proper shader profile
+ * during initialization. However after the entire system has been
initialized, we can make a call to
+ * loading/initialize shader interface, and this time it has been
observed to succeed.
+ */
+namespace Shaderz
+{
+ typedef enum
+ {
+ SH_PARAMETERCLASS_UNKNOWN = 0,
+ SH_PARAMETERCLASS_SCALAR,
+ SH_PARAMETERCLASS_VECTOR,
+ SH_PARAMETERCLASS_MATRIX,
+ SH_PARAMETERCLASS_STRUCT,
+ SH_PARAMETERCLASS_ARRAY,
+ SH_PARAMETERCLASS_SAMPLER,
+ SH_PARAMETERCLASS_OBJECT,
+
+ SH_PARAMETERCLASS_MAX
+ } shParameterClass;
+
+ typedef enum
+ {
+ SH_PARAMETERTYPE_UNKNOWN = 0,
+ SH_PARAMETERTYPE_HALF,
+ SH_PARAMETERTYPE_INT,
+ SH_PARAMETERTYPE_FLOAT,
+ SH_PARAMETERTYPE_BOOL,
+ SH_PARAMETERTYPE_SAMPLER1D,
+ SH_PARAMETERTYPE_SAMPLER2D,
+ SH_PARAMETERTYPE_SAMPLER3D,
+ SH_PARAMETERTYPE_SAMPLERRECT,
+ SH_PARAMETERTYPE_SAMPLERCUBE,
+
+ SH_PARAMETERTYPE_MAX
+ } shParameterType;
+
+ typedef enum
+ {
+ SH_PARAMETERSEMANTIC_NONE = 0,
+ SH_PARAMETERSEMANTIC_POSITION,
+ SH_PARAMETERSEMANTIC_COLOR,
+ SH_PARAMETERSEMANTIC_NORMAL,
+
+ SH_PARAMETERSEMANTIC_MAX
+ } shParameterSemantic;
+
+ typedef enum
+ {
+ SH_PARAMETERDIR_UNKNOWN = 0,
+ SH_PARAMETERDIR_IN,
+ SH_PARAMETERDIR_OUT,
+ SH_PARAMETERDIR_INOUT,
+
+ SH_PARAMETERDIR_MAX
+ } shParameterDirection;
+
+ /**
+ * Base class for shader program information.
+ */
+ class shShaderInterface
+ {
+ public:
+ struct shShaderParameter
+ {
+ std::string name; // name of the parameter as it exists
in the shader
+ shParameterSemantic semantic; // parameter semantic (POSITION,
NORMAL, COLOR etc)
+ shParameterDirection direction; // In parameter, Out param or both
+ shParameterClass paramClass; // the class this
parameter belongs to
+ shParameterType paramType; // the type this
parameter belongs to
+ int rows; // the number of
rows (default=1 for all, >1 for matrix/vectors)
+ int columns; // the number of
columns for this parameter
+ std::vector<shShaderParameter> memberList; // the members
(iff this is a struct)
+ };
+
+ public:
+ shShaderInterface();
+ shShaderInterface(const std::string sShaderFile);
+ virtual ~shShaderInterface(){}
+
+ bool isValid() const { return m_IsValid; }
+ virtual void initialize();
+
+ virtual void loadShaderFromFile(const std::string sShaderFile);
+ virtual int getParameterNum() const { return m_parameterList.size(); }
+ virtual const shShaderParameter* getParameter(int paramIndex) const {
return paramIndex < m_parameterList.size() ? &m_parameterList[paramIndex] :
0; }
+ virtual const std::vector<shShaderParameter>& getParameters()
const { return m_parameterList; }
+ virtual void dumpParameterInfo(std::vector<shShaderParameter>*
pInParameterList = 0, int indentLevel=0);
+
+ protected:
+ virtual bool parseShader(void);
+
+ protected:
+ bool m_IsValid; // flag to state whether the shader was properly
loaded or not
+ std::string m_sShaderFile;
+ std::vector<shShaderParameter> m_parameterList;
+ };
+
+ /**
+ * ShaderInfo implementation for shaders writen in CG
+ */
+ class shShaderInterfaceCG : public shShaderInterface
+ {
+ public:
+ shShaderInterfaceCG();
+ shShaderInterfaceCG(std::string sShaderFile);
+ virtual ~shShaderInterfaceCG();
+ virtual bool parseShader(void);
+ virtual void initialize();
+
+ protected:
+ virtual void collectParameterInfo( CGparameter currentParam,
std::vector<shShaderParameter>& paramRoot );
+ virtual bool getParameterInfo( const CGparameter& currentParam,
shShaderParameter& paramInfo ) const;
+ virtual bool getParamSizeInfo( const CGparameter& cgParam, int&
columns, int& rows ) const;
+
+ // the translate family
+ virtual shParameterSemantic translateCGSemantic( const std::string&
semanticString ) const;
+ virtual shParameterClass translateCGParamClass( const
CGparameterclass& cgParamClass ) const;
+ virtual shParameterType translateCGParamType( const CGtype&
cgParamType ) const;
+ virtual shParameterDirection translateCGParamDirection(const CGenum&
cgDirection) const;
+
+ protected:
+ CGprogram m_ShaderHandle;
+ CGcontext m_Context;
+ CGprofile m_VertexProfile;
+
+ private:
+ typedef shShaderInterface ParentClass;
+ };
+}
+#endif // SHSHADERINTERFACE_H
=======================================
--- /dev/null
+++ /trunk/src/qt/qtmaterialinfowidget.cpp Fri Sep 10 23:40:37 2010
@@ -0,0 +1,82 @@
+/*
+ * qtMaterialInfoWidget.cpp
+ * shaderz
+ *
+ * Created by Vijay Michael Joseph on 9/10/10.
+ * EMail: shade...@googlegroups.com
+ *
+ */
+
+#include "qt/qtmaterialinfowidget.h"
+#include "shmaterial.h"
+#include "shlogger.h"
+
+#include <QVBoxLayout>
+#include <QLabel>
+#include <QTreeWidget>
+
+using namespace Shaderz;
+
+qtMaterialInfoWidget::qtMaterialInfoWidget( QWidget* pParent, shMaterial*
pMaterial )
+ : ParentClass(pParent)
+ , m_pMaterial(pMaterial)
+ , m_pParamWidget(0)
+{
+ if( !layout() )
+ {
+ setLayout(new QVBoxLayout);
+ }
+
+ m_pParamWidget = new QTreeWidget(this);
+ m_pParamWidget->setColumnCount(2);
+
+ QStringList headerLabels;
+ headerLabels<<QString("Name");
+ headerLabels<<QString("Input");
+ m_pParamWidget->setHeaderLabels(headerLabels);
+ layout()->addWidget(m_pParamWidget);
+}
+
+void qtMaterialInfoWidget::populateMaterialParams()
+{
+ QTreeWidgetItem* paramItem = 0;
+
+ if( m_pMaterial )
+ {
+ std::vector<shShaderInterface::shShaderParameter> paramList =
m_pMaterial->getUserEditableParameters();
+ int index;
+
+ for( index=0; index < paramList.size(); ++index )
+ {
+ paramItem = new QTreeWidgetItem(m_pParamWidget);
+ paramItem->setText( 0, QString(paramList[index].name.c_str()) );
+
+ // if is struct, then add it with an offset
+ if( paramList[index].memberList.size() > 0 )
+ {
+ populateStructMembers(paramItem, paramList[index].memberList );
+ }
+
+ m_pParamWidget->addTopLevelItem(paramItem);
+ }
+ }
+}
+
+void qtMaterialInfoWidget::populateStructMembers(QTreeWidgetItem*
parentItem, const std::vector<shShaderInterface::shShaderParameter>&
memberList) const
+{
+ int index;
+ for( index=0; index < memberList.size(); ++index )
+ {
+ QTreeWidgetItem* paramItem = new QTreeWidgetItem(parentItem);
+ paramItem->setText( 0, QString(memberList[index].name.c_str()) );
+
+ // if is struct, then add it with an offset
+ if( memberList[index].memberList.size() > 0 )
+ {
+ populateStructMembers(paramItem, memberList[index].memberList );
+ }
+
+ parentItem->addChild(paramItem);
+ }
+
+}
=======================================
--- /dev/null
+++ /trunk/src/shmaterial.cpp Fri Sep 10 23:40:37 2010
@@ -0,0 +1,105 @@
+/*
+ * shMaterial.cpp
+ * shaderz
+ *
+ * Created by Vijay Michael Joseph on 9/9/10.
+ * Email: vijay.mic...@gmail.com
+ *
+ */
+
+#include "shmaterial.h"
+#include "shlogger.h"
+
+using namespace Shaderz;
+
+shMaterial::shMaterial()
+ : ParentClass(new osgNVCg::Context, osgNVCg::Program::BEST_VP)
+ , m_pShaderInterface(0)
+{
+}
+
+shMaterial::shMaterial(const shMaterial& rhs, const osg::CopyOp op )
+ : ParentClass(rhs, op)
+{
+ // todo: copy over the shader info from rhs
+}
+
+shMaterial::~shMaterial()
+{
+ delete m_pShaderInterface;
+ m_pShaderInterface = 0;
+}
+
+void shMaterial::loadMaterialFromFile( std::string sFileName )
+{
+ delete m_pShaderInterface;
+ m_pShaderInterface = new shShaderInterfaceCG(sFileName);
+ m_pShaderInterface->initialize();
+}
+
+// returns the list of parameters to be displayed in the UI
+std::vector<shShaderInterface::shShaderParameter>
shMaterial::getUserEditableParameters() const
+{
+ std::vector<shShaderInterface::shShaderParameter> RequiredParamList;
+ if( !m_pShaderInterface )
+ {
+ return RequiredParamList;
+ }
+
+ int index;
+ const std::vector<shShaderInterface::shShaderParameter>& AllParamList =
m_pShaderInterface->getParameters();
+
+ // filter only those parameters that make sense to be shown in UI for
editing
+ for( index=0; index < AllParamList.size(); ++index )
+ {
+ shShaderInterface::shShaderParameter param = AllParamList[index];
+
+ // skip the property if it is not an editable property
+ if( !IsParameterUserEditable(param) )
+ {
+ continue;
+ }
+
+ // skip the property if it is a struct and no editable properties in its
fields.
+ if( param.paramClass == SH_PARAMETERCLASS_STRUCT )
+ {
+ param = filterStructEditableProperties(param);
+ if( param.memberList.size() == 0 )
+ {
+ continue;
+ }
+ }
+
+ // add the parameter as an user editable property
+ RequiredParamList.push_back(param);
+ }
+
+ return RequiredParamList;
+}
+
+bool shMaterial::IsParameterUserEditable(const
shShaderInterface::shShaderParameter& InParam) const
+{
+ return InParam.direction != SH_PARAMETERDIR_OUT
+ && InParam.direction != SH_PARAMETERDIR_INOUT
+ && InParam.semantic != SH_PARAMETERSEMANTIC_POSITION
+ && InParam.semantic != SH_PARAMETERSEMANTIC_NORMAL
+ && InParam.paramClass != SH_PARAMETERCLASS_MATRIX;
+}
+
+shShaderInterface::shShaderParameter
shMaterial::filterStructEditableProperties(const
shShaderInterface::shShaderParameter& InStructParam) const
+{
+ shShaderInterface::shShaderParameter returnVal = InStructParam;
+ returnVal.memberList.clear();
+
+ // iterate through the structure members and add any editable member to
the return value.
+ int index;
+ for( index=0; index < InStructParam.memberList.size(); ++index )
+ {
+ if( IsParameterUserEditable(InStructParam.memberList[index]) )
+ {
+ returnVal.memberList.push_back(InStructParam.memberList[index]);
+ }
+ }
+
+ return returnVal;
+}
=======================================
--- /dev/null
+++ /trunk/src/shshaderinterface.cpp Fri Sep 10 23:40:37 2010
@@ -0,0 +1,258 @@
+#include "shshaderinterface.h"
+#include "shlogger.h"
+
+using namespace Shaderz;
+
+shShaderInterface::shShaderInterface()
+ : m_IsValid(false)
+{
+}
+
+shShaderInterface::shShaderInterface(const std::string sShaderFile)
+ : m_IsValid(false)
+ , m_sShaderFile(sShaderFile)
+{
+}
+
+void shShaderInterface::loadShaderFromFile(const std::string sShaderFile)
+{
+ m_sShaderFile = sShaderFile;
+ parseShader();
+}
+
+bool shShaderInterface::parseShader(void)
+{
+ return false;
+}
+
+void shShaderInterface::initialize()
+{
+ if( m_sShaderFile != "" )
+ {
+ loadShaderFromFile(m_sShaderFile);
+ }
+}
+
+void shShaderInterface::dumpParameterInfo(std::vector<shShaderParameter>*
pInParameterList, int indentLevel)
+{
+ unsigned int index;
+ std::vector<shShaderParameter> parameterRoot = pInParameterList ?
*pInParameterList : m_parameterList;
+ for( index=0; index < parameterRoot.size(); ++index )
+ {
+ for( int indentIndex=0; indentIndex<indentLevel; ++indentIndex )
LOG<<"\t";
+ LOG<<parameterRoot[index].name<<" ";
+ LOG<<"Class="<<parameterRoot[index].paramClass<<" ";
+ LOG<<"Type="<<parameterRoot[index].paramType<<" ";
+ LOG<<"Size="<<parameterRoot[index].columns<<"
x "<<parameterRoot[index].rows<<" ";
+ LOG<<"Semantic="<<parameterRoot[index].semantic<<" ";
+ LOG<<"Direction="<<parameterRoot[index].direction<<" ";
+ if( SH_PARAMETERCLASS_STRUCT == parameterRoot[index].paramClass )
+ {
+ LOG<<"\n";
+ dumpParameterInfo( &parameterRoot[index].memberList,
indentLevel+1 );
+ }
+ LOG<<"\n";
+ }
+}
+
+
+//////
+// shShaderInterfaceCG
+/////
+shShaderInterfaceCG::shShaderInterfaceCG()
+ : ParentClass()
+{
+}
+
+shShaderInterfaceCG::shShaderInterfaceCG(std::string sShaderFile)
+ : ParentClass(sShaderFile)
+{
+}
+
+shShaderInterfaceCG::~shShaderInterfaceCG()
+{
+ cgDestroyContext(m_Context);
+
+ if( cgIsProgram(m_ShaderHandle) )
+ {
+ cgDestroyProgram(m_ShaderHandle);
+ }
+}
+
+bool shShaderInterfaceCG::parseShader(void)
+{
+ ParentClass::parseShader();
+
+ m_IsValid = false;
+ ParentClass::parseShader();
+
+ // destroy prev prog is any
+ if( cgIsProgram(m_ShaderHandle) )
+ {
+ LOG<<"Destroying prev program.\n";
+ cgDestroyProgram(m_ShaderHandle);
+ }
+
+ LOG<<"Parsing shader: "<<m_sShaderFile<<"\nContext="<<m_Context<<"\n";
+ m_ShaderHandle = cgCreateProgramFromFile( m_Context, CG_SOURCE,
m_sShaderFile.c_str(), m_VertexProfile, "main", 0 );
+ if( m_ShaderHandle == 0 )
+ {
+ LOG<<"Failed to create program handle.\n";
+ CGerror err = cgGetError();
+ LOG<<"CgErr = "<<cgGetErrorString(err)<<"\n";
+ return false;
+ }
+ // search for Global and Program parameters
+ CGenum query[] = { CG_GLOBAL /*, CG_PROGRAM*/ };
+ for( unsigned int i=0; i<sizeof(query)/sizeof(query[0]); ++i )
+ {
+ CGparameter pParam = cgGetFirstParameter( m_ShaderHandle, query[i] );
+ collectParameterInfo( pParam, m_parameterList );
+ }
+
+ dumpParameterInfo();
+
+ // all went well
+ m_IsValid = true;
+ return true;
+}
+
+void shShaderInterfaceCG::collectParameterInfo( CGparameter currentParam,
std::vector<shShaderParameter>& paramRoot )
+{
+ while(currentParam)
+ {
+ struct shShaderParameter paramInfo;
+ getParameterInfo( currentParam, paramInfo );
+ if( SH_PARAMETERCLASS_STRUCT == paramInfo.paramClass )
+ {
+ CGparameter structParam =
cgGetFirstStructParameter(currentParam);
+ collectParameterInfo(structParam, paramInfo.memberList);
+ }
+ paramRoot.push_back(paramInfo);
+ currentParam = cgGetNextParameter( currentParam );
+ }
+}
+
+shParameterSemantic shShaderInterfaceCG::translateCGSemantic( const
std::string& semanticString ) const
+{
+ shParameterSemantic semantic = SH_PARAMETERSEMANTIC_NONE;
+ if( semanticString == "POSITION" ) semantic =
SH_PARAMETERSEMANTIC_POSITION;
+ else if( semanticString == "COLOR" ) semantic =
SH_PARAMETERSEMANTIC_COLOR;
+ else if( semanticString == "NORMAL" ) semantic =
SH_PARAMETERSEMANTIC_NORMAL;
+
+ return semantic;
+}
+
+shParameterClass shShaderInterfaceCG::translateCGParamClass( const
CGparameterclass& cgParamClass ) const
+{
+ switch(cgParamClass)
+ {
+ case CG_PARAMETERCLASS_SCALAR: return SH_PARAMETERCLASS_SCALAR;
+ case CG_PARAMETERCLASS_VECTOR: return SH_PARAMETERCLASS_VECTOR;
+ case CG_PARAMETERCLASS_MATRIX: return SH_PARAMETERCLASS_MATRIX;
+ case CG_PARAMETERCLASS_STRUCT: return SH_PARAMETERCLASS_STRUCT;
+ case CG_PARAMETERCLASS_ARRAY: return SH_PARAMETERCLASS_ARRAY;
+ case CG_PARAMETERCLASS_SAMPLER: return SH_PARAMETERCLASS_SAMPLER;
+ case CG_PARAMETERCLASS_OBJECT: return SH_PARAMETERCLASS_OBJECT;
+ case CG_PARAMETERCLASS_UNKNOWN:
+ case CG_PARAMETERCLASS_MAX:
+ default: return SH_PARAMETERCLASS_UNKNOWN;
+ }
+
+ return SH_PARAMETERCLASS_UNKNOWN;
+}
+
+shParameterType shShaderInterfaceCG::translateCGParamType( const CGtype&
cgParamType ) const
+{
+ switch(cgParamType)
+ {
+ case CG_HALF: return SH_PARAMETERTYPE_HALF;
+ case CG_INT: return SH_PARAMETERTYPE_INT;
+ case CG_FLOAT: return SH_PARAMETERTYPE_FLOAT;
+ case CG_BOOL: return SH_PARAMETERTYPE_BOOL;
+ case CG_SAMPLER1D: return SH_PARAMETERTYPE_SAMPLER1D;
+ case CG_SAMPLER2D: return SH_PARAMETERTYPE_SAMPLER2D;
+ case CG_SAMPLER3D: return SH_PARAMETERTYPE_SAMPLER3D;
+ case CG_SAMPLERRECT: return SH_PARAMETERTYPE_SAMPLERRECT;
+ case CG_SAMPLERCUBE: return SH_PARAMETERTYPE_SAMPLERCUBE;
+ default: return SH_PARAMETERTYPE_UNKNOWN;
+ }
+
+ return SH_PARAMETERTYPE_UNKNOWN;
+}
+
+shParameterDirection shShaderInterfaceCG::translateCGParamDirection( const
CGenum& cgDirection )const
+{
+ if( cgDirection == CG_IN ) return SH_PARAMETERDIR_IN;
+ else if( cgDirection == CG_OUT) return SH_PARAMETERDIR_OUT;
+ else if( cgDirection == CG_INOUT) return SH_PARAMETERDIR_INOUT;
+
+ return SH_PARAMETERDIR_UNKNOWN;
+}
+
+bool shShaderInterfaceCG::getParamSizeInfo( const CGparameter& cgParam,
int& columns, int& rows ) const
+{
+ // create the initial mapping for type and size of parameters
+ struct cgParamTypeSizeMapping
+ {
+ CGtype _type;
+ int _col;
+ int _rows;
+ };
+
+#define CG_DATATYPE_MACRO(name, compiler_name, enum_name, base_name,
ncols, nrows, pc) \
+ {enum_name, ncols, nrows},
+
+ cgParamTypeSizeMapping map[] = {
+#include <CG/cg_datatypes.h>
+ };
+#undef CG_DATATYPE_MACRO
+
+ CGtype paramType = cgGetParameterType(cgParam);
+ unsigned int mapIndex;
+ for( mapIndex=0; mapIndex < sizeof(map)/sizeof(map[0]); ++mapIndex )
+ {
+ if( paramType == map[mapIndex]._type )
+ {
+ columns = map[mapIndex]._col;
+ rows = map[mapIndex]._rows;
+ break;
+ }
+ }
+
+ return true;
+}
+
+void shShaderInterfaceCG::initialize()
+{
+ LOG<<"shShaderInterfaceCG::Initialize() \n";
+
+ // create the context and profile before allowing parsing of shader via
parent class
+ m_Context = cgCreateContext();
+ if( m_Context == 0 )
+ {
+ LOG<<"Failed to create context.\n";
+ return;
+ }
+
+ m_VertexProfile = cgGLGetLatestProfile( CG_GL_VERTEX );
+ if( m_VertexProfile == CG_PROFILE_UNKNOWN )
+ {
+ LOG<<"Failed to get profile.\n";
+ cgDestroyContext(m_Context);
+ return;
+ }
+
+ ParentClass::initialize();
+}
+
+bool shShaderInterfaceCG::getParameterInfo( const CGparameter&
currentParam, shShaderParameter& paramInfo ) const
+{
+ paramInfo.name = cgGetParameterName(currentParam);
+ paramInfo.semantic =
translateCGSemantic(cgGetParameterSemantic(currentParam));
+ paramInfo.direction =
translateCGParamDirection(cgGetParameterDirection(currentParam));
+ paramInfo.paramClass = translateCGParamClass(
cgGetParameterClass(currentParam) );
+ paramInfo.paramType =
translateCGParamType(cgGetParameterBaseType(currentParam));
+ getParamSizeInfo( currentParam, paramInfo.columns, paramInfo.rows );
+ return true;
+}
=======================================
--- /trunk/include/shshaderinfo.h Sun Sep 5 16:15:41 2010
+++ /dev/null
@@ -1,106 +0,0 @@
-#ifndef SHSHADERINFO_H
-#define SHSHADERINFO_H
-
-#include "shdefs.h"
-#include <CG/cg.h>
-#include <CG/cggl.h>
-#include <vector>
-#include <string>
-
-namespace Shaderz
-{
- typedef enum
- {
- SH_PARAMETERCLASS_UNKNOWN = 0,
- SH_PARAMETERCLASS_SCALAR,
- SH_PARAMETERCLASS_VECTOR,
- SH_PARAMETERCLASS_MATRIX,
- SH_PARAMETERCLASS_STRUCT,
- SH_PARAMETERCLASS_ARRAY,
- SH_PARAMETERCLASS_SAMPLER,
- SH_PARAMETERCLASS_OBJECT,
-
- SH_PARAMETERCLASS_MAX
- } shParameterClass;
-
- typedef enum
- {
- SH_PARAMETERTYPE_UNKNOWN = 0,
- SH_PARAMETERTYPE_HALF,
- SH_PARAMETERTYPE_INT,
- SH_PARAMETERTYPE_FLOAT,
- SH_PARAMETERTYPE_BOOL,
- SH_PARAMETERTYPE_SAMPLER1D,
- SH_PARAMETERTYPE_SAMPLER2D,
- SH_PARAMETERTYPE_SAMPLER3D,
- SH_PARAMETERTYPE_SAMPLERRECT,
- SH_PARAMETERTYPE_SAMPLERCUBE,
-
- SH_PARAMETERTYPE_MAX
- } shParameterType;
-
- /**
- * Base class for shader program information.
- */
- class shShaderInfo
- {
- public:
- struct shShaderParameter
- {
- std::string name; // name of the parameter as it exists
in the shader
- shParameterClass paramClass; // the class this
parameter belongs to
- shParameterType paramType; // the type this
parameter belongs to
- int rows; // the number of
rows (default=1 for all, >1 for matrix/vectors)
- int columns; // the number of
columns for this parameter
- std::vector<shShaderParameter> memberList; // the members
(iff this is a struct)
- };
-
- public:
- shShaderInfo();
- shShaderInfo(const std::string sShaderFile);
- virtual ~shShaderInfo(){}
-
- void setFile(const std::string sShaderFile);
- virtual bool parseShader(void);
- virtual int getParameterNum() const { return m_parameterList.size(); }
- virtual const shShaderParameter* getParameter(int paramIndex) const {
return paramIndex < m_parameterList.size() ? &m_parameterList[paramIndex] :
0; }
- virtual const std::vector<shShaderParameter>& getParameters()
const { return m_parameterList; }
- virtual void dumpParameterInfo(std::vector<shShaderParameter>*
pInParameterList = 0, int indentLevel=0);
-
- protected:
- virtual void initShaderInfo();
-
- protected:
- std::string m_sShaderFile;
- std::vector<shShaderParameter> m_parameterList;
- };
-
- /**
- * ShaderInfo implementation for shaders writen in CG
- */
- class shShaderInfoCG : public shShaderInfo
- {
- public:
- shShaderInfoCG();
- shShaderInfoCG(std::string sShaderFile);
- virtual ~shShaderInfoCG(){}
- virtual bool parseShader(void);
-
- protected:
- virtual void initShaderInfo();
- virtual void collectParameterInfo( CGparameter currentParam,
std::vector<shShaderParameter>& paramRoot );
- virtual bool getParameterInfo( const CGparameter& currentParam,
shShaderParameter& paramInfo ) const;
- virtual shParameterClass translateCGParamClass( const
CGparameterclass& cgParamClass ) const;
- virtual shParameterType translateCGParamType( const CGtype&
cgParamType ) const;
- virtual bool getParamSizeInfo( const CGparameter& cgParam, int&
columns, int& rows ) const;
-
- protected:
- CGprogram m_ShaderHandle;
- CGcontext m_Context;
- CGprofile m_VertexProfile;
-
- private:
- typedef shShaderInfo ParentClass;
- };
-}
-#endif // SHSHADERINFO_H
=======================================
--- /trunk/src/shshaderinfo.cpp Sun Sep 5 16:15:41 2010
+++ /dev/null
@@ -1,200 +0,0 @@
-#include "shshaderinfo.h"
-#include "shlogger.h"
-
-using namespace Shaderz;
-
-shShaderInfo::shShaderInfo()
-{
-}
-
-shShaderInfo::shShaderInfo(const std::string sShaderFile)
-{
- setFile(sShaderFile);
-}
-
-void shShaderInfo::setFile(const std::string sShaderFile)
-{
- m_sShaderFile = sShaderFile;
-}
-
-bool shShaderInfo::parseShader(void)
-{
- return false;
-}
-
-void shShaderInfo::initShaderInfo()
-{
- // nothing to be done here
-}
-
-void shShaderInfo::dumpParameterInfo(std::vector<shShaderParameter>*
pInParameterList, int indentLevel)
-{
- unsigned int index;
- std::vector<shShaderParameter> parameterRoot = pInParameterList ?
*pInParameterList : m_parameterList;
- for( index=0; index < parameterRoot.size(); ++index )
- {
- for( int indentIndex=0; indentIndex<indentLevel; ++indentIndex )
LOG<<"\t";
- LOG<<parameterRoot[index].name<<" ";
- LOG<<"Class="<<parameterRoot[index].paramClass<<" ";
- LOG<<"Type="<<parameterRoot[index].paramType<<" ";
- LOG<<"Size="<<parameterRoot[index].columns<<"
x "<<parameterRoot[index].rows;
- if( SH_PARAMETERCLASS_STRUCT == parameterRoot[index].paramClass )
- {
- LOG<<"\n";
- dumpParameterInfo( &parameterRoot[index].memberList,
indentLevel+1 );
- }
- LOG<<"\n";
- }
-}
-
-
-//////
-// shShaderInfoCG
-/////
-shShaderInfoCG::shShaderInfoCG()
- : ParentClass()
-{
- initShaderInfo();
-}
-
-shShaderInfoCG::shShaderInfoCG(std::string sShaderFile)
- : ParentClass(sShaderFile)
-{
- initShaderInfo();
- parseShader();
-}
-
-bool shShaderInfoCG::parseShader(void)
-{
- ParentClass::parseShader();
-
- LOG<<"Parsing shader: "<<m_sShaderFile<<"\nContext="<<m_Context<<"\n";
- m_ShaderHandle = cgCreateProgramFromFile( m_Context, CG_SOURCE,
m_sShaderFile.c_str(), m_VertexProfile, "main", 0 );
- if( m_ShaderHandle == 0 )
- {
- LOG<<"Failed to create program handle.\n";
- CGerror err = cgGetError();
- LOG<<"CgErr = "<<cgGetErrorString(err)<<"\n";
- return false;
- }
- // search for Global and Program parameters
- CGenum query[] = { CG_GLOBAL, CG_PROGRAM };
- for( unsigned int i=0; i<sizeof(query)/sizeof(query[0]); ++i )
- {
- CGparameter pParam = cgGetFirstParameter( m_ShaderHandle,
query[i] );
- collectParameterInfo( pParam, m_parameterList );
- }
-
- return true;
-}
-
-void shShaderInfoCG::collectParameterInfo( CGparameter currentParam,
std::vector<shShaderParameter>& paramRoot )
-{
- while(currentParam)
- {
- struct shShaderParameter paramInfo;
- getParameterInfo( currentParam, paramInfo );
- if( SH_PARAMETERCLASS_STRUCT == paramInfo.paramClass )
- {
- CGparameter structParam =
cgGetFirstStructParameter(currentParam);
- collectParameterInfo(structParam, paramInfo.memberList);
- }
- paramRoot.push_back(paramInfo);
- currentParam = cgGetNextParameter( currentParam );
- }
-}
-
-shParameterClass shShaderInfoCG::translateCGParamClass( const
CGparameterclass& cgParamClass ) const
-{
- switch(cgParamClass)
- {
- case CG_PARAMETERCLASS_SCALAR: return SH_PARAMETERCLASS_SCALAR;
- case CG_PARAMETERCLASS_VECTOR: return SH_PARAMETERCLASS_VECTOR;
- case CG_PARAMETERCLASS_MATRIX: return SH_PARAMETERCLASS_MATRIX;
- case CG_PARAMETERCLASS_STRUCT: return SH_PARAMETERCLASS_STRUCT;
- case CG_PARAMETERCLASS_ARRAY: return SH_PARAMETERCLASS_ARRAY;
- case CG_PARAMETERCLASS_SAMPLER: return SH_PARAMETERCLASS_SAMPLER;
- case CG_PARAMETERCLASS_OBJECT: return SH_PARAMETERCLASS_OBJECT;
- case CG_PARAMETERCLASS_UNKNOWN:
- case CG_PARAMETERCLASS_MAX:
- default: return SH_PARAMETERCLASS_UNKNOWN;
- }
-
- return SH_PARAMETERCLASS_UNKNOWN;
-}
-
-shParameterType shShaderInfoCG::translateCGParamType( const CGtype&
cgParamType ) const
-{
- switch(cgParamType)
- {
- case CG_HALF: return SH_PARAMETERTYPE_HALF;
- case CG_INT: return SH_PARAMETERTYPE_INT;
- case CG_FLOAT: return SH_PARAMETERTYPE_FLOAT;
- case CG_BOOL: return SH_PARAMETERTYPE_BOOL;
- case CG_SAMPLER1D: return SH_PARAMETERTYPE_SAMPLER1D;
- case CG_SAMPLER2D: return SH_PARAMETERTYPE_SAMPLER2D;
- case CG_SAMPLER3D: return SH_PARAMETERTYPE_SAMPLER3D;
- case CG_SAMPLERRECT: return SH_PARAMETERTYPE_SAMPLERRECT;
- case CG_SAMPLERCUBE: return SH_PARAMETERTYPE_SAMPLERCUBE;
- default: return SH_PARAMETERTYPE_UNKNOWN;
- }
-
- return SH_PARAMETERTYPE_UNKNOWN;
-}
-
-bool shShaderInfoCG::getParamSizeInfo( const CGparameter& cgParam, int&
columns, int& rows ) const
-{
- // create the initial mapping for type and size of parameters
- struct cgParamTypeSizeMapping
- {
- CGtype _type;
- int _col;
- int _rows;
- };
-
-#define CG_DATATYPE_MACRO(name, compiler_name, enum_name, base_name,
ncols, nrows, pc) \
- {enum_name, ncols, nrows},
-
- cgParamTypeSizeMapping map[] = {
-#include <CG/cg_datatypes.h>
- };
-#undef CG_DATATYPE_MACRO
-
- CGtype paramType = cgGetParameterType(cgParam);
- unsigned int mapIndex;
- for( mapIndex=0; mapIndex < sizeof(map)/sizeof(map[0]); ++mapIndex )
- {
- if( paramType == map[mapIndex]._type )
- {
- columns = map[mapIndex]._col;
- rows = map[mapIndex]._rows;
- break;
- }
- }
-
- return true;
-}
-
-void shShaderInfoCG::initShaderInfo()
-{
- m_Context = cgCreateContext();
- if( m_Context == 0 )
- {
- LOG<<"Failed to create context.\n";
- }
-
- m_VertexProfile = cgGLGetLatestProfile( CG_GL_VERTEX );
- if( m_VertexProfile == CG_PROFILE_UNKNOWN )
- {
- LOG<<"Failed to get profile.\n";
- }
-}
-
-bool shShaderInfoCG::getParameterInfo( const CGparameter& currentParam,
shShaderParameter& paramInfo ) const
-{
- paramInfo.name = cgGetParameterName(currentParam);
- paramInfo.paramClass = translateCGParamClass(
cgGetParameterClass(currentParam) );
- paramInfo.paramType =
translateCGParamType(cgGetParameterBaseType(currentParam));
- getParamSizeInfo( currentParam, paramInfo.columns, paramInfo.rows );
- return true;
-}
=======================================
--- /trunk/data/osgnvcg1.cg Thu Mar 11 14:28:24 2010
+++ /trunk/data/osgnvcg1.cg Fri Sep 10 23:40:37 2010
@@ -14,6 +14,12 @@
float4 HPosition : POSITION;
float4 Color : COLOR;
};
+
+float3 foo(int index)
+{
+ float3 ret;
+ return ret;
+}

float3 testFloat3 : COLOR;
bool testBool;
=======================================
--- /trunk/include/qt/qtmainwindow.h Sun Sep 5 16:15:41 2010
+++ /trunk/include/qt/qtmainwindow.h Fri Sep 10 23:40:37 2010
@@ -14,6 +14,8 @@

namespace Shaderz
{
+ class qtMaterialInfoWidget;
+
class qtMainWindow : public QDialog
{
Q_OBJECT
@@ -27,7 +29,8 @@
void OnClickedShaderInfo();

protected:
- QLayout* mShaderLayout;
+ QLayout* mShaderLayout;
+ qtMaterialInfoWidget* mMaterialInfoWidget;

private:
typedef QDialog ParentClass;
=======================================
--- /trunk/shaderz.xcodeproj/project.pbxproj Sun Sep 5 16:15:41 2010
+++ /trunk/shaderz.xcodeproj/project.pbxproj Fri Sep 10 23:40:37 2010
@@ -7,9 +7,13 @@
objects = {

/* Begin PBXFileReference section */
+ 4970EDF0123925BB0043F7B1 /* shmaterial.cpp */ = {isa = PBXFileReference;
fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path =
shmaterial.cpp; sourceTree = "<group>"; };
+ 4970EDFD123925F60043F7B1 /* shmaterial.h */ = {isa = PBXFileReference;
fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shmaterial.h;
sourceTree = "<group>"; };
+ 4970EE0E1239CA840043F7B1 /* qtmaterialinfowidget.h */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h;
path = qtmaterialinfowidget.h; sourceTree = "<group>"; };
+ 4970EE101239CD470043F7B1 /* qtmaterialinfowidget.cpp */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp;
path = qtmaterialinfowidget.cpp; sourceTree = "<group>"; };
497754BC1234571000F4DCE4 /* osgnvcg1.cg */ = {isa = PBXFileReference;
fileEncoding = 4; lastKnownFileType = text; name = osgnvcg1.cg; path =
data/osgnvcg1.cg; sourceTree = "<group>"; };
- 49C717A81233984000171C0E /* shshaderinfo.h */ = {isa = PBXFileReference;
fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path =
shshaderinfo.h; sourceTree = "<group>"; };
- 49C717A91233986000171C0E /* shshaderinfo.cpp */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp;
path = shshaderinfo.cpp; sourceTree = "<group>"; };
+ 49C717A81233984000171C0E /* shshaderinterface.h */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h;
path = shshaderinterface.h; sourceTree = "<group>"; };
+ 49C717A91233986000171C0E /* shshaderinterface.cpp */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp;
path = shshaderinterface.cpp; sourceTree = "<group>"; };
49C7DC811232ACD900E24C8D /* CMakeLists.txt */ = {isa = PBXFileReference;
fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt;
sourceTree = "<group>"; };
49C7DC881232AFB600E24C8D /* osgadapterwidget.h */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h;
path = osgadapterwidget.h; sourceTree = "<group>"; };
49C7DC891232AFB600E24C8D /* qtmainwindow.h */ = {isa = PBXFileReference;
fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path =
qtmainwindow.h; sourceTree = "<group>"; };
@@ -49,8 +53,9 @@
children = (
49C7DC871232AFB600E24C8D /* qt */,
49C7DC8B1232AFB600E24C8D /* shlogger.h */,
- 49C717A81233984000171C0E /* shshaderinfo.h */,
+ 49C717A81233984000171C0E /* shshaderinterface.h */,
49C7DCA81232C9EF00E24C8D /* shdefs.h */,
+ 4970EDFD123925F60043F7B1 /* shmaterial.h */,
);
path = include;
sourceTree = "<group>";
@@ -61,6 +66,7 @@
49C7DC881232AFB600E24C8D /* osgadapterwidget.h */,
49C7DC891232AFB600E24C8D /* qtmainwindow.h */,
49C7DC8A1232AFB600E24C8D /* qtshaderzviewwidget.h */,
+ 4970EE0E1239CA840043F7B1 /* qtmaterialinfowidget.h */,
);
path = qt;
sourceTree = "<group>";
@@ -70,8 +76,9 @@
children = (
49C7DC8D1232AFB600E24C8D /* qt */,
49C7DC911232AFB600E24C8D /* shmain.cpp */,
- 49C717A91233986000171C0E /* shshaderinfo.cpp */,
+ 49C717A91233986000171C0E /* shshaderinterface.cpp */,
49C7DC921232AFB600E24C8D /* shlogger.cpp */,
+ 4970EDF0123925BB0043F7B1 /* shmaterial.cpp */,
);
path = src;
sourceTree = "<group>";
@@ -82,6 +89,7 @@
49C7DC8E1232AFB600E24C8D /* osgadapterwidget.cpp */,
49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */,
49C7DC901232AFB600E24C8D /* qtshaderzviewwidget.cpp */,
+ 4970EE101239CD470043F7B1 /* qtmaterialinfowidget.cpp */,
);
path = qt;
sourceTree = "<group>";
=======================================
--- /trunk/shaderz.xcodeproj/vijayjoseph.mode1v3 Sun Sep 5 16:15:41 2010
+++ /trunk/shaderz.xcodeproj/vijayjoseph.mode1v3 Fri Sep 10 23:40:37 2010
@@ -202,24 +202,24 @@
<key>Content</key>
<dict>
<key>PBXProjectModuleGUID</key>
- <string>497754C11234572800F4DCE4</string>
+ <string>4970EE24123A9D0E0043F7B1</string>
<key>PBXProjectModuleLabel</key>
- <string>osgnvcg1.cg</string>
+ <string>shshaderinterface.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
- <string>497754C21234572800F4DCE4</string>
+ <string>4970EE25123A9D0E0043F7B1</string>
<key>PBXProjectModuleLabel</key>
- <string>osgnvcg1.cg</string>
+ <string>shshaderinterface.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>497754C31234572800F4DCE4</string>
+ <string>4973B481123B59A700CF35EA</string>
<key>history</key>
<array>
- <string>497754BE1234572000F4DCE4</string>
+ <string>4973B480123B59A700CF35EA</string>
</array>
</dict>
<key>SplitCount</key>
@@ -242,24 +242,104 @@
<key>Content</key>
<dict>
<key>PBXProjectModuleGUID</key>
- <string>497754C41234572800F4DCE4</string>
+ <string>4973B18D123B15E800CF35EA</string>
<key>PBXProjectModuleLabel</key>
- <string>shshaderinfo.h</string>
+ <string>shmaterial.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
- <string>497754C51234572800F4DCE4</string>
+ <string>4973B18E123B15E800CF35EA</string>
<key>PBXProjectModuleLabel</key>
- <string>shshaderinfo.h</string>
+ <string>shmaterial.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>497754C71234572800F4DCE4</string>
+ <string>4973B483123B59A700CF35EA</string>
<key>history</key>
<array>
- <string>497754C61234572800F4DCE4</string>
+ <string>4973B482123B59A700CF35EA</string>
+ </array>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>Geometry</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 20}, {802, 677}}</string>
+ <key>PBXModuleWindowStatusBarHidden2</key>
+ <false/>
+ <key>RubberWindowFrame</key>
+ <string>8 60 802 718 0 0 1280 778 </string>
+ </dict>
+ </dict>
+ <dict>
+ <key>Content</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>4973B16D123B12D800CF35EA</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>qtmaterialinfowidget.cpp</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>4973B16E123B12D800CF35EA</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>qtmaterialinfowidget.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>4973B485123B59A700CF35EA</string>
+ <key>history</key>
+ <array>
+ <string>4973B484123B59A700CF35EA</string>
+ </array>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>Geometry</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 20}, {802, 677}}</string>
+ <key>PBXModuleWindowStatusBarHidden2</key>
+ <false/>
+ <key>RubberWindowFrame</key>
+ <string>12 60 802 718 0 0 1280 778 </string>
+ </dict>
+ </dict>
+ <dict>
+ <key>Content</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>4973B293123B20FA00CF35EA</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>qtshaderzviewwidget.h</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>4973B294123B20FA00CF35EA</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>qtshaderzviewwidget.h</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>4973B487123B59A700CF35EA</string>
+ <key>history</key>
+ <array>
+ <string>4973B486123B59A700CF35EA</string>
</array>
</dict>
<key>SplitCount</key>
@@ -282,24 +362,144 @@
<key>Content</key>
<dict>
<key>PBXProjectModuleGUID</key>
- <string>497754C81234572800F4DCE4</string>
+ <string>4973B3B3123B4EFD00CF35EA</string>
<key>PBXProjectModuleLabel</key>
+ <string>osgnvcg1.cg</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>4973B3B4123B4EFD00CF35EA</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>osgnvcg1.cg</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>4973B488123B59A700CF35EA</string>
+ <key>history</key>
+ <array>
+ <string>4973B470123B592A00CF35EA</string>
+ </array>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>Geometry</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 20}, {802, 677}}</string>
+ <key>PBXModuleWindowStatusBarHidden2</key>
+ <false/>
+ <key>RubberWindowFrame</key>
+ <string>15 55 802 718 0 0 1280 778 </string>
+ </dict>
+ </dict>
+ <dict>
+ <key>Content</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>4970EE20123A9D0E0043F7B1</string>
+ <key>PBXProjectModuleLabel</key>
<string>qtmainwindow.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
- <string>497754C91234572800F4DCE4</string>
+ <string>4970EE21123A9D0E0043F7B1</string>
<key>PBXProjectModuleLabel</key>
<string>qtmainwindow.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>497754CB1234572800F4DCE4</string>
+ <string>4973B489123B59A700CF35EA</string>
<key>history</key>
<array>
- <string>497754CA1234572800F4DCE4</string>
+ <string>4973B458123B587400CF35EA</string>
+ </array>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>Geometry</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 20}, {802, 677}}</string>
+ <key>PBXModuleWindowStatusBarHidden2</key>
+ <false/>
+ <key>RubberWindowFrame</key>
+ <string>12 55 802 718 0 0 1280 778 </string>
+ </dict>
+ </dict>
+ <dict>
+ <key>Content</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>4973B253123B1CAE00CF35EA</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>shshaderinterface.h</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>4973B254123B1CAE00CF35EA</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>shshaderinterface.h</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>4973B48A123B59A700CF35EA</string>
+ <key>history</key>
+ <array>
+ <string>4973B41A123B56EE00CF35EA</string>
+ </array>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>Geometry</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 20}, {802, 677}}</string>
+ <key>PBXModuleWindowStatusBarHidden2</key>
+ <false/>
+ <key>RubberWindowFrame</key>
+ <string>14 60 802 718 0 0 1280 778 </string>
+ </dict>
+ </dict>
+ <dict>
+ <key>Content</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>4970EE28123A9D0E0043F7B1</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>shmaterial.h</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>4970EE29123A9D0E0043F7B1</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>shmaterial.h</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>4973B48B123B59A700CF35EA</string>
+ <key>history</key>
+ <array>
+ <string>4973B3B1123B4EFD00CF35EA</string>
</array>
</dict>
<key>SplitCount</key>
@@ -322,24 +522,24 @@
<key>Content</key>
<dict>
<key>PBXProjectModuleGUID</key>
- <string>497754CC1234572800F4DCE4</string>
+ <string>4973B195123B15E800CF35EA</string>
<key>PBXProjectModuleLabel</key>
- <string>shshaderinfo.cpp</string>
+ <string>qtmaterialinfowidget.h</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
- <string>497754CD1234572800F4DCE4</string>
+ <string>4973B196123B15E800CF35EA</string>
<key>PBXProjectModuleLabel</key>
- <string>shshaderinfo.cpp</string>
+ <string>qtmaterialinfowidget.h</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>497754CE1234572800F4DCE4</string>
+ <string>4973B48C123B59A700CF35EA</string>
<key>history</key>
<array>
- <string>497754B112344C6600F4DCE4</string>
+ <string>4973B38B123B4B1B00CF35EA</string>
</array>
</dict>
<key>SplitCount</key>
@@ -362,7 +562,47 @@
<key>Content</key>
<dict>
<key>PBXProjectModuleGUID</key>
- <string>497754CF1234572800F4DCE4</string>
+ <string>4973B233123B1B2000CF35EA</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>qtshaderzviewwidget.cpp</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>4973B234123B1B2000CF35EA</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>qtshaderzviewwidget.cpp</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>4973B48D123B59A700CF35EA</string>
+ <key>history</key>
+ <array>
+ <string>4973B347123B473F00CF35EA</string>
+ </array>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>Geometry</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 20}, {802, 677}}</string>
+ <key>PBXModuleWindowStatusBarHidden2</key>
+ <false/>
+ <key>RubberWindowFrame</key>
+ <string>15 55 802 718 0 0 1280 778 </string>
+ </dict>
+ </dict>
+ <dict>
+ <key>Content</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>4970EE2B123A9D0E0043F7B1</string>
<key>PBXProjectModuleLabel</key>
<string>qtmainwindow.h</string>
<key>PBXSplitModuleInNavigatorKey</key>
@@ -370,16 +610,16 @@
<key>Split0</key>
<dict>
<key>PBXProjectModuleGUID</key>
- <string>497754D01234572800F4DCE4</string>
+ <string>4970EE2C123A9D0E0043F7B1</string>
<key>PBXProjectModuleLabel</key>
<string>qtmainwindow.h</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
- <string>497754D11234572800F4DCE4</string>
+ <string>4973B48E123B59A700CF35EA</string>
<key>history</key>
<array>
- <string>497754AD12344A3D00F4DCE4</string>
+ <string>4973B17D123B136100CF35EA</string>
</array>
</dict>
<key>SplitCount</key>
@@ -471,18 +711,22 @@
<array>
<string>49C7DC641232ABF100E24C8D</string>
<string>497754BD1234571600F4DCE4</string>
+ <string>49C7DC861232AFB600E24C8D</string>
+ <string>49C7DC871232AFB600E24C8D</string>
+ <string>49C7DC8C1232AFB600E24C8D</string>
+ <string>49C7DC8D1232AFB600E24C8D</string>
<string>1C37FABC05509CD000000102</string>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
- <integer>3</integer>
- <integer>2</integer>
+ <integer>21</integer>
+ <integer>14</integer>
<integer>0</integer>
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {186, 338}}</string>
+ <string>{{0, 143}, {186, 338}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
@@ -582,9 +826,9 @@
</array>
<key>TableOfContents</key>
<array>
- <string>497754BF1234572800F4DCE4</string>
+ <string>4973B0FB123B060A00CF35EA</string>
<string>1CE0B1FE06471DED0097A5F4</string>
- <string>497754C01234572800F4DCE4</string>
+ <string>4973B0FC123B060A00CF35EA</string>
<string>1CE0B20306471E060097A5F4</string>
<string>1CE0B20506471E060097A5F4</string>
</array>
@@ -718,12 +962,18 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
- <string>497754CF1234572800F4DCE4</string>
- <string>497754CC1234572800F4DCE4</string>
- <string>497754C81234572800F4DCE4</string>
- <string>497754C41234572800F4DCE4</string>
+ <string>4970EE2B123A9D0E0043F7B1</string>
+ <string>4973B233123B1B2000CF35EA</string>
+ <string>4973B195123B15E800CF35EA</string>
+ <string>4970EE28123A9D0E0043F7B1</string>
+ <string>4973B253123B1CAE00CF35EA</string>
+ <string>4970EE20123A9D0E0043F7B1</string>
+ <string>4973B3B3123B4EFD00CF35EA</string>
+ <string>4973B293123B20FA00CF35EA</string>
+ <string>4973B16D123B12D800CF35EA</string>
+ <string>4973B18D123B15E800CF35EA</string>
<string>/Users/vijayjoseph/projects/shaderz/shaderz.xcodeproj</string>
- <string>497754C11234572800F4DCE4</string>
+ <string>4970EE24123A9D0E0043F7B1</string>
</array>
<key>WindowString</key>
<string>797 328 690 397 0 0 1280 778 </string>
@@ -919,8 +1169,12 @@
<integer>0</integer>
</dict>
<dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
<key>Identifier</key>
<string>windowTool.find</string>
+ <key>IsVertical</key>
+ <true/>
<key>Layout</key>
<array>
<dict>
@@ -935,26 +1189,16 @@
<key>PBXProjectModuleGUID</key>
<string>1CDD528C0622207200134675</string>
<key>PBXProjectModuleLabel</key>
- <string>&lt;No Editor&gt;</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CD0528D0623707200166675</string>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
+ <string></string>
<key>StatusBarVisibility</key>
- <integer>1</integer>
+ <true/>
</dict>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{0, 0}, {781, 167}}</string>
+ <string>{{0, 0}, {781, 212}}</string>
<key>RubberWindowFrame</key>
- <string>62 385 781 470 0 0 1440 878 </string>
+ <string>36 280 781 470 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@@ -963,11 +1207,11 @@
</dict>
</array>
<key>Proportion</key>
- <string>50%</string>
+ <string>212pt</string>
</dict>
<dict>
<key>BecomeActive</key>
- <integer>1</integer>
+ <true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@@ -978,18 +1222,18 @@
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
- <string>{{8, 0}, {773, 254}}</string>
+ <string>{{0, 217}, {781, 212}}</string>
<key>RubberWindowFrame</key>
- <string>62 385 781 470 0 0 1440 878 </string>
+ <string>36 280 781 470 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>PBXProjectFindModule</string>
<key>Proportion</key>
- <string>50%</string>
+ <string>212pt</string>
</dict>
</array>
<key>Proportion</key>
- <string>428pt</string>
+ <string>429pt</string>
</dict>
</array>
<key>Name</key>
@@ -999,23 +1243,21 @@
<string>PBXProjectFindModule</string>
</array>
<key>StatusbarIsVisible</key>
- <integer>1</integer>
+ <true/>
<key>TableOfContents</key>
<array>
<string>1C530D57069F1CE1000CFCEE</string>
- <string>1C530D58069F1CE1000CFCEE</string>
- <string>1C530D59069F1CE1000CFCEE</string>
+ <string>4970EE0C1239C9A60043F7B1</string>
+ <string>4970EE0D1239C9A60043F7B1</string>
<string>1CDD528C0622207200134675</string>
- <string>1C530D5A069F1CE1000CFCEE</string>
- <string>1CE0B1FE06471DED0097A5F4</string>
<string>1CD0528E0623707200166675</string>
</array>
<key>WindowString</key>
- <string>62 385 781 470 0 0 1440 878 </string>
+ <string>36 280 781 470 0 0 1280 778 </string>
<key>WindowToolGUID</key>
<string>1C530D57069F1CE1000CFCEE</string>
<key>WindowToolIsVisible</key>
- <integer>0</integer>
+ <false/>
</dict>
<dict>
<key>Identifier</key>
=======================================
--- /trunk/shaderz.xcodeproj/vijayjoseph.pbxuser Sun Sep 5 16:15:41 2010
+++ /trunk/shaderz.xcodeproj/vijayjoseph.pbxuser Fri Sep 10 23:40:37 2010
@@ -1,108 +1,7726 @@
// !$*UTF8*$!
{
- 497754AD12344A3D00F4DCE4 /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 49C7DC891232AFB600E24C8D /* qtmainwindow.h */;
+ 4970EDF0123925BB0043F7B1 /* shmaterial.cpp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1016, 1680}}";
+ sepNavSelRange = "{2186, 0}";
+ sepNavVisRange = "{1420, 1299}";
+ sepNavWindowFrame = "{{8, 4}, {802, 774}}";
+ };
};
- 497754B112344C6600F4DCE4 /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 49C717A91233986000171C0E /* shshaderinfo.cpp */;
+ 4970EDFD123925F60043F7B1 /* shmaterial.h */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1051, 672}}";
+ sepNavSelRange = "{922, 0}";
+ sepNavVisRange = "{0, 1034}";
+ sepNavWindowFrame = "{{15, -1}, {802, 774}}";
+ };
};
- 497754BC1234571000F4DCE4 /* osgnvcg1.cg */ = {
+ 4970EE0E1239CA840043F7B1 /* qtmaterialinfowidget.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {743, 1056}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{63, 1008}";
+ sepNavIntBoundsRect = "{{0, 0}, {981, 736}}";
+ sepNavSelRange = "{400, 0}";
+ sepNavVisRange = "{24, 930}";
sepNavWindowFrame = "{{15, -1}, {802, 774}}";
};
};
- 497754BE1234572000F4DCE4 /* PBXBookmark */ = {
+ 4970EE101239CD470043F7B1 /* qtmaterialinfowidget.cpp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1072, 1280}}";
+ sepNavSelRange = "{748, 0}";
+ sepNavVisRange = "{573, 1227}";
+ sepNavWindowFrame = "{{550, 4}, {802, 774}}";
+ };
+ };
+ 4970EE1A1239D05B0043F7B1 /* PBXBookmark */ = {
+ isa = PBXBookmark;
+ fRef = 4970EDFD123925F60043F7B1 /* shmaterial.h */;
+ };
+ 4970EE22123A9D0E0043F7B1 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 58";
+ rLen = 0;
+ rLoc = 1199;
+ rType = 0;
+ vrLen = 1178;
+ vrLoc = 847;
+ };
+ 4970EE23123A9D0E0043F7B1 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 60";
+ rLen = 0;
+ rLoc = 1271;
+ rType = 0;
+ vrLen = 1112;
+ vrLoc = 1119;
+ };
+ 4970EE26123A9D0E0043F7B1 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A91233986000171C0E /* shshaderinterface.cpp */;
+ name = "shshaderinterface.cpp: 11";
+ rLen = 0;
+ rLoc = 144;
+ rType = 0;
+ vrLen = 1040;
+ vrLoc = 0;
+ };
+ 4970EE27123A9D0E0043F7B1 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A91233986000171C0E /* shshaderinterface.cpp */;
+ name = "shshaderinterface.cpp: 16";
+ rLen = 0;
+ rLoc = 144;
+ rType = 0;
+ vrLen = 1197;
+ vrLoc = 5883;
+ };
+ 4970EE2A123A9D0E0043F7B1 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDFD123925F60043F7B1 /* shmaterial.h */;
+ name = "shmaterial.h: 22";
+ rLen = 0;
+ rLoc = 333;
+ rType = 0;
+ vrLen = 760;
+ vrLoc = 0;
+ };
+ 4970EE2D123A9D0E0043F7B1 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC891232AFB600E24C8D /* qtmainwindow.h */;
+ name = "qtmainwindow.h: 30";
+ rLen = 13;
+ rLoc = 495;
+ rType = 0;
+ vrLen = 530;
+ vrLoc = 0;
+ };
+ 4970EE2E123A9D0E0043F7B1 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC891232AFB600E24C8D /* qtmainwindow.h */;
+ name = "qtmainwindow.h: 30";
+ rLen = 13;
+ rLoc = 495;
+ rType = 0;
+ vrLen = 530;
+ vrLoc = 0;
+ };
+ 4973B0FD123B060A00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 60";
+ rLen = 0;
+ rLoc = 1271;
+ rType = 0;
+ vrLen = 1108;
+ vrLoc = 1123;
+ };
+ 4973B0FE123B060A00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A91233986000171C0E /* shshaderinterface.cpp */;
+ name = "shshaderinterface.cpp: 16";
+ rLen = 0;
+ rLoc = 144;
+ rType = 0;
+ vrLen = 1222;
+ vrLoc = 5858;
+ };
+ 4973B0FF123B060A00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDFD123925F60043F7B1 /* shmaterial.h */;
+ name = "shmaterial.h: 22";
+ rLen = 0;
+ rLoc = 333;
+ rType = 0;
+ vrLen = 760;
+ vrLoc = 0;
+ };
+ 4973B100123B060A00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC891232AFB600E24C8D /* qtmainwindow.h */;
+ name = "qtmainwindow.h: 30";
+ rLen = 13;
+ rLoc = 495;
+ rType = 0;
+ vrLen = 530;
+ vrLoc = 0;
+ };
+ 4973B101123B062C00CF35EA /* PBXBookmark */ = {
+ isa = PBXBookmark;
+ fRef = 4970EDF0123925BB0043F7B1 /* shmaterial.cpp */;
+ };
+ 4973B112123B0AD400CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A91233986000171C0E /* shshaderinterface.cpp */;
+ name = "shshaderinterface.cpp: 13";
+ rLen = 0;
+ rLoc = 80;
+ rType = 0;
+ vrLen = 822;
+ vrLoc = 0;
+ };
+ 4973B113123B0AD400CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A91233986000171C0E /* shshaderinterface.cpp */;
+ name = "shshaderinterface.cpp: 9";
+ rLen = 0;
+ rLoc = 80;
+ rType = 0;
+ vrLen = 807;
+ vrLoc = 0;
+ };
+ 4973B116123B0AD400CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A81233984000171C0E /* shshaderinterface.h */;
+ name = "shshaderinterface.h: 71";
+ rLen = 0;
+ rLoc = 2656;
+ rType = 0;
+ vrLen = 2088;
+ vrLoc = 1257;
+ };
+ 4973B117123B0AD400CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A81233984000171C0E /* shshaderinterface.h */;
+ name = "shshaderinterface.h: 72";
+ rLen = 0;
+ rLoc = 2656;
+ rType = 0;
+ vrLen = 2056;
+ vrLoc = 1257;
+ };
+ 4973B118123B0AD400CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 109";
+ rLen = 0;
+ rLoc = 2087;
+ rType = 0;
+ vrLen = 915;
+ vrLoc = 2231;
+ };
+ 4973B119123B0AD400CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 109";
+ rLen = 0;
+ rLoc = 2087;
+ rType = 0;
+ vrLen = 915;
+ vrLoc = 2231;
+ };
+ 4973B11C123B0AD400CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDF0123925BB0043F7B1 /* shmaterial.cpp */;
+ name = "shmaterial.cpp: 27";
+ rLen = 0;
+ rLoc = 395;
+ rType = 0;
+ vrLen = 881;
+ vrLoc = 3;
+ };
+ 4973B11D123B0AD400CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDFD123925F60043F7B1 /* shmaterial.h */;
+ name = "shmaterial.h: 22";
+ rLen = 0;
+ rLoc = 333;
+ rType = 0;
+ vrLen = 760;
+ vrLoc = 0;
+ };
+ 4973B11E123B0AD400CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC891232AFB600E24C8D /* qtmainwindow.h */;
+ name = "qtmainwindow.h: 30";
+ rLen = 13;
+ rLoc = 495;
+ rType = 0;
+ vrLen = 530;
+ vrLoc = 0;
+ };
+ 4973B11F123B0ADA00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A91233986000171C0E /* shshaderinterface.cpp */;
+ name = "shshaderinterface.cpp: 9";
+ rLen = 0;
+ rLoc = 80;
+ rType = 0;
+ vrLen = 807;
+ vrLoc = 0;
+ };
+ 4973B120123B0ADA00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A81233984000171C0E /* shshaderinterface.h */;
+ name = "shshaderinterface.h: 72";
+ rLen = 0;
+ rLoc = 2656;
+ rType = 0;
+ vrLen = 2056;
+ vrLoc = 1257;
+ };
+ 4973B121123B0ADA00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 109";
+ rLen = 0;
+ rLoc = 2087;
+ rType = 0;
+ vrLen = 915;
+ vrLoc = 2231;
+ };
+ 4973B122123B0ADA00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDF0123925BB0043F7B1 /* shmaterial.cpp */;
+ name = "shmaterial.cpp: 27";
+ rLen = 0;
+ rLoc = 395;
+ rType = 0;
+ vrLen = 881;
+ vrLoc = 3;
+ };
+ 4973B123123B0ADA00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDFD123925F60043F7B1 /* shmaterial.h */;
+ name = "shmaterial.h: 22";
+ rLen = 0;
+ rLoc = 333;
+ rType = 0;
+ vrLen = 760;
+ vrLoc = 0;
+ };
+ 4973B124123B0ADA00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC891232AFB600E24C8D /* qtmainwindow.h */;
+ name = "qtmainwindow.h: 30";
+ rLen = 13;
+ rLoc = 495;
+ rType = 0;
+ vrLen = 530;
+ vrLoc = 0;
+ };
+ 4973B127123B0B3B00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDF0123925BB0043F7B1 /* shmaterial.cpp */;
+ name = "shmaterial.cpp: 27";
+ rLen = 0;
+ rLoc = 395;
+ rType = 0;
+ vrLen = 881;
+ vrLoc = 3;
+ };
+ 4973B128123B0B3B00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDF0123925BB0043F7B1 /* shmaterial.cpp */;
+ name = "shmaterial.cpp: 22";
+ rLen = 0;
+ rLoc = 325;
+ rType = 0;
+ vrLen = 915;
+ vrLoc = 0;
+ };
+ 4973B129123B0B3B00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A81233984000171C0E /* shshaderinterface.h */;
+ name = "shshaderinterface.h: 72";
+ rLen = 0;
+ rLoc = 2656;
+ rType = 0;
+ vrLen = 2056;
+ vrLoc = 1257;
+ };
+ 4973B12A123B0B3B00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A81233984000171C0E /* shshaderinterface.h */;
+ name = "shshaderinterface.h: 84";
+ rLen = 0;
+ rLoc = 3309;
+ rType = 0;
+ vrLen = 2110;
+ vrLoc = 1275;
+ };
+ 4973B12B123B0B3B00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A91233986000171C0E /* shshaderinterface.cpp */;
+ name = "shshaderinterface.cpp: 9";
+ rLen = 0;
+ rLoc = 80;
+ rType = 0;
+ vrLen = 807;
+ vrLoc = 0;
+ };
+ 4973B12C123B0B3B00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 109";
+ rLen = 0;
+ rLoc = 2087;
+ rType = 0;
+ vrLen = 915;
+ vrLoc = 2231;
+ };
+ 4973B12D123B0B3B00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDFD123925F60043F7B1 /* shmaterial.h */;
+ name = "shmaterial.h: 22";
+ rLen = 0;
+ rLoc = 333;
+ rType = 0;
+ vrLen = 760;
+ vrLoc = 0;
+ };
+ 4973B12E123B0B3B00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC891232AFB600E24C8D /* qtmainwindow.h */;
+ name = "qtmainwindow.h: 30";
+ rLen = 13;
+ rLoc = 495;
+ rType = 0;
+ vrLen = 530;
+ vrLoc = 0;
+ };
+ 4973B12F123B0B6900CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDF0123925BB0043F7B1 /* shmaterial.cpp */;
+ name = "shmaterial.cpp: 41";
+ rLen = 0;
+ rLoc = 690;
+ rType = 0;
+ vrLen = 944;
+ vrLoc = 3;
+ };
+ 4973B130123B0B6900CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A81233984000171C0E /* shshaderinterface.h */;
+ name = "shshaderinterface.h: 84";
+ rLen = 0;
+ rLoc = 3309;
+ rType = 0;
+ vrLen = 2110;
+ vrLoc = 1275;
+ };
+ 4973B131123B0B6900CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A91233986000171C0E /* shshaderinterface.cpp */;
+ name = "shshaderinterface.cpp: 9";
+ rLen = 0;
+ rLoc = 80;
+ rType = 0;
+ vrLen = 807;
+ vrLoc = 0;
+ };
+ 4973B132123B0B6900CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 109";
+ rLen = 0;
+ rLoc = 2087;
+ rType = 0;
+ vrLen = 915;
+ vrLoc = 2231;
+ };
+ 4973B133123B0B6900CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDFD123925F60043F7B1 /* shmaterial.h */;
+ name = "shmaterial.h: 22";
+ rLen = 0;
+ rLoc = 333;
+ rType = 0;
+ vrLen = 760;
+ vrLoc = 0;
+ };
+ 4973B134123B0B6900CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC891232AFB600E24C8D /* qtmainwindow.h */;
+ name = "qtmainwindow.h: 30";
+ rLen = 13;
+ rLoc = 495;
+ rType = 0;
+ vrLen = 530;
+ vrLoc = 0;
+ };
+ 4973B13A123B0C0C00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDF0123925BB0043F7B1 /* shmaterial.cpp */;
+ name = "shmaterial.cpp: 41";
+ rLen = 0;
+ rLoc = 690;
+ rType = 0;
+ vrLen = 944;
+ vrLoc = 3;
+ };
+ 4973B13B123B0C0C00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDF0123925BB0043F7B1 /* shmaterial.cpp */;
+ name = "shmaterial.cpp: 41";
+ rLen = 0;
+ rLoc = 667;
+ rType = 0;
+ vrLen = 922;
+ vrLoc = 3;
+ };
+ 4973B13C123B0C0C00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 109";
+ rLen = 0;
+ rLoc = 2087;
+ rType = 0;
+ vrLen = 915;
+ vrLoc = 2231;
+ };
+ 4973B13D123B0C0C00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 109";
+ rLen = 0;
+ rLoc = 2087;
+ rType = 0;
+ vrLen = 938;
+ vrLoc = 2231;
+ };
+ 4973B13E123B0C0C00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A91233986000171C0E /* shshaderinterface.cpp */;
+ name = "shshaderinterface.cpp: 7";
+ rLen = 0;
+ rLoc = 80;
+ rType = 0;
+ vrLen = 792;
+ vrLoc = 0;
+ };
+ 4973B13F123B0C0C00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A91233986000171C0E /* shshaderinterface.cpp */;
+ name = "shshaderinterface.cpp: 7";
+ rLen = 0;
+ rLoc = 80;
+ rType = 0;
+ vrLen = 792;
+ vrLoc = 0;
+ };
+ 4973B140123B0C0C00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A81233984000171C0E /* shshaderinterface.h */;
+ name = "shshaderinterface.h: 84";
+ rLen = 0;
+ rLoc = 3309;
+ rType = 0;
+ vrLen = 2110;
+ vrLoc = 1275;
+ };
+ 4973B141123B0C0C00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A81233984000171C0E /* shshaderinterface.h */;
+ name = "shshaderinterface.h: 72";
+ rLen = 0;
+ rLoc = 2656;
+ rType = 0;
+ vrLen = 2095;
+ vrLoc = 1275;
+ };
+ 4973B142123B0C0C00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDFD123925F60043F7B1 /* shmaterial.h */;
+ name = "shmaterial.h: 22";
+ rLen = 0;
+ rLoc = 333;
+ rType = 0;
+ vrLen = 760;
+ vrLoc = 0;
+ };
+ 4973B143123B0C0C00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC891232AFB600E24C8D /* qtmainwindow.h */;
+ name = "qtmainwindow.h: 30";
+ rLen = 13;
+ rLoc = 495;
+ rType = 0;
+ vrLen = 530;
+ vrLoc = 0;
+ };
+ 4973B148123B0D4800CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 109";
+ rLen = 0;
+ rLoc = 2087;
+ rType = 0;
+ vrLen = 938;
+ vrLoc = 2231;
+ };
+ 4973B149123B0D4800CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 110";
+ rLen = 0;
+ rLoc = 2087;
+ rType = 0;
+ vrLen = 941;
+ vrLoc = 2231;
+ };
+ 4973B14A123B0D4800CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDF0123925BB0043F7B1 /* shmaterial.cpp */;
+ name = "shmaterial.cpp: 27";
+ rLen = 0;
+ rLoc = 395;
+ rType = 0;
+ vrLen = 874;
+ vrLoc = 3;
+ };
+ 4973B14B123B0D4800CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDF0123925BB0043F7B1 /* shmaterial.cpp */;
+ name = "shmaterial.cpp: 43";
+ rLen = 0;
+ rLoc = 738;
+ rType = 0;
+ vrLen = 924;
+ vrLoc = 22;
+ };
+ 4973B14C123B0D4800CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A91233986000171C0E /* shshaderinterface.cpp */;
+ name = "shshaderinterface.cpp: 7";
+ rLen = 0;
+ rLoc = 80;
+ rType = 0;
+ vrLen = 792;
+ vrLoc = 0;
+ };
+ 4973B14D123B0D4800CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A91233986000171C0E /* shshaderinterface.cpp */;
+ name = "shshaderinterface.cpp: 213";
+ rLen = 0;
+ rLoc = 6829;
+ rType = 0;
+ vrLen = 1193;
+ vrLoc = 5854;
+ };
+ 4973B14E123B0D4800CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A81233984000171C0E /* shshaderinterface.h */;
+ name = "shshaderinterface.h: 72";
+ rLen = 0;
+ rLoc = 2656;
+ rType = 0;
+ vrLen = 2095;
+ vrLoc = 1275;
+ };
+ 4973B14F123B0D4800CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A81233984000171C0E /* shshaderinterface.h */;
+ name = "shshaderinterface.h: 74";
+ rLen = 5;
+ rLoc = 2713;
+ rType = 0;
+ vrLen = 1934;
+ vrLoc = 1275;
+ };
+ 4973B150123B0D4800CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDFD123925F60043F7B1 /* shmaterial.h */;
+ name = "shmaterial.h: 22";
+ rLen = 0;
+ rLoc = 333;
+ rType = 0;
+ vrLen = 760;
+ vrLoc = 0;
+ };
+ 4973B151123B0D4800CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC891232AFB600E24C8D /* qtmainwindow.h */;
+ name = "qtmainwindow.h: 30";
+ rLen = 13;
+ rLoc = 495;
+ rType = 0;
+ vrLen = 530;
+ vrLoc = 0;
+ };
+ 4973B153123B0D7A00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A81233984000171C0E /* shshaderinterface.h */;
+ name = "shshaderinterface.h: 74";
+ rLen = 5;
+ rLoc = 2713;
+ rType = 0;
+ vrLen = 1934;
+ vrLoc = 1275;
+ };
+ 4973B154123B0D7A00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A81233984000171C0E /* shshaderinterface.h */;
+ name = "shshaderinterface.h: 103";
+ rLen = 0;
+ rLoc = 3923;
+ rType = 0;
+ vrLen = 1588;
+ vrLoc = 2635;
+ };
+ 4973B155123B0D7A00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 110";
+ rLen = 0;
+ rLoc = 2087;
+ rType = 0;
+ vrLen = 941;
+ vrLoc = 2231;
+ };
+ 4973B156123B0D7A00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDF0123925BB0043F7B1 /* shmaterial.cpp */;
+ name = "shmaterial.cpp: 43";
+ rLen = 0;
+ rLoc = 738;
+ rType = 0;
+ vrLen = 924;
+ vrLoc = 22;
+ };
+ 4973B157123B0D7A00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A91233986000171C0E /* shshaderinterface.cpp */;
+ name = "shshaderinterface.cpp: 213";
+ rLen = 0;
+ rLoc = 6829;
+ rType = 0;
+ vrLen = 1193;
+ vrLoc = 5854;
+ };
+ 4973B158123B0D7A00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDFD123925F60043F7B1 /* shmaterial.h */;
+ name = "shmaterial.h: 22";
+ rLen = 0;
+ rLoc = 333;
+ rType = 0;
+ vrLen = 760;
+ vrLoc = 0;
+ };
+ 4973B159123B0D7A00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC891232AFB600E24C8D /* qtmainwindow.h */;
+ name = "qtmainwindow.h: 30";
+ rLen = 13;
+ rLoc = 495;
+ rType = 0;
+ vrLen = 530;
+ vrLoc = 0;
+ };
+ 4973B15C123B0DDC00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A91233986000171C0E /* shshaderinterface.cpp */;
+ name = "shshaderinterface.cpp: 213";
+ rLen = 0;
+ rLoc = 6829;
+ rType = 0;
+ vrLen = 1193;
+ vrLoc = 5854;
+ };
+ 4973B15D123B0DDC00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A91233986000171C0E /* shshaderinterface.cpp */;
+ name = "shshaderinterface.cpp: 226";
+ rLen = 0;
+ rLoc = 7188;
+ rType = 0;
+ vrLen = 1221;
+ vrLoc = 5854;
+ };
+ 4973B15E123B0DDC00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 110";
+ rLen = 0;
+ rLoc = 2087;
+ rType = 0;
+ vrLen = 941;
+ vrLoc = 2231;
+ };
+ 4973B15F123B0DDC00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 110";
+ rLen = 0;
+ rLoc = 2087;
+ rType = 0;
+ vrLen = 939;
+ vrLoc = 2234;
+ };
+ 4973B160123B0DDC00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A81233984000171C0E /* shshaderinterface.h */;
+ name = "shshaderinterface.h: 103";
+ rLen = 0;
+ rLoc = 3923;
+ rType = 0;
+ vrLen = 1588;
+ vrLoc = 2635;
+ };
+ 4973B161123B0DDC00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDF0123925BB0043F7B1 /* shmaterial.cpp */;
+ name = "shmaterial.cpp: 43";
+ rLen = 0;
+ rLoc = 738;
+ rType = 0;
+ vrLen = 924;
+ vrLoc = 22;
+ };
+ 4973B162123B0DDC00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDFD123925F60043F7B1 /* shmaterial.h */;
+ name = "shmaterial.h: 22";
+ rLen = 0;
+ rLoc = 333;
+ rType = 0;
+ vrLen = 760;
+ vrLoc = 0;
+ };
+ 4973B163123B0DDC00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC891232AFB600E24C8D /* qtmainwindow.h */;
+ name = "qtmainwindow.h: 30";
+ rLen = 13;
+ rLoc = 495;
+ rType = 0;
+ vrLen = 530;
+ vrLoc = 0;
+ };
+ 4973B164123B0E3C00CF35EA /* PBXBookmark */ = {
+ isa = PBXBookmark;
+ fRef = 4970EE101239CD470043F7B1 /* qtmaterialinfowidget.cpp */;
+ };
+ 4973B169123B12D800CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 60";
+ rLen = 0;
+ rLoc = 1271;
+ rType = 0;
+ vrLen = 1007;
+ vrLoc = 1222;
+ };
+ 4973B16A123B12D800CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 60";
+ rLen = 0;
+ rLoc = 1312;
+ rType = 0;
+ vrLen = 939;
+ vrLoc = 2012;
+ };
+ 4973B16B123B12D800CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC891232AFB600E24C8D /* qtmainwindow.h */;
+ name = "qtmainwindow.h: 30";
+ rLen = 13;
+ rLoc = 495;
+ rType = 0;
+ vrLen = 530;
+ vrLoc = 0;
+ };
+ 4973B16C123B12D800CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC891232AFB600E24C8D /* qtmainwindow.h */;
+ name = "qtmainwindow.h: 18";
+ rLen = 0;
+ rLoc = 283;
+ rType = 0;
+ vrLen = 609;
+ vrLoc = 0;
+ };
+ 4973B16F123B12D800CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EE101239CD470043F7B1 /* qtmaterialinfowidget.cpp */;
+ name = "qtmaterialinfowidget.cpp: 14";
+ rLen = 0;
+ rLoc = 290;
+ rType = 0;
+ vrLen = 496;
+ vrLoc = 0;
+ };
+ 4973B170123B12D800CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A91233986000171C0E /* shshaderinterface.cpp */;
+ name = "shshaderinterface.cpp: 214";
+ rLen = 0;
+ rLoc = 6829;
+ rType = 0;
+ vrLen = 1290;
+ vrLoc = 5854;
+ };
+ 4973B171123B12D800CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A81233984000171C0E /* shshaderinterface.h */;
+ name = "shshaderinterface.h: 103";
+ rLen = 0;
+ rLoc = 3923;
+ rType = 0;
+ vrLen = 1588;
+ vrLoc = 2635;
+ };
+ 4973B172123B12D800CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDFD123925F60043F7B1 /* shmaterial.h */;
+ name = "shmaterial.h: 22";
+ rLen = 0;
+ rLoc = 333;
+ rType = 0;
+ vrLen = 760;
+ vrLoc = 0;
+ };
+ 4973B173123B133B00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 111";
+ rLen = 0;
+ rLoc = 2087;
+ rType = 0;
+ vrLen = 1056;
+ vrLoc = 2045;
+ };
+ 4973B174123B133B00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC891232AFB600E24C8D /* qtmainwindow.h */;
+ name = "qtmainwindow.h: 18";
+ rLen = 0;
+ rLoc = 283;
+ rType = 0;
+ vrLen = 609;
+ vrLoc = 0;
+ };
+ 4973B175123B133B00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EE101239CD470043F7B1 /* qtmaterialinfowidget.cpp */;
+ name = "qtmaterialinfowidget.cpp: 14";
+ rLen = 0;
+ rLoc = 290;
+ rType = 0;
+ vrLen = 496;
+ vrLoc = 0;
+ };
+ 4973B176123B133B00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A91233986000171C0E /* shshaderinterface.cpp */;
+ name = "shshaderinterface.cpp: 214";
+ rLen = 0;
+ rLoc = 6829;
+ rType = 0;
+ vrLen = 1290;
+ vrLoc = 5854;
+ };
+ 4973B177123B133B00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C717A81233984000171C0E /* shshaderinterface.h */;
+ name = "shshaderinterface.h: 103";
+ rLen = 0;
+ rLoc = 3923;
+ rType = 0;
+ vrLen = 1588;
+ vrLoc = 2635;
+ };
+ 4973B178123B133B00CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EDFD123925F60043F7B1 /* shmaterial.h */;
+ name = "shmaterial.h: 22";
+ rLen = 0;
+ rLoc = 333;
+ rType = 0;
+ vrLen = 760;
+ vrLoc = 0;
+ };
+ 4973B17B123B136100CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 111";
+ rLen = 0;
+ rLoc = 2087;
+ rType = 0;
+ vrLen = 1056;
+ vrLoc = 2045;
+ };
+ 4973B17C123B136100CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC8F1232AFB600E24C8D /* qtmainwindow.cpp */;
+ name = "qtmainwindow.cpp: 102";
+ rLen = 0;
+ rLoc = 2087;
+ rType = 0;
+ vrLen = 1022;
+ vrLoc = 2081;
+ };
+ 4973B17D123B136100CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC891232AFB600E24C8D /* qtmainwindow.h */;
+ name = "qtmainwindow.h: 18";
+ rLen = 0;
+ rLoc = 283;
+ rType = 0;
+ vrLen = 609;
+ vrLoc = 0;
+ };
+ 4973B17E123B136100CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 49C7DC891232AFB600E24C8D /* qtmainwindow.h */;
+ name = "qtmainwindow.h: 33";
+ rLen = 19;
+ rLoc = 534;
+ rType = 0;
+ vrLen = 609;
+ vrLoc = 0;
+ };
+ 4973B17F123B136100CF35EA /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 4970EE101239CD470043F7B1 /* qtmaterialinfowidget.cpp */;
+ name = "qtmaterialinfowidget.cpp: 14";
+ rLen = 0;
+ rLoc = 290;
+ rType = 0;
+ vrLen = 496;
+ vrLoc = 0;
+ };
+ 4973B180123B136100CF35EA /* PBXTextBookmark */ = {
***The diff for this file has been truncated for email.***
=======================================
--- /trunk/src/qt/qtmainwindow.cpp Sun Sep 5 16:15:41 2010
+++ /trunk/src/qt/qtmainwindow.cpp Fri Sep 10 23:40:37 2010
@@ -7,9 +7,14 @@
#include <QPushButton>
#include <QLabel>
#include <QGroupBox>
+
#include "qt/qtshaderzviewwidget.h"
+#include "qt/qtmaterialinfowidget.h"
+#include "shmaterial.h"
+#include "shshaderinterface.h"
#include "shlogger.h"
-#include "shshaderinfo.h"
+
+shMaterial* dummyMaterial = 0;

qtMainWindow::qtMainWindow()
: ParentClass(0)
@@ -27,28 +32,17 @@
QPushButton* browseButton = new QPushButton("Browse");
connect( browseButton, SIGNAL(clicked()), this, SLOT(OnClickedBrowse())
);
vLayout->addWidget(browseButton);
+ vLayout->addSpacing(10);

// add the shader load button
- vLayout->addWidget( new QLabel("shaderPath") );
QPushButton* shaderInfoBtn = new QPushButton("ShaderInfo");
connect( shaderInfoBtn, SIGNAL(clicked()), this,
SLOT(OnClickedShaderInfo()) );
vLayout->addWidget(shaderInfoBtn);

- // add the shader info area
- QGroupBox* shaderInfo = new QGroupBox("Shader Info", this);
- {
- QBoxLayout* infoLayout = new QVBoxLayout;
- if( shaderInfo->layout() )
- {
- shaderInfo->layout()->addItem(infoLayout);
- }
- else
- {
- shaderInfo->setLayout(infoLayout);
- }
- mShaderLayout = infoLayout;
- }
- vLayout->addWidget(shaderInfo);
+ // add the material widget
+ dummyMaterial = new shMaterial();
+ mMaterialInfoWidget = new qtMaterialInfoWidget(this, dummyMaterial);
+ vLayout->addWidget(mMaterialInfoWidget);
}
hLayout->addItem(vLayout);

@@ -58,6 +52,10 @@
// create the main view widget
qtShaderzViewWidget* viewWidget = new qtShaderzViewWidget(this);
hLayout->addWidget(viewWidget);
+
+ // set size proportions
+ hLayout->setStretchFactor(vLayout, 2);
+ hLayout->setStretchFactor(viewWidget, 3);
}
mainLayout->addItem(hLayout);

@@ -86,16 +84,7 @@
void qtMainWindow::OnClickedShaderInfo()
{
LOG<<"Clicked shader info button.\n";
- shShaderInfo* shaderInfo = new
shShaderInfoCG("/Users/vijayjoseph/projects/shaderz/data/osgnvcg1.cg");
- shaderInfo->dumpParameterInfo();
-
- int paramIndex;
- for( paramIndex=0; mShaderLayout && paramIndex <
shaderInfo->getParameterNum(); ++paramIndex )
- {
- const shShaderInfo::shShaderParameter* shaderParam =
shaderInfo->getParameter(paramIndex);
- if( shaderParam )
- {
- mShaderLayout->addWidget(new QLabel(QString(shaderParam->name.c_str()),
this));
- }
- }
-}
+
+
dummyMaterial->loadMaterialFromFile("/Users/vijayjoseph/projects/shaderz/data/osgnvcg1.cg");
+ mMaterialInfoWidget->populateMaterialParams();
+}

Reply all
Reply to author
Forward
0 new messages