MagickOffsetType
progress;
- PixelInfo
- zero;
-
MagickRealType
*sine_map;
*/
status=MagickTrue;
progress=0;
- GetPixelInfo(wave_image,&zero);
image_view=AcquireCacheView(image);
wave_view=AcquireCacheView(wave_image);
(void) SetCacheViewVirtualPixelMethod(image_view,
#endif
for (y=0; y < (ssize_t) wave_image->rows; y++)
{
- PixelInfo
- pixel;
-
register Quantum
*restrict q;
status=MagickFalse;
continue;
}
- pixel=zero;
for (x=0; x < (ssize_t) wave_image->columns; x++)
{
- (void) InterpolatePixelInfo(image,image_view,
- UndefinedInterpolatePixel,(double) x,(double) (y-sine_map[x]),&pixel,
- exception);
- SetPixelPixelInfo(wave_image,&pixel,q);
+ register ssize_t
+ i;
+
+ for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
+ {
+ double
+ pixel;
+
+ PixelChannel
+ channel;
+
+ PixelTrait
+ wave_traits,
+ traits;
+
+ traits=GetPixelChannelMapTraits(image,(PixelChannel) i);
+ channel=GetPixelChannelMapChannel(image,(PixelChannel) i);
+ wave_traits=GetPixelChannelMapTraits(wave_image,channel);
+ if ((traits == UndefinedPixelTrait) ||
+ (wave_traits == UndefinedPixelTrait))
+ continue;
+ status=InterpolatePixelChannel(image,image_view,(PixelChannel) i,
+ MeshInterpolatePixel,(double) x,(double) (y-sine_map[x]),&pixel,
+ exception);
+ q[channel]=ClampToQuantum(pixel);
+ }
q+=GetPixelChannels(wave_image);
}
if (SyncCacheViewAuthenticPixels(wave_view,exception) == MagickFalse)
CacheView
*image_view,
- *interpolate_view,
*resize_view;
Image
status=MagickTrue;
progress=0;
image_view=AcquireCacheView(image);
- interpolate_view=AcquireCacheView(image);
resize_view=AcquireCacheView(resize_image);
#if defined(MAGICKCORE_OPENMP_SUPPORT)
#pragma omp parallel for schedule(dynamic,4) shared(progress,status) omp_throttle(1)
PointInfo
offset;
- register const Quantum
- *restrict p;
-
register Quantum
*restrict q;
if (status == MagickFalse)
continue;
- p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception);
q=QueueCacheViewAuthenticPixels(resize_view,0,y,resize_image->columns,1,
exception);
- if ((p == (const Quantum *) NULL) || (q == (Quantum *) NULL))
+ if (q == (Quantum *) NULL)
continue;
offset.y=((MagickRealType) (y+0.5)*image->rows/resize_image->rows);
for (x=0; x < (ssize_t) resize_image->columns; x++)
if ((traits == UndefinedPixelTrait) ||
(resize_traits == UndefinedPixelTrait))
continue;
- if ((resize_traits & CopyPixelTrait) != 0)
- {
- q[channel]=p[i];
- continue;
- }
- status=InterpolatePixelChannel(image,interpolate_view,(PixelChannel) i,
+ status=InterpolatePixelChannel(image,image_view,(PixelChannel) i,
MeshInterpolatePixel,offset.x-0.5,offset.y-0.5,&pixel,exception);
q[channel]=ClampToQuantum(pixel);
}
}
}
resize_view=DestroyCacheView(resize_view);
- interpolate_view=DestroyCacheView(interpolate_view);
image_view=DestroyCacheView(image_view);
if (status == MagickFalse)
resize_image=DestroyImage(resize_image);