PrimeWorldEditor/UI/WTexturePreviewPanel.cpp

64 lines
1.9 KiB
C++

#include "WTexturePreviewPanel.h"
#include "ui_WTexturePreviewPanel.h"
#include "WTextureGLWidget.h"
WTexturePreviewPanel::WTexturePreviewPanel(QWidget *parent, CTexture *pTexture) :
IPreviewPanel(parent),
ui(new Ui::WTexturePreviewPanel)
{
ui->setupUi(this);
SetResource(pTexture);
}
WTexturePreviewPanel::~WTexturePreviewPanel()
{
delete ui;
}
EResType WTexturePreviewPanel::ResType()
{
return eTexture;
}
void WTexturePreviewPanel::SetResource(CResource *pRes)
{
CTexture *pTexture = (CTexture*) pRes;
ui->TextureGLWidget->SetTexture(pTexture);
if (pTexture)
{
std::string Name = StringUtil::GetFileNameWithExtension(pTexture->Source());
ui->TextureNameLabel->setText( QString::fromStdString(Name) );
QString TexInfo;
TexInfo += QString::number(pTexture->Width()) + "x" + QString::number(pTexture->Height());
TexInfo += " ";
switch (pTexture->SourceTexelFormat())
{
case eGX_I4: TexInfo += "I4"; break;
case eGX_I8: TexInfo += "I8"; break;
case eGX_IA4: TexInfo += "IA4"; break;
case eGX_IA8: TexInfo += "IA8"; break;
case eGX_C4: TexInfo += "C4"; break;
case eGX_C8: TexInfo += "C8"; break;
case eGX_C14x2: TexInfo += "C14x2"; break;
case eGX_RGB565: TexInfo += "RGB565"; break;
case eGX_RGB5A3: TexInfo += "RGB5A3"; break;
case eGX_RGBA8: TexInfo += "RGBA8"; break;
case eGX_CMPR: TexInfo += "CMPR"; break;
default: TexInfo += "Invalid Format"; break;
}
TexInfo += " / ";
TexInfo += QString::number(pTexture->NumMipMaps()) + " mipmaps";
ui->TextureInfoLabel->setText(TexInfo);
}
else
{
ui->TextureNameLabel->setText("No texture");
ui->TextureInfoLabel->setText("");
}
}