Here are the patches:
Code: Select all
--- ImageMagick-6.8.1~/coders/mat.c 2013-01-15 07:47:35.012032065 -0500
+++ ImageMagick-6.8.1/coders/mat.c 2013-01-15 07:48:04.631798260 -0500
@@ -887,7 +887,7 @@
{
for (i = 0; i < (ssize_t) MATLAB_HDR.SizeY; i++)
{
- q=QueueAuthenticPixels(image,0,MATLAB_HDR.SizeY-i-1,image->columns,1,ex
ception);
+ q=GetAuthenticPixels(image,0,MATLAB_HDR.SizeY-i-1,image->columns,1,exce
ption);
if (q == (PixelPacket *)NULL)
{
if (logging) (void)LogMagickEvent(CoderEvent,GetMagickModule(),
Code: Select all
--- ImageMagick-6.8.1~/magick/quantum-import.c 2013-01-15 07:47:51.836171241 -0500
+++ ImageMagick-6.8.1/magick/quantum-import.c 2013-01-15 07:49:25.611094994 -0500
@@ -1032,62 +1032,86 @@
switch (quantum_info->depth)
{
- case 10:
+ case 8:
{
- Quantum
- cbcr[4];
+ unsigned char
+ pixel;
- pixel=0;
- if (quantum_info->pack == MagickFalse)
- {
- register ssize_t
- i;
+ for (x=0; x < (ssize_t) number_pixels; x++)
+ {
+ p=PushCharPixel(p,&pixel);
+ SetPixelBlue(q,ScaleCharToQuantum(pixel));
+ p+=quantum_info->pad;
+ q++;
+ }
+ break;
+ }
+ case 16:
+ {
+ unsigned short
+ pixel;
- size_t
- quantum;
+ if (quantum_info->format == FloatingPointQuantumFormat)
+ {
+ for (x=0; x < (ssize_t) number_pixels; x++)
+ {
+ p=PushShortPixel(quantum_info->endian,p,&pixel);
+ SetPixelBlue(q,ClampToQuantum((MagickRealType)
+ QuantumRange*HalfToSinglePrecision(pixel)));
+ p+=quantum_info->pad;
+ q++;
+ }
+ break;
+ }
+ for (x=0; x < (ssize_t) number_pixels; x++)
+ {
+ p=PushShortPixel(quantum_info->endian,p,&pixel);
+ SetPixelBlue(q,ScaleShortToQuantum(pixel));
+ p+=quantum_info->pad;
+ q++;
+ }
+ break;
+ }
+ case 32:
+ {
+ unsigned int
+ pixel;
- ssize_t
- n;
+ if (quantum_info->format == FloatingPointQuantumFormat)
+ {
+ float
+ pixel;
- n=0;
- quantum=0;
- for (x=0; x < (ssize_t) number_pixels; x+=2)
+ for (x=0; x < (ssize_t) number_pixels; x++)
{
- for (i=0; i < 4; i++)
- {
- switch (n % 3)
- {
- case 0:
- {
- p=PushLongPixel(quantum_info->endian,p,&pixel);
- quantum=(size_t) (ScaleShortToQuantum((unsigned short)
- (((pixel >> 22) & 0x3ff) << 6)));
- break;
- }
- case 1:
- {
- quantum=(size_t) (ScaleShortToQuantum((unsigned short)
- (((pixel >> 12) & 0x3ff) << 6)));
- break;
- }
- case 2:
- {
- quantum=(size_t) (ScaleShortToQuantum((unsigned short)
- (((pixel >> 2) & 0x3ff) << 6)));
- break;
- }
- }
- cbcr[i]=(Quantum) (quantum);
- n++;
- }
+ p=PushFloatPixel(quantum_info,p,&pixel);
+ SetPixelBlue(q,ClampToQuantum(pixel));
p+=quantum_info->pad;
- SetPixelRed(q,cbcr[1]);
- SetPixelGreen(q,cbcr[0]);
- SetPixelBlue(q,cbcr[2]);
q++;
- SetPixelRed(q,cbcr[3]);
- SetPixelGreen(q,cbcr[0]);
- SetPixelBlue(q,cbcr[2]);
+ }
+ break;
+ }
+ for (x=0; x < (ssize_t) number_pixels; x++)
+ {
+ p=PushLongPixel(quantum_info->endian,p,&pixel);
+ SetPixelBlue(q,ScaleLongToQuantum(pixel));
+ p+=quantum_info->pad;
+ q++;
+ }
+ break;
+ }
+ case 64:
+ {
+ if (quantum_info->format == FloatingPointQuantumFormat)
+ {
+ double
+ pixel;
+
+ for (x=0; x < (ssize_t) number_pixels; x++)
+ {
+ p=PushDoublePixel(quantum_info,p,&pixel);
+ SetPixelBlue(q,ClampToQuantum(pixel));
+ p+=quantum_info->pad;
q++;
}
break;
@@ -1102,9 +1126,8 @@
for (x=0; x < (ssize_t) number_pixels; x++)
{
p=PushQuantumPixel(quantum_info,p,&pixel);
- SetPixelRed(q,ScaleAnyToQuantum(pixel,range));
- p=PushQuantumPixel(quantum_info,p,&pixel);
- SetPixelGreen(q,ScaleAnyToQuantum(pixel,range));
+ SetPixelBlue(q,ScaleAnyToQuantum(pixel,range));
+ p+=quantum_info->pad;
q++;
}
break;