Fixed all compiler warnings for imageloader code

This commit is contained in:
Manuel Reimer 2014-11-10 16:32:38 +01:00
parent 955da76828
commit 529039e24c
2 changed files with 32 additions and 31 deletions

View File

@ -108,7 +108,7 @@ void cImageLoader::DeterminateChannelLogoSize(int &width, int &height) {
if (!folder) if (!folder)
return; return;
while (file = readdir(folder)) { while ( (file = readdir(folder)) ) {
if (endswith(file->d_name, *logoExt)) { if (endswith(file->d_name, *logoExt)) {
std::stringstream filePath; std::stringstream filePath;
filePath << *logoPath << file->d_name; filePath << *logoPath << file->d_name;
@ -225,6 +225,30 @@ void cImageImporterSVG::GetImageSize(int &width, int &height) {
// Image importer for JPG // Image importer for JPG
// //
struct my_error_mgr {
struct jpeg_error_mgr pub; // "public" fields
jmp_buf setjmp_buffer; // for return to caller
};
METHODDEF(void)
my_error_exit(j_common_ptr cinfo) {
// cinfo->err really points to a my_error_mgr struct, so coerce pointer
my_error_mgr *myerr = (my_error_mgr*) cinfo->err;
// Always display the message.
(*cinfo->err->output_message) (cinfo);
// Return control to the setjmp point
longjmp(myerr->setjmp_buffer, 1);
}
METHODDEF(void)
my_output_message(j_common_ptr cinfo) {
char buf[JMSG_LENGTH_MAX];
cinfo->err->format_message(cinfo, buf);
dsyslog("skindesigner: libjpeg error: %s", buf);
}
cImageImporterJPG::cImageImporterJPG() { cImageImporterJPG::cImageImporterJPG() {
cinfo = NULL; cinfo = NULL;
} }
@ -255,7 +279,8 @@ bool cImageImporterJPG::LoadImage(const char *path) {
// Allocate space for our decompress struct // Allocate space for our decompress struct
cinfo = (j_decompress_ptr)malloc(sizeof(struct jpeg_decompress_struct)); cinfo = (j_decompress_ptr)malloc(sizeof(struct jpeg_decompress_struct));
// We set up the normal JPEG error routines, then override error_exit. // We set up the normal JPEG error routines, then override error_exit
// and output_message.
struct my_error_mgr jerr; struct my_error_mgr jerr;
cinfo->err = jpeg_std_error(&jerr.pub); cinfo->err = jpeg_std_error(&jerr.pub);
jerr.pub.error_exit = my_error_exit; jerr.pub.error_exit = my_error_exit;
@ -309,8 +334,8 @@ void cImageImporterJPG::DrawToCairo(cairo_t *cr) {
(void) jpeg_start_decompress(cinfo); (void) jpeg_start_decompress(cinfo);
// Allocate buffer. Directly allocate the space needed for ARGB // Allocate buffer. Directly allocate the space needed for ARGB
int width = cinfo->output_width; unsigned int width = cinfo->output_width;
int height = cinfo->output_height; unsigned int height = cinfo->output_height;
bmp_buffer = (unsigned char*)malloc(width * height * 4); bmp_buffer = (unsigned char*)malloc(width * height * 4);
// Step 6: while (scan lines remain to be read) // Step 6: while (scan lines remain to be read)

View File

@ -48,35 +48,10 @@ private:
}; };
// Image importer for JPG // Image importer for JPG
#if BITS_IN_JSAMPLE != 8 #if BITS_IN_JSAMPLE != 8
#error libjpeg has to be compiled with 8-bit samples! #error libjpeg has to be compiled with 8-bit samples!
#endif #endif
struct my_error_mgr {
struct jpeg_error_mgr pub; // "public" fields
jmp_buf setjmp_buffer; // for return to caller
};
METHODDEF(void)
my_error_exit(j_common_ptr cinfo) {
// cinfo->err really points to a my_error_mgr struct, so coerce pointer
my_error_mgr *myerr = (my_error_mgr*) cinfo->err;
// Always display the message.
(*cinfo->err->output_message) (cinfo);
// Return control to the setjmp point
longjmp(myerr->setjmp_buffer, 1);
}
METHODDEF(void)
my_output_message(j_common_ptr cinfo) {
char buf[JMSG_LENGTH_MAX];
cinfo->err->format_message(cinfo, buf);
dsyslog("skindesigner: libjpeg error: %s", buf);
}
class cImageImporterJPG : public cImageImporter { class cImageImporterJPG : public cImageImporter {
public: public:
cImageImporterJPG(); cImageImporterJPG();
@ -89,8 +64,9 @@ private:
FILE *infile; FILE *infile;
}; };
//
// Image loader class
//
class cImageLoader { class cImageLoader {
private: private:
cImageImporter *importer; cImageImporter *importer;