Improved parsing in OPJViewer, as well some aesthetic modifications; support for image rendering with bit depths lower than 8 bits; can display an arbitrary frame of an MJ2 file (only in B/W, though); can reload a file; better image resizing capabilities
This commit is contained in:
parent
f7c9b01800
commit
3f36196dfd
|
@ -5,6 +5,9 @@ What's New for OpenJPEG
|
||||||
! : changed
|
! : changed
|
||||||
+ : added
|
+ : added
|
||||||
|
|
||||||
|
March 27, 2007
|
||||||
|
+ [GB] Improved parsing in OPJViewer, as well some minor aesthetic modifications; support for image rendering with bit depths lower than 8 bits; can display an arbitrary frame of an MJ2 file (only in B/W, though); can reload a file; better resizing capabilities
|
||||||
|
|
||||||
March 23, 2007
|
March 23, 2007
|
||||||
* [antonin] Fixed Makefile.osx and changed Readme.osx accordingly
|
* [antonin] Fixed Makefile.osx and changed Readme.osx accordingly
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ RSC=rc.exe
|
||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||||
# ADD CPP /nologo /G6 /MD /GX /O2 /I "c:\programmi\wxWidgets-2.8.0\lib\vc_lib\msw" /I "c:\programmi\wxWidgets-2.8.0\include" /I ".." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "wxUSE_LIBOPENJPEG" /D "OPJ_STATIC" /D "USE_JPWL" /D "OPJ_HTMLABOUT" /FR /FD /c
|
# ADD CPP /nologo /G6 /MD /W3 /GX /O2 /I "c:\programmi\wxWidgets-2.8.0\lib\vc_lib\msw" /I "c:\programmi\wxWidgets-2.8.0\include" /I ".." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "wxUSE_LIBOPENJPEG" /D "OPJ_STATIC" /D "USE_JPWL" /D "OPJ_HTMLABOUT" /FR /FD /c
|
||||||
# ADD BASE RSC /l 0x410 /d "NDEBUG"
|
# ADD BASE RSC /l 0x410 /d "NDEBUG"
|
||||||
# ADD RSC /l 0x409 /i "c:\programmi\wxWidgets-2.8.0\include" /d "NDEBUG"
|
# ADD RSC /l 0x409 /i "c:\programmi\wxWidgets-2.8.0\include" /d "NDEBUG"
|
||||||
BSC32=bscmake.exe
|
BSC32=bscmake.exe
|
||||||
|
@ -67,7 +67,7 @@ LINK32=link.exe
|
||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||||
# ADD CPP /nologo /MDd /Gm /GX /Zi /Od /I "C:\Programmi\wxWidgets-2.8.0\INCLUDE" /I "c:\programmi\wxWidgets-2.8.0\lib\vc_lib\msw" /I "c:\programmi\wxWidgets-2.8.0\include" /I ".." /D "_DEBUG" /D "__WXDEBUG__" /D WXDEBUG=1 /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "wxUSE_LIBOPENJPEG" /D "OPJ_STATIC" /D "USE_JPWL" /D "OPJ_HTMLABOUT" /FR /FD /GZ /c
|
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "C:\Programmi\wxWidgets-2.8.0\INCLUDE" /I "c:\programmi\wxWidgets-2.8.0\lib\vc_lib\msw" /I "c:\programmi\wxWidgets-2.8.0\include" /I ".." /D "_DEBUG" /D "__WXDEBUG__" /D WXDEBUG=1 /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_WINDOWS" /D WINVER=0x400 /D "_MT" /D wxUSE_GUI=1 /D "wxUSE_LIBOPENJPEG" /D "OPJ_STATIC" /D "USE_JPWL" /D "OPJ_HTMLABOUT" /FR /FD /GZ /c
|
||||||
# SUBTRACT CPP /YX
|
# SUBTRACT CPP /YX
|
||||||
# ADD BASE RSC /l 0x410 /d "_DEBUG"
|
# ADD BASE RSC /l 0x410 /d "_DEBUG"
|
||||||
# ADD RSC /l 0x410 /i "c:\programmi\wxWidgets-2.8.0\include" /d "_DEBUG"
|
# ADD RSC /l 0x410 /i "c:\programmi\wxWidgets-2.8.0\include" /d "_DEBUG"
|
||||||
|
@ -118,6 +118,10 @@ SOURCE=.\source\wxjp2parser.cpp
|
||||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\source\about_htm.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\source\imagj2k.h
|
SOURCE=.\source\imagj2k.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
@ -158,6 +162,10 @@ SOURCE=.\source\icon5.xpm
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\source\opj_logo.xpm
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\source\OPJChild.ico
|
SOURCE=.\source\OPJChild.ico
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
|
@ -31,8 +31,8 @@ Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:Ad
|
||||||
|
|
||||||
[Files]
|
[Files]
|
||||||
Source: Release\OPJViewer.exe; DestDir: {app}; Flags: ignoreversion
|
Source: Release\OPJViewer.exe; DestDir: {app}; Flags: ignoreversion
|
||||||
Source: about\about.htm; DestDir: {app}/about; Flags: ignoreversion
|
;Source: about\about.htm; DestDir: {app}/about; Flags: ignoreversion
|
||||||
Source: about\opj_logo.png; DestDir: {app}/about; Flags: ignoreversion
|
;Source: about\opj_logo.png; DestDir: {app}/about; Flags: ignoreversion
|
||||||
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
|
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
|
||||||
|
|
||||||
[Icons]
|
[Icons]
|
||||||
|
|
|
@ -17,8 +17,7 @@ This document describes the installation and use of the OPJViewer in the framewo
|
||||||
|
|
||||||
This implementation has been developed using the OpenJPEG library as decoding engine and wxWidgets 2.8.0 as GUI engine.
|
This implementation has been developed using the OpenJPEG library as decoding engine and wxWidgets 2.8.0 as GUI engine.
|
||||||
|
|
||||||
If you find some bugs or if you have problems using the encoder/decoder, please send an e-mail to jpwl@diei.unipg.it
|
If you find some bugs or if you have problems using the encoder/decoder, please send an e-mail to jpwl@diei.unipg.it
|
||||||
|
|
||||||
|
|
||||||
2. Installing the viewer
|
2. Installing the viewer
|
||||||
==========================
|
==========================
|
||||||
|
@ -94,4 +93,3 @@ The log/peek pane is shared among two different subpanels:
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
* For mj2 files, only the first frame is displayed, and only in B/W
|
* For mj2 files, only the first frame is displayed, and only in B/W
|
||||||
* There is no zooming function
|
|
||||||
|
|
|
@ -27,8 +27,8 @@ useful for the JPIP protocol, JPWL-tools for error-resilience, ...</font>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan=2>
|
<td colspan=2>
|
||||||
<font size=-2 color="#444">OpenJPEG is © 2002-2007 <a href="http://www.tele.ucl.ac.be/">TELE</a> - <a href="http://www.uclouvain.be/">Université Catholique de Louvain</a></font><br>
|
<font size=-2 color="#444444">OpenJPEG is © 2002-2007 <a href="http://www.tele.ucl.ac.be/">TELE</a> - <a href="http://www.uclouvain.be/">Université Catholique de Louvain</a></font><br>
|
||||||
<font size=-2 color="#444">OPJViewer is also © 2005-2007 <a href="http://dsplab.diei.unipg.it/">DSPLab</a> - <a href="http://www.unipg.it/">Universitŕ degli studi di Perugia</a></font>
|
<font size=-2 color="#444444">OPJViewer is also © 2005-2007 <a href="http://dsplab.diei.unipg.it/">DSPLab</a> - <a href="http://www.unipg.it/">Universitŕ degli studi di Perugia</a></font>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -193,13 +193,18 @@ bool OPJViewerApp::OnInit(void)
|
||||||
wxImage::AddHandler( new wxJP2Handler );
|
wxImage::AddHandler( new wxJP2Handler );
|
||||||
wxImage::AddHandler( new wxMJ2Handler );
|
wxImage::AddHandler( new wxMJ2Handler );
|
||||||
#endif
|
#endif
|
||||||
// we use a PNG image in our HTML page
|
// we use a XPM image in our HTML page
|
||||||
wxImage::AddHandler(new wxPNGHandler);
|
wxImage::AddHandler(new wxXPMHandler);
|
||||||
|
|
||||||
|
// memory file system
|
||||||
|
wxFileSystem::AddHandler(new wxMemoryFSHandler);
|
||||||
|
|
||||||
// set decoding engine parameters
|
// set decoding engine parameters
|
||||||
|
m_resizemethod = 0;
|
||||||
m_reducefactor = 0;
|
m_reducefactor = 0;
|
||||||
m_qualitylayers = 0;
|
m_qualitylayers = 0;
|
||||||
m_components = 0;
|
m_components = 0;
|
||||||
|
m_framenum = 0;
|
||||||
#ifdef USE_JPWL
|
#ifdef USE_JPWL
|
||||||
m_enablejpwl = true;
|
m_enablejpwl = true;
|
||||||
m_expcomps = JPWL_EXPECTED_COMPONENTS;
|
m_expcomps = JPWL_EXPECTED_COMPONENTS;
|
||||||
|
@ -225,7 +230,7 @@ bool OPJViewerApp::OnInit(void)
|
||||||
if (!(m_filelist.IsEmpty())) {
|
if (!(m_filelist.IsEmpty())) {
|
||||||
//wxLogMessage(wxT("Habemus files!!!"));
|
//wxLogMessage(wxT("Habemus files!!!"));
|
||||||
wxArrayString paths, filenames;
|
wxArrayString paths, filenames;
|
||||||
for (int f = 0; f < wxGetApp().m_filelist.GetCount(); f++) {
|
for (unsigned int f = 0; f < wxGetApp().m_filelist.GetCount(); f++) {
|
||||||
paths.Add(wxFileName(wxGetApp().m_filelist[f]).GetFullPath());
|
paths.Add(wxFileName(wxGetApp().m_filelist[f]).GetFullPath());
|
||||||
filenames.Add(wxFileName(wxGetApp().m_filelist[f]).GetFullName());
|
filenames.Add(wxFileName(wxGetApp().m_filelist[f]).GetFullName());
|
||||||
}
|
}
|
||||||
|
@ -258,7 +263,9 @@ BEGIN_EVENT_TABLE(OPJFrame, wxMDIParentFrame)
|
||||||
EVT_MENU(OPJFRAME_FILECLOSE, OPJFrame::OnClose)
|
EVT_MENU(OPJFRAME_FILECLOSE, OPJFrame::OnClose)
|
||||||
EVT_MENU(OPJFRAME_VIEWZOOM, OPJFrame::OnZoom)
|
EVT_MENU(OPJFRAME_VIEWZOOM, OPJFrame::OnZoom)
|
||||||
EVT_MENU(OPJFRAME_VIEWFIT, OPJFrame::OnFit)
|
EVT_MENU(OPJFRAME_VIEWFIT, OPJFrame::OnFit)
|
||||||
EVT_MENU(OPJFRAME_FILETOGGLE, OPJFrame::OnToggleWindow)
|
EVT_MENU(OPJFRAME_VIEWRELOAD, OPJFrame::OnReload)
|
||||||
|
EVT_MENU(OPJFRAME_FILETOGGLEB, OPJFrame::OnToggleBrowser)
|
||||||
|
EVT_MENU(OPJFRAME_FILETOGGLEP, OPJFrame::OnTogglePeeker)
|
||||||
EVT_MENU(OPJFRAME_SETSDECO, OPJFrame::OnSetsDeco)
|
EVT_MENU(OPJFRAME_SETSDECO, OPJFrame::OnSetsDeco)
|
||||||
EVT_SASH_DRAGGED_RANGE(OPJFRAME_BROWSEWIN, OPJFRAME_LOGWIN, OPJFrame::OnSashDrag)
|
EVT_SASH_DRAGGED_RANGE(OPJFRAME_BROWSEWIN, OPJFRAME_LOGWIN, OPJFrame::OnSashDrag)
|
||||||
EVT_NOTEBOOK_PAGE_CHANGED(LEFT_NOTEBOOK_ID, OPJFrame::OnNotebook)
|
EVT_NOTEBOOK_PAGE_CHANGED(LEFT_NOTEBOOK_ID, OPJFrame::OnNotebook)
|
||||||
|
@ -275,8 +282,11 @@ OPJFrame::OPJFrame(wxWindow *parent, const wxWindowID id, const wxString& title,
|
||||||
file_menu->Append(OPJFRAME_FILEOPEN, wxT("&Open\tCtrl+O"));
|
file_menu->Append(OPJFRAME_FILEOPEN, wxT("&Open\tCtrl+O"));
|
||||||
file_menu->SetHelpString(OPJFRAME_FILEOPEN, wxT("Open one or more files"));
|
file_menu->SetHelpString(OPJFRAME_FILEOPEN, wxT("Open one or more files"));
|
||||||
|
|
||||||
file_menu->Append(OPJFRAME_FILETOGGLE, wxT("&Toggle browser\tCtrl+T"));
|
file_menu->Append(OPJFRAME_FILETOGGLEB, wxT("Toggle &browser\tCtrl+B"));
|
||||||
file_menu->SetHelpString(OPJFRAME_FILETOGGLE, wxT("Toggle the left browsing pane"));
|
file_menu->SetHelpString(OPJFRAME_FILETOGGLEB, wxT("Toggle the left browsing pane"));
|
||||||
|
|
||||||
|
file_menu->Append(OPJFRAME_FILETOGGLEP, wxT("Toggle &peeker\tCtrl+P"));
|
||||||
|
file_menu->SetHelpString(OPJFRAME_FILETOGGLEP, wxT("Toggle the bottom peeking pane"));
|
||||||
|
|
||||||
file_menu->Append(OPJFRAME_FILECLOSE, wxT("&Close\tCtrl+C"));
|
file_menu->Append(OPJFRAME_FILECLOSE, wxT("&Close\tCtrl+C"));
|
||||||
file_menu->SetHelpString(OPJFRAME_FILECLOSE, wxT("Close current image"));
|
file_menu->SetHelpString(OPJFRAME_FILECLOSE, wxT("Close current image"));
|
||||||
|
@ -293,6 +303,9 @@ OPJFrame::OPJFrame(wxWindow *parent, const wxWindowID id, const wxString& title,
|
||||||
view_menu->Append(OPJFRAME_VIEWFIT, wxT("Zoom to &fit\tCtrl+F"));
|
view_menu->Append(OPJFRAME_VIEWFIT, wxT("Zoom to &fit\tCtrl+F"));
|
||||||
view_menu->SetHelpString(OPJFRAME_VIEWFIT, wxT("Fit the image in canvas"));
|
view_menu->SetHelpString(OPJFRAME_VIEWFIT, wxT("Fit the image in canvas"));
|
||||||
|
|
||||||
|
view_menu->Append(OPJFRAME_VIEWRELOAD, wxT("&Reload image\tCtrl+R"));
|
||||||
|
view_menu->SetHelpString(OPJFRAME_VIEWRELOAD, wxT("Reload the current image"));
|
||||||
|
|
||||||
// settings menu and its items
|
// settings menu and its items
|
||||||
wxMenu *sets_menu = new wxMenu;
|
wxMenu *sets_menu = new wxMenu;
|
||||||
|
|
||||||
|
@ -435,9 +448,11 @@ void OPJFrame::OnSetsDeco(wxCommandEvent& event)
|
||||||
if (dialog.ShowModal() == wxID_OK) {
|
if (dialog.ShowModal() == wxID_OK) {
|
||||||
|
|
||||||
// load settings
|
// load settings
|
||||||
|
wxGetApp().m_resizemethod = dialog.m_resizeBox->GetSelection();
|
||||||
wxGetApp().m_reducefactor = dialog.m_reduceCtrl->GetValue();
|
wxGetApp().m_reducefactor = dialog.m_reduceCtrl->GetValue();
|
||||||
wxGetApp().m_qualitylayers = dialog.m_layerCtrl->GetValue();
|
wxGetApp().m_qualitylayers = dialog.m_layerCtrl->GetValue();
|
||||||
wxGetApp().m_components = dialog.m_numcompsCtrl->GetValue();
|
wxGetApp().m_components = dialog.m_numcompsCtrl->GetValue();
|
||||||
|
wxGetApp().m_framenum = dialog.m_framenumCtrl->GetValue();
|
||||||
#ifdef USE_JPWL
|
#ifdef USE_JPWL
|
||||||
wxGetApp().m_enablejpwl = dialog.m_enablejpwlCheck->GetValue();
|
wxGetApp().m_enablejpwl = dialog.m_enablejpwlCheck->GetValue();
|
||||||
wxGetApp().m_expcomps = dialog.m_expcompsCtrl->GetValue();
|
wxGetApp().m_expcomps = dialog.m_expcompsCtrl->GetValue();
|
||||||
|
@ -512,7 +527,7 @@ void OPJFrame::Rescale(int zooml, OPJChildFrame *currframe)
|
||||||
if (zooml != 100)
|
if (zooml != 100)
|
||||||
new_image.Rescale((int) ((double) zooml * (double) new_image.GetWidth() / 100.0),
|
new_image.Rescale((int) ((double) zooml * (double) new_image.GetWidth() / 100.0),
|
||||||
(int) ((double) zooml * (double) new_image.GetHeight() / 100.0),
|
(int) ((double) zooml * (double) new_image.GetHeight() / 100.0),
|
||||||
wxIMAGE_QUALITY_NORMAL);
|
wxGetApp().m_resizemethod ? wxIMAGE_QUALITY_HIGH : wxIMAGE_QUALITY_NORMAL);
|
||||||
currframe->m_canvas->m_image = wxBitmap(new_image);
|
currframe->m_canvas->m_image = wxBitmap(new_image);
|
||||||
currframe->m_canvas->SetScrollbars(20,
|
currframe->m_canvas->SetScrollbars(20,
|
||||||
20,
|
20,
|
||||||
|
@ -526,21 +541,44 @@ void OPJFrame::Rescale(int zooml, OPJChildFrame *currframe)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OPJFrame::OnReload(wxCommandEvent& event)
|
||||||
|
{
|
||||||
|
OPJChildFrame *currframe = (OPJChildFrame *) GetActiveChild();
|
||||||
|
|
||||||
|
OPJDecoThread *dthread = currframe->m_canvas->CreateDecoThread();
|
||||||
|
|
||||||
|
if (dthread->Run() != wxTHREAD_NO_ERROR)
|
||||||
|
wxLogMessage(wxT("Can't start deco thread!"));
|
||||||
|
else
|
||||||
|
wxLogMessage(wxT("New deco thread started."));
|
||||||
|
|
||||||
|
currframe->m_canvas->Refresh();
|
||||||
|
|
||||||
|
// update zoom
|
||||||
|
//currframe->m_canvas->m_zooml = zooml;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// about window for the frame
|
// about window for the frame
|
||||||
void OPJFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
|
void OPJFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
#ifdef OPJ_HTMLABOUT
|
#ifdef OPJ_HTMLABOUT
|
||||||
|
#include "about_htm.h"
|
||||||
|
#include "opj_logo.xpm"
|
||||||
|
|
||||||
wxBoxSizer *topsizer;
|
wxBoxSizer *topsizer;
|
||||||
wxHtmlWindow *html;
|
wxHtmlWindow *html;
|
||||||
wxDialog dlg(this, wxID_ANY, wxString(_("About")));
|
wxDialog dlg(this, wxID_ANY, wxString(_("About")));
|
||||||
|
|
||||||
|
wxMemoryFSHandler::AddFile("opj_logo.xpm", wxBitmap(opj_logo), wxBITMAP_TYPE_XPM);
|
||||||
|
|
||||||
topsizer = new wxBoxSizer(wxVERTICAL);
|
topsizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
html = new wxHtmlWindow(&dlg, wxID_ANY, wxDefaultPosition, wxSize(350, 250), wxHW_SCROLLBAR_NEVER);
|
html = new wxHtmlWindow(&dlg, wxID_ANY, wxDefaultPosition, wxSize(320, 250), wxHW_SCROLLBAR_NEVER);
|
||||||
html->SetBorders(0);
|
html->SetBorders(0);
|
||||||
html->LoadPage(wxT("about/about.htm"));
|
//html->LoadPage(wxT("about/about.htm"));
|
||||||
//html->SetPage("<html><body>Hello, world!</body></html>");
|
//html->SetPage("<html><body>Hello, world!</body></html>");
|
||||||
|
html->SetPage(htmlaboutpage);
|
||||||
html->SetSize(html->GetInternalRepresentation()->GetWidth(),
|
html->SetSize(html->GetInternalRepresentation()->GetWidth(),
|
||||||
html->GetInternalRepresentation()->GetHeight());
|
html->GetInternalRepresentation()->GetHeight());
|
||||||
|
|
||||||
|
@ -578,7 +616,7 @@ void OPJFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OPJFrame::OnToggleWindow(wxCommandEvent& WXUNUSED(event))
|
void OPJFrame::OnToggleBrowser(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
if (markerTreeWindow->IsShown())
|
if (markerTreeWindow->IsShown())
|
||||||
markerTreeWindow->Show(false);
|
markerTreeWindow->Show(false);
|
||||||
|
@ -589,6 +627,17 @@ void OPJFrame::OnToggleWindow(wxCommandEvent& WXUNUSED(event))
|
||||||
layout.LayoutMDIFrame(this);
|
layout.LayoutMDIFrame(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OPJFrame::OnTogglePeeker(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
if (loggingWindow->IsShown())
|
||||||
|
loggingWindow->Show(false);
|
||||||
|
else
|
||||||
|
loggingWindow->Show(true);
|
||||||
|
|
||||||
|
wxLayoutAlgorithm layout;
|
||||||
|
layout.LayoutMDIFrame(this);
|
||||||
|
}
|
||||||
|
|
||||||
void OPJFrame::OnSashDrag(wxSashEvent& event)
|
void OPJFrame::OnSashDrag(wxSashEvent& event)
|
||||||
{
|
{
|
||||||
if (event.GetDragStatus() == wxSASH_STATUS_OUT_OF_RANGE)
|
if (event.GetDragStatus() == wxSASH_STATUS_OUT_OF_RANGE)
|
||||||
|
@ -640,14 +689,14 @@ void OPJFrame::OpenFiles(wxArrayString paths, wxArrayString filenames)
|
||||||
m_childhash[winNumber] = subframe;
|
m_childhash[winNumber] = subframe;
|
||||||
|
|
||||||
// create own marker tree
|
// create own marker tree
|
||||||
m_treehash[winNumber] = new OPJMarkerTree(m_bookCtrl, paths[n], wxT("Parsing..."), TreeTest_Ctrl,
|
m_treehash[winNumber] = new OPJMarkerTree(m_bookCtrl, subframe, paths[n], wxT("Parsing..."), TreeTest_Ctrl,
|
||||||
wxDefaultPosition, wxDefaultSize,
|
wxDefaultPosition, wxDefaultSize,
|
||||||
wxTR_DEFAULT_STYLE | wxSUNKEN_BORDER
|
wxTR_DEFAULT_STYLE | wxSUNKEN_BORDER
|
||||||
);
|
);
|
||||||
|
|
||||||
m_bookCtrl->AddPage(m_treehash[winNumber], wxString::Format(wxT("%u"), winNumber), false);
|
m_bookCtrl->AddPage(m_treehash[winNumber], wxString::Format(wxT("%u"), winNumber), false);
|
||||||
|
|
||||||
for (int p = 0; p < m_bookCtrl->GetPageCount(); p++) {
|
for (unsigned int p = 0; p < m_bookCtrl->GetPageCount(); p++) {
|
||||||
if (m_bookCtrl->GetPageText(p) == wxString::Format(wxT("%u"), winNumber)) {
|
if (m_bookCtrl->GetPageText(p) == wxString::Format(wxT("%u"), winNumber)) {
|
||||||
m_bookCtrl->ChangeSelection(p);
|
m_bookCtrl->ChangeSelection(p);
|
||||||
break;
|
break;
|
||||||
|
@ -719,11 +768,22 @@ OPJDecoThread *OPJCanvas::CreateDecoThread(void)
|
||||||
return dthread;
|
return dthread;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define activeoverlay 0
|
||||||
// Define the repainting behaviour
|
// Define the repainting behaviour
|
||||||
void OPJCanvas::OnDraw(wxDC& dc)
|
void OPJCanvas::OnDraw(wxDC& dc)
|
||||||
{
|
{
|
||||||
if (m_image.Ok()) {
|
if (m_image.Ok()) {
|
||||||
dc.DrawBitmap(m_image, OPJ_CANVAS_BORDER, OPJ_CANVAS_BORDER);
|
dc.DrawBitmap(m_image, OPJ_CANVAS_BORDER, OPJ_CANVAS_BORDER);
|
||||||
|
|
||||||
|
if (activeoverlay) {
|
||||||
|
dc.SetPen(*wxRED_PEN);
|
||||||
|
dc.SetBrush(*wxTRANSPARENT_BRUSH);
|
||||||
|
//int tw, th;
|
||||||
|
dc.DrawRectangle(OPJ_CANVAS_BORDER, OPJ_CANVAS_BORDER,
|
||||||
|
(unsigned long int) (0.5 + (double) m_zooml * (double) m_childframe->m_twidth / 100.0),
|
||||||
|
(unsigned long int) (0.5 + (double) m_zooml * (double) m_childframe->m_theight / 100.0));
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
dc.SetFont(*wxSWISS_FONT);
|
dc.SetFont(*wxSWISS_FONT);
|
||||||
dc.SetPen(*wxBLACK_PEN);
|
dc.SetPen(*wxBLACK_PEN);
|
||||||
|
@ -769,34 +829,33 @@ OPJChildFrame::OPJChildFrame(OPJFrame *parent, wxFileName fname, int winnumber,
|
||||||
const long style):
|
const long style):
|
||||||
wxMDIChildFrame(parent, wxID_ANY, title, pos, size, style)
|
wxMDIChildFrame(parent, wxID_ANY, title, pos, size, style)
|
||||||
{
|
{
|
||||||
m_frame = (OPJFrame *) parent;
|
m_frame = (OPJFrame *) parent;
|
||||||
m_canvas = NULL;
|
m_canvas = NULL;
|
||||||
//my_children.Append(this);
|
//my_children.Append(this);
|
||||||
m_fname = fname;
|
m_fname = fname;
|
||||||
m_winnumber = winnumber;
|
m_winnumber = winnumber;
|
||||||
SetTitle(wxString::Format(_T("%d: "), m_winnumber) + m_fname.GetFullName());
|
SetTitle(wxString::Format(_T("%d: "), m_winnumber) + m_fname.GetFullName());
|
||||||
|
|
||||||
|
|
||||||
// Give it an icon (this is ignored in MDI mode: uses resources)
|
// Give it an icon (this is ignored in MDI mode: uses resources)
|
||||||
#ifdef __WXMSW__
|
#ifdef __WXMSW__
|
||||||
SetIcon(wxIcon(wxT("OPJChild16")));
|
SetIcon(wxIcon(wxT("OPJChild16")));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Give it a status line
|
// Give it a status line
|
||||||
/*CreateStatusBar();*/
|
/*CreateStatusBar();*/
|
||||||
|
|
||||||
int width, height;
|
int width, height;
|
||||||
GetClientSize(&width, &height);
|
GetClientSize(&width, &height);
|
||||||
|
|
||||||
OPJCanvas *canvas = new OPJCanvas(fname, this, wxPoint(0, 0), wxSize(width, height));
|
OPJCanvas *canvas = new OPJCanvas(fname, this, wxPoint(0, 0), wxSize(width, height));
|
||||||
canvas->SetCursor(wxCursor(wxCURSOR_PENCIL));
|
canvas->SetCursor(wxCursor(wxCURSOR_PENCIL));
|
||||||
m_canvas = canvas;
|
m_canvas = canvas;
|
||||||
|
|
||||||
// Give it scrollbars
|
// Give it scrollbars
|
||||||
canvas->SetScrollbars(20, 20, 5, 5);
|
canvas->SetScrollbars(20, 20, 5, 5);
|
||||||
|
|
||||||
Show(true);
|
Show(true);
|
||||||
Maximize(true);
|
Maximize(true);
|
||||||
|
|
||||||
/*wxLogError(wxString::Format(wxT("Created tree %d (0x%x)"), m_winnumber, m_frame->m_treehash[m_winnumber]));*/
|
/*wxLogError(wxString::Format(wxT("Created tree %d (0x%x)"), m_winnumber, m_frame->m_treehash[m_winnumber]));*/
|
||||||
|
|
||||||
|
@ -810,18 +869,15 @@ OPJChildFrame::~OPJChildFrame(void)
|
||||||
|
|
||||||
void OPJChildFrame::OnClose(wxCloseEvent& event)
|
void OPJChildFrame::OnClose(wxCloseEvent& event)
|
||||||
{
|
{
|
||||||
for (int p = 0; p < m_frame->m_bookCtrl->GetPageCount(); p++) {
|
for (unsigned int p = 0; p < m_frame->m_bookCtrl->GetPageCount(); p++) {
|
||||||
|
|
||||||
if (m_frame->m_bookCtrl->GetPageText(p) == wxString::Format(wxT("%u"), m_winnumber)) {
|
if (m_frame->m_bookCtrl->GetPageText(p) == wxString::Format(wxT("%u"), m_winnumber)) {
|
||||||
m_frame->m_bookCtrl->DeletePage(p);
|
m_frame->m_bookCtrl->DeletePage(p);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Destroy();
|
Destroy();
|
||||||
|
|
||||||
wxLogMessage(wxT("Closed: %d"), m_winnumber);
|
wxLogMessage(wxT("Closed: %d"), m_winnumber);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OPJChildFrame::OnActivate(wxActivateEvent& event)
|
void OPJChildFrame::OnActivate(wxActivateEvent& event)
|
||||||
|
@ -836,7 +892,7 @@ void OPJChildFrame::OnGotFocus(wxFocusEvent& event)
|
||||||
if (!m_frame->m_bookCtrl)
|
if (!m_frame->m_bookCtrl)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (int p = 0; p < m_frame->m_bookCtrl->GetPageCount(); p++) {
|
for (unsigned int p = 0; p < m_frame->m_bookCtrl->GetPageCount(); p++) {
|
||||||
|
|
||||||
if (m_frame->m_bookCtrl->GetPageText(p) == wxString::Format(wxT("%u"), m_winnumber)) {
|
if (m_frame->m_bookCtrl->GetPageText(p) == wxString::Format(wxT("%u"), m_winnumber)) {
|
||||||
m_frame->m_bookCtrl->ChangeSelection(p);
|
m_frame->m_bookCtrl->ChangeSelection(p);
|
||||||
|
@ -898,7 +954,7 @@ IMPLEMENT_DYNAMIC_CLASS(OPJMarkerTree, wxGenericTreeCtrl)
|
||||||
IMPLEMENT_DYNAMIC_CLASS(OPJMarkerTree, wxTreeCtrl)
|
IMPLEMENT_DYNAMIC_CLASS(OPJMarkerTree, wxTreeCtrl)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
OPJMarkerTree::OPJMarkerTree(wxWindow *parent, wxFileName fname, wxString name, const wxWindowID id,
|
OPJMarkerTree::OPJMarkerTree(wxWindow *parent, OPJChildFrame *subframe, wxFileName fname, wxString name, const wxWindowID id,
|
||||||
const wxPoint& pos, const wxSize& size, long style)
|
const wxPoint& pos, const wxSize& size, long style)
|
||||||
: wxTreeCtrl(parent, id, pos, size, style)
|
: wxTreeCtrl(parent, id, pos, size, style)
|
||||||
{
|
{
|
||||||
|
@ -915,11 +971,13 @@ OPJMarkerTree::OPJMarkerTree(wxWindow *parent, wxFileName fname, wxString name,
|
||||||
image, image,
|
image, image,
|
||||||
new OPJMarkerData(name));
|
new OPJMarkerData(name));
|
||||||
|
|
||||||
OPJParseThread *pthread = CreateParseThread();
|
OPJParseThread *pthread = CreateParseThread(0x00, subframe);
|
||||||
if (pthread->Run() != wxTHREAD_NO_ERROR)
|
if (pthread->Run() != wxTHREAD_NO_ERROR)
|
||||||
wxLogMessage(wxT("Can't start parse thread!"));
|
wxLogMessage(wxT("Can't start parse thread!"));
|
||||||
else
|
else
|
||||||
wxLogMessage(wxT("New parse thread started."));
|
wxLogMessage(wxT("New parse thread started."));
|
||||||
|
|
||||||
|
m_childframe = subframe;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OPJMarkerTree::CreateImageList(int size)
|
void OPJMarkerTree::CreateImageList(int size)
|
||||||
|
@ -1048,15 +1106,16 @@ void OPJParseThread::LoadFile(wxFileName fname)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// close the file
|
|
||||||
m_file.Close();
|
|
||||||
|
|
||||||
// this is the root node
|
// this is the root node
|
||||||
if (this->m_parentid)
|
if (this->m_parentid)
|
||||||
m_tree->SetItemText(rootid, wxT("Codestream"));
|
m_tree->SetItemText(rootid, wxT("Codestream"));
|
||||||
else
|
else
|
||||||
|
//m_tree->SetItemText(rootid, wxString::Format(wxT("%s (%d B)"), fname.GetFullName(), m_file.Length()));
|
||||||
m_tree->SetItemText(rootid, fname.GetFullName());
|
m_tree->SetItemText(rootid, fname.GetFullName());
|
||||||
|
|
||||||
|
// close the file
|
||||||
|
m_file.Close();
|
||||||
|
|
||||||
WriteText(wxT("Parsing finished!"));
|
WriteText(wxT("Parsing finished!"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1199,7 +1258,7 @@ void OPJMarkerTree::LogEvent(const wxChar *name, const wxTreeEvent& event)
|
||||||
wxLogMessage(wxT("%s(%s)"), name, text.c_str());
|
wxLogMessage(wxT("%s(%s)"), name, text.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
OPJParseThread *OPJMarkerTree::CreateParseThread(wxTreeItemId parentid)
|
OPJParseThread *OPJMarkerTree::CreateParseThread(wxTreeItemId parentid, OPJChildFrame *subframe)
|
||||||
{
|
{
|
||||||
OPJParseThread *pthread = new OPJParseThread(this, parentid);
|
OPJParseThread *pthread = new OPJParseThread(this, parentid);
|
||||||
|
|
||||||
|
@ -1804,6 +1863,7 @@ void *OPJDecoThread::Entry()
|
||||||
mj222handler->m_reducefactor = wxGetApp().m_reducefactor;
|
mj222handler->m_reducefactor = wxGetApp().m_reducefactor;
|
||||||
mj222handler->m_qualitylayers = wxGetApp().m_qualitylayers;
|
mj222handler->m_qualitylayers = wxGetApp().m_qualitylayers;
|
||||||
mj222handler->m_components = wxGetApp().m_components;
|
mj222handler->m_components = wxGetApp().m_components;
|
||||||
|
mj222handler->m_framenum = wxGetApp().m_framenum;
|
||||||
#ifdef USE_JPWL
|
#ifdef USE_JPWL
|
||||||
mj222handler->m_enablejpwl = wxGetApp().m_enablejpwl;
|
mj222handler->m_enablejpwl = wxGetApp().m_enablejpwl;
|
||||||
mj222handler->m_expcomps = wxGetApp().m_expcomps;
|
mj222handler->m_expcomps = wxGetApp().m_expcomps;
|
||||||
|
@ -1943,40 +2003,36 @@ END_EVENT_TABLE()
|
||||||
|
|
||||||
OPJDecoderDialog::OPJDecoderDialog(wxWindow* win, int dialogType)
|
OPJDecoderDialog::OPJDecoderDialog(wxWindow* win, int dialogType)
|
||||||
{
|
{
|
||||||
SetExtraStyle(wxDIALOG_EX_CONTEXTHELP|wxWS_EX_VALIDATE_RECURSIVELY);
|
SetExtraStyle(wxDIALOG_EX_CONTEXTHELP|wxWS_EX_VALIDATE_RECURSIVELY);
|
||||||
|
|
||||||
int tabImage1 = -1;
|
Create(win, wxID_ANY, wxT("Decoder settings"),
|
||||||
int tabImage2 = -1;
|
wxDefaultPosition, wxDefaultSize,
|
||||||
|
wxDEFAULT_DIALOG_STYLE| (int) wxPlatform::IfNot(wxOS_WINDOWS_CE, wxRESIZE_BORDER)
|
||||||
|
);
|
||||||
|
|
||||||
int resizeBorder = wxRESIZE_BORDER;
|
CreateButtons(wxOK | wxCANCEL | (int)wxPlatform::IfNot(wxOS_WINDOWS_CE, wxHELP));
|
||||||
|
|
||||||
m_imageList = NULL;
|
wxBookCtrlBase* notebook = GetBookCtrl();
|
||||||
|
|
||||||
Create(win, wxID_ANY, wxT("Decoder settings"), wxDefaultPosition, wxDefaultSize,
|
wxPanel* mainSettings = CreateMainSettingsPage(notebook);
|
||||||
wxDEFAULT_DIALOG_STYLE| (int) wxPlatform::IfNot(wxOS_WINDOWS_CE, resizeBorder)
|
wxPanel* jpeg2000Settings = CreatePart1SettingsPage(notebook);
|
||||||
);
|
wxPanel* mjpeg2000Settings = CreatePart3SettingsPage(notebook);
|
||||||
|
|
||||||
CreateButtons(wxOK | wxCANCEL | (int)wxPlatform::IfNot(wxOS_WINDOWS_CE, wxHELP));
|
|
||||||
|
|
||||||
wxBookCtrlBase* notebook = GetBookCtrl();
|
|
||||||
notebook->SetImageList(m_imageList);
|
|
||||||
|
|
||||||
wxPanel* mainSettings = CreateMainSettingsPage(notebook);
|
|
||||||
#ifdef USE_JPWL
|
#ifdef USE_JPWL
|
||||||
wxPanel* jpwlSettings = CreateJPWLSettingsPage(notebook);
|
wxPanel* jpwlSettings = CreatePart11SettingsPage(notebook);
|
||||||
#endif // USE_JPWL
|
#endif // USE_JPWL
|
||||||
|
|
||||||
notebook->AddPage(mainSettings, wxT("Main"), false);
|
notebook->AddPage(mainSettings, wxT("Display"), false);
|
||||||
|
notebook->AddPage(jpeg2000Settings, wxT("JPEG 2000"), false);
|
||||||
|
notebook->AddPage(mjpeg2000Settings, wxT("MJPEG 2000"), false);
|
||||||
#ifdef USE_JPWL
|
#ifdef USE_JPWL
|
||||||
notebook->AddPage(jpwlSettings, wxT("JPWL"), false);
|
notebook->AddPage(jpwlSettings, wxT("JPWL"), false);
|
||||||
#endif // USE_JPWL
|
#endif // USE_JPWL
|
||||||
|
|
||||||
LayoutDialog();
|
LayoutDialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
OPJDecoderDialog::~OPJDecoderDialog()
|
OPJDecoderDialog::~OPJDecoderDialog()
|
||||||
{
|
{
|
||||||
delete m_imageList;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*wxPanel* OPJDecoderDialog::CreateGeneralSettingsPage(wxWindow* parent)
|
/*wxPanel* OPJDecoderDialog::CreateGeneralSettingsPage(wxWindow* parent)
|
||||||
|
@ -2084,6 +2140,87 @@ OPJDecoderDialog::~OPJDecoderDialog()
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
wxPanel* OPJDecoderDialog::CreateMainSettingsPage(wxWindow* parent)
|
wxPanel* OPJDecoderDialog::CreateMainSettingsPage(wxWindow* parent)
|
||||||
|
{
|
||||||
|
wxPanel* panel = new wxPanel(parent, wxID_ANY);
|
||||||
|
|
||||||
|
// top sizer
|
||||||
|
wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
|
// sub top sizer
|
||||||
|
wxBoxSizer *subtopSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
|
// resize settings, column
|
||||||
|
wxString choices[] = {wxT("Low quality"), wxT("High quality")};
|
||||||
|
m_resizeBox = new wxRadioBox(panel, OPJDECO_RESMETHOD,
|
||||||
|
wxT("Resize method"),
|
||||||
|
wxDefaultPosition, wxDefaultSize,
|
||||||
|
WXSIZEOF(choices),
|
||||||
|
choices,
|
||||||
|
1,
|
||||||
|
wxRA_SPECIFY_ROWS);
|
||||||
|
m_resizeBox->SetSelection(wxGetApp().m_resizemethod);
|
||||||
|
|
||||||
|
subtopSizer->Add(m_resizeBox, 0, wxGROW | wxALL, 5);
|
||||||
|
|
||||||
|
topSizer->Add(subtopSizer, 1, wxGROW | wxALIGN_CENTRE | wxALL, 5);
|
||||||
|
|
||||||
|
// assign top and fit it
|
||||||
|
panel->SetSizer(topSizer);
|
||||||
|
topSizer->Fit(panel);
|
||||||
|
|
||||||
|
return panel;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxPanel* OPJDecoderDialog::CreatePart3SettingsPage(wxWindow* parent)
|
||||||
|
{
|
||||||
|
wxPanel* panel = new wxPanel(parent, wxID_ANY);
|
||||||
|
|
||||||
|
// top sizer
|
||||||
|
wxBoxSizer *topSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
|
// add some space
|
||||||
|
//topSizer->AddSpacer(5);
|
||||||
|
|
||||||
|
// sub top sizer
|
||||||
|
wxBoxSizer *subtopSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
|
// frame settings, column
|
||||||
|
wxStaticBox* frameBox = new wxStaticBox(panel, wxID_ANY, wxT("Frame"));
|
||||||
|
wxBoxSizer* frameSizer = new wxStaticBoxSizer(frameBox, wxVERTICAL);
|
||||||
|
|
||||||
|
// selected frame number, row
|
||||||
|
wxBoxSizer* framenumSizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
|
||||||
|
// add some text
|
||||||
|
framenumSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("&Displayed frame:")),
|
||||||
|
0, wxALL | wxALIGN_CENTER_VERTICAL, 5);
|
||||||
|
|
||||||
|
// add some horizontal space
|
||||||
|
framenumSizer->Add(5, 5, 1, wxALL, 0);
|
||||||
|
|
||||||
|
// add the value control
|
||||||
|
framenumSizer->Add(
|
||||||
|
m_framenumCtrl = new wxSpinCtrl(panel, OPJDECO_FRAMENUM,
|
||||||
|
wxString::Format(wxT("%d"), wxGetApp().m_framenum),
|
||||||
|
wxDefaultPosition, wxSize(80, wxDefaultCoord),
|
||||||
|
wxSP_ARROW_KEYS,
|
||||||
|
1, 100000, wxGetApp().m_framenum),
|
||||||
|
0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
|
||||||
|
|
||||||
|
frameSizer->Add(framenumSizer, 0, wxGROW | wxALL, 5);
|
||||||
|
|
||||||
|
subtopSizer->Add(frameSizer, 0, wxGROW | wxALL, 5);
|
||||||
|
|
||||||
|
topSizer->Add(subtopSizer, 1, wxGROW | wxALIGN_CENTRE | wxALL, 5);
|
||||||
|
|
||||||
|
// assign top and fit it
|
||||||
|
panel->SetSizer(topSizer);
|
||||||
|
topSizer->Fit(panel);
|
||||||
|
|
||||||
|
return panel;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxPanel* OPJDecoderDialog::CreatePart1SettingsPage(wxWindow* parent)
|
||||||
{
|
{
|
||||||
wxPanel* panel = new wxPanel(parent, wxID_ANY);
|
wxPanel* panel = new wxPanel(parent, wxID_ANY);
|
||||||
|
|
||||||
|
@ -2172,6 +2309,7 @@ wxPanel* OPJDecoderDialog::CreateMainSettingsPage(wxWindow* parent)
|
||||||
wxSP_ARROW_KEYS,
|
wxSP_ARROW_KEYS,
|
||||||
0, 100000, wxGetApp().m_components),
|
0, 100000, wxGetApp().m_components),
|
||||||
0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
|
0, wxALL | wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 5);
|
||||||
|
m_numcompsCtrl->Enable(false);
|
||||||
|
|
||||||
compoSizer->Add(numcompsSizer, 0, wxGROW | wxALL, 5);
|
compoSizer->Add(numcompsSizer, 0, wxGROW | wxALL, 5);
|
||||||
|
|
||||||
|
@ -2187,7 +2325,7 @@ wxPanel* OPJDecoderDialog::CreateMainSettingsPage(wxWindow* parent)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_JPWL
|
#ifdef USE_JPWL
|
||||||
wxPanel* OPJDecoderDialog::CreateJPWLSettingsPage(wxWindow* parent)
|
wxPanel* OPJDecoderDialog::CreatePart11SettingsPage(wxWindow* parent)
|
||||||
{
|
{
|
||||||
wxPanel* panel = new wxPanel(parent, wxID_ANY);
|
wxPanel* panel = new wxPanel(parent, wxID_ANY);
|
||||||
|
|
||||||
|
@ -2285,6 +2423,8 @@ void OPJDecoderDialog::OnEnableJPWL(wxCommandEvent& event)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // USE_JPWL
|
||||||
|
|
||||||
bool OPJDnDFile::OnDropFiles(wxCoord, wxCoord, const wxArrayString& filenames)
|
bool OPJDnDFile::OnDropFiles(wxCoord, wxCoord, const wxArrayString& filenames)
|
||||||
{
|
{
|
||||||
/*size_t nFiles = filenames.GetCount();
|
/*size_t nFiles = filenames.GetCount();
|
||||||
|
@ -2299,5 +2439,3 @@ bool OPJDnDFile::OnDropFiles(wxCoord, wxCoord, const wxArrayString& filenames)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // USE_JPWL
|
|
||||||
|
|
||||||
|
|
|
@ -94,6 +94,8 @@
|
||||||
#include <wx/dnd.h>
|
#include <wx/dnd.h>
|
||||||
#include "wx/wxhtml.h"
|
#include "wx/wxhtml.h"
|
||||||
#include "wx/statline.h"
|
#include "wx/statline.h"
|
||||||
|
#include <wx/fs_mem.h>
|
||||||
|
|
||||||
|
|
||||||
#include "libopenjpeg\openjpeg.h"
|
#include "libopenjpeg\openjpeg.h"
|
||||||
|
|
||||||
|
@ -119,11 +121,20 @@ typedef unsigned long long int8byte;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define OPJ_APPLICATION wxT("OPJViewer")
|
||||||
#define OPJ_APPLICATION_NAME wxT("OpenJPEG Viewer")
|
#define OPJ_APPLICATION_NAME wxT("OpenJPEG Viewer")
|
||||||
#define OPJ_APPLICATION_VERSION wxT("0.2 alpha")
|
#define OPJ_APPLICATION_VERSION wxT("0.2 alpha")
|
||||||
#define OPJ_APPLICATION_TITLEBAR OPJ_APPLICATION_NAME wxT(" ") OPJ_APPLICATION_VERSION
|
#define OPJ_APPLICATION_TITLEBAR OPJ_APPLICATION_NAME wxT(" ") OPJ_APPLICATION_VERSION
|
||||||
#define OPJ_APPLICATION_COPYRIGHT wxT("(C) 2007, Giuseppe Baruffa")
|
#define OPJ_APPLICATION_COPYRIGHT wxT("(C) 2007, Giuseppe Baruffa")
|
||||||
|
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
#define OPJ_APPLICATION_PLATFORM wxT("Windows")
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
#define OPJ_APPLICATION_PLATFORM wxT("Linux")
|
||||||
|
#endif
|
||||||
|
|
||||||
#define OPJ_CANVAS_BORDER 10
|
#define OPJ_CANVAS_BORDER 10
|
||||||
#define OPJ_CANVAS_COLOUR *wxWHITE
|
#define OPJ_CANVAS_COLOUR *wxWHITE
|
||||||
|
|
||||||
|
@ -166,8 +177,11 @@ class OPJViewerApp: public wxApp
|
||||||
// the list of all filenames written in the command line
|
// the list of all filenames written in the command line
|
||||||
wxArrayString m_filelist;
|
wxArrayString m_filelist;
|
||||||
|
|
||||||
|
// displaying engine parameters
|
||||||
|
int m_resizemethod;
|
||||||
|
|
||||||
// decoding engine parameters
|
// decoding engine parameters
|
||||||
int m_reducefactor, m_qualitylayers, m_components;
|
int m_reducefactor, m_qualitylayers, m_components, m_framenum;
|
||||||
#ifdef USE_JPWL
|
#ifdef USE_JPWL
|
||||||
bool m_enablejpwl;
|
bool m_enablejpwl;
|
||||||
int m_expcomps, m_maxtiles;
|
int m_expcomps, m_maxtiles;
|
||||||
|
@ -241,15 +255,16 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
OPJMarkerTree() { };
|
OPJMarkerTree() { };
|
||||||
OPJMarkerTree(wxWindow *parent, wxFileName fname, wxString name, const wxWindowID id,
|
OPJMarkerTree(wxWindow *parent, OPJChildFrame *subframe, wxFileName fname, wxString name, const wxWindowID id,
|
||||||
const wxPoint& pos, const wxSize& size,
|
const wxPoint& pos, const wxSize& size,
|
||||||
long style);
|
long style);
|
||||||
virtual ~OPJMarkerTree(){};
|
virtual ~OPJMarkerTree(){};
|
||||||
OPJParseThread *CreateParseThread(wxTreeItemId parentid = 0x00);
|
OPJParseThread *CreateParseThread(wxTreeItemId parentid = 0x00, OPJChildFrame *subframe = NULL);
|
||||||
void WriteText(const wxString& text) { wxMutexGuiEnter(); wxLogMessage(text); wxMutexGuiLeave(); }
|
void WriteText(const wxString& text) { wxMutexGuiEnter(); wxLogMessage(text); wxMutexGuiLeave(); }
|
||||||
|
|
||||||
wxFileName m_fname;
|
wxFileName m_fname;
|
||||||
wxTextCtrl *m_peektextCtrl;
|
wxTextCtrl *m_peektextCtrl;
|
||||||
|
OPJChildFrame *m_childframe;
|
||||||
|
|
||||||
/*void OnBeginDrag(wxTreeEvent& event);
|
/*void OnBeginDrag(wxTreeEvent& event);
|
||||||
void OnBeginRDrag(wxTreeEvent& event);
|
void OnBeginRDrag(wxTreeEvent& event);
|
||||||
|
@ -335,14 +350,16 @@ class OPJFrame: public wxMDIParentFrame
|
||||||
OPJFrame(wxWindow *parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long style);
|
OPJFrame(wxWindow *parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long style);
|
||||||
|
|
||||||
~OPJFrame(void);
|
~OPJFrame(void);
|
||||||
void OnSize(wxSizeEvent& event);
|
void OnSize(wxSizeEvent& WXUNUSED(event));
|
||||||
void OnAbout(wxCommandEvent& WXUNUSED(event));
|
void OnAbout(wxCommandEvent& WXUNUSED(event));
|
||||||
void OnFileOpen(wxCommandEvent& WXUNUSED(event));
|
void OnFileOpen(wxCommandEvent& WXUNUSED(event));
|
||||||
void OnQuit(wxCommandEvent& WXUNUSED(event));
|
void OnQuit(wxCommandEvent& WXUNUSED(event));
|
||||||
void OnClose(wxCommandEvent& WXUNUSED(event));
|
void OnClose(wxCommandEvent& WXUNUSED(event));
|
||||||
void OnZoom(wxCommandEvent& WXUNUSED(event));
|
void OnZoom(wxCommandEvent& WXUNUSED(event));
|
||||||
void OnFit(wxCommandEvent& WXUNUSED(event));
|
void OnFit(wxCommandEvent& WXUNUSED(event));
|
||||||
void OnToggleWindow(wxCommandEvent& WXUNUSED(event));
|
void OnToggleBrowser(wxCommandEvent& WXUNUSED(event));
|
||||||
|
void OnTogglePeeker(wxCommandEvent& WXUNUSED(event));
|
||||||
|
void OnReload(wxCommandEvent& event);
|
||||||
void OnSetsDeco(wxCommandEvent& event);
|
void OnSetsDeco(wxCommandEvent& event);
|
||||||
void OnSashDrag(wxSashEvent& event);
|
void OnSashDrag(wxSashEvent& event);
|
||||||
void OpenFiles(wxArrayString paths, wxArrayString filenames);
|
void OpenFiles(wxArrayString paths, wxArrayString filenames);
|
||||||
|
@ -390,6 +407,8 @@ class OPJChildFrame: public wxMDIChildFrame
|
||||||
wxFileName m_fname;
|
wxFileName m_fname;
|
||||||
int m_winnumber;
|
int m_winnumber;
|
||||||
|
|
||||||
|
unsigned long m_twidth, m_theight, m_tx, m_ty;
|
||||||
|
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -398,9 +417,11 @@ enum {
|
||||||
OPJFRAME_FILEEXIT = wxID_EXIT,
|
OPJFRAME_FILEEXIT = wxID_EXIT,
|
||||||
OPJFRAME_HELPABOUT = wxID_ABOUT,
|
OPJFRAME_HELPABOUT = wxID_ABOUT,
|
||||||
OPJFRAME_FILEOPEN,
|
OPJFRAME_FILEOPEN,
|
||||||
OPJFRAME_FILETOGGLE,
|
OPJFRAME_FILETOGGLEB,
|
||||||
|
OPJFRAME_FILETOGGLEP,
|
||||||
OPJFRAME_VIEWZOOM,
|
OPJFRAME_VIEWZOOM,
|
||||||
OPJFRAME_VIEWFIT,
|
OPJFRAME_VIEWFIT,
|
||||||
|
OPJFRAME_VIEWRELOAD,
|
||||||
OPJFRAME_FILECLOSE,
|
OPJFRAME_FILECLOSE,
|
||||||
OPJFRAME_SETSDECO,
|
OPJFRAME_SETSDECO,
|
||||||
|
|
||||||
|
@ -533,12 +554,15 @@ public:
|
||||||
~OPJDecoderDialog();
|
~OPJDecoderDialog();
|
||||||
|
|
||||||
wxSpinCtrl *m_reduceCtrl, *m_layerCtrl, *m_numcompsCtrl;
|
wxSpinCtrl *m_reduceCtrl, *m_layerCtrl, *m_numcompsCtrl;
|
||||||
|
wxRadioBox* m_resizeBox;
|
||||||
|
|
||||||
wxPanel* CreateMainSettingsPage(wxWindow* parent);
|
wxPanel* CreateMainSettingsPage(wxWindow* parent);
|
||||||
|
wxPanel* CreatePart1SettingsPage(wxWindow* parent);
|
||||||
|
wxPanel* CreatePart3SettingsPage(wxWindow* parent);
|
||||||
#ifdef USE_JPWL
|
#ifdef USE_JPWL
|
||||||
void OnEnableJPWL(wxCommandEvent& event);
|
void OnEnableJPWL(wxCommandEvent& event);
|
||||||
wxPanel* CreateJPWLSettingsPage(wxWindow* parent);
|
wxPanel* CreatePart11SettingsPage(wxWindow* parent);
|
||||||
wxSpinCtrl *m_expcompsCtrl, *m_maxtilesCtrl;
|
wxSpinCtrl *m_expcompsCtrl, *m_framenumCtrl, *m_maxtilesCtrl;
|
||||||
wxCheckBox *m_enablejpwlCheck;
|
wxCheckBox *m_enablejpwlCheck;
|
||||||
#endif // USE_JPWL
|
#endif // USE_JPWL
|
||||||
|
|
||||||
|
@ -546,16 +570,16 @@ public:
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
OPJDECO_REDUCEFACTOR = 100,
|
OPJDECO_RESMETHOD = 100,
|
||||||
|
OPJDECO_REDUCEFACTOR,
|
||||||
OPJDECO_QUALITYLAYERS,
|
OPJDECO_QUALITYLAYERS,
|
||||||
OPJDECO_NUMCOMPS,
|
OPJDECO_NUMCOMPS,
|
||||||
OPJDECO_ENABLEJPWL,
|
OPJDECO_ENABLEJPWL,
|
||||||
OPJDECO_EXPCOMPS,
|
OPJDECO_EXPCOMPS,
|
||||||
OPJDECO_MAXTILES
|
OPJDECO_MAXTILES,
|
||||||
|
OPJDECO_FRAMENUM
|
||||||
};
|
};
|
||||||
|
|
||||||
wxImageList* m_imageList;
|
|
||||||
|
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
wxString htmlaboutpage = wxT(
|
||||||
|
"<html>"
|
||||||
|
"<body bgcolor=#FFFFFF>"
|
||||||
|
"<table cellspacing=7 cellpadding=1 border=0 width=100%>"
|
||||||
|
"<tr>"
|
||||||
|
"<td rowspan=3 valign=top align=center width=70>"
|
||||||
|
"<img src=\"memory:opj_logo.xpm\"><br><br>"
|
||||||
|
"</td>"
|
||||||
|
"<td align=center>"
|
||||||
|
"<font size=+0 color=#000000><b>"
|
||||||
|
OPJ_APPLICATION " " OPJ_APPLICATION_VERSION
|
||||||
|
"</b></font><br>"
|
||||||
|
"<font size=-1 color=#000000><b>A JPEG 2000 image viewer</b></font><br>"
|
||||||
|
"<font size=-2 color=#000000><b>" OPJ_APPLICATION_PLATFORM " version</b></font>"
|
||||||
|
"</td>"
|
||||||
|
"</tr>"
|
||||||
|
"<tr height=3 valign=center>"
|
||||||
|
"<td valign=center bgcolor=#cc3300></td>"
|
||||||
|
"</tr>"
|
||||||
|
"<tr>"
|
||||||
|
"<td align=justify>"
|
||||||
|
"<center><font size=+0 color=#000000><a href=\"http://www.openjpeg.org/\">OpenJPEG</a></font></center>"
|
||||||
|
"<font size=-1 color=#000000>The OpenJPEG library is an open-source JPEG 2000 codec written in C language. "
|
||||||
|
"In addition to the basic codec, various other features are under development.</font><br>"
|
||||||
|
"<font size=-2 color=red>* Build: " wxVERSION_STRING ", " __DATE__ ", " __TIME__ "</font><br>"
|
||||||
|
)
|
||||||
|
#ifdef USE_JPWL
|
||||||
|
wxT("<font size=-2 color=green>- Compiled with JPWL support</font><br>")
|
||||||
|
#endif // USE_JPWL
|
||||||
|
#ifdef USE_JPSEC
|
||||||
|
wxT("<font size=-2 color=green>- Compiled with JPSEC support</font>")
|
||||||
|
#endif // USE_JPSEC
|
||||||
|
wxT(
|
||||||
|
"</td>"
|
||||||
|
"</tr>"
|
||||||
|
"<tr>"
|
||||||
|
"<td colspan=2 bgcolor=#CC3300 height=3 valign=center></td>"
|
||||||
|
"</tr>"
|
||||||
|
"<tr>"
|
||||||
|
"<td colspan=2>"
|
||||||
|
"<font size=-2 color=#444444>OpenJPEG is © 2002-2007 <a href=\"http://www.tele.ucl.ac.be/\">TELE</a> - <a href=\"http://www.uclouvain.be/\">Université Catholique de Louvain</a></font><br>"
|
||||||
|
"<font size=-2 color=#444444>OPJViewer is also © 2007 <a href=\"http://dsplab.diei.unipg.it/\">DSPLab</a> - <a href=\"http://www.unipg.it/\">Università degli studi di Perugia</a></font>"
|
||||||
|
"</td>"
|
||||||
|
"</tr>"
|
||||||
|
"</table>"
|
||||||
|
"</body>"
|
||||||
|
"</html>"
|
||||||
|
);
|
|
@ -233,14 +233,26 @@ bool wxJ2KHandler::LoadFile(wxImage *image, wxInputStream& stream, bool verbose,
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
|
} else if (shiftbpp < 0) {
|
||||||
for (row = 0; row < opjimage->comps[0].h; row++) {
|
for (row = 0; row < opjimage->comps[0].h; row++) {
|
||||||
for (col = 0; col < opjimage->comps[0].w; col++) {
|
for (col = 0; col < opjimage->comps[0].w; col++) {
|
||||||
|
|
||||||
|
*(ptr++) = (*(r++)) << -shiftbpp;
|
||||||
|
*(ptr++) = (*(g++)) << -shiftbpp;
|
||||||
|
*(ptr++) = (*(b++)) << -shiftbpp;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
for (row = 0; row < opjimage->comps[0].h; row++) {
|
||||||
|
for (col = 0; col < opjimage->comps[0].w; col++) {
|
||||||
|
|
||||||
*(ptr++) = *(r++);
|
*(ptr++) = *(r++);
|
||||||
*(ptr++) = *(g++);
|
*(ptr++) = *(g++);
|
||||||
*(ptr++) = *(b++);
|
*(ptr++) = *(b++);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -258,6 +270,16 @@ bool wxJ2KHandler::LoadFile(wxImage *image, wxInputStream& stream, bool verbose,
|
||||||
*(ptr++) = (*(y)) >> shiftbpp;
|
*(ptr++) = (*(y)) >> shiftbpp;
|
||||||
*(ptr++) = (*(y++)) >> shiftbpp;
|
*(ptr++) = (*(y++)) >> shiftbpp;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (shiftbpp < 0) {
|
||||||
|
for (row = 0; row < opjimage->comps[0].h; row++) {
|
||||||
|
for (col = 0; col < opjimage->comps[0].w; col++) {
|
||||||
|
|
||||||
|
*(ptr++) = (*(y)) << -shiftbpp;
|
||||||
|
*(ptr++) = (*(y)) << -shiftbpp;
|
||||||
|
*(ptr++) = (*(y++)) << -shiftbpp;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -402,15 +402,15 @@ my_jpeg2000parse(wxInputStream& stream, unsigned long int filepoint, unsigned lo
|
||||||
char *scansign, unsigned long int *scanpoint)
|
char *scansign, unsigned long int *scanpoint)
|
||||||
{
|
{
|
||||||
unsigned long int LBox = 0x00000000;
|
unsigned long int LBox = 0x00000000;
|
||||||
int LBox_read;
|
//int LBox_read;
|
||||||
char TBox[5] = "\0\0\0\0";
|
char TBox[5] = "\0\0\0\0";
|
||||||
int TBox_read;
|
//int TBox_read;
|
||||||
__int64 XLBox = 0x0000000000000000;
|
__int64 XLBox = 0x0000000000000000;
|
||||||
int XLBox_read;
|
//int XLBox_read;
|
||||||
unsigned long int box_length = 0;
|
unsigned long int box_length = 0;
|
||||||
int last_box = 0, box_num = 0;
|
int last_box = 0, box_num = 0;
|
||||||
int box_type = ANY_BOX;
|
int box_type = ANY_BOX;
|
||||||
unsigned char onebyte[1], twobytes[2], fourbytes[4];
|
unsigned char /*onebyte[1], twobytes[2],*/ fourbytes[4];
|
||||||
int box_number = 0;
|
int box_number = 0;
|
||||||
|
|
||||||
/* cycle all over the file */
|
/* cycle all over the file */
|
||||||
|
@ -499,7 +499,7 @@ my_jpeg2000parse(wxInputStream& stream, unsigned long int filepoint, unsigned lo
|
||||||
|
|
||||||
// search first contiguos codestream box in an mj2 file
|
// search first contiguos codestream box in an mj2 file
|
||||||
unsigned long int
|
unsigned long int
|
||||||
searchfirstjp2c(wxInputStream& stream, unsigned long int fsize)
|
searchjp2c(wxInputStream& stream, unsigned long int fsize, int number)
|
||||||
{
|
{
|
||||||
char scansign[] = "jp2c";
|
char scansign[] = "jp2c";
|
||||||
unsigned long int scanpoint = 0L;
|
unsigned long int scanpoint = 0L;
|
||||||
|
@ -507,7 +507,7 @@ searchfirstjp2c(wxInputStream& stream, unsigned long int fsize)
|
||||||
wxLogMessage(wxT("MJ2: searching jp2c box... "));
|
wxLogMessage(wxT("MJ2: searching jp2c box... "));
|
||||||
|
|
||||||
/* do the parsing */
|
/* do the parsing */
|
||||||
if (my_jpeg2000parse(stream, 0, fsize, 0, scansign, &scanpoint) < 0)
|
if (my_jpeg2000parse(stream, 0, fsize, number, scansign, &scanpoint) < 0)
|
||||||
wxLogMessage(wxT("MJ2: Unrecoverable error during file parsing: stopping"));
|
wxLogMessage(wxT("MJ2: Unrecoverable error during file parsing: stopping"));
|
||||||
|
|
||||||
if (strcmp(scansign, " "))
|
if (strcmp(scansign, " "))
|
||||||
|
@ -638,7 +638,7 @@ bool wxMJ2Handler::LoadFile(wxImage *image, wxInputStream& stream, bool verbose,
|
||||||
file_length = (int) stream.TellI();
|
file_length = (int) stream.TellI();
|
||||||
|
|
||||||
/* search for the first codestream box and the movie header box */
|
/* search for the first codestream box and the movie header box */
|
||||||
jp2c_point = searchfirstjp2c(stream, file_length);
|
jp2c_point = searchjp2c(stream, file_length, m_framenum);
|
||||||
jp2h_point = searchjpegheaderbox(stream, file_length);
|
jp2h_point = searchjpegheaderbox(stream, file_length);
|
||||||
|
|
||||||
// read the jp2h box and store it
|
// read the jp2h box and store it
|
||||||
|
|
|
@ -69,7 +69,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
// decoding engine parameters
|
// decoding engine parameters
|
||||||
int m_reducefactor, m_qualitylayers, m_components;
|
int m_reducefactor, m_qualitylayers, m_components, m_framenum;
|
||||||
#ifdef USE_JPWL
|
#ifdef USE_JPWL
|
||||||
bool m_enablejpwl;
|
bool m_enablejpwl;
|
||||||
int m_expcomps, m_maxtiles;
|
int m_expcomps, m_maxtiles;
|
||||||
|
|
|
@ -0,0 +1,285 @@
|
||||||
|
/* XPM */
|
||||||
|
static char *opj_logo[] = {
|
||||||
|
/* columns rows colors chars-per-pixel */
|
||||||
|
"90 61 218 2",
|
||||||
|
" c #BE3D12",
|
||||||
|
". c #BF461D",
|
||||||
|
"X c #AD5435",
|
||||||
|
"o c #B64925",
|
||||||
|
"O c #B54E2B",
|
||||||
|
"+ c #BC4620",
|
||||||
|
"@ c #BB4B25",
|
||||||
|
"# c #BC4E29",
|
||||||
|
"$ c #B5502F",
|
||||||
|
"% c #BD512C",
|
||||||
|
"& c #B45334",
|
||||||
|
"* c #B35638",
|
||||||
|
"= c #B45B3D",
|
||||||
|
"- c #BB5533",
|
||||||
|
"; c #BE5937",
|
||||||
|
": c #BC5C3D",
|
||||||
|
"> c #9C766A",
|
||||||
|
", c #AD5D42",
|
||||||
|
"< c #B55F41",
|
||||||
|
"1 c #BA5E40",
|
||||||
|
"2 c #A7634D",
|
||||||
|
"3 c #A76C57",
|
||||||
|
"4 c #AA6750",
|
||||||
|
"5 c #AC6B56",
|
||||||
|
"6 c #AA6E5A",
|
||||||
|
"7 c #A4705E",
|
||||||
|
"8 c #B46045",
|
||||||
|
"9 c #B1644B",
|
||||||
|
"0 c #BD6244",
|
||||||
|
"q c #B96448",
|
||||||
|
"w c #BC694D",
|
||||||
|
"e c #B36B53",
|
||||||
|
"r c #B26E58",
|
||||||
|
"t c #BB6C52",
|
||||||
|
"y c #B2725D",
|
||||||
|
"u c #BD7056",
|
||||||
|
"i c #BB745C",
|
||||||
|
"p c #A67566",
|
||||||
|
"a c #A57B6D",
|
||||||
|
"s c #AE7562",
|
||||||
|
"d c #AB7867",
|
||||||
|
"f c #AA7C6C",
|
||||||
|
"g c #A07E73",
|
||||||
|
"h c #AA7F71",
|
||||||
|
"j c #B37661",
|
||||||
|
"k c #B47863",
|
||||||
|
"l c #B27D6B",
|
||||||
|
"z c #BB7863",
|
||||||
|
"x c #BA7E69",
|
||||||
|
"c c #C73605",
|
||||||
|
"v c #C63A0B",
|
||||||
|
"b c #CB3300",
|
||||||
|
"n c #CA3807",
|
||||||
|
"m c #C93A0A",
|
||||||
|
"M c #C43E11",
|
||||||
|
"N c #C93E10",
|
||||||
|
"B c #C44115",
|
||||||
|
"V c #C3441A",
|
||||||
|
"C c #C4481E",
|
||||||
|
"Z c #CA4113",
|
||||||
|
"A c #C94519",
|
||||||
|
"S c #CB481C",
|
||||||
|
"D c #C24A23",
|
||||||
|
"F c #C24F28",
|
||||||
|
"G c #CD4D23",
|
||||||
|
"H c #C4522D",
|
||||||
|
"J c #CB532B",
|
||||||
|
"K c #C25632",
|
||||||
|
"L c #C35936",
|
||||||
|
"P c #C25C3B",
|
||||||
|
"I c #C85630",
|
||||||
|
"U c #CB5933",
|
||||||
|
"Y c #CB5E3A",
|
||||||
|
"T c #D05026",
|
||||||
|
"R c #CC613D",
|
||||||
|
"E c #C26343",
|
||||||
|
"W c #C46748",
|
||||||
|
"Q c #C1694C",
|
||||||
|
"! c #CD6744",
|
||||||
|
"~ c #CA6C4D",
|
||||||
|
"^ c #C37155",
|
||||||
|
"/ c #C4755B",
|
||||||
|
"( c #CB7356",
|
||||||
|
") c #C8765B",
|
||||||
|
"_ c #D06D4C",
|
||||||
|
"` c #D07253",
|
||||||
|
"' c #D47B5E",
|
||||||
|
"] c #C37B63",
|
||||||
|
"[ c #C27E68",
|
||||||
|
"{ c #C97F68",
|
||||||
|
"} c #A68175",
|
||||||
|
"| c #A48479",
|
||||||
|
" . c #AD8172",
|
||||||
|
".. c #AD8578",
|
||||||
|
"X. c #AB897D",
|
||||||
|
"o. c #B1806F",
|
||||||
|
"O. c #BA816F",
|
||||||
|
"+. c #B38373",
|
||||||
|
"@. c #B58778",
|
||||||
|
"#. c #B3897B",
|
||||||
|
"$. c #BA8472",
|
||||||
|
"%. c #BB8C7C",
|
||||||
|
"&. c #C2816B",
|
||||||
|
"*. c #CD846C",
|
||||||
|
"=. c #C38470",
|
||||||
|
"-. c #C38976",
|
||||||
|
";. c #C38D7B",
|
||||||
|
":. c #CC8973",
|
||||||
|
">. c #CF8F7A",
|
||||||
|
",. c #CB907D",
|
||||||
|
"<. c #D1937F",
|
||||||
|
"1. c #948E8C",
|
||||||
|
"2. c #9D8C86",
|
||||||
|
"3. c #9D8F89",
|
||||||
|
"4. c #96908E",
|
||||||
|
"5. c #9C918D",
|
||||||
|
"6. c #949392",
|
||||||
|
"7. c #9B9492",
|
||||||
|
"8. c #9D9997",
|
||||||
|
"9. c #9D9C9C",
|
||||||
|
"0. c #A38B83",
|
||||||
|
"q. c #AA8D83",
|
||||||
|
"w. c #A4918B",
|
||||||
|
"e. c #AC9087",
|
||||||
|
"r. c #AB938C",
|
||||||
|
"t. c #A49590",
|
||||||
|
"y. c #A29996",
|
||||||
|
"u. c #A19D9C",
|
||||||
|
"i. c #AA9790",
|
||||||
|
"p. c #AC9994",
|
||||||
|
"a. c #AC9E99",
|
||||||
|
"s. c #B18D81",
|
||||||
|
"d. c #B59084",
|
||||||
|
"f. c #B49389",
|
||||||
|
"g. c #BA9184",
|
||||||
|
"h. c #B89589",
|
||||||
|
"j. c #BA988D",
|
||||||
|
"k. c #B29B93",
|
||||||
|
"l. c #BC9C92",
|
||||||
|
"z. c #ACA19D",
|
||||||
|
"x. c #B1A19D",
|
||||||
|
"c. c #BCA39B",
|
||||||
|
"v. c #A3A3A3",
|
||||||
|
"b. c #ABA5A3",
|
||||||
|
"n. c #AEA9A7",
|
||||||
|
"m. c #ABABAA",
|
||||||
|
"M. c #B3A5A1",
|
||||||
|
"N. c #B3A9A6",
|
||||||
|
"B. c #B3ADAA",
|
||||||
|
"V. c #B9A6A0",
|
||||||
|
"C. c #B9AAA5",
|
||||||
|
"Z. c #BAADA9",
|
||||||
|
"A. c #B4B0AF",
|
||||||
|
"S. c #BAB0AD",
|
||||||
|
"D. c #B4B3B3",
|
||||||
|
"F. c #BAB5B3",
|
||||||
|
"G. c #BDB8B6",
|
||||||
|
"H. c #BBBBBB",
|
||||||
|
"J. c #C39384",
|
||||||
|
"K. c #C0978A",
|
||||||
|
"L. c #C2998B",
|
||||||
|
"P. c #CA9483",
|
||||||
|
"I. c #CD9A8A",
|
||||||
|
"U. c #C19D92",
|
||||||
|
"Y. c #D69B89",
|
||||||
|
"T. c #DB9680",
|
||||||
|
"R. c #C2A095",
|
||||||
|
"E. c #C4A69C",
|
||||||
|
"W. c #CCA193",
|
||||||
|
"Q. c #C8A599",
|
||||||
|
"!. c #CBA99D",
|
||||||
|
"~. c #C6AEA6",
|
||||||
|
"^. c #CCACA2",
|
||||||
|
"/. c #CBB2AB",
|
||||||
|
"(. c #C3B8B5",
|
||||||
|
"). c #C2BDBC",
|
||||||
|
"_. c #C9B9B3",
|
||||||
|
"`. c #D3ADA0",
|
||||||
|
"'. c #D3B4A9",
|
||||||
|
"]. c #DCB2A4",
|
||||||
|
"[. c #DEB6A8",
|
||||||
|
"{. c #D1BFB9",
|
||||||
|
"}. c #D9BEB5",
|
||||||
|
"|. c #C5C0BE",
|
||||||
|
" X c #CDC0BC",
|
||||||
|
".X c #D2C1BB",
|
||||||
|
"XX c #DDC3BB",
|
||||||
|
"oX c #E0C5BC",
|
||||||
|
"OX c #E0C8BF",
|
||||||
|
"+X c #C2C2C2",
|
||||||
|
"@X c #CBC4C2",
|
||||||
|
"#X c #CDC8C6",
|
||||||
|
"$X c #CCCBCB",
|
||||||
|
"%X c #D2C6C2",
|
||||||
|
"&X c #D1CECD",
|
||||||
|
"*X c #DDC8C1",
|
||||||
|
"=X c #DECFCA",
|
||||||
|
"-X c #D9D1CE",
|
||||||
|
";X c #D3D3D3",
|
||||||
|
":X c #D9D5D4",
|
||||||
|
">X c #DED9D7",
|
||||||
|
",X c #DBDBDB",
|
||||||
|
"<X c #E1CAC3",
|
||||||
|
"1X c #E2CFC8",
|
||||||
|
"2X c #E1D3CE",
|
||||||
|
"3X c #E2D5D0",
|
||||||
|
"4X c #E5D8D3",
|
||||||
|
"5X c #E4DDDB",
|
||||||
|
"6X c #E8DBD6",
|
||||||
|
"7X c #EADEDA",
|
||||||
|
"8X c #E6E0DE",
|
||||||
|
"9X c #EBE0DC",
|
||||||
|
"0X c #E4E4E4",
|
||||||
|
"qX c #E8E2E0",
|
||||||
|
"wX c #EBEBEB",
|
||||||
|
"eX c #F0EAE8",
|
||||||
|
"rX c #F3F3F3",
|
||||||
|
"tX c #FEFEFE",
|
||||||
|
/* pixels */
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXrXrXtXrXrXrXrXrXrXrXtXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXrXtXrXrXrXwXwXrXwXrXrXrXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXrXrXrXwXwX0X0XqX0X0X0X0XwXwXwXrXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXrXtXrXwXwX2X[.[.].].].].].1XwXrXwXrXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXrXrXrXwX0X0XL.J b b b b b b b J '.0X0XwXwXrXrXrXrXrXrXrXrXrXrXtXrXrXrXtXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXtXtXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXrXrXwX0XXXt m b m B V N b b v >.;X0XwXwXwXwXrXwXwXrXrXrXrXtXrXtXrXrXrXwXrXrXrXrXrXrXrXrXrXrXrXwXrXrXwXrXrXrXtXtXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXrXrXrX0X,X'.S b b P l.z.M.k.w n b b g.;X,X,X,X0X0X0X0X0XwXwXwXwXwXwXwXwXwX0X0X0XwX0X0XwXwXwXwX0X0X0X0X0X0XwXwXwXwXrXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXrXrXrXwX0X:XT.m b A ] G.D.D.m.$.m b b $.$X&X.X}.XX>XOX}.oXXX<X0X0XwXwXwX0X2XXXoXXXoXOX5X0XwX0X1XoXXX5X*X}.}.oX<XqXrXrXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXrXrXwX0X,XL.b b D M.H.D.D.D.D.m.L b b W H.Z.# b Y / m b b b Z P.:X:X:X$X:.Z b b b b n :.;X;X;XR b A &.Z b b b b *.wXwXrXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXrXwX0X:X$.b b E B.H.H.D.D.D.D.P b b E H.V.. b U L v v n b b ( #X;X$X~.Y b m N m b b ! {.&X#XI b C R v v n b b ! 0XwXrXrXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXrXwX0X:X!.A b Z F.H.H.H.H.H.D.m.L b b e b.+.b b V k i.r.t n b b s.H.x v b L q.b.p.D b b t F.$.n b M l a.M.y b b A :X0XwXrXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXrXwX0X:XL.m b D H.).H.+XH.H.H.D.H b b 6 v.j b b - a.A.m.@.m b b h D.< b b w z.b.b.P b b q B.z b b @ B.D.m...v b G :X,XwXwXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXwX0X,X&X/ b b , D.H.+X+X+X+XH.f.B b b 5.8.M b M w.v.v.v.r.D b b h l v b b M V v b b q u.X b n @.v.m.v.j b b Q &X,X0XwXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXwX0X,X$X^ b b , H.H.+X+XH.H.H.s.N b n 7.7.v b B 8.v.v.v.w.M b b g r b b b n n n b b b b e y.O b n X.m.v.n.e b b u &X,X0XrXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXrX0X,X$X/ b b + F.H.H.H.+XH.d.b b M | 8.> c b @ 9.v.9.u., b b - 3.& b b 7 1.1.4.4.4.6.7.9.w.m b + t.v.m.p.D b b K.;X,X0XwXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXwX0X,X$X-.b b b i D.H.G.H.J.N b b = 9.9.5 c b B 7.9.v.y.b b m f 4.O b b 3 6.6.6.g 9 4 h u.h b b - b.m.m.s.b b N ~.;X,X0XwXrXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXwX0X,X;XE.G b b I z ] ] ] W n b H l 9.8.9 b b m e 6 r e b b # 0.y.< b b O 6 p 6 < # ; q.v.t b b 0 n.A.A.+.b b H _.;X,XwXwXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXwXwX,X;X#Xf.b b b b b b b b b - a.v.v.w.@ b b v b b b b b @ b.m.v.w.M b b b b b b v ..m.n.A b n g.H.H.H.4 b b [ &X,X0XwXrXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXwXwX0X:X$XZ.Q H v n b m B H E x n.m.m.q.B b v < . v N + E z m.m.m.b.e - M m v M - t k.D.m.; # - V.H.+XH.s # # K.:X,X0XwXrXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXrXwXwX,X,X$X+XG.Z.Z.B.C.S.F.H.H.H.D.D.j b b q v.b.a.n.B.H.H.+X+X+XH.H.D.Z.C.Z.Z.F.H.H.+X+XH.).H.$X&X&X;X$X#X#X:X,X0XwXrXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXrXrXwX0X,X;X#X+X+X+XH.H.+X+X+XH.H.H.D.e b n i n.m.D.H.H.+X#X$X$X+X+X+X+XH.H.H.H.+X+X+X$X&X&X&X$X;X;X;X:X;X:X,X,X0XwXwXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXrXrXwXwX,X,X;X;X$X$X$X;X;X&X;X$X#X+XF b v s.H.H.+X$X&X;X;X,X,X,X;X:X;X;X;X;X;X;X:X,X,X,X0X,X0X,X0X0X0X0X0X0X0XwXwXrXtXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXrXtXrXwXwX0X,X:X;X;X;X;X;X:X;X;X;X$X+XC b B k.+X+X$X$X;X,X,X0X0X0X0X0X;X,X,X,X,X,X,X,X,X0X0X0X0X0X0XwX0X0X0XwXwXrXrXrXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXrXrXrXrXwXwXwX0X0X0X0X0X0X0X,X,X:X^.^.!.$X$X;X,X,X0XwXwXwXwXwXwXwXwX0X0X0X0XwXwXwXwXwXwXrXrXwXrXrXrXrXrXrXrXrXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXrXrXrXrXwXwXwXwX0XwXwXwX0X0X,X:X;X$X&X&X;X,X,X0XwXwXwXrXrXrXrXrXwXwXwXwXwXwXwXrXrXrXwXrXrXrXrXrXrXrXrXrXrXtXrXtXtXrXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXrXrXrXrXrXrXrXrXrXwXwXwXwX0X,X0X0X0XwXwXrXrXrXrXrXrXrXrXrXrXrXrXrXrXwXrXrXrXrXrXtXrXrXrXtXrXrXrXrXrXrXrXrXrXtXtXtXrXrXtXtXtXtXrXrXtXrXrXtXrXtXrXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXrXtXtXrXtXrXrXrXrXrXrXwXwXwX0XwX0XwXwXwXrXrXrXtXtXrXrXrXrXrXrXrXrXwXrXwXrXwXwXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXtXrXrXtXtXrXrXrXrXrXrXrXrXrXrXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXrXrXwXrXrXrXrXrXrXtXrXtXrXrXrXrXrXwXwXwXwXwX0X0XwX0XwXwXwXwXwXwXwXrXwXwXwX0X0X0X0XwX0XwXwXrXrXrXwXrXwXwXwX0XwX0XwXwXwXrXrXrXrXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXrXrXrXrXrXrXrXtXtXrXrXtXrXrXeX7X7X9XwXwXwX5X3X3X3X2X2X2X5X0XwXwXwXwXwX8X3X3X2X2X2X2X2X3X6X6X7XwXwXwXwXwXwX7X1XXXOXOX1X8XwXwXrXrXrXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXtXtXtXrXrXrXwXT.T T :.,X,X-X` G G G G G G U _ J.-X,X,X,X[ G G G G G G G G G G _ >XwX0X,X&XI.R N b b b m ! `.5XwXrXrXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXtXtXtXrXtXrXrXrXwX0X' b b ] >X,X%XJ b b b b b b b b Q {.:X;X:Xq b b b b b b b b b b Y >X0X,X-X'.^ n b b b b b m *.1XwXwXrXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXrX0X0X%XL b b L.@X+X-.b b M L L L D b b b M V.+X(.N b b D H H H H H U U W.;X&X^.H b b n W -.-.W n b b J &XwXrXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXwXwX0X XF b b U.+X+X[ b b D z z j P v b b N U.H.S.m b m E Q t ^ ) / ) ) /.$X$X;.m b n A %.H.H.J.N b b N .XwXwXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXwXwX,X:X!.m b L N.D.m.* b b y v.v.v.v.p.n b M f.m.w b b D u.v.m.m.D.G.H.H.+X).g.b b B j.F.D.D.D.D.l.; F I /.0XwXrXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXrXwX,X:XU.n b E B.A.n.$ b b s v.9.v.v.r.n n M r.b.1 b b D u.v.m.m.D.D.H.H.).H.k b b # M.G.D.D.D.D.Z.t w u _.0XwXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXrXwXwX,X;X$XJ b m h b.v.i.m b M a 5.5.2.p M b c < 8.2.+ b b M o o o o # % j G.H.g.m b A M.D.D.D.B.M.M.M.M.Z.(.:X0XwXrXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXrXrXrXrXwX,X,X&X(.n b M 0.v.v.s b b b b b n b b c b M u.v.g M b b b b b b b b b i G.D.0 b b 8 D.D.H.G.P n b b n b U :X,XwXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXrXrXrXwX0X,X;X$XV.n b M w.v.9.< b b b b b b b b c H r 9.v.a n b * < < w w Q Q g.D.B.: b b r D.D.D.m.C b b b b b ) ;X0XwXrXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXrXrXrX6XP.=.K.;X#X+Xx n b D v.u.7.. b b M D . D & 2 q.b.b.v.v.< b b X 6.9.9.b.m.D.D.D.D.n.# b b f D.D.D.b.= 1 * N b n !.;X,XwXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXtXrXrXwX<X~ P x $X+XH.z b b - v.v.3.M b b < r r r k 0.a.m.m.m.v.# b b , 6.9.v.m.D.D.D.H.D.z.O b b s D.D.D.N.f l 9 v b M ~.;X,XwXrXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXtXrXwX0XY.n b e H.H.V.F b b p b.v.h v b v v.m.A.D.H.+X+X+XH.D.p.b b m p 9.v.m.D.D.H.H.H.D.N.- b b - m.A.D.A.m.a.B b b - (.:X0XwXrXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXwXwX0XY.n b ; Z.C.$.A b v 0.m.m.l n b M m.D.D.H.+X#X+X+XH.H.r.b b m < d l l l $.;.J.V.H.B.w b b C @.s.a.k.#.j n b b : ).:X,XwXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXrXwXwX0X'.N b b A B n b n z m.D.B.0 b b 9 H.H.+X$X;X:X;X$X$X+Xl b b b b b b b b b b b s.H.H.B.H b b b n Z Z b b V n b ] $X:X0XwXrXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXwX0X,X.XR b b b b b A P d.D.D.C.H b b j H.$X$X;X:X,X,X;X;X+X/ b b b b b b b b b b b a.H.H.D.u G b b b b b B H : v m ;.$X,XwXwXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXwXwX,X:X Xg.j 5 y s.C.H.H.+X+X|.E.Q.Q. X;X;X,X0XwXwX0X0X,X;X/.U.j.h.g.f.h.j.U.U.U.!.$X$X+X+XH.Z.g.y 4 6 l x.D.A.l.~.#X,X0XwXrXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXrXrXwX0X:X$XG.k.e.f.B.H.H.+X$X$X$X#X$X$X;X;X,X0XwXwXwXwX0X0X;X$X+XH.D.D.D.F.H.+X+X#X&X$X;X$X$X+X+XA.r.X.e.a.H.H.H.+X+X;X,X0XwXrXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXrXwX,X,X$X&X$X$X$X$X;X;X,X,X,X,X,X,X0XwXwXwXrXtXrXrXwXwX0X,X;X$X$X+X$X$X$X;X;X:X,X,X,X,X,X;X$X&X#X#X$X$X$X$X$X;X,X,X0XwXrXrXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXrXwXwX0X,X:X;X;X$X;X;X:X,X,X0X0X,X0X0X0XwXwXwXrXrXtXrXrXwXwX0X;X;X$X&X$X$X&X:X,X,X,X,X0X,X,X:X;X;X$X$X$X$X$X;X:X,X,X0XwXwXrXrXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXtXrXwXwXwX0X0X0X0X0X0XwXwXwXwXwXwXwXwXrXwXrXtXtXrXtXtXrXrXrXwX0X0X0X0X,X,X0X0X0X0XwXwXwXwXwXwX0X0X0X,X,X,X,X0X0XwXwXwXrXtXrXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXrXrXrXwXwX0X0X0X0X0XwXwXwXrXwXrXrXrXrXrXtXrXtXtXtXtXrXrXrXwXwXwX0X0X0X0X0X0X0XwXwXwXwXwXwXwXwXwX0X0X0X0XwXwXwXwXwXrXrXrXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXtXrXrXrXrXrXrXrXrXrXrXtXtXrXtXtXrXtXtXtXtXtXtXtXrXtXrXtXrXrXrXrXwXwXrXrXrXrXrXrXrXtXrXrXrXrXrXrXrXwXrXrXrXrXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXrXtXrXrXrXrXrXrXtXtXrXtXrXtXrXrXtXtXtXtXtXtXtXtXtXtXtXrXrXrXrXrXrXrXrXrXrXrXtXtXrXtXrXrXtXrXrXrXrXrXrXrXrXtXrXrXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX",
|
||||||
|
"tXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtXtX"
|
||||||
|
};
|
File diff suppressed because it is too large
Load Diff
|
@ -484,7 +484,7 @@ int OPJParseThread::box_handler_function(int boxtype, wxFile *fileid, wxFileOffs
|
||||||
);
|
);
|
||||||
|
|
||||||
wxString text;
|
wxString text;
|
||||||
for (int s = 0; s < sample_count; s++) {
|
for (unsigned int s = 0; s < sample_count; s++) {
|
||||||
fileid->Read(&entry_size, sizeof(unsigned long int));
|
fileid->Read(&entry_size, sizeof(unsigned long int));
|
||||||
entry_size = BYTE_SWAP4(entry_size);
|
entry_size = BYTE_SWAP4(entry_size);
|
||||||
|
|
||||||
|
@ -844,15 +844,15 @@ int OPJParseThread::jpeg2000parse(wxFile *fileid, wxFileOffset filepoint, wxFile
|
||||||
wxTreeItemId parentid, int level, char *scansign, unsigned long int *scanpoint)
|
wxTreeItemId parentid, int level, char *scansign, unsigned long int *scanpoint)
|
||||||
{
|
{
|
||||||
unsigned long int LBox = 0x00000000;
|
unsigned long int LBox = 0x00000000;
|
||||||
int LBox_read;
|
//int LBox_read;
|
||||||
char TBox[5] = "\0\0\0\0";
|
char TBox[5] = "\0\0\0\0";
|
||||||
int TBox_read;
|
//int TBox_read;
|
||||||
int8byte XLBox = 0x0000000000000000;
|
int8byte XLBox = 0x0000000000000000;
|
||||||
int XLBox_read;
|
//int XLBox_read;
|
||||||
unsigned long int box_length = 0;
|
unsigned long int box_length = 0;
|
||||||
int last_box = 0, box_num = 0;
|
int last_box = 0, box_num = 0;
|
||||||
int box_type = ANY_BOX;
|
int box_type = ANY_BOX;
|
||||||
unsigned char onebyte[1], twobytes[2], fourbytes[4];
|
unsigned char /*onebyte[1], twobytes[2],*/ fourbytes[4];
|
||||||
|
|
||||||
/* cycle all over the file */
|
/* cycle all over the file */
|
||||||
box_num = 0;
|
box_num = 0;
|
||||||
|
|
|
@ -41,7 +41,7 @@ RSC=rc.exe
|
||||||
# PROP Intermediate_Dir "Release"
|
# PROP Intermediate_Dir "Release"
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
|
||||||
# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "OPJ_STATIC" /D "USE_JPWL" /YX /FD /c
|
# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "OPJ_STATIC" /D "USE_JPWL" /D "USE_JPSEC" /YX /FD /c
|
||||||
# ADD BASE RSC /l 0x80c /d "NDEBUG"
|
# ADD BASE RSC /l 0x80c /d "NDEBUG"
|
||||||
# ADD RSC /l 0x80c /d "NDEBUG"
|
# ADD RSC /l 0x80c /d "NDEBUG"
|
||||||
BSC32=bscmake.exe
|
BSC32=bscmake.exe
|
||||||
|
@ -64,7 +64,7 @@ LIB32=link.exe -lib
|
||||||
# PROP Intermediate_Dir "Debug"
|
# PROP Intermediate_Dir "Debug"
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
||||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "OPJ_STATIC" /D "USE_JPWL" /YX /FD /GZ /c
|
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "OPJ_STATIC" /D "USE_JPWL" /D "USE_JPSEC" /YX /FD /GZ /c
|
||||||
# ADD BASE RSC /l 0x80c /d "_DEBUG"
|
# ADD BASE RSC /l 0x80c /d "_DEBUG"
|
||||||
# ADD RSC /l 0x80c /d "_DEBUG"
|
# ADD RSC /l 0x80c /d "_DEBUG"
|
||||||
BSC32=bscmake.exe
|
BSC32=bscmake.exe
|
||||||
|
|
|
@ -104,7 +104,7 @@ Computes the minimum between two integers
|
||||||
#define min(a,b) (((a) < (b)) ? (a) : (b))
|
#define min(a,b) (((a) < (b)) ? (a) : (b))
|
||||||
#endif /* min */
|
#endif /* min */
|
||||||
|
|
||||||
#endif /* __CRC32_HEADER__ */
|
#endif /* __RS_HEADER__ */
|
||||||
|
|
||||||
|
|
||||||
#endif /* USE_JPWL */
|
#endif /* USE_JPWL */
|
||||||
|
|
Loading…
Reference in New Issue