GraphicsMagick: Merge heads and update generated files.

GraphicsMagick Commits <[email protected]>
Newsgroups gmane.comp.video.graphicsmagick.cvs
Message-ID <mailman.6592.1666273070.1350.graphicsmagick-commit@lists.sourceforge.net>
changeset 9d9244d0390c in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=9d9244d0390c
summary: Merge heads and update generated files.

diffstat:

 ChangeLog                              |    6 +
 VisualMagick/installer/inc/version.isx |    4 +-
 coders/tga.c                           |  126 ++++++++++----------------------
 magick/version.h                       |    4 +-
 www/Changelog.html                     |    7 +
 5 files changed, 58 insertions(+), 89 deletions(-)

diffs (267 lines):

diff -r 5b9c67fe14f5 -r 9d9244d0390c ChangeLog
--- a/ChangeLog	Wed Oct 19 10:59:58 2022 -0500
+++ b/ChangeLog	Thu Oct 20 08:37:32 2022 -0500
@@ -1,3 +1,9 @@
+2022-10-20    Fojtik Jaroslav  <[email protected]>
+
+        * coders/tga.c Remove "optimisation" that has negligible or negative
+        effect to overall performance.
+
+
 2022-10-19    Fojtik Jaroslav  <[email protected]>
 
         * coders/tga.c Cleanup GCC compile warnings.
diff -r 5b9c67fe14f5 -r 9d9244d0390c VisualMagick/installer/inc/version.isx
--- a/VisualMagick/installer/inc/version.isx	Wed Oct 19 10:59:58 2022 -0500
+++ b/VisualMagick/installer/inc/version.isx	Thu Oct 20 08:37:32 2022 -0500
@@ -10,5 +10,5 @@
 
 #define public MagickPackageName "GraphicsMagick"
 #define public MagickPackageVersion "1.4"
-#define public MagickPackageVersionAddendum ".020221019"
-#define public MagickPackageReleaseDate "snapshot-20221019"
+#define public MagickPackageVersionAddendum ".020221020"
+#define public MagickPackageReleaseDate "snapshot-20221020"
diff -r 5b9c67fe14f5 -r 9d9244d0390c coders/tga.c
--- a/coders/tga.c	Wed Oct 19 10:59:58 2022 -0500
+++ b/coders/tga.c	Thu Oct 20 08:37:32 2022 -0500
@@ -254,55 +254,25 @@
 }
 
 
-static unsigned int ReadBlobLSBShortFromBuffer(unsigned char* buffer, size_t* readerpos)
+static int LoadHeaderTGA(TGAInfo *tga_info, Image *image)
 {
-  unsigned int
-    value;
+ tga_info->id_length = ReadBlobByte(image);
+ tga_info->colormap_type = ReadBlobByte(image);
+ tga_info->image_type = ReadBlobByte(image);
 
-  value=buffer[(*readerpos)+1] << 8;
-  value|=buffer[*readerpos];
-  *readerpos = *readerpos+2;
-  return(value);
-}
-
-
-static unsigned int ReadBlobByteFromBuffer(unsigned char* buffer, size_t* readerpos)
-{
-  unsigned int
-    value;
-
-  value=(unsigned int)(buffer[*readerpos]);
-  *readerpos = *readerpos + 1;
-  return(value);
+ tga_info->colormap_index = ReadBlobLSBShort(image);
+ tga_info->colormap_length = ReadBlobLSBShort(image) & 0xFFFF;
+ tga_info->colormap_size = ReadBlobByte(image);
+ tga_info->x_origin = ReadBlobLSBShort(image);
+ tga_info->y_origin = ReadBlobLSBShort(image);
+ tga_info->width = ReadBlobLSBShort(image) & 0xFFFF;
+ tga_info->height = ReadBlobLSBShort(image) & 0xFFFF;
+ tga_info->bits_per_pixel = ReadBlobByte(image);
+ tga_info->attributes = ReadBlobByte(image);
+return 0;
 }
 
 
-static int LoadHeaderTGA(TGAInfo *tga_info, Image *image, unsigned char *readbuffer)
-{
-static const size_t headersize = 15;
-size_t readbufferpos = 0;
- if(ReadBlob(image,3,readbuffer) != 3) return -1;
-
- tga_info->id_length = (unsigned char)ReadBlobByteFromBuffer(readbuffer, &readbufferpos);
- tga_info->colormap_type = (unsigned char)ReadBlobByteFromBuffer(readbuffer, &readbufferpos);
- tga_info->image_type = (unsigned char)ReadBlobByteFromBuffer(readbuffer, &readbufferpos);
-
- readbufferpos = 0;
- if(ReadBlob(image,headersize,readbuffer) != headersize) return -2;
-
- tga_info->colormap_index = ReadBlobLSBShortFromBuffer(readbuffer, &readbufferpos);
- tga_info->colormap_length = ReadBlobLSBShortFromBuffer(readbuffer, &readbufferpos) & 0xFFFF;
- tga_info->colormap_size = ReadBlobByteFromBuffer(readbuffer, &readbufferpos);
- tga_info->x_origin = ReadBlobLSBShortFromBuffer(readbuffer, &readbufferpos);
- tga_info->y_origin = ReadBlobLSBShortFromBuffer(readbuffer, &readbufferpos);
- tga_info->width = ReadBlobLSBShortFromBuffer(readbuffer, &readbufferpos) & 0xFFFF;
- tga_info->height = ReadBlobLSBShortFromBuffer(readbuffer, &readbufferpos) & 0xFFFF;
- tga_info->bits_per_pixel = ReadBlobByteFromBuffer(readbuffer, &readbufferpos);
- tga_info->attributes = ReadBlobByteFromBuffer(readbuffer, &readbufferpos);
- assert(readbufferpos == headersize);
-return 0;
-}
-
 
 static int ValidateHeaderTGA(const TGAInfo *tga_info)
 {
@@ -395,10 +365,8 @@
   unsigned int
     is_grayscale=MagickFalse;
 
-  unsigned char readbuffer[15];
+  unsigned char readbuffer[4];
   char CommentAndBuffer[256];
-  size_t readbufferpos = 0;
-
 
   /*
     Open image file.
@@ -411,8 +379,9 @@
   status = OpenBlob(image_info,image,ReadBinaryBlobMode,exception);
   if(status == MagickFalse)
     ThrowReaderException(FileOpenError,UnableToOpenFile,image);
+
   /*
-    Read TGA header information.
+    Read TGA footer - if exists.
   */
   memset(&tga_footer, 0, sizeof(tga_footer));
   memset(&tga_devel, 0, sizeof(tga_devel));
@@ -508,7 +477,7 @@
   /*
     Read TGA header information.
   */
-  if(LoadHeaderTGA(&tga_info, image, (unsigned char*)CommentAndBuffer) < 0)
+  if(LoadHeaderTGA(&tga_info, image) < 0)
       ThrowReaderException(CorruptImageError,UnexpectedEndOfFile,image);
 
   if(ValidateHeaderTGA(&tga_info) < 0)
@@ -665,17 +634,16 @@
                     break;
                   }
                 case 24:
-                case 32:
+                case 32:			/* TODO: J.Fojtik - is this true? 32 bits, but only 24 bits read. Possible bug! */
                   {
                     /*
                       8 bits each of blue, green and red.
                     */
-                    if (ReadBlob(image, 3, readbuffer) != 3)
+                    if(ReadBlob(image, 3, readbuffer) != 3)
                       ThrowReaderException(CorruptImageError,UnexpectedEndOfFile,image);
-                    readbufferpos = 0;
-                    pixel.blue=ScaleCharToQuantum(ReadBlobByteFromBuffer(readbuffer, &readbufferpos));
-                    pixel.green=ScaleCharToQuantum(ReadBlobByteFromBuffer(readbuffer, &readbufferpos));
-                    pixel.red=ScaleCharToQuantum(ReadBlobByteFromBuffer(readbuffer, &readbufferpos));
+                    pixel.blue = ScaleCharToQuantum(readbuffer[0]);
+                    pixel.green = ScaleCharToQuantum(readbuffer[1]);
+                    pixel.red = ScaleCharToQuantum(readbuffer[2]);
                     break;
                   }
                 }
@@ -778,25 +746,15 @@
                       /*
                         5 bits each of red green and blue.
                       */
-                      unsigned int
-                        packet;
+                      const magick_uint16_t packet = ReadBlobLSBShort(image);
 
-                      if (ReadBlob(image, 2, readbuffer) != 2)
-                        {
-                          status=MagickFail;
-                          break;
-                        }
-                      readbufferpos = 0;
-                      packet = ReadBlobByteFromBuffer(readbuffer, &readbufferpos);
-                      packet |= (((unsigned int) ReadBlobByteFromBuffer(readbuffer, &readbufferpos)) << 8);
-
-                      pixel.red=(packet >> 10) & 0x1f;
-                      pixel.red=ScaleCharToQuantum(ScaleColor5to8(pixel.red));
-                      pixel.green=(packet >> 5) & 0x1f;
-                      pixel.green=ScaleCharToQuantum(ScaleColor5to8(pixel.green));
-                      pixel.blue=packet & 0x1f;
-                      pixel.blue=ScaleCharToQuantum(ScaleColor5to8(pixel.blue));
-                      if (image->matte)
+                      pixel.red = (packet >> 10) & 0x1f;
+                      pixel.red = ScaleCharToQuantum(ScaleColor5to8(pixel.red));
+                      pixel.green = (packet >> 5) & 0x1f;
+                      pixel.green = ScaleCharToQuantum(ScaleColor5to8(pixel.green));
+                      pixel.blue = packet & 0x1f;
+                      pixel.blue = ScaleCharToQuantum(ScaleColor5to8(pixel.blue));
+                      if(image->matte)
                         {
                           if ((packet >> 15) & 0x01)
                             pixel.opacity=OpaqueOpacity;
@@ -815,31 +773,29 @@
                     /*
                       8 bits each of blue green and red.
                     */
-                    if (ReadBlob(image, 3, readbuffer) != 3)
+                    if(ReadBlob(image, 3, readbuffer) != 3)
                       {
                         status=MagickFail;
                         break;
                       }
-                    readbufferpos = 0;
-                    pixel.blue=ScaleCharToQuantum(ReadBlobByteFromBuffer(readbuffer, &readbufferpos));
-                    pixel.green=ScaleCharToQuantum(ReadBlobByteFromBuffer(readbuffer, &readbufferpos));
-                    pixel.red=ScaleCharToQuantum(ReadBlobByteFromBuffer(readbuffer, &readbufferpos));
+                    pixel.blue = ScaleCharToQuantum(readbuffer[0]);
+                    pixel.green = ScaleCharToQuantum(readbuffer[1]);
+                    pixel.red = ScaleCharToQuantum(readbuffer[2]);
                     break;
                   case 32:
                     {
                       /*
                         8 bits each of blue green and red.
                       */
-                      if (ReadBlob(image, 4, readbuffer) != 4)
+                      if(ReadBlob(image, 4, readbuffer) != 4)
                         {
                           status=MagickFail;
                           break;
                         }
-                      readbufferpos = 0;
-                      pixel.blue=ScaleCharToQuantum(ReadBlobByteFromBuffer(readbuffer, &readbufferpos));
-                      pixel.green=ScaleCharToQuantum(ReadBlobByteFromBuffer(readbuffer, &readbufferpos));
-                      pixel.red=ScaleCharToQuantum(ReadBlobByteFromBuffer(readbuffer, &readbufferpos));
-                      pixel.opacity=ScaleCharToQuantum(255-ReadBlobByteFromBuffer(readbuffer, &readbufferpos));
+                      pixel.blue = ScaleCharToQuantum(readbuffer[0]);
+                      pixel.green = ScaleCharToQuantum(readbuffer[1]);
+                      pixel.red = ScaleCharToQuantum(readbuffer[2]);
+                      pixel.opacity = ScaleCharToQuantum(255-readbuffer[3]);
                       break;
                     }
                   }
@@ -898,7 +854,7 @@
         if (image->scene >= (image_info->subimage+image_info->subrange-1))
           break;
 
-      if(LoadHeaderTGA(&tga_info, image, (unsigned char*)CommentAndBuffer) < 0)
+      if(LoadHeaderTGA(&tga_info, image) < 0)
           status = MagickFalse;
       else
       {
diff -r 5b9c67fe14f5 -r 9d9244d0390c magick/version.h
--- a/magick/version.h	Wed Oct 19 10:59:58 2022 -0500
+++ b/magick/version.h	Thu Oct 20 08:37:32 2022 -0500
@@ -38,8 +38,8 @@
 #define MagickLibVersion  0x272400
 #define MagickLibVersionText  "1.4"
 #define MagickLibVersionNumber 27,24,0
-#define MagickChangeDate   "20221019"
-#define MagickReleaseDate  "snapshot-20221019"
+#define MagickChangeDate   "20221020"
+#define MagickReleaseDate  "snapshot-20221020"
 
 /*
   The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines
diff -r 5b9c67fe14f5 -r 9d9244d0390c www/Changelog.html
--- a/www/Changelog.html	Wed Oct 19 10:59:58 2022 -0500
+++ b/www/Changelog.html	Thu Oct 20 08:37:32 2022 -0500
@@ -37,6 +37,13 @@
 </div>
 
 <div class="document">
+<p>2022-10-20    Fojtik Jaroslav  &lt;<a class="reference external" href="mailto:JaFojtik&#37;&#52;&#48;yandex&#46;com">JaFojtik<span>&#64;</span>yandex<span>&#46;</span>com</a>&gt;</p>
+<blockquote>
+<ul class="simple">
+<li><p>coders/tga.c Remove &quot;optimisation&quot; that has negligible or negative
+effect to overall performance.</p></li>
+</ul>
+</blockquote>
 <p>2022-10-19    Fojtik Jaroslav  &lt;<a class="reference external" href="mailto:JaFojtik&#37;&#52;&#48;yandex&#46;com">JaFojtik<span>&#64;</span>yandex<span>&#46;</span>com</a>&gt;</p>
 <blockquote>
 <ul class="simple">
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.