Changeset 11666 for ImageMagick

Show
Ignore:
Timestamp:
07/18/08 18:12:16 (6 weeks ago)
Author:
cristy
Message:
 
Location:
ImageMagick/trunk/magick
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • ImageMagick/trunk/magick/annotate.c

    r11663 r11666  
    15591559            *p; 
    15601560 
    1561           id=GetCacheViewThreadId(); 
     1561          if (status == MagickFalse) 
     1562            continue; 
    15621563          x_offset=(long) (point.x+0.5); 
    15631564          y_offset=(long) (point.y+y+0.5); 
    15641565          if ((y_offset < 0) || (y_offset >= (long) image->rows)) 
    15651566            continue; 
     1567          id=GetCacheViewThreadId(); 
    15661568          q=GetCacheViewPixels(image_view[id],x_offset,y_offset, 
    15671569            bitmap->bitmap.width,1); 
  • ImageMagick/trunk/magick/draw.c

    r11665 r11666  
    947947*/ 
    948948 
     949static ResampleFilter **DestroyResampleFilterThreadSet(ResampleFilter **filter) 
     950{ 
     951  register long 
     952    i; 
     953 
     954  assert(filter != (ResampleFilter **) NULL); 
     955  for (i=0; i < (long) GetCacheViewMaximumThreads(); i++) 
     956    if (filter[i] != (ResampleFilter *) NULL) 
     957      filter[i]=DestroyResampleFilter(filter[i]); 
     958  return((ResampleFilter **) RelinquishMagickMemory(filter)); 
     959} 
     960 
     961static ResampleFilter **AcquireResampleFilterThreadSet(const Image *image, 
     962  ExceptionInfo *exception) 
     963{ 
     964  register long 
     965    i; 
     966 
     967  ResampleFilter 
     968    **filter; 
     969 
     970  filter=(ResampleFilter **) AcquireQuantumMemory(GetCacheViewMaximumThreads(), 
     971    sizeof(*filter)); 
     972  if (filter == (ResampleFilter **) NULL) 
     973    return((ResampleFilter **) NULL); 
     974  (void) ResetMagickMemory(filter,0,GetCacheViewMaximumThreads()* 
     975    sizeof(*filter)); 
     976  for (i=0; i < (long) GetCacheViewMaximumThreads(); i++) 
     977  { 
     978    filter[i]=AcquireResampleFilter(image,exception); 
     979    if (filter[i] == (ResampleFilter *) NULL) 
     980      return(DestroyResampleFilterThreadSet(filter)); 
     981  } 
     982  return(filter); 
     983} 
     984 
    949985static SegmentInfo AffineEdge(const Image *image,const AffineMatrix *affine, 
    950986  const double y,const SegmentInfo *edge) 
     
    10811117 
    10821118  long 
    1083     x_offset, 
    10841119    y; 
    10851120 
    1086   MagickPixelPacket 
    1087     composite, 
    1088     pixel; 
     1121  MagickBooleanType 
     1122    status; 
    10891123 
    10901124  PointInfo 
     
    10951129 
    10961130  register long 
    1097     i, 
    1098     x; 
    1099  
    1100   register IndexPacket 
    1101     *indexes; 
    1102  
    1103   register PixelPacket 
    1104     *q; 
     1131    i; 
    11051132 
    11061133  ResampleFilter 
    1107     *resample_filter; 
     1134    **resample_filter; 
    11081135 
    11091136  SegmentInfo 
    1110     edge, 
    1111     inverse_edge; 
     1137    edge; 
    11121138 
    11131139  ViewInfo 
    1114     *image_view, 
    1115     *source_view; 
     1140    **image_view, 
     1141    **source_view; 
    11161142 
    11171143  /* 
     
    11571183  if (SetImageStorageClass(image,DirectClass) == MagickFalse) 
    11581184    return(MagickFalse); 
    1159   GetMagickPixelPacket(image,&pixel); 
    1160   GetMagickPixelPacket(image,&composite); 
     1185  status=MagickTrue; 
    11611186  edge.x1=MagickMax(min.x,0.0); 
    11621187  edge.y1=MagickMax(min.y,0.0); 
     
    11641189  edge.y2=MagickMin(max.y,(double) image->rows-1.0); 
    11651190  inverse_affine=InverseAffineMatrix(affine); 
    1166   resample_filter=AcquireResampleFilter(source,&image->exception); 
    1167   image_view=AcquireCacheView(image); 
    1168   source_view=AcquireCacheView(source); 
     1191  resample_filter=AcquireResampleFilterThreadSet(source,&image->exception); 
     1192  image_view=AcquireCacheViewThreadSet(image); 
     1193  source_view=AcquireCacheViewThreadSet(source); 
    11691194  for (y=(long) (edge.y1+0.5); y <= (long) (edge.y2+0.5); y++) 
    11701195  { 
     1196    long 
     1197      x_offset; 
     1198 
     1199    MagickPixelPacket 
     1200      composite, 
     1201      pixel; 
     1202 
     1203    PointInfo 
     1204      point; 
     1205 
     1206    register IndexPacket 
     1207      *indexes; 
     1208 
     1209    register long 
     1210      id, 
     1211      x; 
     1212 
     1213    register PixelPacket 
     1214      *q; 
     1215 
     1216    SegmentInfo 
     1217      inverse_edge; 
     1218 
     1219    id=GetCacheViewThreadId(); 
    11711220    inverse_edge=AffineEdge(source,&inverse_affine,(double) y+0.5,&edge); 
    11721221    if (inverse_edge.x2 < inverse_edge.x1) 
    11731222      continue; 
    1174     q=GetCacheViewPixels(image_view,(long) (inverse_edge.x1+0.5),y, 
     1223    q=GetCacheViewPixels(image_view[id],(long) (inverse_edge.x1+0.5),y, 
    11751224      (unsigned long) ((long) (inverse_edge.x2+0.5)-(long) 
    11761225      (inverse_edge.x1+0.5)+1),1); 
    11771226    if (q == (PixelPacket *) NULL) 
    11781227      continue; 
    1179     indexes=GetCacheViewIndexes(image_view); 
     1228    indexes=GetCacheViewIndexes(image_view[id]); 
     1229    GetMagickPixelPacket(image,&pixel); 
     1230    GetMagickPixelPacket(image,&composite); 
    11801231    x_offset=0; 
    11811232    for (x=(long) (inverse_edge.x1+0.5); x <= (long) (inverse_edge.x2+0.5); x++) 
     
    11851236      point.y=(double) x*inverse_affine.rx+y*inverse_affine.sy+ 
    11861237        inverse_affine.ty; 
    1187       pixel=ResamplePixelColor(resample_filter,point.x,point.y); 
     1238      pixel=ResamplePixelColor(resample_filter[id],point.x,point.y); 
    11881239      SetMagickPixelPacket(image,q,indexes+x_offset,&composite); 
    11891240      MagickPixelCompositeOver(&pixel,pixel.opacity,&composite, 
     
    11931244      q++; 
    11941245    } 
    1195     if (SyncCacheView(image_view) == MagickFalse) 
    1196       break; 
     1246    if (SyncCacheView(image_view[id]) == MagickFalse) 
     1247      status=MagickFalse; 
    11971248  } 
    1198   resample_filter=DestroyResampleFilter(resample_filter); 
    1199   source_view=DestroyCacheView(source_view); 
    1200   image_view=DestroyCacheView(image_view); 
    1201   return(MagickTrue); 
     1249  resample_filter=DestroyResampleFilterThreadSet(resample_filter); 
     1250  source_view=DestroyCacheViewThreadSet(source_view); 
     1251  image_view=DestroyCacheViewThreadSet(image_view); 
     1252  return(status); 
    12021253} 
    12031254  
     
    38053856        if (status == MagickFalse) 
    38063857          continue; 
     3858        x=start; 
    38073859        id=GetCacheViewThreadId(); 
    3808         x=start; 
    38093860        q=GetCacheViewPixels(image_view[id],x,y,(unsigned long) (stop-x+1),1); 
    38103861        if (q == (PixelPacket *) NULL)