#include "wx/module.h"\r
#endif\r
\r
-\r
-#include "libopenjpeg/openjpeg.h"\r
-\r
-\r
#include "wx/filefn.h"\r
#include "wx/wfstream.h"\r
\r
\r
/* sample error callback expecting a FILE* client object */\r
void j2k_error_callback(const char *msg, void *client_data) {\r
- char m_msg[MAX_MESSAGE_LEN];\r
int message_len = strlen(msg) - 1;\r
if (msg[message_len] != '\n')\r
message_len = MAX_MESSAGE_LEN;\r
- sprintf(m_msg, "[ERROR] %.*s", message_len, msg);\r
wxMutexGuiEnter();\r
- wxLogMessage(m_msg);\r
+ wxLogMessage(wxT("[ERROR] %.*s"), message_len, msg);\r
wxMutexGuiLeave();\r
}\r
/* sample warning callback expecting a FILE* client object */\r
void j2k_warning_callback(const char *msg, void *client_data) {\r
- char m_msg[MAX_MESSAGE_LEN];\r
int message_len = strlen(msg) - 1;\r
if (msg[message_len] != '\n')\r
message_len = MAX_MESSAGE_LEN;\r
- sprintf(m_msg, "[WARNING] %.*s", message_len, msg);\r
wxMutexGuiEnter();\r
- wxLogMessage(m_msg);\r
+ wxLogMessage(wxT("[WARNING] %.*s"), message_len, msg);\r
wxMutexGuiLeave();\r
}\r
/* sample debug callback expecting no client object */\r
void j2k_info_callback(const char *msg, void *client_data) {\r
- char m_msg[MAX_MESSAGE_LEN];\r
int message_len = strlen(msg) - 1;\r
if (msg[message_len] != '\n')\r
message_len = MAX_MESSAGE_LEN;\r
- sprintf(m_msg, "[INFO] %.*s", message_len, msg);\r
wxMutexGuiEnter();\r
- wxLogMessage(m_msg);\r
+ wxLogMessage(wxT("[INFO] %.*s"), message_len, msg);\r
wxMutexGuiLeave();\r
}\r
\r
strncpy(parameters.outfile, "", sizeof(parameters.outfile)-1);\r
parameters.decod_format = J2K_CFMT;\r
parameters.cod_format = BMP_DFMT;\r
+ if (m_reducefactor)\r
+ parameters.cp_reduce = m_reducefactor;\r
+ if (m_qualitylayers)\r
+ parameters.cp_layer = m_qualitylayers;\r
+ /*if (n_components)\r
+ parameters. = n_components;*/\r
\r
/* JPWL only */\r
#ifdef USE_JPWL\r
- parameters.jpwl_exp_comps = JPWL_EXPECTED_COMPONENTS;\r
- parameters.jpwl_max_tiles = JPWL_MAXIMUM_TILES;\r
- parameters.jpwl_correct = true;\r
+ parameters.jpwl_exp_comps = m_expcomps;\r
+ parameters.jpwl_max_tiles = m_maxtiles;\r
+ parameters.jpwl_correct = m_enablejpwl;\r
#endif /* USE_JPWL */\r
\r
/* get a decoder handle */\r
opjimage = opj_decode(dinfo, cio);\r
if (!opjimage) {\r
wxMutexGuiEnter();\r
- wxLogError("J2K: failed to decode image!");\r
+ wxLogError(wxT("J2K: failed to decode image!"));\r
wxMutexGuiLeave();\r
opj_destroy_decompress(dinfo);\r
opj_cio_close(cio);\r
// check image components\r
if ((opjimage->numcomps != 1) && (opjimage->numcomps != 3)) {\r
wxMutexGuiEnter();\r
- wxLogError("J2K: weird number of components");\r
+ wxLogError(wxT("J2K: weird number of components"));\r
wxMutexGuiLeave();\r
opj_destroy_decompress(dinfo);\r
free(src);\r
\r
}\r
}\r
- } else {\r
+\r
+ } else if (shiftbpp < 0) {\r
for (row = 0; row < opjimage->comps[0].h; row++) {\r
for (col = 0; col < opjimage->comps[0].w; col++) {\r
\r
+ *(ptr++) = (*(r++)) << -shiftbpp;\r
+ *(ptr++) = (*(g++)) << -shiftbpp;\r
+ *(ptr++) = (*(b++)) << -shiftbpp;\r
+\r
+ }\r
+ }\r
+ \r
+ } else {\r
+ for (row = 0; row < opjimage->comps[0].h; row++) {\r
+ for (col = 0; col < opjimage->comps[0].w; col++) {\r
+\r
*(ptr++) = *(r++);\r
*(ptr++) = *(g++);\r
*(ptr++) = *(b++);\r
-\r
+ \r
}\r
}\r
}\r
*(ptr++) = (*(y)) >> shiftbpp;\r
*(ptr++) = (*(y++)) >> shiftbpp;\r
\r
+ }\r
+ }\r
+ } else if (shiftbpp < 0) {\r
+ for (row = 0; row < opjimage->comps[0].h; row++) {\r
+ for (col = 0; col < opjimage->comps[0].w; col++) {\r
+ \r
+ *(ptr++) = (*(y)) << -shiftbpp;\r
+ *(ptr++) = (*(y)) << -shiftbpp;\r
+ *(ptr++) = (*(y++)) << -shiftbpp;\r
+\r
}\r
}\r
} else {\r