summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiuseppe Baruffa <gbaruffa@users.noreply.github.com>2007-04-27 17:20:26 +0000
committerGiuseppe Baruffa <gbaruffa@users.noreply.github.com>2007-04-27 17:20:26 +0000
commit7c9dc11e3331d3770caf647ca50d58f2bca7a249 (patch)
tree68d34d0f19115bd9757004f1d3be81bbc1393e22
parent848214e7894895f30c9f827ff9d2796cf2d3cc3c (diff)
workarounds for rendering differently sized components
-rw-r--r--OPJViewer/OPJViewer.dsp6
-rw-r--r--OPJViewer/OPJViewer.iss6
-rw-r--r--OPJViewer/source/OPJViewer.cpp4
-rw-r--r--OPJViewer/source/OPJViewer.h3
-rw-r--r--OPJViewer/source/imagj2k.cpp51
-rw-r--r--OPJViewer/source/wxj2kparser.cpp4
6 files changed, 49 insertions, 25 deletions
diff --git a/OPJViewer/OPJViewer.dsp b/OPJViewer/OPJViewer.dsp
index 22a21e47..b1aaad9a 100644
--- a/OPJViewer/OPJViewer.dsp
+++ b/OPJViewer/OPJViewer.dsp
@@ -42,15 +42,15 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /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 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
# 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 "d:\programmi\wxWidgets-2.8.0\include" /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# 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
-# 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
+# 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
# SUBTRACT LINK32 /pdb:none
!ELSEIF "$(CFG)" == "OPJViewer - Win32 Debug"
diff --git a/OPJViewer/OPJViewer.iss b/OPJViewer/OPJViewer.iss
index ed8e9b71..1467e288 100644
--- a/OPJViewer/OPJViewer.iss
+++ b/OPJViewer/OPJViewer.iss
@@ -3,7 +3,7 @@
[Setup]
AppName=OPJViewer
-AppVerName=OPJViewer 0.2 alpha
+AppVerName=OPJViewer 0.3 alpha
AppPublisher=OpenJPEG
AppPublisherURL=http://www.openjpeg.org
AppSupportURL=http://www.openjpeg.org
@@ -11,13 +11,13 @@ AppUpdatesURL=http://www.openjpeg.org
DefaultDirName={pf}\OPJViewer
DefaultGroupName=OPJViewer
OutputDir=setup
-OutputBaseFilename=OPJViewer02alpha_setup
+OutputBaseFilename=OPJViewer03alpha_setup
Compression=lzma
SolidCompression=true
InfoBeforeFile=source\readmebefore.txt
InfoAfterFile=source\readmeafter.txt
LicenseFile=source\license.txt
-VersionInfoVersion=0.2.0.0
+VersionInfoVersion=0.3.0.0
VersionInfoCompany=OpenJPEG
VersionInfoDescription=JPEG 2000 viewer
ShowLanguageDialog=yes
diff --git a/OPJViewer/source/OPJViewer.cpp b/OPJViewer/source/OPJViewer.cpp
index bf7a2077..fb98e24d 100644
--- a/OPJViewer/source/OPJViewer.cpp
+++ b/OPJViewer/source/OPJViewer.cpp
@@ -803,6 +803,7 @@ void OPJCanvas::OnDraw(wxDC& dc)
// the left button.
void OPJCanvas::OnEvent(wxMouseEvent& event)
{
+#if USE_PENCIL_ON_CANVAS
wxClientDC dc(this);
PrepareDC(dc);
@@ -814,6 +815,7 @@ void OPJCanvas::OnEvent(wxMouseEvent& event)
}
xpos = pt.x;
ypos = pt.y;
+#endif
}
void OPJFrame::OnSize(wxSizeEvent& WXUNUSED(event))
@@ -856,7 +858,9 @@ const long style):
GetClientSize(&width, &height);
OPJCanvas *canvas = new OPJCanvas(fname, this, wxPoint(0, 0), wxSize(width, height));
+#if USE_PENCIL_ON_CANVAS
canvas->SetCursor(wxCursor(wxCURSOR_PENCIL));
+#endif
m_canvas = canvas;
// Give it scrollbars
diff --git a/OPJViewer/source/OPJViewer.h b/OPJViewer/source/OPJViewer.h
index c1413b74..5de1814f 100644
--- a/OPJViewer/source/OPJViewer.h
+++ b/OPJViewer/source/OPJViewer.h
@@ -113,6 +113,7 @@ typedef unsigned long long int8byte;
#endif // __WXGTK__
#define USE_GENERIC_TREECTRL 0
+#define USE_PENCIL_ON_CANVAS 0
#if USE_GENERIC_TREECTRL
#include "wx/generic/treectlg.h"
@@ -124,7 +125,7 @@ typedef unsigned long long int8byte;
#define OPJ_APPLICATION wxT("OPJViewer")
#define OPJ_APPLICATION_NAME wxT("OpenJPEG Viewer")
-#define OPJ_APPLICATION_VERSION wxT("0.2 alpha")
+#define OPJ_APPLICATION_VERSION wxT("0.3 alpha")
#define OPJ_APPLICATION_TITLEBAR OPJ_APPLICATION_NAME wxT(" ") OPJ_APPLICATION_VERSION
#define OPJ_APPLICATION_COPYRIGHT wxT("(C) 2007, Giuseppe Baruffa")
diff --git a/OPJViewer/source/imagj2k.cpp b/OPJViewer/source/imagj2k.cpp
index 65f9a42b..791cd2d8 100644
--- a/OPJViewer/source/imagj2k.cpp
+++ b/OPJViewer/source/imagj2k.cpp
@@ -85,27 +85,27 @@ void j2k_error_callback(const char *msg, void *client_data) {
int message_len = strlen(msg) - 1;
if (msg[message_len] != '\n')
message_len = MAX_MESSAGE_LEN;
- /*wxMutexGuiEnter();
+ wxMutexGuiEnter();
wxLogMessage(wxT("[ERROR] %.*s"), message_len, msg);
- wxMutexGuiLeave();*/
+ wxMutexGuiLeave();
}
/* sample warning callback expecting a FILE* client object */
void j2k_warning_callback(const char *msg, void *client_data) {
int message_len = strlen(msg) - 1;
if (msg[message_len] != '\n')
message_len = MAX_MESSAGE_LEN;
- /*wxMutexGuiEnter();
+ wxMutexGuiEnter();
wxLogMessage(wxT("[WARNING] %.*s"), message_len, msg);
- wxMutexGuiLeave();*/
+ wxMutexGuiLeave();
}
/* sample debug callback expecting no client object */
void j2k_info_callback(const char *msg, void *client_data) {
int message_len = strlen(msg) - 1;
if (msg[message_len] != '\n')
message_len = MAX_MESSAGE_LEN;
- /*wxMutexGuiEnter();
+ wxMutexGuiEnter();
wxLogMessage(wxT("[INFO] %.*s"), message_len, msg);
- wxMutexGuiLeave();*/
+ wxMutexGuiLeave();
}
// load the j2k codestream
@@ -118,6 +118,7 @@ bool wxJ2KHandler::LoadFile(wxImage *image, wxInputStream& stream, bool verbose,
unsigned char *ptr;
int file_length;
int shiftbpp;
+ int c, tempcomps;
// destroy the image
image->Destroy();
@@ -193,14 +194,6 @@ bool wxJ2KHandler::LoadFile(wxImage *image, wxInputStream& stream, bool verbose,
opj_cio_close(cio);
// check image components
- if ((opjimage->numcomps != 1) && (opjimage->numcomps != 3)) {
- wxMutexGuiEnter();
- wxLogError(wxT("J2K: weird number of components"));
- wxMutexGuiLeave();
- opj_destroy_decompress(dinfo);
- free(src);
- return false;
- }
// check image depth (only on the first one, for now)
shiftbpp = opjimage->comps[0].prec - 8;
@@ -212,8 +205,34 @@ bool wxJ2KHandler::LoadFile(wxImage *image, wxInputStream& stream, bool verbose,
image->SetMask( false );
ptr = image->GetData();
+ // workaround for components different from 1 or 3
+ if ((opjimage->numcomps != 1) && (opjimage->numcomps != 3)) {
+ wxMutexGuiEnter();
+ wxLogMessage(wxT("J2K: weird number of components"));
+ tempcomps = 1;
+ wxMutexGuiLeave();
+ } else
+ tempcomps = opjimage->numcomps;
+
+ // workaround for subsampled components
+ for (c = 1; c < tempcomps; c++) {
+ if ((opjimage->comps[c].w != opjimage->comps[c - 1].w) || (opjimage->comps[c].h != opjimage->comps[c - 1].h)) {
+ tempcomps = 1;
+ break;
+ }
+ }
+
+ // workaround for different precision components
+ for (c = 1; c < tempcomps; c++) {
+ if (opjimage->comps[c].bpp != opjimage->comps[c - 1].bpp) {
+ tempcomps = 1;
+ break;
+ }
+ }
+
+
// RGB color picture
- if (opjimage->numcomps == 3) {
+ if (tempcomps == 3) {
int row, col;
int *r = opjimage->comps[0].data;
int *g = opjimage->comps[1].data;
@@ -254,7 +273,7 @@ bool wxJ2KHandler::LoadFile(wxImage *image, wxInputStream& stream, bool verbose,
}
// B/W picture
- if (opjimage->numcomps == 1) {
+ if (tempcomps == 1) {
int row, col;
int *y = opjimage->comps[0].data;
if (shiftbpp > 0) {
diff --git a/OPJViewer/source/wxj2kparser.cpp b/OPJViewer/source/wxj2kparser.cpp
index 02d8b4a5..69d89989 100644
--- a/OPJViewer/source/wxj2kparser.cpp
+++ b/OPJViewer/source/wxj2kparser.cpp
@@ -201,9 +201,9 @@ void OPJParseThread::ParseJ2KFile(wxFile *m_file, wxFileOffset offset, wxFileOff
// randomly marker coincident data
if ((currmark != SOT_VAL) &&
- (currmark != EOC_VAL) /*&&
+ (currmark != EOC_VAL) &&
(currmark != SOP_VAL) &&
- (currmark != EPH_VAL)*/) {
+ (currmark != EPH_VAL)) {
OPJ_ADVANCE(1);
continue;
}