# 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" /FR /FD /c\r
+# ADD CPP /nologo /G6 /MD /W3 /GX /O2 /I "d:\programmi\wxWidgets-2.8.0\lib\vc_lib\msw" /I "d:\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\r
# ADD BASE RSC /l 0x410 /d "NDEBUG"\r
-# ADD RSC /l 0x409 /i "c:\programmi\wxWidgets-2.8.0\include" /d "NDEBUG"\r
+# ADD RSC /l 0x409 /i "d:\programmi\wxWidgets-2.8.0\include" /d "NDEBUG"\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 /machine:I386\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 wxzlib.lib wxregex.lib wxpng.lib wxjpeg.lib wxbase28.lib wxmsw28_core.lib wxmsw28_html.lib wxmsw28_adv.lib wxmsw28_core.lib wxbase28.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib LibOpenJPEG_JPWL.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libcmt.lib" /libpath:"c:\programmi\wxWidgets-2.8.0\lib\vc_lib" /libpath:"..\jpwl\Release" /IGNORE:4089\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 wxzlib.lib wxregex.lib wxpng.lib wxjpeg.lib wxbase28.lib wxmsw28_core.lib wxmsw28_html.lib wxmsw28_adv.lib wxmsw28_core.lib wxbase28.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib LibOpenJPEG_JPWL.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libcmt.lib" /libpath:"d:\programmi\wxWidgets-2.8.0\lib\vc_lib" /libpath:"..\jpwl\Release" /IGNORE:4089\r
# SUBTRACT LINK32 /pdb:none\r
\r
!ELSEIF "$(CFG)" == "OPJViewer - Win32 Debug"\r
\r
[Setup]\r
AppName=OPJViewer\r
-AppVerName=OPJViewer 0.2 alpha\r
+AppVerName=OPJViewer 0.3 alpha\r
AppPublisher=OpenJPEG\r
AppPublisherURL=http://www.openjpeg.org\r
AppSupportURL=http://www.openjpeg.org\r
DefaultDirName={pf}\OPJViewer\r
DefaultGroupName=OPJViewer\r
OutputDir=setup\r
-OutputBaseFilename=OPJViewer02alpha_setup\r
+OutputBaseFilename=OPJViewer03alpha_setup\r
Compression=lzma\r
SolidCompression=true\r
InfoBeforeFile=source\readmebefore.txt\r
InfoAfterFile=source\readmeafter.txt\r
LicenseFile=source\license.txt\r
-VersionInfoVersion=0.2.0.0\r
+VersionInfoVersion=0.3.0.0\r
VersionInfoCompany=OpenJPEG\r
VersionInfoDescription=JPEG 2000 viewer\r
ShowLanguageDialog=yes\r
// the left button.\r
void OPJCanvas::OnEvent(wxMouseEvent& event)\r
{\r
+#if USE_PENCIL_ON_CANVAS\r
wxClientDC dc(this);\r
PrepareDC(dc);\r
\r
}\r
xpos = pt.x;\r
ypos = pt.y;\r
+#endif\r
}\r
\r
void OPJFrame::OnSize(wxSizeEvent& WXUNUSED(event))\r
GetClientSize(&width, &height);\r
\r
OPJCanvas *canvas = new OPJCanvas(fname, this, wxPoint(0, 0), wxSize(width, height));\r
+#if USE_PENCIL_ON_CANVAS\r
canvas->SetCursor(wxCursor(wxCURSOR_PENCIL));\r
+#endif\r
m_canvas = canvas;\r
\r
// Give it scrollbars\r
#endif // __WXGTK__\r
\r
#define USE_GENERIC_TREECTRL 0\r
+#define USE_PENCIL_ON_CANVAS 0\r
\r
#if USE_GENERIC_TREECTRL\r
#include "wx/generic/treectlg.h"\r
\r
#define OPJ_APPLICATION wxT("OPJViewer")\r
#define OPJ_APPLICATION_NAME wxT("OpenJPEG Viewer")\r
-#define OPJ_APPLICATION_VERSION wxT("0.2 alpha")\r
+#define OPJ_APPLICATION_VERSION wxT("0.3 alpha")\r
#define OPJ_APPLICATION_TITLEBAR OPJ_APPLICATION_NAME wxT(" ") OPJ_APPLICATION_VERSION\r
#define OPJ_APPLICATION_COPYRIGHT wxT("(C) 2007, Giuseppe Baruffa")\r
\r
int message_len = strlen(msg) - 1;\r
if (msg[message_len] != '\n')\r
message_len = MAX_MESSAGE_LEN;\r
- /*wxMutexGuiEnter();\r
+ wxMutexGuiEnter();\r
wxLogMessage(wxT("[ERROR] %.*s"), message_len, msg);\r
- wxMutexGuiLeave();*/\r
+ wxMutexGuiLeave();\r
}\r
/* sample warning callback expecting a FILE* client object */\r
void j2k_warning_callback(const char *msg, void *client_data) {\r
int message_len = strlen(msg) - 1;\r
if (msg[message_len] != '\n')\r
message_len = MAX_MESSAGE_LEN;\r
- /*wxMutexGuiEnter();\r
+ wxMutexGuiEnter();\r
wxLogMessage(wxT("[WARNING] %.*s"), message_len, msg);\r
- wxMutexGuiLeave();*/\r
+ wxMutexGuiLeave();\r
}\r
/* sample debug callback expecting no client object */\r
void j2k_info_callback(const char *msg, void *client_data) {\r
int message_len = strlen(msg) - 1;\r
if (msg[message_len] != '\n')\r
message_len = MAX_MESSAGE_LEN;\r
- /*wxMutexGuiEnter();\r
+ wxMutexGuiEnter();\r
wxLogMessage(wxT("[INFO] %.*s"), message_len, msg);\r
- wxMutexGuiLeave();*/\r
+ wxMutexGuiLeave();\r
}\r
\r
// load the j2k codestream\r
unsigned char *ptr;\r
int file_length;\r
int shiftbpp;\r
+ int c, tempcomps;\r
\r
// destroy the image\r
image->Destroy();\r
opj_cio_close(cio);\r
\r
// check image components\r
- if ((opjimage->numcomps != 1) && (opjimage->numcomps != 3)) {\r
- wxMutexGuiEnter();\r
- wxLogError(wxT("J2K: weird number of components"));\r
- wxMutexGuiLeave();\r
- opj_destroy_decompress(dinfo);\r
- free(src);\r
- return false;\r
- }\r
\r
// check image depth (only on the first one, for now)\r
shiftbpp = opjimage->comps[0].prec - 8;\r
image->SetMask( false );\r
ptr = image->GetData();\r
\r
+ // workaround for components different from 1 or 3\r
+ if ((opjimage->numcomps != 1) && (opjimage->numcomps != 3)) {\r
+ wxMutexGuiEnter();\r
+ wxLogMessage(wxT("J2K: weird number of components"));\r
+ tempcomps = 1;\r
+ wxMutexGuiLeave();\r
+ } else\r
+ tempcomps = opjimage->numcomps;\r
+\r
+ // workaround for subsampled components\r
+ for (c = 1; c < tempcomps; c++) {\r
+ if ((opjimage->comps[c].w != opjimage->comps[c - 1].w) || (opjimage->comps[c].h != opjimage->comps[c - 1].h)) {\r
+ tempcomps = 1;\r
+ break;\r
+ }\r
+ }\r
+\r
+ // workaround for different precision components\r
+ for (c = 1; c < tempcomps; c++) {\r
+ if (opjimage->comps[c].bpp != opjimage->comps[c - 1].bpp) {\r
+ tempcomps = 1;\r
+ break;\r
+ }\r
+ }\r
+\r
+\r
// RGB color picture\r
- if (opjimage->numcomps == 3) {\r
+ if (tempcomps == 3) {\r
int row, col;\r
int *r = opjimage->comps[0].data;\r
int *g = opjimage->comps[1].data;\r
}\r
\r
// B/W picture\r
- if (opjimage->numcomps == 1) {\r
+ if (tempcomps == 1) {\r
int row, col;\r
int *y = opjimage->comps[0].data;\r
if (shiftbpp > 0) {\r
\r
// randomly marker coincident data\r
if ((currmark != SOT_VAL) &&\r
- (currmark != EOC_VAL) /*&&\r
+ (currmark != EOC_VAL) &&\r
(currmark != SOP_VAL) &&\r
- (currmark != EPH_VAL)*/) {\r
+ (currmark != EPH_VAL)) {\r
OPJ_ADVANCE(1);\r
continue;\r
}\r