Пример #1
0
QTitleBar::QTitleBar(QWidget* w, QWidget* parent, const char* name)
    : QWidget( parent, name, WStyle_Customize | WStyle_NoBorder | WNoAutoErase )
{
    d = new QTitleBarPrivate();

#ifndef QT_NO_TOOLTIP
    d->toolTip = new QTitleBarTip( this );
#endif
    d->window = w;
    d->buttonDown = QStyle::SC_None;
    d->act = 0;
    if ( w ) {
	setWFlags( ((QTitleBar*)w)->getWFlags() | WNoAutoErase );
	if ( w->minimumSize() == w->maximumSize() )
	    clearWFlags( WStyle_Maximize );
#ifndef QT_NO_WIDGET_TOPEXTRA
    	setCaption( w->caption() );
#endif
    } else {
	setWFlags( WStyle_Customize | WNoAutoErase );
    }

    readColors();
    setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
    setMouseTracking(TRUE);
}
Пример #2
0
filesystem::InputStream &EditorState::readStream(filesystem::InputStream &stream)
{
	reset();

	for(unsigned int i = 0; i < data->modes.size(); ++i)
	{
		if(i >= 6)
			break;

		stream >> *data->modes[i];
	}

	int version = 0;
	stream >> version;

	readColors(stream);

	if(version > 1)
		stream >> data->lightMode;

	data->updateHeightmap = true;
	data->updateTexturing = true;
	data->updateShadows = true;

	return stream;
}
Пример #3
0
void Configuration::load()
{
    readColors();
    readBools();
    readUints();
    readFonts();
    readShortcuts();
}
Пример #4
0
CModelFile* CModelReader::read()
{
    atUint32 magic = base::readUint32();

    if (magic != 0xDEADBABE)
    {
        Athena::io::MemoryWriter tmp;
        decompressFile(tmp, base::data(), base::length());

        if (tmp.length() > 0x10)
            base::setData(tmp.data(), tmp.length());

        magic = base::readUint32();
    }

    if (magic != 0xDEADBABE /*&& magic != 0x9381000A*/)
        THROW_INVALID_DATA_EXCEPTION("Not a valid CMDL magic, expected 0xDEADBABE got 0x%.8X\n", magic);
    atUint32 version;
    if (magic != 0x9381000A)
        version = base::readUint32();
    else
        version = CModelFile::DKCR;

    if (!(version >= CModelFile::MetroidPrime1 && version <= CModelFile::DKCR))
        THROW_INVALID_DATA_EXCEPTION("Only Metroid Prime 1 to 3 models are supported got v%i\n", version);

    try
    {
        m_result = new CModelFile;
        m_result->m_version = (CModelFile::Version)version;
        m_result->m_flags = base::readUint32();
        m_result->m_boundingBox.min.x = base::readFloat();
        m_result->m_boundingBox.min.y = base::readFloat();
        m_result->m_boundingBox.min.z = base::readFloat();
        m_result->m_boundingBox.max.x = base::readFloat();
        m_result->m_boundingBox.max.y = base::readFloat();
        m_result->m_boundingBox.max.z = base::readFloat();

        atUint32 sectionCount = base::readUint32();
        atInt32 materialCount = base::readInt32();

        m_sectionSizes.resize(sectionCount);

        if (m_result->m_flags & 0x10)
        {
            base::readUint32();
            atUint32 visGroupCount = base::readUint32();
            while((visGroupCount--) > 0)
            {
                atUint32 len = base::readUint32();
                base::readString(len);
            }

            base::readUint32();
            base::readUint32();
            base::readUint32();
            base::readUint32();
            base::readUint32();
        }

        m_result->m_materialSets.resize(materialCount);
        for (atUint32 i = 0; i < sectionCount; i++)
            m_sectionSizes[i] = base::readUint32();

        base::seekAlign32();

        const atUint32 sectionBias = ((m_result->m_version == CModelFile::DKCR || m_result->m_version == CModelFile::MetroidPrime3)
                                      ? 1 : materialCount);

        Athena::io::MemoryReader sectionReader(new atUint8[2], 2);
        sectionReader.setEndian(endian());
        for (atUint32 i = 0; i < sectionCount; i++)
        {
            if (m_sectionSizes[i] == 0)
                continue;

            if (materialCount > 0)
            {
                if (m_result->m_version != CModelFile::DKCR && m_result->m_version != CModelFile::MetroidPrime3)
                {
                    atUint8* data = base::readUBytes(m_sectionSizes[i]);
                    CMaterialReader reader(data, m_sectionSizes[i]);
                    CMaterialSet materialSet;
                    switch(m_result->m_version)
                    {
                        case CModelFile::MetroidPrime1:
                            materialSet = reader.read(CMaterial::MetroidPrime1);
                            break;
                        case CModelFile::MetroidPrime2:
                            materialSet = reader.read(CMaterial::MetroidPrime2);
                            break;
                        default:
                            break;
                    }

                    m_result->m_materialSets[i] = materialSet;
                    materialCount--;
                    continue;
                }
                else
                {
                    atUint8* data = base::readUBytes(m_sectionSizes[i]);
                    CMaterialReader reader(data, m_sectionSizes[i]);
                    atUint32 setIdx = 0;
                    while ((materialCount--) > 0)
                    {
                        CMaterialSet& materialSet = m_result->m_materialSets[setIdx];
                        switch(m_result->m_version)
                        {
                            case CModelFile::MetroidPrime3:
                                materialSet = reader.read(CMaterial::MetroidPrime3);
                                break;
                            case CModelFile::DKCR:
                                materialSet = reader.read(CMaterial::DKCR);
                            default:
                                break;
                        }
                        setIdx++;
                    }
                    continue;
                }
            }
            else
            {
                SectionType section = (SectionType)(i - sectionBias);
                atUint8* data = base::readUBytes(m_sectionSizes[i]);
                sectionReader.setData(data, m_sectionSizes[i]);
                switch(section)
                {
                    case SectionType::Vertices:
                    {
                        if (m_result->m_flags & 0x20)
                            readVertices(sectionReader, true);
                        else
                            readVertices(sectionReader);
                    }
                        break;
                    case SectionType::Normals:
                        readNormals(sectionReader);
                        break;
                    case SectionType::Colors:
                        readColors(sectionReader);
                        break;
                    case SectionType::TexCoord0:
                        readTexCoords(0, sectionReader);
                        break;
                    case SectionType::TexCoord1orMeshOffsets:
                    {
                        if (m_result->m_flags & EFormatFlags::TexCoord1 || m_result->m_version == CModelFile::DKCR)
                            readTexCoords(1, sectionReader);
                        else
                            readMeshOffsets(sectionReader);
                        break;
                    }
                    case SectionType::MeshInfo:
                    {
                        if (m_meshOffsets.size() == 0)
                        {
                            readMeshOffsets(sectionReader);
                            break;
                        }
                    }
                    default:
                        if ((i - sectionBias) >= 5)
                            readMesh(sectionReader);
                        break;
                }
            }
        }
    }
    catch(...)
    {
        delete m_result;
        m_result = nullptr;
        throw;
    }

    return m_result;
}