vcl/Library_vcl.mk | 2 vcl/source/filter/jpeg/JpegReader.cxx | 62 +--- vcl/source/filter/jpeg/JpegReader.hxx | 17 + vcl/source/filter/jpeg/JpegTransform.cxx | 6 vcl/source/filter/jpeg/JpegWriter.cxx | 56 +--- vcl/source/filter/jpeg/jpeg.h | 43 +-- vcl/source/filter/jpeg/jpegc.c | 389 ------------------------------- vcl/source/filter/jpeg/jpegc.cxx | 383 ++++++++++++++++++++++++++++++ 8 files changed, 459 insertions(+), 499 deletions(-)
New commits: commit 11dbbc792f53dc581822c873eb198731c3425576 Author: Stephan Bergmann <sberg...@redhat.com> Date: Thu Feb 6 14:20:00 2014 +0100 Make vcl/source/filter/jpeg/jpegc.c be C++ code ...simplify the corresponding jpeg.h now that it deals in C++, and fold SetJpegPreviewSizeHint into ReadJPEG to avoid global static data. Change-Id: Id3721bdb37be05e3e6bbbaef3b0aa0c0e1a9ff5a diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk index 04fc6cc..1725823 100644 --- a/vcl/Library_vcl.mk +++ b/vcl/Library_vcl.mk @@ -173,6 +173,7 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\ vcl/source/filter/ixpm/xpmread \ vcl/source/filter/jpeg/Exif \ vcl/source/filter/jpeg/jpeg \ + vcl/source/filter/jpeg/jpegc \ vcl/source/filter/jpeg/JpegReader \ vcl/source/filter/jpeg/JpegWriter \ vcl/source/filter/jpeg/JpegTransform \ @@ -314,7 +315,6 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\ )) $(eval $(call gb_Library_add_cobjects,vcl,\ - vcl/source/filter/jpeg/jpegc \ vcl/source/filter/jpeg/transupp \ )) diff --git a/vcl/source/filter/jpeg/JpegReader.cxx b/vcl/source/filter/jpeg/JpegReader.cxx index 5d3af16..61d7985 100644 --- a/vcl/source/filter/jpeg/JpegReader.cxx +++ b/vcl/source/filter/jpeg/JpegReader.cxx @@ -17,16 +17,12 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <sal/config.h> -#include <tools/solar.h> - -extern "C" -{ - #include "stdio.h" - #include "jpeg.h" - #include <jpeglib.h> - #include <jerror.h> -} +#include "stdio.h" +#include "jpeg.h" +#include <jpeglib.h> +#include <jerror.h> #include "JpegReader.hxx" #include <vcl/bmpacc.hxx> @@ -43,21 +39,14 @@ namespace { static const sal_uInt64 MAX_BITMAP_BYTE_SIZE = sal_uInt64(512 * 1024 * 1024); } -extern "C" void* CreateBitmapFromJPEGReader( void* pJPEGReader, void* pJPEGCreateBitmapParam ) -{ - return ( (JPEGReader*) pJPEGReader )->CreateBitmap( pJPEGCreateBitmapParam ); -} - /* Expanded data source object for stdio input */ -typedef struct { - struct jpeg_source_mgr pub; /* public fields */ +struct SourceManagerStruct { + jpeg_source_mgr pub; /* public fields */ SvStream* stream; /* source stream */ JOCTET* buffer; /* start of buffer */ boolean start_of_file; /* have we gotten any data yet? */ -} SourceManagerStruct; - -typedef SourceManagerStruct* SourceManagerStructPointer; +}; /* * Initialize source --- called by jpeg_read_header @@ -65,7 +54,7 @@ typedef SourceManagerStruct* SourceManagerStructPointer; */ extern "C" void init_source (j_decompress_ptr cinfo) { - SourceManagerStructPointer source = (SourceManagerStructPointer) cinfo->src; + SourceManagerStruct * source = (SourceManagerStruct *) cinfo->src; /* We reset the empty-input-file flag for each image, * but we don't clear the input buffer. @@ -99,7 +88,7 @@ long StreamRead( SvStream* pStream, void* pBuffer, long nBufferSize ) extern "C" boolean fill_input_buffer (j_decompress_ptr cinfo) { - SourceManagerStructPointer source = (SourceManagerStructPointer) cinfo->src; + SourceManagerStruct * source = (SourceManagerStruct *) cinfo->src; size_t nbytes; nbytes = StreamRead(source->stream, source->buffer, BUFFER_SIZE); @@ -126,7 +115,7 @@ extern "C" boolean fill_input_buffer (j_decompress_ptr cinfo) extern "C" void skip_input_data (j_decompress_ptr cinfo, long numberOfBytes) { - SourceManagerStructPointer source = (SourceManagerStructPointer) cinfo->src; + SourceManagerStruct * source = (SourceManagerStruct *) cinfo->src; /* Just a dumb implementation for now. Could use fseek() except * it doesn't work on pipes. Not clear that being smart is worth @@ -153,9 +142,9 @@ extern "C" void term_source (j_decompress_ptr) /* no work necessary here */ } -extern "C" void jpeg_svstream_src (j_decompress_ptr cinfo, void* input) +void jpeg_svstream_src (j_decompress_ptr cinfo, void* input) { - SourceManagerStructPointer source; + SourceManagerStruct * source; SvStream* stream = (SvStream*)input; /* The source object and input buffer are made permanent so that a series @@ -168,14 +157,14 @@ extern "C" void jpeg_svstream_src (j_decompress_ptr cinfo, void* input) if (cinfo->src == NULL) { /* first time for this JPEG object? */ - cinfo->src = (struct jpeg_source_mgr *) + cinfo->src = (jpeg_source_mgr *) (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof(SourceManagerStruct)); - source = (SourceManagerStructPointer) cinfo->src; + source = (SourceManagerStruct *) cinfo->src; source->buffer = (JOCTET *) (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, BUFFER_SIZE * sizeof(JOCTET)); } - source = (SourceManagerStructPointer) cinfo->src; + source = (SourceManagerStruct *) cinfo->src; source->pub.init_source = init_source; source->pub.fill_input_buffer = fill_input_buffer; source->pub.skip_input_data = skip_input_data; @@ -202,7 +191,7 @@ JPEGReader::JPEGReader( SvStream& rStream, void* /*pCallData*/, bool bSetLogSize JPEGReader::~JPEGReader() { if( mpBuffer ) - rtl_freeMemory( mpBuffer ); + delete[] mpBuffer; if( mpAcc ) maBmp.ReleaseAccess( mpAcc ); @@ -211,10 +200,8 @@ JPEGReader::~JPEGReader() maBmp1.ReleaseAccess( mpAcc1 ); } -void* JPEGReader::CreateBitmap( void* _pParam ) +unsigned char * JPEGReader::CreateBitmap( JPEGCreateBitmapParam * pParam ) { - JPEGCreateBitmapParam *pParam = (JPEGCreateBitmapParam *) _pParam; - if (pParam->nWidth > SAL_MAX_INT32 / 8 || pParam->nHeight > SAL_MAX_INT32 / 8) return NULL; // avoid overflows later @@ -224,7 +211,7 @@ void* JPEGReader::CreateBitmap( void* _pParam ) Size aSize( pParam->nWidth, pParam->nHeight ); bool bGray = pParam->bGray != 0; - void* pBmpBuf = NULL; + unsigned char * pBmpBuf = NULL; if( mpAcc ) { @@ -265,7 +252,7 @@ void* JPEGReader::CreateBitmap( void* _pParam ) if ( mbSetLogSize ) { - unsigned long nUnit = ((JPEGCreateBitmapParam*)pParam)->density_unit; + unsigned long nUnit = pParam->density_unit; if( ( ( 1 == nUnit ) || ( 2 == nUnit ) ) && pParam->X_density && pParam->Y_density ) { @@ -299,7 +286,7 @@ void* JPEGReader::CreateBitmap( void* _pParam ) { pParam->nAlignedWidth = AlignedWidth4Bytes( aSize.Width() * ( bGray ? 8 : 24 ) ); pParam->bTopDown = sal_True; - pBmpBuf = mpBuffer = rtl_allocateMemory( pParam->nAlignedWidth * aSize.Height() ); + pBmpBuf = mpBuffer = new unsigned char[pParam->nAlignedWidth * aSize.Height()]; } } @@ -318,7 +305,7 @@ void JPEGReader::FillBitmap() { if( mpBuffer && mpAcc ) { - HPBYTE pTmp; + unsigned char * pTmp; BitmapColor aColor; long nAlignedWidth; long nWidth = mpAcc->Width(); @@ -467,17 +454,16 @@ ReadState JPEGReader::Read( Graphic& rGraphic ) mrStream.Seek( mnLastPos ); Size aPreviewSize = GetPreviewSize(); - SetJpegPreviewSizeHint( aPreviewSize.Width(), aPreviewSize.Height() ); // read the (partial) image - ReadJPEG( this, &mrStream, &nLines ); + ReadJPEG( this, &mrStream, &nLines, aPreviewSize.Width(), aPreviewSize.Height() ); if( mpAcc ) { if( mpBuffer ) { FillBitmap(); - rtl_freeMemory( mpBuffer ); + delete[] mpBuffer; mpBuffer = NULL; } diff --git a/vcl/source/filter/jpeg/JpegReader.hxx b/vcl/source/filter/jpeg/JpegReader.hxx index 061eb2d..442c52d 100644 --- a/vcl/source/filter/jpeg/JpegReader.hxx +++ b/vcl/source/filter/jpeg/JpegReader.hxx @@ -33,6 +33,19 @@ enum ReadState JPEGREAD_NEED_MORE }; +struct JPEGCreateBitmapParam +{ + unsigned long nWidth; + unsigned long nHeight; + unsigned long density_unit; + unsigned long X_density; + unsigned long Y_density; + long bGray; + + long nAlignedWidth; // these members will be filled by the + long bTopDown; // CreateBitmap method in svtools +}; + class JPEGReader : public GraphicReader { SvStream& mrStream; @@ -40,7 +53,7 @@ class JPEGReader : public GraphicReader Bitmap maBmp1; BitmapWriteAccess* mpAcc; BitmapWriteAccess* mpAcc1; - void* mpBuffer; + unsigned char * mpBuffer; long mnLastPos; long mnFormerPos; long mnLastLines; @@ -54,7 +67,7 @@ public: virtual ~JPEGReader(); ReadState Read( Graphic& rGraphic ); - void* CreateBitmap( void* JPEGCreateBitmapParam ); + unsigned char * CreateBitmap( JPEGCreateBitmapParam* param ); }; #endif // INCLUDED_VCL_SOURCE_FILTER_JPEG_JPEGREADER_HXX diff --git a/vcl/source/filter/jpeg/JpegTransform.cxx b/vcl/source/filter/jpeg/JpegTransform.cxx index 789d303..722ddbd 100644 --- a/vcl/source/filter/jpeg/JpegTransform.cxx +++ b/vcl/source/filter/jpeg/JpegTransform.cxx @@ -17,11 +17,9 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <sal/config.h> -extern "C" -{ - #include "jpeg.h" -} +#include "jpeg.h" #include "JpegTransform.hxx" diff --git a/vcl/source/filter/jpeg/JpegWriter.cxx b/vcl/source/filter/jpeg/JpegWriter.cxx index 5f8abed..e763314 100644 --- a/vcl/source/filter/jpeg/JpegWriter.cxx +++ b/vcl/source/filter/jpeg/JpegWriter.cxx @@ -17,13 +17,12 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ -extern "C" -{ - #include "stdio.h" - #include "jpeg.h" - #include <jpeglib.h> - #include <jerror.h> -} +#include <sal/config.h> + +#include "stdio.h" +#include "jpeg.h" +#include <jpeglib.h> +#include <jerror.h> #include "JpegWriter.hxx" #include <vcl/bmpacc.hxx> @@ -32,38 +31,21 @@ extern "C" #define BUFFER_SIZE 4096 -extern "C" void* GetScanline( void* pJPEGWriter, long nY ) +void* GetScanline( void* pJPEGWriter, long nY ) { return ( (JPEGWriter*) pJPEGWriter )->GetScanline( nY ); } -struct JPEGCallbackStruct +struct DestinationManagerStruct { - css::uno::Reference< css::task::XStatusIndicator > xStatusIndicator; -}; - -extern "C" long JPEGCallback( void* pCallbackData, long nPercent ) -{ - JPEGCallbackStruct* pCallbackStruct = (JPEGCallbackStruct*)pCallbackData; - if ( pCallbackStruct && pCallbackStruct->xStatusIndicator.is() ) - { - pCallbackStruct->xStatusIndicator->setValue( nPercent ); - } - return 0L; -} - -typedef struct -{ - struct jpeg_destination_mgr pub; /* public fields */ + jpeg_destination_mgr pub; /* public fields */ SvStream* stream; /* target stream */ JOCTET * buffer; /* start of buffer */ -} DestinationManagerStruct; - -typedef DestinationManagerStruct* DestinationManagerStructPointer; +}; extern "C" void init_destination (j_compress_ptr cinfo) { - DestinationManagerStructPointer destination = (DestinationManagerStructPointer) cinfo->dest; + DestinationManagerStruct * destination = (DestinationManagerStruct *) cinfo->dest; /* Allocate the output buffer -- it will be released when done with image */ destination->buffer = (JOCTET *) @@ -75,7 +57,7 @@ extern "C" void init_destination (j_compress_ptr cinfo) extern "C" boolean empty_output_buffer (j_compress_ptr cinfo) { - DestinationManagerStructPointer destination = (DestinationManagerStructPointer) cinfo->dest; + DestinationManagerStruct * destination = (DestinationManagerStruct *) cinfo->dest; if (destination->stream->Write(destination->buffer, BUFFER_SIZE) != (size_t) BUFFER_SIZE) { @@ -90,7 +72,7 @@ extern "C" boolean empty_output_buffer (j_compress_ptr cinfo) extern "C" void term_destination (j_compress_ptr cinfo) { - DestinationManagerStructPointer destination = (DestinationManagerStructPointer) cinfo->dest; + DestinationManagerStruct * destination = (DestinationManagerStruct *) cinfo->dest; size_t datacount = BUFFER_SIZE - destination->pub.free_in_buffer; /* Write any data remaining in the buffer */ @@ -103,10 +85,10 @@ extern "C" void term_destination (j_compress_ptr cinfo) } } -extern "C" void jpeg_svstream_dest (j_compress_ptr cinfo, void* output) +void jpeg_svstream_dest (j_compress_ptr cinfo, void* output) { SvStream* stream = (SvStream*) output; - DestinationManagerStructPointer destination; + DestinationManagerStruct * destination; /* The destination object is made permanent so that multiple JPEG images * can be written to the same file without re-executing jpeg_svstream_dest. @@ -116,11 +98,11 @@ extern "C" void jpeg_svstream_dest (j_compress_ptr cinfo, void* output) */ if (cinfo->dest == NULL) { /* first time for this JPEG object? */ - cinfo->dest = (struct jpeg_destination_mgr*) + cinfo->dest = (jpeg_destination_mgr*) (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof(DestinationManagerStruct)); } - destination = (DestinationManagerStructPointer) cinfo->dest; + destination = (DestinationManagerStruct *) cinfo->dest; destination->pub.init_destination = init_destination; destination->pub.empty_output_buffer = empty_output_buffer; destination->pub.term_destination = term_destination; @@ -254,9 +236,7 @@ sal_Bool JPEGWriter::Write( const Graphic& rGraphic ) if( !mbNative ) mpBuffer = new sal_uInt8[ AlignedWidth4Bytes( mbGreys ? mpReadAccess->Width() * 8L : mpReadAccess->Width() * 24L ) ]; - JPEGCallbackStruct aCallbackData; - aCallbackData.xStatusIndicator = mxStatusIndicator; - bRet = (sal_Bool) WriteJPEG( this, &mrStream, mpReadAccess->Width(), mpReadAccess->Height(), mbGreys, mnQuality, maChromaSubsampling, &aCallbackData ); + bRet = (sal_Bool) WriteJPEG( this, &mrStream, mpReadAccess->Width(), mpReadAccess->Height(), mbGreys, mnQuality, maChromaSubsampling, mxStatusIndicator ); delete[] mpBuffer; mpBuffer = NULL; diff --git a/vcl/source/filter/jpeg/jpeg.h b/vcl/source/filter/jpeg/jpeg.h index 6efa927..9701170 100644 --- a/vcl/source/filter/jpeg/jpeg.h +++ b/vcl/source/filter/jpeg/jpeg.h @@ -20,40 +20,29 @@ #ifndef INCLUDED_VCL_SOURCE_FILTER_JPEG_JPEG_H #define INCLUDED_VCL_SOURCE_FILTER_JPEG_JPEG_H -#if defined (UNX) || defined(__MINGW32__) -#include <sys/types.h> -#endif +#include <sal/config.h> -struct JPEGCreateBitmapParam -{ - unsigned long nWidth; - unsigned long nHeight; - unsigned long density_unit; - unsigned long X_density; - unsigned long Y_density; - long bGray; +#include <com/sun/star/uno/Reference.hxx> +#include <sal/types.h> - long nAlignedWidth; // these members will be filled by the - long bTopDown; // CreateBitmap method in svtools -}; +#include <jpeglib.h> -typedef struct ErrorManagerStruct* ErrorManagerPointer; -typedef unsigned char* HPBYTE; +namespace com { namespace sun { namespace star { namespace task { + class XStatusIndicator; +} } } } +class JPEGReader; +class JPEGWriter; -void* JPEGMalloc( size_t size ); -void JPEGFree( void *ptr ); -long JPEGCallback( void* pCallbackData, long nPercent ); +void jpeg_svstream_src (j_decompress_ptr cinfo, void* infile); -long WriteJPEG( void* pJPEGWriter, void* pOutputStream, long nWidth, long nHeight, long bGreyScale, - long nQualityPercent, long aChromaSubsampling, void* pCallbackData ); -void* GetScanline( void* pJPEGWriter, long nY ); +void jpeg_svstream_dest (j_compress_ptr cinfo, void* outfile); -void ReadJPEG( void* pJPEGReader, void* pInputStream, long* pLines ); -void* CreateBitmapFromJPEGReader( void* pJPEGReader, void* pJPEGCreateBitmapParam ); +long WriteJPEG( JPEGWriter* pJPEGWriter, void* pOutputStream, long nWidth, long nHeight, long bGreyScale, + long nQualityPercent, long aChromaSubsampling, + css::uno::Reference<css::task::XStatusIndicator> const & status); -/* TODO: when incompatible changes are possible again - the preview size hint should be redone */ -void SetJpegPreviewSizeHint( int nWidth, int nHeight ); +void ReadJPEG( JPEGReader* pJPEGReader, void* pInputStream, long* pLines, + int nPreviewWidth, int nPreviewHeight ); long Transform( void* pInputStream, void* pOutputStream, long nAngle ); diff --git a/vcl/source/filter/jpeg/jpegc.c b/vcl/source/filter/jpeg/jpegc.cxx similarity index 85% rename from vcl/source/filter/jpeg/jpegc.c rename to vcl/source/filter/jpeg/jpegc.cxx index c05a219..841a5e3 100644 --- a/vcl/source/filter/jpeg/jpegc.c +++ b/vcl/source/filter/jpeg/jpegc.cxx @@ -17,62 +17,57 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <sal/config.h> + #include <stdio.h> #include <stdlib.h> #include <setjmp.h> #include <jpeglib.h> #include <jerror.h> -#include <rtl/alloc.h> +#include <com/sun/star/task/XStatusIndicator.hpp> #include <osl/diagnose.h> +extern "C" { #include "transupp.h" +} + #include "jpeg.h" +#include <JpegReader.hxx> +#include <JpegWriter.hxx> struct ErrorManagerStruct { - struct jpeg_error_mgr pub; + jpeg_error_mgr pub; jmp_buf setjmp_buffer; }; -void jpeg_svstream_src (j_decompress_ptr cinfo, void* infile); -void jpeg_svstream_dest (j_compress_ptr cinfo, void* outfile); - -METHODDEF( void ) errorExit (j_common_ptr cinfo) +extern "C" void errorExit (j_common_ptr cinfo) { - ErrorManagerPointer error = (ErrorManagerPointer) cinfo->err; + ErrorManagerStruct * error = (ErrorManagerStruct *) cinfo->err; (*cinfo->err->output_message) (cinfo); longjmp(error->setjmp_buffer, 1); } -METHODDEF( void ) outputMessage (j_common_ptr cinfo) +extern "C" void outputMessage (j_common_ptr cinfo) { char buffer[JMSG_LENGTH_MAX]; (*cinfo->err->format_message) (cinfo, buffer); } -/* TODO: when incompatible changes are possible again - the preview size hint should be redone */ -static int nPreviewWidth = 0; -static int nPreviewHeight = 0; -void SetJpegPreviewSizeHint( int nWidth, int nHeight ) -{ - nPreviewWidth = nWidth; - nPreviewHeight = nHeight; -} - -void ReadJPEG( void* pJPEGReader, void* pInputStream, long* pLines ) +void ReadJPEG( JPEGReader* pJPEGReader, void* pInputStream, long* pLines, + int nPreviewWidth, int nPreviewHeight ) { - struct jpeg_decompress_struct cinfo; - struct ErrorManagerStruct jerr; - struct JPEGCreateBitmapParam aCreateBitmapParam; - HPBYTE pDIB; - HPBYTE pTmp; + jpeg_decompress_struct cinfo; + ErrorManagerStruct jerr; + JPEGCreateBitmapParam aCreateBitmapParam; + unsigned char * pDIB; + unsigned char * pTmp; long nWidth; long nHeight; long nAlignedWidth; JSAMPLE* aRangeLimit; - HPBYTE pScanLineBuffer = NULL; + unsigned char * pScanLineBuffer = NULL; long nScanLineBufferComponents = 0; if ( setjmp( jerr.setjmp_buffer ) ) @@ -147,15 +142,15 @@ void ReadJPEG( void* pJPEGReader, void* pInputStream, long* pLines ) aCreateBitmapParam.density_unit = cinfo.density_unit; aCreateBitmapParam.X_density = cinfo.X_density; aCreateBitmapParam.Y_density = cinfo.Y_density; - aCreateBitmapParam.bGray = cinfo.output_components == 1; - pDIB = CreateBitmapFromJPEGReader( pJPEGReader, &aCreateBitmapParam ); + aCreateBitmapParam.bGray = long(cinfo.output_components == 1); + pDIB = pJPEGReader->CreateBitmap( &aCreateBitmapParam ); nAlignedWidth = aCreateBitmapParam.nAlignedWidth; aRangeLimit = cinfo.sample_range_limit; if ( cinfo.out_color_space == JCS_CMYK ) { nScanLineBufferComponents = cinfo.output_width * 4; - pScanLineBuffer = rtl_allocateMemory( nScanLineBufferComponents ); + pScanLineBuffer = new unsigned char[nScanLineBufferComponents]; } if( pDIB ) @@ -213,20 +208,20 @@ void ReadJPEG( void* pJPEGReader, void* pInputStream, long* pLines ) if (pScanLineBuffer != NULL) { - rtl_freeMemory( pScanLineBuffer ); + delete[] pScanLineBuffer; pScanLineBuffer = NULL; } jpeg_destroy_decompress( &cinfo ); } -long WriteJPEG( void* pJPEGWriter, void* pOutputStream, +long WriteJPEG( JPEGWriter* pJPEGWriter, void* pOutputStream, long nWidth, long nHeight, long bGreys, long nQualityPercent, long aChromaSubsampling, - void* pCallbackData ) + css::uno::Reference<css::task::XStatusIndicator> const & status ) { - struct jpeg_compress_struct cinfo; - struct ErrorManagerStruct jerr; + jpeg_compress_struct cinfo; + ErrorManagerStruct jerr; void* pScanline; long nY; @@ -282,17 +277,16 @@ long WriteJPEG( void* pJPEGWriter, void* pOutputStream, for( nY = 0; nY < nHeight; nY++ ) { - pScanline = GetScanline( pJPEGWriter, nY ); + pScanline = pJPEGWriter->GetScanline( nY ); if( pScanline ) { jpeg_write_scanlines( &cinfo, (JSAMPARRAY) &pScanline, 1 ); } - if( JPEGCallback( pCallbackData, nY * 100L / nHeight ) ) + if( status.is() ) { - jpeg_destroy_compress( &cinfo ); - return 0; + status->setValue( nY * 100L / nHeight ); } } @@ -307,10 +301,10 @@ long Transform(void* pInputStream, void* pOutputStream, long nAngle) jpeg_transform_info aTransformOption; JCOPY_OPTION aCopyOption = JCOPYOPT_ALL; - struct jpeg_decompress_struct aSourceInfo; - struct jpeg_compress_struct aDestinationInfo; - struct ErrorManagerStruct aSourceError; - struct ErrorManagerStruct aDestinationError; + jpeg_decompress_struct aSourceInfo; + jpeg_compress_struct aDestinationInfo; + ErrorManagerStruct aSourceError; + ErrorManagerStruct aDestinationError; jvirt_barray_ptr* aSourceCoefArrays = 0; jvirt_barray_ptr* aDestinationCoefArrays = 0; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits