您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ DestroyDrawInfo函数代码示例

51自学网 2021-06-01 20:27:04
  C++
这篇教程C++ DestroyDrawInfo函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中DestroyDrawInfo函数的典型用法代码示例。如果您正苦于以下问题:C++ DestroyDrawInfo函数的具体用法?C++ DestroyDrawInfo怎么用?C++ DestroyDrawInfo使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了DestroyDrawInfo函数的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: MagickQueryMultilineFontMetrics

/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                                                                             %%                                                                             %%                                                                             %%   M a g i c k Q u e r y M u l t i l i n e F o n t M e t r i c s             %%                                                                             %%                                                                             %%                                                                             %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  MagickQueryMultilineFontMetrics() returns a 13 element array representing the%  following font metrics:%%    Element Description%    -------------------------------------------------%          0 character width%          1 character height%          2 ascender%          3 descender%          4 text width%          5 text height%          6 maximum horizontal advance%          7 bounding box: x1%          8 bounding box: y1%          9 bounding box: x2%         10 bounding box: y2%         11 origin: x%         12 origin: y%%  This method is like MagickQueryFontMetrics() but it returns the maximum text%  width and height for multiple lines of text.%%  The format of the MagickQueryFontMetrics method is:%%      double *MagickQueryMultilineFontMetrics(MagickWand *wand,%        const DrawingWand *drawing_wand,const char *text)%%  A description of each parameter follows:%%    o wand: the Magick wand.%%    o drawing_wand: the drawing wand.%%    o text: the text.%*/WandExport double *MagickQueryMultilineFontMetrics(MagickWand *wand,  const DrawingWand *drawing_wand,const char *text){  double    *font_metrics;  DrawInfo    *draw_info;  MagickBooleanType    status;  TypeMetric    metrics;  assert(wand != (MagickWand *) NULL);  assert(wand->signature == WandSignature);  if (wand->debug != MagickFalse)    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);  assert(drawing_wand != (const DrawingWand *) NULL);  if (wand->images == (Image *) NULL)    {      (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,        "ContainsNoImages","`%s'",wand->name);      return((double *) NULL);    }  font_metrics=(double *) AcquireQuantumMemory(13UL,sizeof(*font_metrics));  if (font_metrics == (double *) NULL)    return((double *) NULL);  draw_info=PeekDrawingWand(drawing_wand);  if (draw_info == (DrawInfo *) NULL)    {      font_metrics=(double *) RelinquishMagickMemory(font_metrics);      return((double *) NULL);    }  (void) CloneString(&draw_info->text,text);  (void) ResetMagickMemory(&metrics,0,sizeof(metrics));  status=GetMultilineTypeMetrics(wand->images,draw_info,&metrics,    wand->exception);  draw_info=DestroyDrawInfo(draw_info);  if (status == MagickFalse)    {      font_metrics=(double *) RelinquishMagickMemory(font_metrics);      return((double *) NULL);    }  font_metrics[0]=metrics.pixels_per_em.x;  font_metrics[1]=metrics.pixels_per_em.y;  font_metrics[2]=metrics.ascent;  font_metrics[3]=metrics.descent;  font_metrics[4]=metrics.width;  font_metrics[5]=metrics.height;  font_metrics[6]=metrics.max_advance;  font_metrics[7]=metrics.bounds.x1;//.........这里部分代码省略.........
开发者ID:saitoha,项目名称:ImageMagick-V7-SIXEL,代码行数:101,


示例2:

Magick::Options::~Options(){  // Destroy image info   _imageInfo=DestroyImageInfo(_imageInfo);  // Destroy quantization info   _quantizeInfo=DestroyQuantizeInfo(_quantizeInfo);  // Destroy drawing info   _drawInfo=DestroyDrawInfo(_drawInfo);}
开发者ID:riingo,项目名称:ImageMagick,代码行数:11,


示例3: DestroyMagickCLI

/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                                                                             %%                                                                             %%                                                                             %+   D e s t r o y W a n d C L I                                               %%                                                                             %%                                                                             %%                                                                             %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  DestroyMagickCLI() destorys everything in a CLI wand, including image_info%  and any exceptions, if still present in the wand.%%  The format of the NewMagickWand method is:%%    MagickWand *DestroyMagickCLI()%            Exception *exception)%*/WandExport MagickCLI *DestroyMagickCLI(MagickCLI *cli_wand){  Stack    *node;  assert(cli_wand != (MagickCLI *) NULL);  assert(cli_wand->signature == WandSignature);  assert(cli_wand->wand.signature == WandSignature);  if (IfMagickTrue(cli_wand->wand.debug))    (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",cli_wand->wand.name);  /* Destroy CLI part of MagickCLI */  if (cli_wand->draw_info != (DrawInfo *) NULL )    cli_wand->draw_info=DestroyDrawInfo(cli_wand->draw_info);  if (cli_wand->quantize_info != (QuantizeInfo *) NULL )    cli_wand->quantize_info=DestroyQuantizeInfo(cli_wand->quantize_info);  while(cli_wand->image_list_stack != (Stack *)NULL)    {      node=cli_wand->image_list_stack;      cli_wand->image_list_stack=node->next;      (void) DestroyImageList((Image *)node->data);      (void) RelinquishMagickMemory(node);    }  while(cli_wand->image_info_stack != (Stack *)NULL)    {      node=cli_wand->image_info_stack;      cli_wand->image_info_stack=node->next;      (void) DestroyImageInfo((ImageInfo *)node->data);      (void) RelinquishMagickMemory(node);    }  cli_wand->signature=(~WandSignature);  /* Destroy Wand part MagickCLI */  cli_wand->wand.images=DestroyImageList(cli_wand->wand.images);  if (cli_wand->wand.image_info != (ImageInfo *) NULL )    cli_wand->wand.image_info=DestroyImageInfo(cli_wand->wand.image_info);  if (cli_wand->wand.exception != (ExceptionInfo *) NULL )    cli_wand->wand.exception=DestroyExceptionInfo(cli_wand->wand.exception);  RelinquishWandId(cli_wand->wand.id);  cli_wand->wand.signature=(~WandSignature);  return((MagickCLI *)NULL);}
开发者ID:0xPr0xy,项目名称:ImageMagick,代码行数:63,


示例4: ReadLABELImage

//.........这里部分代码省略.........  TypeMetric    metrics;  size_t    height,    width;  /*    Initialize Image structure.  */  assert(image_info != (const ImageInfo *) NULL);  assert(image_info->signature == MagickSignature);  if (image_info->debug != MagickFalse)    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",      image_info->filename);  assert(exception != (ExceptionInfo *) NULL);  assert(exception->signature == MagickSignature);  image=AcquireImage(image_info);  (void) ResetImagePage(image,"0x0+0+0");  property=InterpretImageProperties(image_info,image,image_info->filename);  (void) SetImageProperty(image,"label",property);  property=DestroyString(property);  label=GetImageProperty(image,"label");  draw_info=CloneDrawInfo(image_info,(DrawInfo *) NULL);  draw_info->text=ConstantString(label);  if (((image->columns != 0) || (image->rows != 0)) &&      (image_info->pointsize == 0.0))    {      /*        Fit label to canvas size.      */      status=GetMultilineTypeMetrics(image,draw_info,&metrics);      for ( ; status != MagickFalse; draw_info->pointsize*=2.0)      {        width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5);        height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5);        if (((image->columns != 0) && (width > (image->columns+1))) ||            ((image->rows != 0) && (height > (image->rows+1))))          break;        status=GetMultilineTypeMetrics(image,draw_info,&metrics);      }      for ( ; status != MagickFalse; draw_info->pointsize--)      {        width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5);        height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5);        if ((image->columns != 0) && (width <= (image->columns+1)) &&           ((image->rows == 0) || (height <= (image->rows+1))))          break;        if ((image->rows != 0) && (height <= (image->rows+1)) &&           ((image->columns == 0) || (width <= (image->columns+1))))          break;        if (draw_info->pointsize < 2.0)          break;        status=GetMultilineTypeMetrics(image,draw_info,&metrics);      }    }  status=GetMultilineTypeMetrics(image,draw_info,&metrics);  if (status == MagickFalse)    {      InheritException(exception,&image->exception);      image=DestroyImageList(image);      return((Image *) NULL);    }  if (image->columns == 0)    image->columns=(size_t) (metrics.width+draw_info->stroke_width+1.5);  if (image->columns == 0)    image->columns=(size_t) (draw_info->pointsize+      draw_info->stroke_width+1.5);  if (draw_info->gravity == UndefinedGravity)    {      (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",        -metrics.bounds.x1+draw_info->stroke_width/2.0,metrics.ascent+        draw_info->stroke_width/2.0);      draw_info->geometry=AcquireString(geometry);    }  if (image->rows == 0)    image->rows=(size_t) floor(metrics.height+draw_info->stroke_width+0.5);  if (image->rows == 0)    image->rows=(size_t) floor(draw_info->pointsize+draw_info->stroke_width+      0.5);  if (SetImageBackgroundColor(image) == MagickFalse)    {      InheritException(exception,&image->exception);      image=DestroyImageList(image);      return((Image *) NULL);    }  (void) AnnotateImage(image,draw_info);  if (image_info->pointsize == 0.0)    {      char        pointsize[MaxTextExtent];      (void) FormatLocaleString(pointsize,MaxTextExtent,"%.20g",        draw_info->pointsize);      (void) SetImageProperty(image,"label:pointsize",pointsize);    }  draw_info=DestroyDrawInfo(draw_info);  return(GetFirstImageInList(image));}
开发者ID:0xPr0xy,项目名称:ImageMagick,代码行数:101,


示例5: ReadCAPTIONImage

//.........这里部分代码省略.........      image_info->filename);  assert(exception != (ExceptionInfo *) NULL);  assert(exception->signature == MagickSignature);  image=AcquireImage(image_info);  if (image->columns == 0)    ThrowReaderException(OptionError,"MustSpecifyImageSize");  (void) ResetImagePage(image,"0x0+0+0");  /*    Format caption.  */  property=InterpretImageProperties(image_info,image,image_info->filename);  (void) SetImageProperty(image,"caption",property);  property=DestroyString(property);  caption=ConstantString(GetImageProperty(image,"caption"));  draw_info=CloneDrawInfo(image_info,(DrawInfo *) NULL);  draw_info->text=ConstantString(caption);  gravity=GetImageOption(image_info,"gravity");  if (gravity != (char *) NULL)    draw_info->gravity=(GravityType) ParseMagickOption(MagickGravityOptions,      MagickFalse,gravity);  if ((*caption != '/0') && (image->rows != 0) &&      (image_info->pointsize == 0.0))    {      char        *text;      /*        Scale text to fit bounding box.      */      for ( ; ; )      {        text=AcquireString(caption);        i=FormatMagickCaption(image,draw_info,&metrics,&text);        (void) CloneString(&draw_info->text,text);        text=DestroyString(text);        (void) FormatMagickString(geometry,MaxTextExtent,"%+g%+g",          -metrics.bounds.x1,metrics.ascent);        if (draw_info->gravity == UndefinedGravity)          (void) CloneString(&draw_info->geometry,geometry);        status=GetMultilineTypeMetrics(image,draw_info,&metrics);        width=(unsigned long) floor(metrics.width+draw_info->stroke_width+0.5);        height=(unsigned long) floor(metrics.height+draw_info->stroke_width+          0.5);        if ((width > (image->columns+1)) || (height > (image->rows+1)))          break;        draw_info->pointsize*=2.0;      }      draw_info->pointsize/=2.0;      for ( ; ; )      {        text=AcquireString(caption);        i=FormatMagickCaption(image,draw_info,&metrics,&text);        (void) CloneString(&draw_info->text,text);        text=DestroyString(text);        (void) FormatMagickString(geometry,MaxTextExtent,"%+g%+g",          -metrics.bounds.x1,metrics.ascent);        if (draw_info->gravity == UndefinedGravity)          (void) CloneString(&draw_info->geometry,geometry);        status=GetMultilineTypeMetrics(image,draw_info,&metrics);        width=(unsigned long) floor(metrics.width+draw_info->stroke_width+0.5);        height=(unsigned long) floor(metrics.height+draw_info->stroke_width+          0.5);        if ((width > (image->columns+1)) || (height > (image->rows+1)))          break;        draw_info->pointsize++;      }      draw_info->pointsize--;    }  i=FormatMagickCaption(image,draw_info,&metrics,&caption);  if (image->rows == 0)    image->rows=(unsigned long) ((i+1)*(metrics.ascent-metrics.descent+      draw_info->stroke_width)+0.5);  if (image->rows == 0)    image->rows=(unsigned long) ((i+1)*draw_info->pointsize+      draw_info->stroke_width+0.5);  if (SetImageBackgroundColor(image) == MagickFalse)    {      InheritException(exception,&image->exception);      image=DestroyImageList(image);      return((Image *) NULL);    }  /*    Draw caption.  */  (void) CloneString(&draw_info->text,caption);  status=GetMultilineTypeMetrics(image,draw_info,&metrics);  if (draw_info->gravity != UndefinedGravity)    image->page.x=(long) (metrics.bounds.x1-draw_info->stroke_width/2.0);  else    {      (void) FormatMagickString(geometry,MaxTextExtent,"%+g%+g",        -metrics.bounds.x1+draw_info->stroke_width/2.0,metrics.ascent+        draw_info->stroke_width/2.0);      (void) CloneString(&draw_info->geometry,geometry);    }  (void) AnnotateImage(image,draw_info);  draw_info=DestroyDrawInfo(draw_info);  caption=DestroyString(caption);  return(GetFirstImageInList(image));}
开发者ID:0xPr0xy,项目名称:ImageMagick,代码行数:101,


示例6: ReadCAPTIONImage

//.........这里部分代码省略.........  if (image->columns == 0)    {      text=AcquireString(caption);      i=FormatMagickCaption(image,draw_info,split,&metrics,&text);      (void) CloneString(&draw_info->text,text);      text=DestroyString(text);      (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",        -metrics.bounds.x1,metrics.ascent);      if (draw_info->gravity == UndefinedGravity)        (void) CloneString(&draw_info->geometry,geometry);      status=GetMultilineTypeMetrics(image,draw_info,&metrics);      width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5);      image->columns=width;    }  if (image->rows == 0)    {      split=MagickTrue;      text=AcquireString(caption);      i=FormatMagickCaption(image,draw_info,split,&metrics,&text);      (void) CloneString(&draw_info->text,text);      text=DestroyString(text);      (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",        -metrics.bounds.x1,metrics.ascent);      if (draw_info->gravity == UndefinedGravity)        (void) CloneString(&draw_info->geometry,geometry);      status=GetMultilineTypeMetrics(image,draw_info,&metrics);      image->rows=(size_t) ((i+1)*(metrics.ascent-metrics.descent+        draw_info->interline_spacing+draw_info->stroke_width)+0.5);    }  if (status != MagickFalse)    status=SetImageExtent(image,image->columns,image->rows);  if (status == MagickFalse)    {       draw_info=DestroyDrawInfo(draw_info);      InheritException(exception,&image->exception);      return(DestroyImageList(image));    }  if (SetImageBackgroundColor(image) == MagickFalse)    {      draw_info=DestroyDrawInfo(draw_info);      InheritException(exception,&image->exception);      image=DestroyImageList(image);      return((Image *) NULL);    }  if (fabs(image_info->pointsize) < MagickEpsilon)    {      double        high,        low;      /*        Auto fit text into bounding box.      */      for ( ; ; draw_info->pointsize*=2.0)      {        text=AcquireString(caption);        i=FormatMagickCaption(image,draw_info,split,&metrics,&text);        (void) CloneString(&draw_info->text,text);        text=DestroyString(text);        (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",          -metrics.bounds.x1,metrics.ascent);        if (draw_info->gravity == UndefinedGravity)          (void) CloneString(&draw_info->geometry,geometry);        status=GetMultilineTypeMetrics(image,draw_info,&metrics);        (void) status;        width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5);
开发者ID:INT2208-ST,项目名称:MyFriend,代码行数:67,


示例7: assert

//.........这里部分代码省略.........  pango_layout_context_changed(layout);  page.x=0;  page.y=0;  if (image_info->page != (char *) NULL)    (void) ParseAbsoluteGeometry(image_info->page,&page);  if (image->columns == 0)    {      pango_layout_get_pixel_extents(layout,NULL,&extent);      image->columns=extent.x+extent.width;    }  else    {      image->columns-=2*page.x;      pango_layout_set_width(layout,(PANGO_SCALE*image->columns*        image->x_resolution+36.0)/72.0);    }  if (image->rows == 0)    {      pango_layout_get_pixel_extents(layout,NULL,&extent);      image->rows=extent.y+extent.height;    }  else    {      image->rows-=2*page.y;      pango_layout_set_height(layout,(PANGO_SCALE*image->rows*        image->y_resolution+36.0)/72.0);    }  /*    Create canvas.  */  canvas=(FT_Bitmap *) AcquireMagickMemory(sizeof(*canvas));  if (canvas == (FT_Bitmap *) NULL)    {      draw_info=DestroyDrawInfo(draw_info);      ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");    }  canvas->width=image->columns;  canvas->pitch=(canvas->width+3) & ~3;  canvas->rows=image->rows;  canvas->buffer=(unsigned char *) AcquireQuantumMemory(canvas->pitch,    canvas->rows*sizeof(*canvas->buffer));  if (canvas->buffer == (unsigned char *) NULL)    {      draw_info=DestroyDrawInfo(draw_info);      canvas=(FT_Bitmap *) RelinquishMagickMemory(canvas);      ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");    }  canvas->num_grays=256;  canvas->pixel_mode=ft_pixel_mode_grays;  ResetMagickMemory(canvas->buffer,0x00,canvas->pitch*canvas->rows);  pango_ft2_render_layout(canvas,layout,0,0);  /*    Convert caption to image.  */  image->columns+=2*page.x;  image->rows+=2*page.y;  if (SetImageBackgroundColor(image) == MagickFalse)    {      draw_info=DestroyDrawInfo(draw_info);      canvas->buffer=(unsigned char *) RelinquishMagickMemory(canvas->buffer);      canvas=(FT_Bitmap *) RelinquishMagickMemory(canvas);      caption=DestroyString(caption);      image=DestroyImageList(image);      return((Image *) NULL);    }  p=canvas->buffer;
开发者ID:nfma,项目名称:configuration,代码行数:67,


示例8: ReadCAPTIONImage

//.........这里部分代码省略.........        text=AcquireString(caption);        i=FormatMagickCaption(image,draw_info,MagickTrue,&metrics,&text,          exception);        (void) CloneString(&draw_info->text,text);        text=DestroyString(text);        (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",          -metrics.bounds.x1,metrics.ascent);        if (draw_info->gravity == UndefinedGravity)          (void) CloneString(&draw_info->geometry,geometry);        status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception);        (void) status;        width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5);        height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5);        if ((width > image->columns) && (height > image->rows))          break;        draw_info->pointsize*=2.0;      }      high=draw_info->pointsize/2.0;      low=high/2.0;      while ((high-low) > 1.0)      {        draw_info->pointsize=(low+high)/2.0;        text=AcquireString(caption);        i=FormatMagickCaption(image,draw_info,MagickTrue,&metrics,&text,          exception);        (void) CloneString(&draw_info->text,text);        text=DestroyString(text);        (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",          -metrics.bounds.x1,metrics.ascent);        if (draw_info->gravity == UndefinedGravity)          (void) CloneString(&draw_info->geometry,geometry);        status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception);        width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5);        height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5);        if ((width <= image->columns) && (height <= image->rows))          low=draw_info->pointsize+1.0;        else          high=draw_info->pointsize-1.0;      }      for (draw_info->pointsize=(low+high)/2.0; ; )      {        text=AcquireString(caption);        i=FormatMagickCaption(image,draw_info,MagickTrue,&metrics,&text,          exception);        (void) CloneString(&draw_info->text,text);        text=DestroyString(text);        (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",          -metrics.bounds.x1,metrics.ascent);        if (draw_info->gravity == UndefinedGravity)          (void) CloneString(&draw_info->geometry,geometry);        status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception);        width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5);        height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5);        if ((width <= image->columns) && (height <= image->rows))          break;        draw_info->pointsize--;      }      draw_info->pointsize=floor(draw_info->pointsize);    }  i=FormatMagickCaption(image,draw_info,MagickTrue,&metrics,&caption,exception);  if (image->rows == 0)    image->rows=(size_t) ((i+1)*(metrics.ascent-metrics.descent+      draw_info->interline_spacing+draw_info->stroke_width)+0.5);  if (image->rows == 0)    image->rows=(size_t) ((i+1)*draw_info->pointsize+      draw_info->interline_spacing+draw_info->stroke_width+0.5);  if (SetImageBackgroundColor(image,exception) == MagickFalse)    {      image=DestroyImageList(image);      return((Image *) NULL);    }  /*    Draw caption.  */  (void) CloneString(&draw_info->text,caption);  status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception);  if ((draw_info->gravity != UndefinedGravity) &&      (draw_info->direction != RightToLeftDirection))    image->page.x=(ssize_t) (metrics.bounds.x1-draw_info->stroke_width/2.0);  else    {      (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",        -metrics.bounds.x1+draw_info->stroke_width/2.0,metrics.ascent+        draw_info->stroke_width/2.0);      if (draw_info->direction == RightToLeftDirection)        (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",          image->columns-(metrics.bounds.x2+draw_info->stroke_width/2.0),          metrics.ascent+draw_info->stroke_width/2.0);      draw_info->geometry=AcquireString(geometry);    }  status=AnnotateImage(image,draw_info,exception);  draw_info=DestroyDrawInfo(draw_info);  caption=DestroyString(caption);  if (status == MagickFalse)    {      image=DestroyImageList(image);      return((Image *) NULL);    }  return(GetFirstImageInList(image));}
开发者ID:zyqhi,项目名称:ImageMagick,代码行数:101,


示例9: ReadTTFImage

//.........这里部分代码省略.........  MagickBooleanType    status;  PixelPacket    background_color;  register ssize_t    i,    x;  register PixelPacket    *q;  ssize_t    y;  /*    Open image file.  */  assert(image_info != (const ImageInfo *) NULL);  assert(image_info->signature == MagickSignature);  if (image_info->debug != MagickFalse)    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",      image_info->filename);  assert(exception != (ExceptionInfo *) NULL);  assert(exception->signature == MagickSignature);  image=AcquireImage(image_info);  image->columns=800;  image->rows=480;  type_info=GetTypeInfo(image_info->filename,exception);  if ((type_info != (const TypeInfo *) NULL) &&      (type_info->glyphs != (char *) NULL))    (void) CopyMagickString(image->filename,type_info->glyphs,MaxTextExtent);  status=OpenBlob(image_info,image,ReadBinaryBlobMode,exception);  if (status == MagickFalse)    {      image=DestroyImageList(image);      return((Image *) NULL);    }  /*    Color canvas with background color  */  background_color=image_info->background_color;  for (y=0; y < (ssize_t) image->rows; y++)  {    q=QueueAuthenticPixels(image,0,y,image->columns,1,exception);    if (q == (PixelPacket *) NULL)      break;    for (x=0; x < (ssize_t) image->columns; x++)      *q++=background_color;    if (SyncAuthenticPixels(image,exception) == MagickFalse)      break;  }  (void) CopyMagickString(image->magick,image_info->magick,MaxTextExtent);  (void) CopyMagickString(image->filename,image_info->filename,MaxTextExtent);  /*    Prepare drawing commands  */  y=20;  draw_info=CloneDrawInfo(image_info,(DrawInfo *) NULL);  draw_info->font=AcquireString(image->filename);  ConcatenateString(&draw_info->primitive,"push graphic-context/n");  (void) FormatLocaleString(buffer,MaxTextExtent," viewbox 0 0 %.20g %.20g/n",    (double) image->columns,(double) image->rows);  ConcatenateString(&draw_info->primitive,buffer);  ConcatenateString(&draw_info->primitive," font-size 18/n");  (void) FormatLocaleString(buffer,MaxTextExtent," text 10,%.20g '",(double) y);  ConcatenateString(&draw_info->primitive,buffer);  text=EscapeString(Text,'"');  ConcatenateString(&draw_info->primitive,text);  text=DestroyString(text);  (void) FormatLocaleString(buffer,MaxTextExtent,"'/n");  ConcatenateString(&draw_info->primitive,buffer);  y+=20*(ssize_t) MultilineCensus((char *) Text)+20;  for (i=12; i <= 72; i+=6)  {    y+=i+12;    ConcatenateString(&draw_info->primitive," font-size 18/n");    (void) FormatLocaleString(buffer,MaxTextExtent," text 10,%.20g '%.20g'/n",      (double) y,(double) i);    ConcatenateString(&draw_info->primitive,buffer);    (void) FormatLocaleString(buffer,MaxTextExtent," font-size %.20g/n",      (double) i);    ConcatenateString(&draw_info->primitive,buffer);    (void) FormatLocaleString(buffer,MaxTextExtent," text 50,%.20g "      "'That which does not destroy me, only makes me stronger.'/n",(double) y);    ConcatenateString(&draw_info->primitive,buffer);    if (i >= 24)      i+=6;  }  ConcatenateString(&draw_info->primitive,"pop graphic-context");  (void) DrawImage(image,draw_info);  /*    Relinquish resources.  */  draw_info=DestroyDrawInfo(draw_info);  (void) CloseBlob(image);  return(GetFirstImageInList(image));}
开发者ID:primary0,项目名称:AndroidMagickActivity,代码行数:101,


示例10: ReadPANGOImage

//.........这里部分代码省略.........  if (image->columns == 0)    {      pango_layout_get_extents(layout,NULL,&extent);      image->columns=(extent.x+extent.width+PANGO_SCALE/2)/PANGO_SCALE+2*page.x;    }  else    {      image->columns-=2*page.x;      pango_layout_set_width(layout,(int) ((PANGO_SCALE*image->columns*        (image->resolution.x == 0.0 ? 90.0 : image->resolution.x)+45.0)/90.0+        0.5));    }  if (image->rows == 0)    {      pango_layout_get_extents(layout,NULL,&extent);      image->rows=(extent.y+extent.height+PANGO_SCALE/2)/PANGO_SCALE+2*page.y;    }  else    {      image->rows-=2*page.y;      pango_layout_set_height(layout,(int) ((PANGO_SCALE*image->rows*        (image->resolution.y == 0.0 ? 90.0 : image->resolution.y)+45.0)/90.0+        0.5));    }  /*    Render markup.  */  stride=(size_t) cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32,    image->columns);  pixels=(unsigned char *) AcquireQuantumMemory(image->rows,stride*    sizeof(*pixels));  if (pixels == (unsigned char *) NULL)    {      draw_info=DestroyDrawInfo(draw_info);      caption=DestroyString(caption);      ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");    }  surface=cairo_image_surface_create_for_data(pixels,CAIRO_FORMAT_ARGB32,    image->columns,image->rows,stride);  cairo_image=cairo_create(surface);  cairo_set_operator(cairo_image,CAIRO_OPERATOR_CLEAR);  cairo_paint(cairo_image);  cairo_set_operator(cairo_image,CAIRO_OPERATOR_OVER);  cairo_translate(cairo_image,page.x,page.y);  pango_cairo_show_layout(cairo_image,layout);  cairo_destroy(cairo_image);  cairo_surface_destroy(surface);  g_object_unref(layout);  g_object_unref(fontmap);  /*    Convert surface to image.  */  (void) SetImageBackgroundColor(image,exception);  p=pixels;  GetPixelInfo(image,&fill_color);  for (y=0; y < (ssize_t) image->rows; y++)  {    register Quantum      *q;    register ssize_t      x;    q=GetAuthenticPixels(image,0,y,image->columns,1,exception);    if (q == (Quantum *) NULL)      break;
开发者ID:epu,项目名称:ImageMagick,代码行数:67,


示例11: assert

//.........这里部分代码省略.........%  the X server color range as specified by the filename.  It allocates the%  memory necessary for the new Image structure and returns a pointer to the%  new image.%%  The format of the ReadMVGImage method is:%%      Image *ReadMVGImage(const ImageInfo *image_info,ExceptionInfo *exception)%%  A description of each parameter follows:%%    o image:  Method ReadMVGImage returns a pointer to the image after%      creating it. A null image is returned if there is a memory shortage%      or if the image cannot be read.%%    o image_info: Specifies a pointer to a ImageInfo structure.%%    o exception: return any errors or warnings in this structure.%%*/static Image *ReadMVGImage(const ImageInfo *image_info,ExceptionInfo *exception){#define BoundingBox  "viewbox"  DrawInfo    *draw_info;  Image    *image;  size_t    length;  unsigned int    status;  /*    Open image.  */  assert(image_info != (const ImageInfo *) NULL);  assert(image_info->signature == MagickSignature);  assert(exception != (ExceptionInfo *) NULL);  assert(exception->signature == MagickSignature);  image=AllocateImage(image_info);  status=OpenBlob(image_info,image,ReadBinaryBlobMode,exception);  if (status == False)    ThrowReaderException(FileOpenError,UnableToOpenFile,image);  if ((image->columns == 0) || (image->rows == 0))    {      char        primitive[MaxTextExtent];      register char        *p;      SegmentInfo        bounds;      /*        Determine size of image canvas.      */      while (ReadBlobString(image,primitive) != (char *) NULL)      {        for (p=primitive; (*p == ' ') || (*p == '/t'); p++);        if (LocaleNCompare(BoundingBox,p,strlen(BoundingBox)) != 0)          continue;        (void) sscanf(p,"viewbox %lf %lf %lf %lf",&bounds.x1,&bounds.y1,          &bounds.x2,&bounds.y2);        image->columns=(unsigned long) (bounds.x2-bounds.x1+0.5);        image->rows=(unsigned long) (bounds.y2-bounds.y1+0.5);        break;      }    }  if ((image->columns == 0) || (image->rows == 0))    ThrowReaderException(OptionError,MustSpecifyImageSize,image);  if (CheckImagePixelLimits(image, exception) != MagickPass)    ThrowReaderException(ResourceLimitError,ImagePixelLimitExceeded,image);  /*    Render drawing.  */  (void) SetImage(image,OpaqueOpacity);  draw_info=CloneDrawInfo(image_info,(DrawInfo *) NULL);  draw_info->fill=image_info->pen;  if (GetBlobStreamData(image))    draw_info->primitive=AllocateString((char *) GetBlobStreamData(image));  else    draw_info->primitive=(char *) FileToBlob(image->filename,&length,exception);  if (draw_info->primitive == (char *) NULL)    {      DestroyDrawInfo(draw_info);      CloseBlob(image);      return (Image *) NULL;    }  (void) DrawImage(image,draw_info);  DestroyDrawInfo(draw_info);  CloseBlob(image);  return(image);}
开发者ID:hank2015,项目名称:testCMS,代码行数:101,


示例12: GradientImage

MagickExport MagickBooleanType GradientImage(Image *image,  const GradientType type,const SpreadMethod method,const StopInfo *stops,  const size_t number_stops,ExceptionInfo *exception){  const char    *artifact;  DrawInfo    *draw_info;  GeometryInfo    geometry_info;  GradientInfo    *gradient;  MagickBooleanType    status;  MagickStatusType    flags;  /*    Set gradient start-stop end points.  */  assert(image != (const Image *) NULL);  assert(image->signature == MagickCoreSignature);  if (image->debug != MagickFalse)    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);  assert(stops != (const StopInfo *) NULL);  assert(number_stops > 0);  draw_info=AcquireDrawInfo();  gradient=(&draw_info->gradient);  gradient->type=type;  gradient->bounding_box.width=image->columns;  gradient->bounding_box.height=image->rows;  artifact=GetImageArtifact(image,"gradient:bounding-box");  if (artifact != (const char *) NULL)    (void) ParseAbsoluteGeometry(artifact,&gradient->bounding_box);  gradient->gradient_vector.x2=(double) image->columns-1.0;  gradient->gradient_vector.y2=(double) image->rows-1.0;  if ((type == LinearGradient) && (gradient->gradient_vector.y2 != 0.0))    gradient->gradient_vector.x2=0.0;  artifact=GetImageArtifact(image,"gradient:vector");  if (artifact != (const char *) NULL)    {      flags=ParseGeometry(artifact,&geometry_info);      gradient->gradient_vector.x1=geometry_info.rho;      if ((flags & SigmaValue) != 0)        gradient->gradient_vector.y1=geometry_info.sigma;      if ((flags & XiValue) != 0)        gradient->gradient_vector.x2=geometry_info.xi;      if ((flags & PsiValue) != 0)        gradient->gradient_vector.y2=geometry_info.psi;    }  gradient->center.x=(double) gradient->gradient_vector.x2/2.0;  gradient->center.y=(double) gradient->gradient_vector.y2/2.0;  artifact=GetImageArtifact(image,"gradient:center");  if (artifact != (const char *) NULL)    {      flags=ParseGeometry(artifact,&geometry_info);      gradient->center.x=geometry_info.rho;      if ((flags & SigmaValue) != 0)        gradient->center.y=geometry_info.sigma;    }  gradient->radius=MagickMax(gradient->center.x,gradient->center.y);  artifact=GetImageArtifact(image,"gradient:radius");  if (artifact != (const char *) NULL)    gradient->radius=StringToDouble(artifact,(char **) NULL);  gradient->spread=method;  /*    Define the gradient to fill between the stops.  */  gradient->number_stops=number_stops;  gradient->stops=(StopInfo *) AcquireQuantumMemory(gradient->number_stops,    sizeof(*gradient->stops));  if (gradient->stops == (StopInfo *) NULL)    ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",      image->filename);  (void) CopyMagickMemory(gradient->stops,stops,(size_t) number_stops*    sizeof(*stops));  /*    Draw a gradient on the image.  */  status=DrawGradientImage(image,draw_info,exception);  draw_info=DestroyDrawInfo(draw_info);  return(status);}
开发者ID:eulerhit,项目名称:ImageMagick,代码行数:88,


示例13: ReadTTFImage

//.........这里部分代码省略.........  Image    *image;  long    y;  MagickBooleanType    status;  PixelPacket    background_color;  register long    i,    x;  register PixelPacket    *q;  /*    Open image file.  */  assert(image_info != (const ImageInfo *) NULL);  assert(image_info->signature == MagickSignature);  if (image_info->debug != MagickFalse)    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",      image_info->filename);  assert(exception != (ExceptionInfo *) NULL);  assert(exception->signature == MagickSignature);  image=AllocateImage(image_info);  image->columns=800;  image->rows=480;  type_info=GetTypeInfo(image_info->filename,exception);  if ((type_info != (const TypeInfo *) NULL) &&      (type_info->glyphs != (char *) NULL))    (void) CopyMagickString(image->filename,type_info->glyphs,MaxTextExtent);  status=OpenBlob(image_info,image,ReadBinaryBlobMode,exception);  if (status == MagickFalse)    {      image=DestroyImageList(image);      return((Image *) NULL);    }  /*    Color canvas with background color  */  background_color=image_info->background_color;  for (y=0; y < (long) image->rows; y++)  {    q=SetImagePixels(image,0,y,image->columns,1);    if (q == (PixelPacket *) NULL)      break;    for (x=0; x < (long) image->columns; x++)      *q++=background_color;    if (SyncImagePixels(image) == MagickFalse)      break;  }  (void) CopyMagickString(image->magick,image_info->magick,MaxTextExtent);  (void) CopyMagickString(image->filename,image_info->filename,MaxTextExtent);  /*    Prepare drawing commands  */  y=20;  draw_info=CloneDrawInfo(image_info,(DrawInfo *) NULL);  draw_info->font=AcquireString(image->filename);  draw_info->fill=image_info->pen;  ConcatenateString(&draw_info->primitive,"push graphic-context/n");  (void) FormatMagickString(buffer,MaxTextExtent," viewbox 0 0 %lu %lu/n",    image->columns,image->rows);  ConcatenateString(&draw_info->primitive,buffer);  ConcatenateString(&draw_info->primitive," font-size 18/n");  (void) FormatMagickString(buffer,MaxTextExtent," text 10,%ld '",y);  ConcatenateString(&draw_info->primitive,buffer);  ConcatenateString(&draw_info->primitive,Text);  (void) FormatMagickString(buffer,MaxTextExtent,"'/n");  ConcatenateString(&draw_info->primitive,buffer);  y+=20*MultilineCensus((char *) Text)+20;  for (i=12; i <= 72; i+=6)  {    y+=i+12;    ConcatenateString(&draw_info->primitive," font-size 18/n");    (void) FormatMagickString(buffer,MaxTextExtent," text 10,%ld '%ld'/n",y,i);    ConcatenateString(&draw_info->primitive,buffer);    (void) FormatMagickString(buffer,MaxTextExtent," font-size %ld/n",i);    ConcatenateString(&draw_info->primitive,buffer);    (void) FormatMagickString(buffer,MaxTextExtent," text 50,%ld "      "'That which does not destroy me, only makes me stronger.'/n",y);    ConcatenateString(&draw_info->primitive,buffer);    if (i >= 24)      i+=6;  }  ConcatenateString(&draw_info->primitive,"pop graphic-context");  (void) DrawImage(image,draw_info);  /*    Free resources.  */  draw_info=DestroyDrawInfo(draw_info);  CloseBlob(image);  return(GetFirstImageInList(image));}
开发者ID:miettal,项目名称:armadillo420_standard,代码行数:101,


示例14: ReadLABELImage

//.........这里部分代码省略.........        (void) CloneString(&draw_info->geometry,geometry);      status=GetMultilineTypeMetrics(image,draw_info,&metrics);      image->rows=(size_t) floor(metrics.height+draw_info->stroke_width+0.5);    }  if (image_info->pointsize == 0.0)    {      double        high,        low;      /*        Auto fit text into bounding box.      */      for ( ; ; draw_info->pointsize*=2.0)      {        (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",          -metrics.bounds.x1,metrics.ascent);        if (draw_info->gravity == UndefinedGravity)          (void) CloneString(&draw_info->geometry,geometry);        status=GetMultilineTypeMetrics(image,draw_info,&metrics);        (void) status;        width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5);        height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5);        if ((width >= image->columns) && (height >= image->rows))          break;        if ((width >= (image->columns << 1)) || (height >= (image->rows << 1)))          break;      }      high=draw_info->pointsize/2.0;      for (low=high/2.0; (high-low) > 1.0; )      {        draw_info->pointsize=(low+high)/2.0;        (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",          -metrics.bounds.x1,metrics.ascent);        if (draw_info->gravity == UndefinedGravity)          (void) CloneString(&draw_info->geometry,geometry);        status=GetMultilineTypeMetrics(image,draw_info,&metrics);        width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5);        height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5);        if ((width <= image->columns) && (height <= image->rows))          low=draw_info->pointsize+1.0;        else          high=draw_info->pointsize-1.0;      }      for (draw_info->pointsize=(low+high)/2.0; (high-low) > 1.0; )      {        (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",          -metrics.bounds.x1,metrics.ascent);        if (draw_info->gravity == UndefinedGravity)          (void) CloneString(&draw_info->geometry,geometry);        status=GetMultilineTypeMetrics(image,draw_info,&metrics);        width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5);        height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5);        if ((width <= image->columns) && (height <= image->rows))          break;        draw_info->pointsize--;      }      draw_info->pointsize=floor(draw_info->pointsize+0.5);    }  status=GetMultilineTypeMetrics(image,draw_info,&metrics);  if (status == MagickFalse)    {      InheritException(exception,&image->exception);      image=DestroyImageList(image);      return((Image *) NULL);    }  if (draw_info->gravity == UndefinedGravity)    {      (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",        -metrics.bounds.x1+draw_info->stroke_width/2.0,metrics.ascent+        draw_info->stroke_width/2.0);      (void) CloneString(&draw_info->geometry,geometry);    }  if (draw_info->direction == RightToLeftDirection)    {      if (draw_info->direction == RightToLeftDirection)        (void) FormatLocaleString(geometry,MaxTextExtent,"%+g%+g",          image->columns-(metrics.bounds.x2+draw_info->stroke_width/2.0),          metrics.ascent+draw_info->stroke_width/2.0);      (void) CloneString(&draw_info->geometry,geometry);    }  if (SetImageBackgroundColor(image) == MagickFalse)    {      InheritException(exception,&image->exception);      image=DestroyImageList(image);      return((Image *) NULL);    }  (void) AnnotateImage(image,draw_info);  if (image_info->pointsize == 0.0)    {      char        pointsize[MaxTextExtent];      (void) FormatLocaleString(pointsize,MaxTextExtent,"%.20g",        draw_info->pointsize);      (void) SetImageProperty(image,"label:pointsize",pointsize);    }  draw_info=DestroyDrawInfo(draw_info);  return(GetFirstImageInList(image));}
开发者ID:0xPr0xy,项目名称:ImageMagick,代码行数:101,


示例15: ReadTEXTImage

//.........这里部分代码省略.........    {      ImageInfo        *read_info;      read_info=CloneImageInfo(image_info);      SetImageInfoBlob(read_info,(void *) NULL,0);      (void) CopyMagickString(read_info->filename,image_info->texture,        MaxTextExtent);      texture=ReadImage(read_info,exception);      read_info=DestroyImageInfo(read_info);    }  /*    Annotate the text image.  */  (void) SetImageBackgroundColor(image);  draw_info=CloneDrawInfo(image_info,(DrawInfo *) NULL);  (void) CloneString(&draw_info->text,image_info->filename);  (void) FormatLocaleString(geometry,MaxTextExtent,"0x0%+ld%+ld",(long) page.x,    (long) page.y);  (void) CloneString(&draw_info->geometry,geometry);  status=GetTypeMetrics(image,draw_info,&metrics);  if (status == MagickFalse)    ThrowReaderException(TypeError,"UnableToGetTypeMetrics");  page.y=(ssize_t) ceil((double) page.y+metrics.ascent-0.5);  (void) FormatLocaleString(geometry,MaxTextExtent,"0x0%+ld%+ld",(long) page.x,    (long) page.y);  (void) CloneString(&draw_info->geometry,geometry);  (void) CopyMagickString(filename,image_info->filename,MaxTextExtent);  if (*draw_info->text != '/0')    *draw_info->text='/0';  p=text;  for (offset=2*page.y; p != (char *) NULL; )  {    /*      Annotate image with text.    */    (void) ConcatenateString(&draw_info->text,text);    (void) ConcatenateString(&draw_info->text,"/n");    offset+=(ssize_t) (metrics.ascent-metrics.descent);    if (image->previous == (Image *) NULL)      {        status=SetImageProgress(image,LoadImageTag,offset,image->rows);        if (status == MagickFalse)          break;      }    p=ReadBlobString(image,text);    if ((offset < (ssize_t) image->rows) && (p != (char *) NULL))      continue;    if (texture != (Image *) NULL)      {        MagickProgressMonitor          progress_monitor;        progress_monitor=SetImageProgressMonitor(image,          (MagickProgressMonitor) NULL,image->client_data);        (void) TextureImage(image,texture);        (void) SetImageProgressMonitor(image,progress_monitor,          image->client_data);      }    (void) AnnotateImage(image,draw_info);    if (p == (char *) NULL)      break;    /*      Page is full-- allocate next image structure.    */    *draw_info->text='/0';    offset=2*page.y;    AcquireNextImage(image_info,image);    if (GetNextImageInList(image) == (Image *) NULL)      {        image=DestroyImageList(image);        return((Image *) NULL);      }    image->next->columns=image->columns;    image->next->rows=image->rows;    image=SyncNextImageInList(image);    (void) CopyMagickString(image->filename,filename,MaxTextExtent);    (void) SetImageBackgroundColor(image);    status=SetImageProgress(image,LoadImagesTag,TellBlob(image),      GetBlobSize(image));    if (status == MagickFalse)      break;  }  if (texture != (Image *) NULL)    {      MagickProgressMonitor        progress_monitor;      progress_monitor=SetImageProgressMonitor(image,        (MagickProgressMonitor) NULL,image->client_data);      (void) TextureImage(image,texture);      (void) SetImageProgressMonitor(image,progress_monitor,image->client_data);    }  (void) AnnotateImage(image,draw_info);  if (texture != (Image *) NULL)    texture=DestroyImage(texture);  draw_info=DestroyDrawInfo(draw_info);  (void) CloseBlob(image);  return(GetFirstImageInList(image));}
开发者ID:GalliumOS,项目名称:imagemagick,代码行数:101,


示例16: assert

//.........这里部分代码省略.........%      Image *ReadMVGImage(const ImageInfo *image_info,ExceptionInfo *exception)%%  A description of each parameter follows:%%    o image_info: the image info.%%    o exception: return any errors or warnings in this structure.%*/static Image *ReadMVGImage(const ImageInfo *image_info,ExceptionInfo *exception){#define BoundingBox  "viewbox"    DrawInfo    *draw_info;    Image    *image;    MagickBooleanType    status;    /*      Open image.    */    assert(image_info != (const ImageInfo *) NULL);    assert(image_info->signature == MagickSignature);    if (image_info->debug != MagickFalse)        (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",                              image_info->filename);    assert(exception != (ExceptionInfo *) NULL);    assert(exception->signature == MagickSignature);    image=AcquireImage(image_info);    status=OpenBlob(image_info,image,ReadBinaryBlobMode,exception);    if (status == MagickFalse)    {        image=DestroyImageList(image);        return((Image *) NULL);    }    if ((image->columns == 0) || (image->rows == 0))    {        char        primitive[MaxTextExtent];        register char        *p;        SegmentInfo        bounds;        /*          Determine size of image canvas.        */        while (ReadBlobString(image,primitive) != (char *) NULL)        {            for (p=primitive; (*p == ' ') || (*p == '/t'); p++) ;            if (LocaleNCompare(BoundingBox,p,strlen(BoundingBox)) != 0)                continue;            (void) sscanf(p,"viewbox %lf %lf %lf %lf",&bounds.x1,&bounds.y1,                          &bounds.x2,&bounds.y2);            image->columns=(size_t) floor((bounds.x2-bounds.x1)+0.5);            image->rows=(size_t) floor((bounds.y2-bounds.y1)+0.5);            break;        }    }    if ((image->columns == 0) || (image->rows == 0))        ThrowReaderException(OptionError,"MustSpecifyImageSize");    draw_info=CloneDrawInfo(image_info,(DrawInfo *) NULL);    draw_info->affine.sx=image->x_resolution == 0.0 ? 1.0 : image->x_resolution/                         DefaultResolution;    draw_info->affine.sy=image->y_resolution == 0.0 ? 1.0 : image->y_resolution/                         DefaultResolution;    image->columns=(size_t) (draw_info->affine.sx*image->columns);    image->rows=(size_t) (draw_info->affine.sy*image->rows);    if (SetImageBackgroundColor(image) == MagickFalse)    {        InheritException(exception,&image->exception);        image=DestroyImageList(image);        return((Image *) NULL);    }    /*      Render drawing.    */    if (GetBlobStreamData(image) == (unsigned char *) NULL)        draw_info->primitive=FileToString(image->filename,~0UL,exception);    else    {        draw_info->primitive=(char *) AcquireMagickMemory(GetBlobSize(image)+1);        if (draw_info->primitive != (char *) NULL)        {            CopyMagickMemory(draw_info->primitive,GetBlobStreamData(image),                             GetBlobSize(image));            draw_info->primitive[GetBlobSize(image)]='/0';        }    }    (void) DrawImage(image,draw_info);    draw_info=DestroyDrawInfo(draw_info);    (void) CloseBlob(image);    return(GetFirstImageInList(image));}
开发者ID:leloulight,项目名称:cs225,代码行数:101,


示例17: ReadLABELImage

//.........这里部分代码省略.........        for ( ; ; draw_info->pointsize*=2.0)        {          (void) FormatLocaleString(geometry,MagickPathExtent,"%+g%+g",            -metrics.bounds.x1,metrics.ascent);          if (draw_info->gravity == UndefinedGravity)            (void) CloneString(&draw_info->geometry,geometry);          status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception);          width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5);          height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5);          if ((image->columns != 0) && (image->rows != 0))            {              if ((width >= image->columns) && (height >= image->rows))                break;            }          else            if (((image->columns != 0) && (width >= image->columns)) ||                ((image->rows != 0) && (height >= image->rows)))              break;        }        high=draw_info->pointsize;        for (low=1.0; (high-low) > 0.5; )        {          draw_info->pointsize=(low+high)/2.0;          (void) FormatLocaleString(geometry,MagickPathExtent,"%+g%+g",            -metrics.bounds.x1,metrics.ascent);          if (draw_info->gravity == UndefinedGravity)            (void) CloneString(&draw_info->geometry,geometry);          status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception);          width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5);          height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5);          if ((image->columns != 0) && (image->rows != 0))            {              if ((width < image->columns) && (height < image->rows))                low=draw_info->pointsize+0.5;              else                high=draw_info->pointsize-0.5;            }          else            if (((image->columns != 0) && (width < image->columns)) ||                ((image->rows != 0) && (height < image->rows)))              low=draw_info->pointsize+0.5;            else              high=draw_info->pointsize-0.5;        }        draw_info->pointsize=(low+high)/2.0-0.5;      }   status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception);   if (status == MagickFalse)     {      draw_info=DestroyDrawInfo(draw_info);       image=DestroyImageList(image);       return((Image *) NULL);     }  if (image->columns == 0)    image->columns=(size_t) (metrics.width+draw_info->stroke_width+0.5);  if (image->columns == 0)    image->columns=(size_t) (draw_info->pointsize+draw_info->stroke_width+0.5);  if (image->rows == 0)    image->rows=(size_t) (metrics.ascent-metrics.descent+      draw_info->stroke_width+0.5);  if (image->rows == 0)    image->rows=(size_t) (draw_info->pointsize+draw_info->stroke_width+0.5);  status=SetImageExtent(image,image->columns,image->rows,exception);  if (status == MagickFalse)    {      draw_info=DestroyDrawInfo(draw_info);      return(DestroyImageList(image));    }  if (SetImageBackgroundColor(image,exception) == MagickFalse)    {      draw_info=DestroyDrawInfo(draw_info);      image=DestroyImageList(image);      return((Image *) NULL);    }  /*    Draw label.  */  (void) FormatLocaleString(geometry,MagickPathExtent,"%+g%+g",    draw_info->direction == RightToLeftDirection ? image->columns-    metrics.bounds.x2 : 0.0,draw_info->gravity == UndefinedGravity ?    metrics.ascent : 0.0);  draw_info->geometry=AcquireString(geometry);  status=AnnotateImage(image,draw_info,exception);  if (image_info->pointsize == 0.0)    {      char        pointsize[MagickPathExtent];      (void) FormatLocaleString(pointsize,MagickPathExtent,"%.20g",        draw_info->pointsize);      (void) SetImageProperty(image,"label:pointsize",pointsize,exception);    }  draw_info=DestroyDrawInfo(draw_info);  if (status == MagickFalse)    {      image=DestroyImageList(image);      return((Image *) NULL);    }  return(GetFirstImageInList(image));}
开发者ID:DINKIN,项目名称:ImageMagick,代码行数:101,


示例18: assert

//.........这里部分代码省略.........    {      (void) ConcatenateMagickString(montage->directory,        image_list[tile]->filename,extent);      (void) ConcatenateMagickString(montage->directory,"/n",extent);      tile++;    }    progress_monitor=SetImageProgressMonitor(montage,(MagickProgressMonitor)      NULL,montage->client_data);    if (texture != (Image *) NULL)      (void) TextureImage(montage,texture,exception);    if (montage_info->title != (char *) NULL)      {        DrawInfo          *draw_clone_info;        TypeMetric          tile_metrics;        /*          Annotate composite image with title.        */        draw_clone_info=CloneDrawInfo(image_info,draw_info);        draw_clone_info->gravity=CenterGravity;        draw_clone_info->pointsize*=2.0;        (void) GetTypeMetrics(image_list[0],draw_clone_info,&tile_metrics,          exception);        (void) FormatLocaleString(tile_geometry,MagickPathExtent,          "%.20gx%.20g%+.20g%+.20g",(double) montage->columns,(double)          (tile_metrics.ascent-tile_metrics.descent),0.0,          (double) extract_info.y+4);        (void) CloneString(&draw_clone_info->geometry,tile_geometry);        (void) CloneString(&draw_clone_info->text,title);        (void) AnnotateImage(montage,draw_clone_info,exception);        draw_clone_info=DestroyDrawInfo(draw_clone_info);      }    (void) SetImageProgressMonitor(montage,progress_monitor,      montage->client_data);    /*      Copy tile to the composite.    */    x_offset=0;    y_offset=0;    if (montage_info->tile != (char *) NULL)      GetMontageGeometry(montage_info->tile,number_images,&x_offset,&y_offset,        &sans,&sans);    x_offset+=extract_info.x;    y_offset+=(ssize_t) title_offset+extract_info.y;    max_height=0;    status=MagickTrue;    for (tile=0; tile < MagickMin((ssize_t) tiles_per_page,(ssize_t) number_images); tile++)    {      /*        Copy this tile to the composite.      */      image=CloneImage(image_list[tile],0,0,MagickTrue,exception);      if (image == (Image *) NULL)        ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");      progress_monitor=SetImageProgressMonitor(image,        (MagickProgressMonitor) NULL,image->client_data);      width=concatenate != MagickFalse ? image->columns : extract_info.width;      if (image->rows > max_height)        max_height=image->rows;      height=concatenate != MagickFalse ? max_height : extract_info.height;      if (border_width != 0)        {          Image
开发者ID:vcgato29,项目名称:ImageMagick,代码行数:67,


示例19: assert

//.........这里部分代码省略.........  image->rows=(unsigned long)    ceil(((page.height*image->y_resolution)/dy_resolution)-0.5);  texture=(Image *) NULL;  if (image_info->texture != (char *) NULL)    {      ImageInfo        *clone_info;      clone_info=CloneImageInfo(image_info);      clone_info->blob=(void *) NULL;      clone_info->length=0;      (void) strlcpy(clone_info->filename,image_info->texture,MaxTextExtent);      texture=ReadImage(clone_info,exception);      DestroyImageInfo(clone_info);    }  /*    Annotate the text image.  */  (void) SetImage(image,OpaqueOpacity);  draw_info=CloneDrawInfo(image_info,(DrawInfo *) NULL);  draw_info->fill=image_info->pen;  (void) CloneString(&draw_info->text,image_info->filename);  FormatString(geometry,"0x0%+ld%+ld",page.x,page.y);  (void) CloneString(&draw_info->geometry,geometry);  status=GetTypeMetrics(image,draw_info,&metrics);  if (status == False)    ThrowReaderException(TypeError,UnableToGetTypeMetrics,image);  (void) strlcpy(filename,image_info->filename,MaxTextExtent);  if (draw_info->text != '/0')    *draw_info->text='/0';    for (offset=2*page.y; p != (char *) NULL; )    {      /*	Annotate image with text.      */      (void) ConcatenateString(&draw_info->text,text);      (void) ConcatenateString(&draw_info->text,"//n");      offset+=(long) (metrics.ascent-metrics.descent);      if (image->previous == (Image *) NULL)	if (QuantumTick(offset,image->rows))	  if (!MagickMonitorFormatted(offset,image->rows,&image->exception,				      LoadImageText,image->filename,				      image->columns,image->rows))	    break;      p=ReadBlobString(image,text);      if ((offset < (long) image->rows) && (p != (char *) NULL))	continue;      if (texture != (Image *) NULL)	{	  MonitorHandler	    handler;	  handler=SetMonitorHandler((MonitorHandler) NULL);	  (void) TextureImage(image,texture);	  (void) SetMonitorHandler(handler);	}      (void) AnnotateImage(image,draw_info);      if (p == (char *) NULL)	break;      /*	Page is full-- allocate next image structure.      */      *draw_info->text='/0';      offset=2*page.y;      AllocateNextImage(image_info,image);      if (image->next == (Image *) NULL)	{	  DestroyImageList(image);	  return((Image *) NULL);	}      image->next->columns=image->columns;      image->next->rows=image->rows;      image=SyncNextImageInList(image);      (void) strlcpy(image->filename,filename,MaxTextExtent);      (void) SetImage(image,OpaqueOpacity);      if (!MagickMonitorFormatted(TellBlob(image),GetBlobSize(image),exception,				  LoadImagesText,image->filename))	break;    }  if (texture != (Image *) NULL)    {      MonitorHandler        handler;      handler=SetMonitorHandler((MonitorHandler) NULL);      (void) TextureImage(image,texture);      (void) SetMonitorHandler(handler);    }  (void) AnnotateImage(image,draw_info);  if (texture != (Image *) NULL)    DestroyImage(texture);  DestroyDrawInfo(draw_info);  while (image->previous != (Image *) NULL)    image=image->previous; TXT_FINISH:  CloseBlob(image);  return(image);}
开发者ID:airhuman,项目名称:cwf,代码行数:101,



注:本文中的DestroyDrawInfo函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ DestroyExceptionInfo函数代码示例
C++ DestroyCursor函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。