Subversion

gpucv

[/] [experimental/] [trunk/] [gpucv/] [src/] [lib/] [GPUCVTexture/] [DataDsc_base.cpp] - Rev 271 Go to most recent revision

Compare with Previous - Blame


#include <GPUCVTexture/Texture.h>
#include <GPUCVTexture/DataDsc_base.h>

//==================================================
DataDsc_Base::DataDsc_Base()
        :CL_Profiler("DataDsc_Base")
        ,TextSize<GLsizei>()
        ,m_dscType("DataDsc_Base")
        ,m_glPixelFormat(0)
        ,m_glPixelType(0)
        ,m_nChannels(0)
        ,m_nChannelsBackup(0)
        ,m_parent(NULL)
        ,m_haveData(false)
{
}
//==================================================
DataDsc_Base::DataDsc_Base(const std::string _className)
        :CL_Profiler(_className)
        ,TextSize<GLsizei>()
        ,m_dscType(_className)
        ,m_glPixelFormat(0)
        ,m_glPixelType(0)
        ,m_nChannels(0)
        ,m_nChannelsBackup(0)
        ,m_parent(NULL)
        ,m_haveData(false)
{
}
//==================================================
DataDsc_Base::~DataDsc_Base(void)
{
        CLASS_FCT_SET_NAME("~DataDsc_Base");
        CLASS_DEBUG("");
        Free();
}
//==================================================
/*virtual*/
const std::string DataDsc_Base::GetValStr()const
{
        if(GetParent())
                return GetParent()->GetValStr();
        else
                return "NOID";
}
//==================================================
const std::string & DataDsc_Base::GetDscType(void)const
{
        return m_dscType;
}
//==================================================
/*virtual*/
bool	DataDsc_Base::HaveData()const
{
        return m_haveData;
}
//==================================================
/*virtual*/
void  DataDsc_Base::SetDataFlag(bool _val)
{
        CLASS_FCT_SET_NAME("SetDataFlag");
        if(m_haveData != _val)
        {
                CLASS_DEBUG(((_val)?"obtained data":"lost data"));
        }
        m_haveData = _val;

}
//==================================================
/*virtual*/
DataDsc_Base * DataDsc_Base::Clone(DataDsc_Base * _src, bool _datatransfer/*=true*/)
{
        TransferFormat(_src);
        m_dscType = _src->m_dscType;
        SetParent(_src->GetParent());
        SetDataFlag(_src->HaveData()); 
        //GetParent()->SetDataFlag<DataDsc_CvMat>(true,false);??
        return this;
}
//==================================================
/*virtual*/
DataDsc_Base * DataDsc_Base::CloneToNew(bool _datatransfer/*=true*/)
{
        DataDsc_Base * TempTex = new DataDsc_Base();
        return TempTex->Clone(this, _datatransfer);
}
//==================================================
/*virtual*/
void DataDsc_Base::SetFormat(const GLuint _pixelFormat,const GLuint _pixelType)
{
        m_glPixelFormat = _pixelFormat;
        m_glPixelType		= _pixelType;
        m_nChannels = GetGLNbrComponent(_pixelFormat);

        ConvertPixelFormat_GLToLocal(_pixelFormat);
        ConvertPixelType_GLToLocal(_pixelType);
}
//==================================================
GLuint DataDsc_Base::GetPixelFormat()const
{
        return m_glPixelFormat;
}
//==================================================
GLuint DataDsc_Base::GetPixelType()const
{
        return m_glPixelType;
}
//==================================================
GLuint DataDsc_Base::GetnChannels()const
{
        return m_nChannels;
}
//==================================================
/*virtual*/
void	DataDsc_Base::TransferFormat(DataDsc_Base * _src)
{
        SetFormat(_src->GetPixelFormat(), _src->GetPixelType());
        
        m_width = _src->m_width;
        m_height = _src->m_height;
}
//==================================================
void DataDsc_Base::SetParent(DataContainer* _parent)
{
        m_parent = _parent;
}
//==================================================
DataContainer *  DataDsc_Base::GetParent()const
{
        return m_parent;
}
//==================================================
/*virtual*/
void *	DataDsc_Base::GetNewParentID()const
{
        return NULL;
}
//==================================================
DataDsc_Base::operator DataContainer*()
{
        return GetParent();
}
//==================================================
DataDsc_Base::operator DataContainer&()
{
        return *GetParent();
}
//==================================================
/*virtual*/
void	DataDsc_Base::ConvertPixelFormat_GLToLocal(const GLuint _pixelFormat)
{
        //m_glPixelFormat = _pixelFormat;
}
//==================================================
/*virtual*/
GLuint	DataDsc_Base::ConvertPixelFormat_LocalToGL(void)
{
        return m_glPixelFormat;
}
//==================================================
/*virtual*/
void	DataDsc_Base::ConvertPixelType_GLToLocal(const GLuint _pixelType)
{
        //m_glPixelType = _pixelType;
}
//==================================================
/*virtual*/
GLuint	DataDsc_Base::ConvertPixelType_LocalToGL()
{
        return m_glPixelType;
}
//==================================================
/*GLuint	DataDsc_Base::_GetWidth()
{
        return _GetWidth();
}
//==================================================
GLuint	DataDsc_Base::_GetHeight()
{
        return _GetHeight();
}*/
void DataDsc_Base::_SetSize(const unsigned int width, const unsigned int heigh)
{	
        if (m_width != int(width) || m_height != int(heigh))
        {
        //	_SetReloadFlag(true);//must be reloaded.
        }
        else
                return;

        SG_Assert(width	<= _GPUCV_TEXTURE_MAX_SIZE_X, "DataContainer::SetSize()=> Texture width exceed Max size of " << _GPUCV_TEXTURE_MAX_SIZE_X);
        SG_Assert(heigh	<= _GPUCV_TEXTURE_MAX_SIZE_Y, "DataContainer::SetSize()=> Texture heigh exceed Max size of " << _GPUCV_TEXTURE_MAX_SIZE_Y);
        
        TextSize<GLsizei>::_SetSize(width,heigh);
#if !USE_DATA_DSC
        _UpdateTexCoord();
#endif
}
//==================================================
void DataDsc_Base::SetReshape(int new_cn, int new_rows/*=0*/)
{
        CLASS_FCT_SET_NAME("SetReshape");
        m_nChannelsBackup = m_nChannels;
        m_nChannels = new_cn;
        if(new_rows==0)
        {
                if(IS_MULTIPLE_OF(m_width  * m_nChannelsBackup, new_cn))
                        m_width =  m_width  * m_nChannelsBackup / new_cn;
                else
                {
                        CLASS_WARNING("Reshape don't fit => doing nothing!");
                }
        }
}
//==================================================
void DataDsc_Base::UnsetReshape()
{
        if(m_nChannelsBackup!=0)
        {
                m_width = m_width / m_nChannelsBackup * m_nChannels;
                m_nChannels = m_nChannelsBackup;
                m_nChannelsBackup = 0;
        }
}
//==================================================
GLuint	DataDsc_Base::_GetNChannels()
{
        return m_nChannels;
}
//==================================================
void DataDsc_Base::_SetNChannels(GLuint _channels)
{
        m_nChannels = _channels;
}
//==================================================
GLuint	DataDsc_Base::GetDataSize(void)const
{
        return _GetWidth()*_GetHeight()*GetGLPixelSize(GetPixelFormat(), GetPixelType());
}
//==================================================
/*virtual*/
std::ostringstream & DataDsc_Base::operator << (std::ostringstream & _stream)const
{
        _stream << _GPUCV_INDENT_ <<"======================================" << std::endl;
        _stream << _GPUCV_INDENT_ <<"DataDsc_Base==============" << std::endl;
        if(m_parent)
                _stream << _GPUCV_INDENT_ <<"m_parent => "		<< m_parent->GetValStr() << std::endl;	_stream << "Parent ID:" << GetValStr() << std::endl;
        //_stream << "DataDsc_Base::m_dscType => "		<< m_dscType << std::endl;
        _stream << _GPUCV_INDENT_ <<"m_glPixelFormat: \t"	<< GetStrGLTextureFormat(m_glPixelFormat) << std::endl;
        _stream << _GPUCV_INDENT_ <<"m_glPixelType: \t"	<< GetStrGLTexturePixelType(m_glPixelType) << std::endl;
        _stream << _GPUCV_INDENT_ <<"m_nChannels: \t"	<< m_nChannels << std::endl;
        _stream << _GPUCV_INDENT_ <<"m_nChannelsBackup: \t"	<< m_nChannelsBackup << std::endl;
        _stream << _GPUCV_INDENT_ <<"size: \t"	<< m_width << "/" << m_height << std::endl;
        _stream << _GPUCV_INDENT_ <<"Data Size: \t"	<< GetDataSize() << std::endl;
        _stream << _GPUCV_INDENT_ <<"m_haveData: \t"	<< m_haveData << std::endl;
        _stream << _GPUCV_INDENT_ <<"DataDsc_Base==============" << std::endl;
        return _stream;
}
//==================================================
std::ostringstream & operator << (std::ostringstream & _stream, const DataDsc_Base & TexDsc)
{
        return TexDsc.operator << (_stream);
}
//==================================================
/*
virtual std::string DataDsc_Base::LogException(void)
{
        std::string Msg = CL_Profiler::LogException();
        std::ostringstream stream;
        this->operator << (stream);
        Msg += stream.str
}
*/
//==================================================

Powered by WebSVN v1.61