]> Creatis software - gdcm.git/blobdiff - src/gdcmJpeg.cxx
Some improvements for Write problems
[gdcm.git] / src / gdcmJpeg.cxx
index c2b93070ac28ff1836fa12d6afdf175ff294d3c0..4c8f850352334dfeb0d6ed79ef78f024f2ebbfde 100644 (file)
@@ -5,7 +5,9 @@
 
 #define BITS_IN_JSAMPLE 8
 
-#define DEBUG 0
+#ifdef GDCM_DEBUG
+#define GDCM_jpr_DEBUG 0
+#endif   //GDCM_DEBUG
 
 /*
 DICOM provides a mechanism for supporting the use of JPEG Image Compression 
@@ -120,8 +122,8 @@ extern "C" {
 
 //-----------------------------------------------------------------------------
 struct my_error_mgr {
-   struct jpeg_error_mgr pub;  /* "public" fields */
-   jmp_buf setjmp_buffer;      /* for return to caller */
+   struct jpeg_error_mgr pub; /* "public" fields */
+   jmp_buf setjmp_buffer;     /* for return to caller */
 };
 
 //-----------------------------------------------------------------------------
@@ -166,11 +168,11 @@ bool gdcmFile::gdcm_read_JPEG_file (FILE *fp,void * image_buffer) {
    struct jpeg_decompress_struct cinfo;
 
    /* -------------- inside, we found :
-    * JDIMENSION image_width;  // input image width 
-    * JDIMENSION image_height; // input image height 
-    * int input_components;            // nb of color components in input image 
-    * J_COLOR_SPACE in_color_space;    // colorspace of input image 
-    * double input_gamma;              // image gamma of input image 
+    * JDIMENSION image_width;       // input image width 
+    * JDIMENSION image_height;      // input image height 
+    * int input_components;         // nb of color components in input image 
+    * J_COLOR_SPACE in_color_space; // colorspace of input image 
+    * double input_gamma;           // image gamma of input image 
     * -------------- */
 
    /* We use our private extension JPEG error handler.
@@ -180,18 +182,20 @@ bool gdcmFile::gdcm_read_JPEG_file (FILE *fp,void * image_buffer) {
    struct my_error_mgr jerr;
    /* More stuff */
 
-   JSAMPARRAY buffer;          /* Output row buffer */
+   JSAMPARRAY buffer;/* Output row buffer */
   
    // rappel :
    // ------
    // typedef unsigned char JSAMPLE;
-   // typedef JSAMPLE FAR *JSAMPROW;   /* ptr to one image row of pixel samples. */
-   // typedef JSAMPROW *JSAMPARRAY;    /* ptr to some rows (a 2-D sample array) */
-   // typedef JSAMPARRAY *JSAMPIMAGE;  /* a 3-D sample array: top index is color */
+   // typedef JSAMPLE FAR *JSAMPROW;/* ptr to one image row of pixel samples. */
+   // typedef JSAMPROW *JSAMPARRAY;/* ptr to some rows (a 2-D sample array) */
+   // typedef JSAMPARRAY *JSAMPIMAGE;/* a 3-D sample array: top index is color */
 
-   int row_stride;             /* physical row width in output buffer */
+   int row_stride;/* physical row width in output buffer */
   
-   if (DEBUG) printf("entree dans gdcmFile::gdcm_read_JPEG_file12, depuis gdcmJpeg\n");
+#ifdef GDCM_JPG_DEBUG
+   printf("entree dans gdcmFile::gdcm_read_JPEG_file12, depuis gdcmJpeg\n");
+#endif //GDCM_JPG_DEBUG
 
    /* In this example we want to open the input file before doing anything else,
     * so that the setjmp() error recovery below can assume the file is open.
@@ -200,7 +204,9 @@ bool gdcmFile::gdcm_read_JPEG_file (FILE *fp,void * image_buffer) {
     */
     
   /* Step 1: allocate and initialize JPEG decompression object */  
-  if (DEBUG)printf("Entree Step 1\n");
+#ifdef GDCM_JPG_DEBUG
+  printf("Entree Step 1\n");
+#endif //GDCM_JPG_DEBUG
   
   /* We set up the normal JPEG error routines, then override error_exit. */
   
@@ -219,12 +225,16 @@ bool gdcmFile::gdcm_read_JPEG_file (FILE *fp,void * image_buffer) {
   jpeg_create_decompress(&cinfo);
 
    /* Step 2: specify data source (eg, a file) */
-   if (DEBUG) printf("Entree Step 2\n");
+#ifdef GDCM_JPG_DEBUG
+  printf("Entree Step 2\n");
+#endif //GDCM_JPG_DEBUG
 
    jpeg_stdio_src(&cinfo, fp);
 
    /* Step 3: read file parameters with jpeg_read_header() */
-   if (DEBUG) printf("Entree Step 3\n");
+#ifdef GDCM_JPG_DEBUG
+  printf("Entree Step 3\n");
+#endif //GDCM_JPG_DEBUG
 
    (void) jpeg_read_header(&cinfo, TRUE);
    
@@ -234,7 +244,7 @@ bool gdcmFile::gdcm_read_JPEG_file (FILE *fp,void * image_buffer) {
     * See libjpeg.doc for more info.
     */
 
-   if (DEBUG) {   
+#ifdef GDCM_JPG_DEBUG
       printf("--------------Header contents :----------------\n");
       printf("image_width %d image_height %d\n", 
               cinfo.image_width , cinfo.image_height);
@@ -242,26 +252,30 @@ bool gdcmFile::gdcm_read_JPEG_file (FILE *fp,void * image_buffer) {
               cinfo.output_components);
       printf("nb of color components returned  %d \n", 
               cinfo.data_precision);
-   }
+#endif //GDCM_JPG_DEBUG
 
 
    /*
-    * JDIMENSION image_width;  // input image width 
-    * JDIMENSION image_height; // input image height 
-    * int output_components;   // # of color components returned 
-    * J_COLOR_SPACE in_color_space;    // colorspace of input image 
-    * double input_gamma;              // image gamma of input image
-    * int data_precision;              // bits of precision in image data 
+    * JDIMENSION image_width;       // input image width 
+    * JDIMENSION image_height;      // input image height 
+    * int output_components;        // # of color components returned 
+    * J_COLOR_SPACE in_color_space; // colorspace of input image 
+    * double input_gamma;           // image gamma of input image
+    * int data_precision;           // bits of precision in image data 
     */
 
    /* Step 4: set parameters for decompression */
-   if (DEBUG) printf("Entree Step 4\n");
+#ifdef GDCM_JPG_DEBUG
+  printf("Entree Step 4\n");
+#endif //GDCM_JPG_DEBUG
    /* In this example, we don't need to change any of the defaults set by
     * jpeg_read_header(), so we do nothing here.
     */
 
    /* Step 5: Start decompressor */
-   if (DEBUG) printf("Entree Step 5\n");
+#ifdef GDCM_JPG_DEBUG
+   printf("Entree Step 5\n");
+#endif //GDCM_JPG_DEBUG
 
    (void) jpeg_start_decompress(&cinfo);
    /* We can ignore the return value since suspension is not possible
@@ -278,25 +292,28 @@ bool gdcmFile::gdcm_read_JPEG_file (FILE *fp,void * image_buffer) {
    /* JSAMPLEs per row in output buffer */
    row_stride = cinfo.output_width * cinfo.output_components;
   
-   if (DEBUG) printf ("cinfo.output_width %d cinfo.output_components %d  row_stride %d\n",
+#ifdef GDCM_JPG_DEBUG
+  printf ("cinfo.output_width %d cinfo.output_components %d  row_stride %d\n",
                       cinfo.output_width, cinfo.output_components,row_stride);
-       
+#endif //GDCM_JPG_DEBUG
+
    /* Make a one-row-high sample array that will go away when done with image */
    buffer = (*cinfo.mem->alloc_sarray)
             ((j_common_ptr) &cinfo, JPOOL_IMAGE, row_stride, 1);
 
    /* Step 6: while (scan lines remain to be read) */
-   if (DEBUG)  printf("Entree Step 6\n"); 
-
+#ifdef GDCM_JPG_DEBUG
+    printf("Entree Step 6\n"); 
+#endif //GDCM_JPG_DEBUG
    /*           jpeg_read_scanlines(...); */
 
    /* Here we use the library's state variable cinfo.output_scanline as the
     * loop counter, so that we don't have to keep track ourselves.
     */
-   if (DEBUG)  
+#ifdef GDCM_JPG_DEBUG
       printf ("cinfo.output_height %d  cinfo.output_width %d\n",
                cinfo.output_height,cinfo.output_width);
+#endif //GDCM_JPG_DEBUG
    pimage=(char *)image_buffer;
   
    while (cinfo.output_scanline < cinfo.output_height) {
@@ -323,7 +340,10 @@ bool gdcmFile::gdcm_read_JPEG_file (FILE *fp,void * image_buffer) {
   }
  
   /* Step 7: Finish decompression */
-   if (DEBUG)  printf("Entree Step 7\n");
+#ifdef GDCM_JPG_DEBUG
+   printf("Entree Step 7\n");
+#endif //GDCM_JPG_DEBUG
+
    (void) jpeg_finish_decompress(&cinfo);
    
    /* We can ignore the return value since suspension is not possible
@@ -332,7 +352,9 @@ bool gdcmFile::gdcm_read_JPEG_file (FILE *fp,void * image_buffer) {
 
    /* Step 8: Release JPEG decompression object */
 
-   if (DEBUG) printf("Entree Step 8\n");
+#ifdef GDCM_JPG_DEBUG
+  printf("Entree Step 8\n");
+#endif //GDCM_JPG_DEBUG
 
    /* This is an important step since it will release a good deal of memory. */
 
@@ -378,4 +400,4 @@ bool gdcmFile::gdcm_read_JPEG_file (FILE *fp,void * image_buffer) {
  * temporary files are deleted if the program is interrupted.  See libjpeg.doc.
  */
  
-//-----------------------------------------------------------------------------
+//----------------------------------------------------------------------------