# PROP Ignore_Export_Lib 0\r
# PROP Target_Dir ""\r
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c\r
-# 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" /D "OPJ_MANYFORMATS" /FR /FD /c\r
+# 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" /D "OPJ_MANYFORMATS" /D "OPJ_INICONFIG" /FR /FD /c\r
# ADD BASE RSC /l 0x410 /d "NDEBUG"\r
# ADD RSC /l 0x409 /i "c:\programmi\wxWidgets-2.8.0\include" /d "NDEBUG"\r
BSC32=bscmake.exe\r
# PROP Ignore_Export_Lib 0\r
# PROP Target_Dir ""\r
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "d:\Programmi\wxWidgets-2.8.0\INCLUDE" /I "d:\programmi\wxWidgets-2.8.0\lib\vc_lib\msw" /I "d:\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\r
+# 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 "d:\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\r
# ADD BASE RSC /l 0x410 /d "_DEBUG"\r
-# ADD RSC /l 0x410 /i "d:\programmi\wxWidgets-2.8.0\include" /d "_DEBUG"\r
+# ADD RSC /l 0x410 /i "c:\programmi\wxWidgets-2.8.0\include" /d "_DEBUG"\r
BSC32=bscmake.exe\r
# ADD BASE BSC32 /nologo\r
# ADD BSC32 /nologo\r
LINK32=link.exe\r
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib wxzlibd.lib wxregexd.lib wxpngd.lib wxjpegd.lib wxtiffd.lib wxbase28d.lib wxmsw28d_core.lib wxmsw28d_html.lib wxmsw28d_adv.lib LibOpenJPEG_JPWLd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcmtd.lib" /pdbtype:sept /libpath:"d:\programmi\wxWidgets-2.8.0\lib\vc_lib" /libpath:"..\jpwl\Debug"\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib wxzlibd.lib wxregexd.lib wxpngd.lib wxjpegd.lib wxtiffd.lib wxbase28d.lib wxmsw28d_core.lib wxmsw28d_html.lib wxmsw28d_adv.lib LibOpenJPEG_JPWLd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcmtd.lib" /pdbtype:sept /libpath:"c:\programmi\wxWidgets-2.8.0\lib\vc_lib" /libpath:"..\jpwl\Debug"\r
# SUBTRACT LINK32 /pdb:none\r
\r
!ENDIF \r
// memory file system\r
wxFileSystem::AddHandler(new wxMemoryFSHandler);\r
\r
+#ifdef OPJ_INICONFIG\r
+ //load decoding engine parameters\r
+ OPJconfig = new wxConfig(OPJ_APPLICATION, OPJ_APPLICATION_VENDOR);\r
+\r
+ OPJconfig->Read(wxT("enabledeco"), &m_enabledeco, (bool) true);\r
+ OPJconfig->Read(wxT("enableparse"), &m_enableparse, (bool) true);\r
+ OPJconfig->Read(wxT("resizemethod"), &m_resizemethod, (long) 0);\r
+ OPJconfig->Read(wxT("reducefactor"), &m_reducefactor, (long) 0);\r
+ OPJconfig->Read(wxT("qualitylayers"), &m_qualitylayers, (long) 0);\r
+ OPJconfig->Read(wxT("components"), &m_components, (long) 0);\r
+ OPJconfig->Read(wxT("framenum"), &m_framenum, (long) 0);\r
+#ifdef USE_JPWL\r
+ OPJconfig->Read(wxT("enablejpwl"), &m_enablejpwl, (bool) true);\r
+ OPJconfig->Read(wxT("expcomps"), &m_expcomps, (long) JPWL_EXPECTED_COMPONENTS);\r
+ OPJconfig->Read(wxT("maxtiles"), &m_maxtiles, (long) JPWL_MAXIMUM_TILES);\r
+#endif // USE_JPWL\r
+\r
+ OPJconfig->Write(wxT("teststring"), wxT("This is a test value"));\r
+ OPJconfig->Write(wxT("testbool"), (bool) true);\r
+ OPJconfig->Write(wxT("testlong"), (long) 245);\r
+#else\r
// set decoding engine parameters\r
m_enabledeco = true;\r
+ m_enableparse = true;\r
m_resizemethod = 0;\r
m_reducefactor = 0;\r
m_qualitylayers = 0;\r
m_expcomps = JPWL_EXPECTED_COMPONENTS;\r
m_maxtiles = JPWL_MAXIMUM_TILES;\r
#endif // USE_JPWL\r
+#endif // OPJ_INICONFIG\r
\r
// Create the main frame window\r
OPJFrame *frame = new OPJFrame(NULL, wxID_ANY, OPJ_APPLICATION_TITLEBAR,\r
return true;\r
}\r
\r
+int OPJViewerApp::OnExit()\r
+{\r
+#ifdef OPJ_INICONFIG\r
+ OPJconfig->Write(wxT("enabledeco"), m_enabledeco);\r
+ OPJconfig->Write(wxT("enableparse"), m_enableparse);\r
+ OPJconfig->Write(wxT("resizemethod"), m_resizemethod);\r
+ OPJconfig->Write(wxT("reducefactor"), m_reducefactor);\r
+ OPJconfig->Write(wxT("qualitylayers"), m_qualitylayers);\r
+ OPJconfig->Write(wxT("components"), m_components);\r
+ OPJconfig->Write(wxT("framenum"), m_framenum);\r
+#ifdef USE_JPWL\r
+ OPJconfig->Write(wxT("enablejpwl"), m_enablejpwl);\r
+ OPJconfig->Write(wxT("expcomps"), m_expcomps);\r
+ OPJconfig->Write(wxT("maxtiles"), m_maxtiles);\r
+#endif // USE_JPWL\r
+#endif // OPJ_INICONFIG\r
+\r
+ return 1;\r
+}\r
+\r
void OPJViewerApp::ShowCmdLine(const wxCmdLineParser& parser)\r
{\r
wxString s = wxT("Command line parsed successfully:\nInput files: ");\r
\r
// load settings\r
wxGetApp().m_enabledeco = dialog.m_enabledecoCheck->GetValue();\r
- wxGetApp().m_resizemethod = dialog.m_resizeBox->GetSelection();\r
+ wxGetApp().m_enableparse = dialog.m_enableparseCheck->GetValue();\r
+ wxGetApp().m_resizemethod = dialog.m_resizeBox->GetSelection() - 1;\r
wxGetApp().m_reducefactor = dialog.m_reduceCtrl->GetValue();\r
wxGetApp().m_qualitylayers = dialog.m_layerCtrl->GetValue();\r
wxGetApp().m_components = dialog.m_numcompsCtrl->GetValue();\r
void OPJFrame::Rescale(int zooml, OPJChildFrame *currframe)\r
{\r
wxImage new_image = currframe->m_canvas->m_image100.ConvertToImage();\r
+\r
+ // resizing enabled?\r
+ if (wxGetApp().m_resizemethod == -1) {\r
+ zooml = 100;\r
+ }\r
+\r
if (zooml != 100)\r
new_image.Rescale((int) ((double) zooml * (double) new_image.GetWidth() / 100.0),\r
(int) ((double) zooml * (double) new_image.GetHeight() / 100.0),\r
wxGetApp().m_resizemethod ? wxIMAGE_QUALITY_HIGH : wxIMAGE_QUALITY_NORMAL);\r
- currframe->m_canvas->m_image = wxBitmap(new_image);\r
+ currframe->m_canvas->m_image = wxBitmap(new_image);\r
currframe->m_canvas->SetScrollbars(20,\r
20,\r
(int)(0.5 + (double) new_image.GetWidth() / 20.0),\r
(int)(0.5 + (double) new_image.GetHeight() / 20.0)\r
);\r
+\r
currframe->m_canvas->Refresh();\r
\r
// update zoom\r
// open the file\r
wxFile m_file(fname.GetFullPath().c_str(), wxFile::read);\r
\r
- // what is the extension?\r
- if ((fname.GetExt() == wxT("j2k")) || (fname.GetExt() == wxT("j2c"))) {\r
+ // parsing enabled?\r
+ if (wxGetApp().m_enableparse) {\r
\r
- // parse the file\r
- ParseJ2KFile(&m_file, 0, m_file.Length(), rootid);\r
+ // what is the extension?\r
+ if ((fname.GetExt() == wxT("j2k")) || (fname.GetExt() == wxT("j2c"))) {\r
\r
- } else if ((fname.GetExt() == wxT("jp2")) || (fname.GetExt() == wxT("mj2"))) {\r
+ // parse the file\r
+ ParseJ2KFile(&m_file, 0, m_file.Length(), rootid);\r
\r
- // parse the file\r
- if (this->m_parentid) {\r
- //WriteText(wxT("Only a subsection of jp2"));\r
- OPJMarkerData *data = (OPJMarkerData *) m_tree->GetItemData(rootid);\r
- ParseJ2KFile(&m_file, data->m_start, data->m_length, rootid);\r
- m_tree->Expand(rootid);\r
+ } else if ((fname.GetExt() == wxT("jp2")) || (fname.GetExt() == wxT("mj2"))) {\r
\r
- } else\r
- // as usual\r
- ParseJP2File(&m_file, 0, m_file.Length(), rootid);\r
+ // parse the file\r
+ if (this->m_parentid) {\r
+ //WriteText(wxT("Only a subsection of jp2"));\r
+ OPJMarkerData *data = (OPJMarkerData *) m_tree->GetItemData(rootid);\r
+ ParseJ2KFile(&m_file, data->m_start, data->m_length, rootid);\r
+ m_tree->Expand(rootid);\r
\r
- } else {\r
+ } else {\r
+ // as usual\r
+ ParseJP2File(&m_file, 0, m_file.Length(), rootid);\r
+ }\r
+\r
+ } else {\r
\r
- // unknown extension\r
- WriteText(wxT("Unknown file format!"));\r
+ // unknown extension\r
+ WriteText(wxT("Unknown file format!"));\r
+\r
+ }\r
\r
}\r
\r
+\r
// this is the root node\r
if (this->m_parentid)\r
m_tree->SetItemText(rootid, wxT("Codestream"));\r
0, wxGROW | wxALL, 5);\r
m_enabledecoCheck->SetValue(wxGetApp().m_enabledeco);\r
\r
+ // add parsing enabling check box\r
+ subtopSizer->Add(\r
+ m_enableparseCheck = new wxCheckBox(panel, OPJDECO_ENABLEPARSE, wxT("Enable parsing"), wxDefaultPosition, wxDefaultSize),\r
+ 0, wxGROW | wxALL, 5);\r
+ m_enableparseCheck->SetValue(wxGetApp().m_enableparse);\r
+\r
// resize settings, column\r
- wxString choices[] = {wxT("Low quality"), wxT("High quality")};\r
+ wxString choices[] = {wxT("Don't resize"), wxT("Low quality"), wxT("High quality")};\r
m_resizeBox = new wxRadioBox(panel, OPJDECO_RESMETHOD,\r
wxT("Resize method"),\r
wxDefaultPosition, wxDefaultSize,\r
choices,\r
1,\r
wxRA_SPECIFY_ROWS);\r
- m_resizeBox->SetSelection(wxGetApp().m_resizemethod);\r
+ m_resizeBox->SetSelection(wxGetApp().m_resizemethod + 1);\r
\r
subtopSizer->Add(m_resizeBox, 0, wxGROW | wxALL, 5);\r
\r
wxString htmlaboutpage = wxT(\r
"<html>"\r
"<body bgcolor=#FFFFFF>"\r
-"<table cellspacing=7 cellpadding=1 border=0 width=100%>"\r
+"<table cellspacing=7 cellpadding=1 border=0 width=100%>" \r
"<tr>"\r
"<td rowspan=3 valign=top align=center width=70>"\r
-"<img src=\"memory:opj_logo.xpm\"><br><br>"\r
+"<img src=\"memory:opj_logo.xpm\"><br><br>" \r
"</td>"\r
"<td align=center>"\r
-"<font size=+0 color=#000000><b>"\r
-OPJ_APPLICATION " " OPJ_APPLICATION_VERSION\r
+"<font size=+0 color=#000000><b>" \r
+OPJ_APPLICATION " " OPJ_APPLICATION_VERSION \r
"</b></font><br>"\r
-"<font size=-1 color=#000000><b>A JPEG 2000 image viewer</b></font><br>"\r
-"<font size=-2 color=#000000><b>" OPJ_APPLICATION_PLATFORM " version</b></font>"\r
+"<font size=-1 color=#000000><b>A JPEG 2000 image viewer</b></font><br>" \r
+"<font size=-2 color=#000000><b>" OPJ_APPLICATION_PLATFORM " version</b></font>" \r
"</td>"\r
"</tr>"\r
-"<tr height=3 valign=center>"\r
-"<td valign=center bgcolor=#cc3300></td>"\r
+"<tr height=3 valign=center>" \r
+"<td valign=center bgcolor=#cc3300></td>" \r
"</tr>"\r
"<tr>"\r
"<td align=justify>"\r
"<center><font size=+0 color=#000000><a href=\"http://www.openjpeg.org/\">OpenJPEG</a></font></center>"\r
"<font size=-1 color=#000000>The OpenJPEG library is an open-source JPEG 2000 codec written in C language. "\r
"In addition to the basic codec, various other features are under development.</font><br>"\r
-"<font size=-2 color=red>* Build: " wxVERSION_STRING ", " __DATE__ ", " __TIME__ "</font><br>"\r
-)\r
+"<font size=-2 color=red>* Build: ")\r
+#include "build.h"\r
+wxT("</font><br>")\r
+wxT("<font size=-2 color=red>* " wxVERSION_STRING ", " __DATE__ ", " __TIME__ "</font><br>")\r
#ifdef USE_JPWL\r
wxT("<font size=-2 color=green>- Compiled with JPWL support</font><br>")\r
#endif // USE_JPWL\r
wxT("</td>"\r
"</tr>"\r
"<tr>"\r
-"<td colspan=2 bgcolor=#CC3300 height=3 valign=center></td>"\r
+"<td colspan=2 bgcolor=#CC3300 height=3 valign=center></td>" \r
"</tr>"\r
"<tr>"\r
"<td colspan=2>"\r