Colour Tester: added display of DXT version and image size
This was SVN commit r2401.
This commit is contained in:
parent
92d221f183
commit
e3d8dd1b82
@ -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);
|
||||
}
|
||||
|
@ -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();
|
||||
};
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user