% July 1992 %
% %
% %
-% Copyright 1999-2009 ImageMagick Studio LLC, a non-profit organization %
+% Copyright 1999-2010 ImageMagick Studio LLC, a non-profit organization %
% dedicated to making software imaging solutions freely available. %
% %
% You may not use this file except in compliance with the License. You may %
*/
#include "magick/studio.h"
#include "magick/artifact.h"
+#include "magick/attribute.h"
#include "magick/blob-private.h"
#include "magick/cache-private.h"
#include "magick/color-private.h"
#include "magick/resource_.h"
#include "magick/shear.h"
#include "magick/statistic.h"
+#include "magick/string_.h"
+#include "magick/string-private.h"
#include "magick/threshold.h"
#include "magick/transform.h"
\f
RadonInfo
*radon_info;
- radon_info=(RadonInfo *) AcquireMagickMemory(sizeof(*radon_info));
+ radon_info=(RadonInfo *) AcquireAlignedMemory(1,sizeof(*radon_info));
if (radon_info == (RadonInfo *) NULL)
return((RadonInfo *) NULL);
(void) ResetMagickMemory(radon_info,0,sizeof(*radon_info));
return(MagickTrue);
}
count=WriteRadonCell(radon_info,i*sizeof(*radon_info->cells),
- sizeof(*radon_info->cells),(unsigned char *) &value);
+ sizeof(*radon_info->cells),(const unsigned char *) &value);
if (count != (ssize_t) sizeof(*radon_info->cells))
return(MagickFalse);
return(MagickTrue);
q=swap;
}
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp parallel for
+ #pragma omp parallel for schedule(dynamic,4)
#endif
for (x=0; x < (long) p->width; x++)
{
for (y=0; y < (long) image->rows; y++)
{
register const PixelPacket
- *__restrict p;
+ *restrict p;
register long
i,
for (y=0; y < (long) image->rows; y++)
{
register const PixelPacket
- *__restrict p;
+ *restrict p;
register long
i,
for (y=0; y < (long) image->rows; y++)
{
register const PixelPacket
- *__restrict p;
+ *restrict p;
register long
x;
/*
Auto-crop image.
*/
- GetImageBackgroundColor(clone_image,atol(artifact),exception);
+ GetImageBackgroundColor(clone_image,StringToLong(artifact),exception);
deskew_image=AffineTransformImage(clone_image,&affine_matrix,exception);
clone_image=DestroyImage(clone_image);
if (deskew_image == (Image *) NULL)
Rotate 90 degrees.
*/
GetPixelCacheTileSize(image,&tile_width,&tile_height);
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+ #pragma omp parallel for schedule(dynamic,4) shared(progress, status)
+#endif
for (tile_y=0; tile_y < (long) image->rows; tile_y+=tile_height)
{
register long
sync;
register const IndexPacket
- *__restrict indexes;
+ *restrict indexes;
register const PixelPacket
- *__restrict p;
+ *restrict p;
register IndexPacket
- *__restrict rotate_indexes;
+ *restrict rotate_indexes;
register long
y;
register PixelPacket
- *__restrict q;
+ *restrict q;
unsigned long
height,
if ((tile_y+(long) tile_height) > (long) image->rows)
height=(unsigned long) (tile_height-(tile_y+tile_height-
image->rows));
- p=GetCacheViewVirtualPixels(image_view,tile_x,tile_y,width,
- height,exception);
+ p=GetCacheViewVirtualPixels(image_view,tile_x,tile_y,width,height,
+ exception);
if (p == (const PixelPacket *) NULL)
{
status=MagickFalse;
for (y=0; y < (long) width; y++)
{
register const PixelPacket
- *__restrict tile_pixels;
+ *restrict tile_pixels;
register long
x;
(rotate_indexes != (IndexPacket *) NULL))
{
register const IndexPacket
- *__restrict tile_indexes;
+ *restrict tile_indexes;
tile_indexes=indexes+(height-1)*width+y;
for (x=0; x < (long) height; x++)
/*
Rotate 180 degrees.
*/
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+ #pragma omp parallel for schedule(dynamic,4) shared(progress, status)
+#endif
for (y=0; y < (long) image->rows; y++)
{
MagickBooleanType
sync;
register const IndexPacket
- *__restrict indexes;
+ *restrict indexes;
register const PixelPacket
- *__restrict p;
+ *restrict p;
register IndexPacket
- *__restrict rotate_indexes;
+ *restrict rotate_indexes;
register long
x;
register PixelPacket
- *__restrict q;
+ *restrict q;
if (status == MagickFalse)
continue;
Rotate 270 degrees.
*/
GetPixelCacheTileSize(image,&tile_width,&tile_height);
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+ #pragma omp parallel for schedule(dynamic,4) shared(progress, status)
+#endif
for (tile_y=0; tile_y < (long) image->rows; tile_y+=tile_height)
{
register long
sync;
register const IndexPacket
- *__restrict indexes;
+ *restrict indexes;
register const PixelPacket
- *__restrict p;
+ *restrict p;
register IndexPacket
- *__restrict rotate_indexes;
+ *restrict rotate_indexes;
register long
y;
register PixelPacket
- *__restrict q;
+ *restrict q;
unsigned long
height,
for (y=0; y < (long) width; y++)
{
register const PixelPacket
- *__restrict tile_pixels;
+ *restrict tile_pixels;
register long
x;
(rotate_indexes != (IndexPacket *) NULL))
{
register const IndexPacket
- *__restrict tile_indexes;
+ *restrict tile_indexes;
tile_indexes=indexes+(width-1)-y;
for (x=0; x < (long) height; x++)
exception=(&image->exception);
image_view=AcquireCacheView(image);
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp parallel for schedule(dynamic,8) shared(progress, status)
+ #pragma omp parallel for schedule(dynamic,4) shared(progress, status)
#endif
for (y=0; y < (long) height; y++)
{
i;
register IndexPacket
- *__restrict indexes,
- *__restrict shear_indexes;
+ *restrict indexes,
+ *restrict shear_indexes;
register PixelPacket
- *__restrict p,
- *__restrict q;
+ *restrict p,
+ *restrict q;
ShearDirection
direction;
exception=(&image->exception);
image_view=AcquireCacheView(image);
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp parallel for schedule(dynamic,8) shared(progress, status)
+ #pragma omp parallel for schedule(dynamic,4) shared(progress, status)
#endif
for (x=0; x < (long) width; x++)
{
displacement;
register IndexPacket
- *__restrict indexes,
- *__restrict shear_indexes;
+ *restrict indexes,
+ *restrict shear_indexes;
register long
i;
register PixelPacket
- *__restrict p,
- *__restrict q;
+ *restrict p,
+ *restrict q;
ShearDirection
direction;