Source Code (Use browser search to find items of interest.)
Class Index
kdelibs'kimgio_jpeg_destination_mgr (./kdelibs/kimgio/jpeg.cpp:77)
struct kimgio_jpeg_destination_mgr : public jpeg_destination_mgr {
// Nothing dynamic - cannot rely on destruction over longjump
QImageIO* iio;
JOCTET buffer[OUTPUT_BUFFER_SIZE];
public:
kimgio_jpeg_destination_mgr(QImageIO* iio)
{
jpeg_destination_mgr::init_destination = init_destination;
jpeg_destination_mgr::empty_output_buffer = empty_output_buffer;
jpeg_destination_mgr::term_destination = term_destination;
this->iio = iio;
next_output_byte = buffer;
free_in_buffer = OUTPUT_BUFFER_SIZE;
}
static void init_destination(j_compress_ptr)
{
}
static void exit_on_error(j_compress_ptr cinfo, QIODevice* dev)
{
if (dev->status() == IO_Ok) {
return;
} else {
// cinfo->err->msg_code = JERR_FILE_WRITE;
(*cinfo->err->error_exit)((j_common_ptr)cinfo);
}
}
static boolean empty_output_buffer(j_compress_ptr cinfo)
{
kimgio_jpeg_destination_mgr* dest = (kimgio_jpeg_destination_mgr*)cinfo->dest;
QIODevice* dev = dest->iio->ioDevice();
if ( dev->writeBlock( (char*)dest->buffer, OUTPUT_BUFFER_SIZE ) != OUTPUT_BUFFER_SIZE )
exit_on_error(cinfo, dev);
dest->next_output_byte = dest->buffer;
dest->free_in_buffer = OUTPUT_BUFFER_SIZE;
return TRUE;
}
static void term_destination(j_compress_ptr cinfo)
{
kimgio_jpeg_destination_mgr* dest = (kimgio_jpeg_destination_mgr*)cinfo->dest;
QIODevice* dev = dest->iio->ioDevice();
int n = OUTPUT_BUFFER_SIZE - dest->free_in_buffer;
if ( dev->writeBlock( (char*)dest->buffer, n ) != n )
exit_on_error(cinfo, dev);
dev->flush();
exit_on_error(cinfo, dev);
}
};
kdelibs'kimgio_jpeg_destination_mgr::term_destination() (./kdelibs/kimgio/jpeg.cpp:121)
static void term_destination(j_compress_ptr cinfo)
{
kimgio_jpeg_destination_mgr* dest = (kimgio_jpeg_destination_mgr*)cinfo->dest;
QIODevice* dev = dest->iio->ioDevice();
int n = OUTPUT_BUFFER_SIZE - dest->free_in_buffer;
if ( dev->writeBlock( (char*)dest->buffer, n ) != n )
exit_on_error(cinfo, dev);
dev->flush();
exit_on_error(cinfo, dev);
}
};