- case 108: /* Recolor */
- case 134: /* ColorMatrix */
- {
- AV
- *av;
-
- double
- *color_matrix;
-
- KernelInfo
- *kernel_info;
-
- size_t
- order;
-
- if (attribute_flag[0] == 0)
- break;
- av=(AV *) argument_list[0].array_reference;
- order=(size_t) sqrt(av_len(av)+1);
- color_matrix=(double *) AcquireQuantumMemory(order,order*
- sizeof(*color_matrix));
- if (color_matrix == (double *) NULL)
- {
- ThrowPerlException(exception,ResourceLimitFatalError,
- "MemoryAllocationFailed",PackageName);
- goto PerlException;
- }
- for (j=0; (j < (ssize_t) (order*order)) && (j < (av_len(av)+1)); j++)
- color_matrix[j]=(double) SvNV(*(av_fetch(av,j,0)));
- for ( ; j < (ssize_t) (order*order); j++)
- color_matrix[j]=0.0;
- kernel_info=AcquireKernelInfo("1");
- if (kernel_info == (KernelInfo *) NULL)
- break;
- kernel_info->width=order;
- kernel_info->height=order;
- kernel_info->values=color_matrix;
- image=ColorMatrixImage(image,kernel_info,exception);
- kernel_info->values=(double *) NULL;
- kernel_info=DestroyKernelInfo(kernel_info);
- color_matrix=(double *) RelinquishMagickMemory(color_matrix);
- break;
- }
- case 135: /* Color */
- {
- PixelInfo
- color;
-
- (void) QueryMagickColor("none",&color,exception);
- if (attribute_flag[0] != 0)
- (void) QueryMagickColor(argument_list[0].string_reference,
- &color,exception);
- (void) SetImageColor(image,&color);
- break;
- }
- case 136: /* Mode */