1
0
forked from 0ad/0ad

Colour Tester: added display of DXT version and image size

This was SVN commit r2401.
This commit is contained in:
Ykkrosh 2005-06-18 00:56:50 +00:00
parent 92d221f183
commit e3d8dd1b82
4 changed files with 55 additions and 1 deletions

View File

@ -8,10 +8,14 @@
#include "wx/dnd.h"
DEFINE_EVENT_TYPE(wxEVT_MY_IMAGE_CHANGED)
BEGIN_EVENT_TABLE(ColourTester, wxFrame)
//EVT_MENU(ID_Custom1, OnCreateEntity)
EVT_COMMAND(wxID_ANY, wxEVT_MY_IMAGE_CHANGED, ColourTester::OnImageChanged)
END_EVENT_TABLE()
// Allow drag-and-drop of files onto the window, as a convenient way of opening them
class DropTarget : public wxFileDropTarget
{
public:
@ -29,6 +33,7 @@ private:
ColourTesterImageCtrl* m_ImageCtrl;
};
ColourTester::ColourTester(wxWindow* parent)
: wxFrame(parent, wxID_ANY, _("Colour Tester"), wxDefaultPosition, wxSize(800, 700))
{
@ -64,7 +69,23 @@ ColourTester::ColourTester(wxWindow* parent)
bottomSizer->Add((wxPanel*)new ColourTesterColourCtrl(mainPanel, m_ImageCtrl),
wxSizerFlags().Border(wxALL, 10));
m_StatusBar = new wxStatusBar(mainPanel, wxID_ANY);
m_StatusBar->SetFieldsCount(2);
int statusWidths[] = { -2, -1 };
m_StatusBar->SetStatusWidths(2, statusWidths);
vertSizer->Add(m_StatusBar,
wxSizerFlags().Expand());
//////////////////////////////////////////////////////////////////////////
SetDropTarget(new DropTarget(m_ImageCtrl));
}
void ColourTester::OnImageChanged(wxCommandEvent& event)
{
ColourTesterImageCtrl* imgCtrl = wxDynamicCast(event.GetEventObject(), ColourTesterImageCtrl);
wxCHECK(imgCtrl, );
m_StatusBar->SetStatusText(event.GetString(), 0);
m_StatusBar->SetStatusText(imgCtrl->GetImageFiletype(), 1);
}

View File

@ -1,12 +1,18 @@
class ColourTesterImageCtrl;
DECLARE_EVENT_TYPE(wxEVT_MY_IMAGE_CHANGED, -1)
class ColourTester : public wxFrame
{
public:
ColourTester(wxWindow* parent);
private:
void OnImageChanged(wxCommandEvent& event);
ColourTesterImageCtrl* m_ImageCtrl;
wxStatusBar* m_StatusBar;
DECLARE_EVENT_TABLE();
};

View File

@ -2,6 +2,8 @@
#include "ColourTesterImageCtrl.h"
#include "ColourTester.h"
#ifdef _MSC_VER
# ifndef NDEBUG
# pragma comment(lib, "DevIL_DBG.lib")
@ -28,6 +30,7 @@ ColourTesterImageCtrl::ColourTesterImageCtrl(wxWindow* parent)
m_Colour[2] = 0;
ilInit();
ilGenImages(1, (ILuint*)&m_OriginalImage);
ilSetInteger(IL_KEEP_DXTC_DATA, IL_TRUE);
}
void ColourTesterImageCtrl::SetImageFile(const wxFileName& fn)
@ -44,6 +47,8 @@ void ColourTesterImageCtrl::SetImageFile(const wxFileName& fn)
}
m_Valid = true;
m_DxtcFormat = ilGetInteger(IL_DXTC_DATA_FORMAT);
ilConvertImage(IL_RGBA, IL_UNSIGNED_BYTE);
// TODO: Check for IL errors
@ -59,6 +64,26 @@ void ColourTesterImageCtrl::SetImageFile(const wxFileName& fn)
}
CalculateImage();
// Send an event to indicate that the image has changed, so that
// the status-bar text can be updated
wxCommandEvent evt(wxEVT_MY_IMAGE_CHANGED);
evt.SetEventObject(this);
evt.SetString(fn.GetFullPath());
GetEventHandler()->ProcessEvent(evt);
}
wxString ColourTesterImageCtrl::GetImageFiletype()
{
wxString fmt = _("Not DXTC");
switch (ilGetInteger(IL_DXTC_DATA_FORMAT)) {
case IL_DXT1: fmt = _T("DXT1"); break;
case IL_DXT2: fmt = _T("DXT2"); break;
case IL_DXT3: fmt = _T("DXT3"); break;
case IL_DXT4: fmt = _T("DXT4"); break;
case IL_DXT5: fmt = _T("DXT5"); break;
}
return wxString::Format(_T("%s - %dx%d"), fmt, ilGetInteger(IL_IMAGE_WIDTH), ilGetInteger(IL_IMAGE_HEIGHT));
}
void ColourTesterImageCtrl::SetColour(const wxColour& colour)

View File

@ -8,6 +8,7 @@ public:
void SetImageFile(const wxFileName& fn);
void SetColour(const wxColour& colour);
void SetZoom(int amount);
wxString GetImageFiletype();
void OnPaint(wxPaintEvent& event);
@ -16,6 +17,7 @@ private:
bool m_Valid; // stores whether a valid image is loaded and displayable
unsigned int m_OriginalImage; // DevIL image id
unsigned int m_DxtcFormat;
wxImage m_FinalImage;
wxBitmap m_FinalBitmap;