1 /* 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3 % % 4 % % 5 % % 6 % M M AAA GGGG IIIII CCCC K K % 7 % MM MM A A G I C K K % 8 % M M M AAAAA G GGG I C KKK % 9 % M M A A G G I C K K % 10 % M M A A GGGG IIIII CCCC K K % 11 % % 12 % PPPP RRRR OOO PPPP EEEEE RRRR TTTTT Y Y % 13 % P P R R O O P P E R R T Y Y % 14 % PPPP RRRR O O PPPP EEE RRRR T Y % 15 % P R R O O P E R R T Y % 16 % P R R OOO P EEEEE R R T Y % 17 % % 18 % % 19 % Set or Get MagickWand Properties, Options, or Profiles % 20 % % 21 % Software Design % 22 % Cristy % 23 % August 2003 % 24 % % 25 % % 26 % Copyright 1999-2021 ImageMagick Studio LLC, a non-profit organization % 27 % dedicated to making software imaging solutions freely available. % 28 % % 29 % You may not use this file except in compliance with the License. You may % 30 % obtain a copy of the License at % 31 % % 32 % https://imagemagick.org/script/license.php % 33 % % 34 % Unless required by applicable law or agreed to in writing, software % 35 % distributed under the License is distributed on an "AS IS" BASIS, % 36 % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. % 37 % See the License for the specific language governing permissions and % 38 % limitations under the License. % 39 % % 40 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 41 % 42 % 43 % 44 */ 45 46 /* 47 Include declarations. 48 */ 49 #include "MagickWand/studio.h" 50 #include "MagickWand/MagickWand.h" 51 #include "MagickWand/magick-wand-private.h" 52 #include "MagickWand/wand.h" 53 #include "MagickCore/image-private.h" 54 #include "MagickCore/string-private.h" 55 56 /* 57 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 58 % % 59 % % 60 % % 61 % M a g i c k D e l e t e I m a g e A r t i f a c t % 62 % % 63 % % 64 % % 65 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 66 % 67 % MagickDeleteImageArtifact() deletes a wand artifact. 68 % 69 % The format of the MagickDeleteImageArtifact method is: 70 % 71 % MagickBooleanType MagickDeleteImageArtifact(MagickWand *wand, 72 % const char *artifact) 73 % 74 % A description of each parameter follows: 75 % 76 % o image: the image. 77 % 78 % o artifact: the image artifact. 79 % 80 */ MagickDeleteImageArtifact(MagickWand * wand,const char * artifact)81 WandExport MagickBooleanType MagickDeleteImageArtifact(MagickWand *wand, 82 const char *artifact) 83 { 84 assert(wand != (MagickWand *) NULL); 85 assert(wand->signature == MagickWandSignature); 86 if (wand->debug != MagickFalse) 87 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 88 if (wand->images == (Image *) NULL) 89 { 90 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError, 91 "ContainsNoImages","`%s'",wand->name); 92 return(MagickFalse); 93 } 94 return(DeleteImageArtifact(wand->images,artifact)); 95 } 96 97 /* 98 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 99 % % 100 % % 101 % % 102 % M a g i c k D e l e t e I m a g e P r o p e r t y % 103 % % 104 % % 105 % % 106 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 107 % 108 % MagickDeleteImageProperty() deletes a wand property. 109 % 110 % The format of the MagickDeleteImageProperty method is: 111 % 112 % MagickBooleanType MagickDeleteImageProperty(MagickWand *wand, 113 % const char *property) 114 % 115 % A description of each parameter follows: 116 % 117 % o image: the image. 118 % 119 % o property: the image property. 120 % 121 */ MagickDeleteImageProperty(MagickWand * wand,const char * property)122 WandExport MagickBooleanType MagickDeleteImageProperty(MagickWand *wand, 123 const char *property) 124 { 125 assert(wand != (MagickWand *) NULL); 126 assert(wand->signature == MagickWandSignature); 127 if (wand->debug != MagickFalse) 128 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 129 if (wand->images == (Image *) NULL) 130 { 131 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError, 132 "ContainsNoImages","`%s'",wand->name); 133 return(MagickFalse); 134 } 135 return(DeleteImageProperty(wand->images,property)); 136 } 137 138 /* 139 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 140 % % 141 % % 142 % % 143 % M a g i c k D e l e t e O p t i o n % 144 % % 145 % % 146 % % 147 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 148 % 149 % MagickDeleteOption() deletes a wand option. 150 % 151 % The format of the MagickDeleteOption method is: 152 % 153 % MagickBooleanType MagickDeleteOption(MagickWand *wand, 154 % const char *option) 155 % 156 % A description of each parameter follows: 157 % 158 % o image: the image. 159 % 160 % o option: the image option. 161 % 162 */ MagickDeleteOption(MagickWand * wand,const char * option)163 WandExport MagickBooleanType MagickDeleteOption(MagickWand *wand, 164 const char *option) 165 { 166 assert(wand != (MagickWand *) NULL); 167 assert(wand->signature == MagickWandSignature); 168 if (wand->debug != MagickFalse) 169 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 170 return(DeleteImageOption(wand->image_info,option)); 171 } 172 173 /* 174 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 175 % % 176 % % 177 % % 178 % M a g i c k G e t A n t i a l i a s % 179 % % 180 % % 181 % % 182 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 183 % 184 % MagickGetAntialias() returns the antialias property associated with the 185 % wand. 186 % 187 % The format of the MagickGetAntialias method is: 188 % 189 % MagickBooleanType MagickGetAntialias(const MagickWand *wand) 190 % 191 % A description of each parameter follows: 192 % 193 % o wand: the magick wand. 194 % 195 */ MagickGetAntialias(const MagickWand * wand)196 WandExport MagickBooleanType MagickGetAntialias(const MagickWand *wand) 197 { 198 assert(wand != (const MagickWand *) NULL); 199 assert(wand->signature == MagickWandSignature); 200 if (wand->debug != MagickFalse) 201 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 202 return(wand->image_info->antialias); 203 } 204 205 /* 206 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 207 % % 208 % % 209 % % 210 % M a g i c k G e t B a c k g r o u n d C o l o r % 211 % % 212 % % 213 % % 214 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 215 % 216 % MagickGetBackgroundColor() returns the wand background color. 217 % 218 % The format of the MagickGetBackgroundColor method is: 219 % 220 % PixelWand *MagickGetBackgroundColor(MagickWand *wand) 221 % 222 % A description of each parameter follows: 223 % 224 % o wand: the magick wand. 225 % 226 */ MagickGetBackgroundColor(MagickWand * wand)227 WandExport PixelWand *MagickGetBackgroundColor(MagickWand *wand) 228 { 229 PixelWand 230 *background_color; 231 232 assert(wand != (MagickWand *) NULL); 233 assert(wand->signature == MagickWandSignature); 234 if (wand->debug != MagickFalse) 235 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 236 background_color=NewPixelWand(); 237 PixelSetPixelColor(background_color,&wand->image_info->background_color); 238 return(background_color); 239 } 240 241 /* 242 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 243 % % 244 % % 245 % % 246 % M a g i c k G e t C o l o r s p a c e % 247 % % 248 % % 249 % % 250 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 251 % 252 % MagickGetColorspace() gets the wand colorspace type. 253 % 254 % The format of the MagickGetColorspace method is: 255 % 256 % ColorspaceType MagickGetColorspace(MagickWand *wand) 257 % 258 % A description of each parameter follows: 259 % 260 % o wand: the magick wand. 261 % 262 */ MagickGetColorspace(MagickWand * wand)263 WandExport ColorspaceType MagickGetColorspace(MagickWand *wand) 264 { 265 assert(wand != (MagickWand *) NULL); 266 assert(wand->signature == MagickWandSignature); 267 if (wand->debug != MagickFalse) 268 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 269 return(wand->image_info->colorspace); 270 } 271 272 /* 273 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 274 % % 275 % % 276 % % 277 % M a g i c k G e t C o m p r e s s i o n % 278 % % 279 % % 280 % % 281 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 282 % 283 % MagickGetCompression() gets the wand compression type. 284 % 285 % The format of the MagickGetCompression method is: 286 % 287 % CompressionType MagickGetCompression(MagickWand *wand) 288 % 289 % A description of each parameter follows: 290 % 291 % o wand: the magick wand. 292 % 293 */ MagickGetCompression(MagickWand * wand)294 WandExport CompressionType MagickGetCompression(MagickWand *wand) 295 { 296 assert(wand != (MagickWand *) NULL); 297 assert(wand->signature == MagickWandSignature); 298 if (wand->debug != MagickFalse) 299 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 300 return(wand->image_info->compression); 301 } 302 303 /* 304 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 305 % % 306 % % 307 % % 308 % M a g i c k G e t C o m p r e s s i o n Q u a l i t y % 309 % % 310 % % 311 % % 312 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 313 % 314 % MagickGetCompressionQuality() gets the wand compression quality. 315 % 316 % The format of the MagickGetCompressionQuality method is: 317 % 318 % size_t MagickGetCompressionQuality(MagickWand *wand) 319 % 320 % A description of each parameter follows: 321 % 322 % o wand: the magick wand. 323 % 324 */ MagickGetCompressionQuality(MagickWand * wand)325 WandExport size_t MagickGetCompressionQuality(MagickWand *wand) 326 { 327 assert(wand != (MagickWand *) NULL); 328 assert(wand->signature == MagickWandSignature); 329 if (wand->debug != MagickFalse) 330 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 331 return(wand->image_info->quality); 332 } 333 334 /* 335 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 336 % % 337 % % 338 % % 339 % M a g i c k G e t C o p y r i g h t % 340 % % 341 % % 342 % % 343 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 344 % 345 % MagickGetCopyright() returns the ImageMagick API copyright as a string 346 % constant. 347 % 348 % The format of the MagickGetCopyright method is: 349 % 350 % const char *MagickGetCopyright(void) 351 % 352 */ MagickGetCopyright(void)353 WandExport const char *MagickGetCopyright(void) 354 { 355 return(GetMagickCopyright()); 356 } 357 358 /* 359 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 360 % % 361 % % 362 % % 363 % M a g i c k G e t F i l e n a m e % 364 % % 365 % % 366 % % 367 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 368 % 369 % MagickGetFilename() returns the filename associated with an image sequence. 370 % 371 % The format of the MagickGetFilename method is: 372 % 373 % const char *MagickGetFilename(const MagickWand *wand) 374 % 375 % A description of each parameter follows: 376 % 377 % o wand: the magick wand. 378 % 379 */ MagickGetFilename(const MagickWand * wand)380 WandExport char *MagickGetFilename(const MagickWand *wand) 381 { 382 assert(wand != (const MagickWand *) NULL); 383 assert(wand->signature == MagickWandSignature); 384 if (wand->debug != MagickFalse) 385 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 386 return(AcquireString(wand->image_info->filename)); 387 } 388 389 /* 390 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 391 % % 392 % % 393 % % 394 % M a g i c k G e t F o n t % 395 % % 396 % % 397 % % 398 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 399 % 400 % MagickGetFont() returns the font associated with the MagickWand. 401 % 402 % The format of the MagickGetFont method is: 403 % 404 % char *MagickGetFont(MagickWand *wand) 405 % 406 % A description of each parameter follows: 407 % 408 % o wand: the magick wand. 409 % 410 */ MagickGetFont(MagickWand * wand)411 WandExport char *MagickGetFont(MagickWand *wand) 412 { 413 assert(wand != (MagickWand *) NULL); 414 assert(wand->signature == MagickWandSignature); 415 if (wand->debug != MagickFalse) 416 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 417 if (wand->image_info->font == (char *) NULL) 418 return((char *) NULL); 419 return(AcquireString(wand->image_info->font)); 420 } 421 422 /* 423 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 424 % % 425 % % 426 % % 427 % M a g i c k G e t F o r m a t % 428 % % 429 % % 430 % % 431 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 432 % 433 % MagickGetFormat() returns the format of the magick wand. 434 % 435 % The format of the MagickGetFormat method is: 436 % 437 % const char MagickGetFormat(MagickWand *wand) 438 % 439 % A description of each parameter follows: 440 % 441 % o wand: the magick wand. 442 % 443 */ MagickGetFormat(MagickWand * wand)444 WandExport char *MagickGetFormat(MagickWand *wand) 445 { 446 assert(wand != (MagickWand *) NULL); 447 assert(wand->signature == MagickWandSignature); 448 if (wand->debug != MagickFalse) 449 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 450 return(AcquireString(wand->image_info->magick)); 451 } 452 453 /* 454 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 455 % % 456 % % 457 % % 458 % M a g i c k G e t G r a v i t y % 459 % % 460 % % 461 % % 462 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 463 % 464 % MagickGetGravity() gets the wand gravity. 465 % 466 % The format of the MagickGetGravity method is: 467 % 468 % GravityType MagickGetGravity(MagickWand *wand) 469 % 470 % A description of each parameter follows: 471 % 472 % o wand: the magick wand. 473 % 474 */ MagickGetGravity(MagickWand * wand)475 WandExport GravityType MagickGetGravity(MagickWand *wand) 476 { 477 const char 478 *option; 479 480 GravityType 481 type; 482 483 assert(wand != (MagickWand *) NULL); 484 assert(wand->signature == MagickWandSignature); 485 if (wand->debug != MagickFalse) 486 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 487 option=GetImageOption(wand->image_info,"gravity"); 488 if (option == (const char *) NULL) 489 return(UndefinedGravity); 490 type=(GravityType) ParseCommandOption(MagickGravityOptions,MagickFalse, 491 option); 492 return(type); 493 } 494 495 /* 496 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 497 % % 498 % % 499 % % 500 % M a g i c k G e t H o m e U R L % 501 % % 502 % % 503 % % 504 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 505 % 506 % MagickGetHomeURL() returns the ImageMagick home URL. 507 % 508 % The format of the MagickGetHomeURL method is: 509 % 510 % char *MagickGetHomeURL(void) 511 % 512 */ MagickGetHomeURL(void)513 WandExport char *MagickGetHomeURL(void) 514 { 515 return(GetMagickHomeURL()); 516 } 517 518 /* 519 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 520 % % 521 % % 522 % % 523 % M a g i c k G e t I m a g e A r t i f a c t % 524 % % 525 % % 526 % % 527 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 528 % 529 % MagickGetImageArtifact() returns a value associated with the specified 530 % artifact. Use MagickRelinquishMemory() to free the value when you are 531 % finished with it. 532 % 533 % The format of the MagickGetImageArtifact method is: 534 % 535 % char *MagickGetImageArtifact(MagickWand *wand,const char *artifact) 536 % 537 % A description of each parameter follows: 538 % 539 % o wand: the magick wand. 540 % 541 % o artifact: the artifact. 542 % 543 */ MagickGetImageArtifact(MagickWand * wand,const char * artifact)544 WandExport char *MagickGetImageArtifact(MagickWand *wand,const char *artifact) 545 { 546 const char 547 *value; 548 549 assert(wand != (MagickWand *) NULL); 550 assert(wand->signature == MagickWandSignature); 551 if (wand->debug != MagickFalse) 552 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 553 if (wand->images == (Image *) NULL) 554 { 555 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError, 556 "ContainsNoImages","`%s'",wand->name); 557 return((char *) NULL); 558 } 559 value=GetImageArtifact(wand->images,artifact); 560 if (value == (const char *) NULL) 561 return((char *) NULL); 562 return(ConstantString(value)); 563 } 564 565 /* 566 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 567 % % 568 % % 569 % % 570 % M a g i c k G e t I m a g e P r o p e r t i e s % 571 % % 572 % % 573 % % 574 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 575 % 576 % MagickGetImageArtifacts() returns all the artifact names that match the 577 % specified pattern associated with a wand. Use MagickGetImageProperty() to 578 % return the value of a particular artifact. Use MagickRelinquishMemory() to 579 % free the value when you are finished with it. 580 % 581 % The format of the MagickGetImageArtifacts method is: 582 % 583 % char *MagickGetImageArtifacts(MagickWand *wand, 584 % const char *pattern,size_t *number_artifacts) 585 % 586 % A description of each parameter follows: 587 % 588 % o wand: the magick wand. 589 % 590 % o pattern: Specifies a pointer to a text string containing a pattern. 591 % 592 % o number_artifacts: the number artifacts associated with this wand. 593 % 594 */ MagickGetImageArtifacts(MagickWand * wand,const char * pattern,size_t * number_artifacts)595 WandExport char **MagickGetImageArtifacts(MagickWand *wand, 596 const char *pattern,size_t *number_artifacts) 597 { 598 char 599 **artifacts; 600 601 const char 602 *artifact; 603 604 ssize_t 605 i; 606 607 size_t 608 length; 609 610 assert(wand != (MagickWand *) NULL); 611 assert(wand->signature == MagickWandSignature); 612 if (wand->debug != MagickFalse) 613 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 614 if (wand->images == (Image *) NULL) 615 { 616 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError, 617 "ContainsNoImages","`%s'",wand->name); 618 return((char **) NULL); 619 } 620 (void) GetImageProperty(wand->images,"exif:*",wand->exception); 621 length=1024; 622 artifacts=(char **) AcquireQuantumMemory(length,sizeof(*artifacts)); 623 if (artifacts == (char **) NULL) 624 return((char **) NULL); 625 ResetImagePropertyIterator(wand->images); 626 artifact=GetNextImageProperty(wand->images); 627 for (i=0; artifact != (const char *) NULL; ) 628 { 629 if ((*artifact != '[') && 630 (GlobExpression(artifact,pattern,MagickFalse) != MagickFalse)) 631 { 632 if ((i+1) >= (ssize_t) length) 633 { 634 length<<=1; 635 artifacts=(char **) ResizeQuantumMemory(artifacts,length, 636 sizeof(*artifacts)); 637 if (artifacts == (char **) NULL) 638 { 639 (void) ThrowMagickException(wand->exception,GetMagickModule(), 640 ResourceLimitError,"MemoryAllocationFailed","`%s'", 641 wand->name); 642 return((char **) NULL); 643 } 644 } 645 artifacts[i]=ConstantString(artifact); 646 i++; 647 } 648 artifact=GetNextImageProperty(wand->images); 649 } 650 artifacts[i]=(char *) NULL; 651 *number_artifacts=(size_t) i; 652 return(artifacts); 653 } 654 655 /* 656 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 657 % % 658 % % 659 % % 660 % M a g i c k G e t I m a g e P r o f i l e % 661 % % 662 % % 663 % % 664 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 665 % 666 % MagickGetImageProfile() returns the named image profile. 667 % 668 % The format of the MagickGetImageProfile method is: 669 % 670 % unsigned char *MagickGetImageProfile(MagickWand *wand,const char *name, 671 % size_t *length) 672 % 673 % A description of each parameter follows: 674 % 675 % o wand: the magick wand. 676 % 677 % o name: Name of profile to return: ICC, IPTC, or generic profile. 678 % 679 % o length: the length of the profile. 680 % 681 */ MagickGetImageProfile(MagickWand * wand,const char * name,size_t * length)682 WandExport unsigned char *MagickGetImageProfile(MagickWand *wand, 683 const char *name,size_t *length) 684 { 685 const StringInfo 686 *profile; 687 688 unsigned char 689 *datum; 690 691 assert(wand != (MagickWand *) NULL); 692 assert(wand->signature == MagickWandSignature); 693 if (wand->debug != MagickFalse) 694 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 695 if (wand->images == (Image *) NULL) 696 { 697 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError, 698 "ContainsNoImages","`%s'",wand->name); 699 return((unsigned char *) NULL); 700 } 701 *length=0; 702 if (wand->images->profiles == (SplayTreeInfo *) NULL) 703 return((unsigned char *) NULL); 704 profile=GetImageProfile(wand->images,name); 705 if (profile == (StringInfo *) NULL) 706 return((unsigned char *) NULL); 707 datum=(unsigned char *) AcquireQuantumMemory(GetStringInfoLength(profile), 708 sizeof(*datum)); 709 if (datum == (unsigned char *) NULL) 710 return((unsigned char *) NULL); 711 (void) memcpy(datum,GetStringInfoDatum(profile),GetStringInfoLength(profile)); 712 *length=(size_t) GetStringInfoLength(profile); 713 return(datum); 714 } 715 716 /* 717 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 718 % % 719 % % 720 % % 721 % M a g i c k G e t I m a g e P r o f i l e s % 722 % % 723 % % 724 % % 725 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 726 % 727 % MagickGetImageProfiles() returns all the profile names that match the 728 % specified pattern associated with a wand. Use MagickGetImageProfile() to 729 % return the value of a particular property. Use MagickRelinquishMemory() to 730 % free the value when you are finished with it. 731 % 732 % The format of the MagickGetImageProfiles method is: 733 % 734 % char *MagickGetImageProfiles(MagickWand *wand,const char *pattern, 735 % size_t *number_profiles) 736 % 737 % A description of each parameter follows: 738 % 739 % o wand: the magick wand. 740 % 741 % o pattern: Specifies a pointer to a text string containing a pattern. 742 % 743 % o number_profiles: the number profiles associated with this wand. 744 % 745 */ MagickGetImageProfiles(MagickWand * wand,const char * pattern,size_t * number_profiles)746 WandExport char **MagickGetImageProfiles(MagickWand *wand,const char *pattern, 747 size_t *number_profiles) 748 { 749 char 750 **profiles; 751 752 const char 753 *property; 754 755 ssize_t 756 i; 757 758 size_t 759 length; 760 761 assert(wand != (MagickWand *) NULL); 762 assert(wand->signature == MagickWandSignature); 763 if (wand->debug != MagickFalse) 764 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 765 if (wand->images == (Image *) NULL) 766 { 767 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError, 768 "ContainsNoImages","`%s'",wand->name); 769 return((char **) NULL); 770 } 771 (void) GetImageProfile(wand->images,"exif:*"); 772 length=1024; 773 profiles=(char **) AcquireQuantumMemory(length,sizeof(*profiles)); 774 if (profiles == (char **) NULL) 775 return((char **) NULL); 776 ResetImageProfileIterator(wand->images); 777 property=GetNextImageProfile(wand->images); 778 for (i=0; property != (const char *) NULL; ) 779 { 780 if ((*property != '[') && 781 (GlobExpression(property,pattern,MagickFalse) != MagickFalse)) 782 { 783 if ((i+1) >= (ssize_t) length) 784 { 785 length<<=1; 786 profiles=(char **) ResizeQuantumMemory(profiles,length, 787 sizeof(*profiles)); 788 if (profiles == (char **) NULL) 789 { 790 (void) ThrowMagickException(wand->exception,GetMagickModule(), 791 ResourceLimitError,"MemoryAllocationFailed","`%s'", 792 wand->name); 793 return((char **) NULL); 794 } 795 } 796 profiles[i]=ConstantString(property); 797 i++; 798 } 799 property=GetNextImageProfile(wand->images); 800 } 801 profiles[i]=(char *) NULL; 802 *number_profiles=(size_t) i; 803 return(profiles); 804 } 805 806 /* 807 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 808 % % 809 % % 810 % % 811 % M a g i c k G e t I m a g e P r o p e r t y % 812 % % 813 % % 814 % % 815 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 816 % 817 % MagickGetImageProperty() returns a value associated with the specified 818 % property. Use MagickRelinquishMemory() to free the value when you are 819 % finished with it. 820 % 821 % The format of the MagickGetImageProperty method is: 822 % 823 % char *MagickGetImageProperty(MagickWand *wand,const char *property) 824 % 825 % A description of each parameter follows: 826 % 827 % o wand: the magick wand. 828 % 829 % o property: the property. 830 % 831 */ MagickGetImageProperty(MagickWand * wand,const char * property)832 WandExport char *MagickGetImageProperty(MagickWand *wand,const char *property) 833 { 834 const char 835 *value; 836 837 assert(wand != (MagickWand *) NULL); 838 assert(wand->signature == MagickWandSignature); 839 if (wand->debug != MagickFalse) 840 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 841 if (wand->images == (Image *) NULL) 842 { 843 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError, 844 "ContainsNoImages","`%s'",wand->name); 845 return((char *) NULL); 846 } 847 value=GetImageProperty(wand->images,property,wand->exception); 848 if (value == (const char *) NULL) 849 return((char *) NULL); 850 return(ConstantString(value)); 851 } 852 853 /* 854 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 855 % % 856 % % 857 % % 858 % M a g i c k G e t I m a g e P r o p e r t i e s % 859 % % 860 % % 861 % % 862 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 863 % 864 % MagickGetImageProperties() returns all the property names that match the 865 % specified pattern associated with a wand. Use MagickGetImageProperty() to 866 % return the value of a particular property. Use MagickRelinquishMemory() to 867 % free the value when you are finished with it. 868 % 869 % The format of the MagickGetImageProperties method is: 870 % 871 % char *MagickGetImageProperties(MagickWand *wand, 872 % const char *pattern,size_t *number_properties) 873 % 874 % A description of each parameter follows: 875 % 876 % o wand: the magick wand. 877 % 878 % o pattern: Specifies a pointer to a text string containing a pattern. 879 % 880 % o number_properties: the number properties associated with this wand. 881 % 882 */ MagickGetImageProperties(MagickWand * wand,const char * pattern,size_t * number_properties)883 WandExport char **MagickGetImageProperties(MagickWand *wand, 884 const char *pattern,size_t *number_properties) 885 { 886 char 887 **properties; 888 889 const char 890 *property; 891 892 ssize_t 893 i; 894 895 size_t 896 length; 897 898 assert(wand != (MagickWand *) NULL); 899 assert(wand->signature == MagickWandSignature); 900 if (wand->debug != MagickFalse) 901 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 902 if (wand->images == (Image *) NULL) 903 { 904 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError, 905 "ContainsNoImages","`%s'",wand->name); 906 return((char **) NULL); 907 } 908 (void) GetImageProperty(wand->images,"exif:*",wand->exception); 909 length=1024; 910 properties=(char **) AcquireQuantumMemory(length,sizeof(*properties)); 911 if (properties == (char **) NULL) 912 return((char **) NULL); 913 ResetImagePropertyIterator(wand->images); 914 property=GetNextImageProperty(wand->images); 915 for (i=0; property != (const char *) NULL; ) 916 { 917 if ((*property != '[') && 918 (GlobExpression(property,pattern,MagickFalse) != MagickFalse)) 919 { 920 if ((i+1) >= (ssize_t) length) 921 { 922 length<<=1; 923 properties=(char **) ResizeQuantumMemory(properties,length, 924 sizeof(*properties)); 925 if (properties == (char **) NULL) 926 { 927 (void) ThrowMagickException(wand->exception,GetMagickModule(), 928 ResourceLimitError,"MemoryAllocationFailed","`%s'", 929 wand->name); 930 return((char **) NULL); 931 } 932 } 933 properties[i]=ConstantString(property); 934 i++; 935 } 936 property=GetNextImageProperty(wand->images); 937 } 938 properties[i]=(char *) NULL; 939 *number_properties=(size_t) i; 940 return(properties); 941 } 942 943 /* 944 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 945 % % 946 % % 947 % % 948 % M a g i c k G e t I n t e r l a c e S c h e m e % 949 % % 950 % % 951 % % 952 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 953 % 954 % MagickGetInterlaceScheme() gets the wand interlace scheme. 955 % 956 % The format of the MagickGetInterlaceScheme method is: 957 % 958 % InterlaceType MagickGetInterlaceScheme(MagickWand *wand) 959 % 960 % A description of each parameter follows: 961 % 962 % o wand: the magick wand. 963 % 964 */ MagickGetInterlaceScheme(MagickWand * wand)965 WandExport InterlaceType MagickGetInterlaceScheme(MagickWand *wand) 966 { 967 assert(wand != (MagickWand *) NULL); 968 assert(wand->signature == MagickWandSignature); 969 if (wand->debug != MagickFalse) 970 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 971 return(wand->image_info->interlace); 972 } 973 974 /* 975 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 976 % % 977 % % 978 % % 979 % M a g i c k G e t I n t e r p o l a t e M e t h o d % 980 % % 981 % % 982 % % 983 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 984 % 985 % MagickGetInterpolateMethod() gets the wand compression. 986 % 987 % The format of the MagickGetInterpolateMethod method is: 988 % 989 % PixelInterpolateMethod MagickGetInterpolateMethod(MagickWand *wand) 990 % 991 % A description of each parameter follows: 992 % 993 % o wand: the magick wand. 994 % 995 */ MagickGetInterpolateMethod(MagickWand * wand)996 WandExport PixelInterpolateMethod MagickGetInterpolateMethod(MagickWand *wand) 997 { 998 const char 999 *option; 1000 1001 PixelInterpolateMethod 1002 method; 1003 1004 assert(wand != (MagickWand *) NULL); 1005 assert(wand->signature == MagickWandSignature); 1006 if (wand->debug != MagickFalse) 1007 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 1008 option=GetImageOption(wand->image_info,"interpolate"); 1009 if (option == (const char *) NULL) 1010 return(UndefinedInterpolatePixel); 1011 method=(PixelInterpolateMethod) ParseCommandOption(MagickInterpolateOptions, 1012 MagickFalse,option); 1013 return(method); 1014 } 1015 1016 /* 1017 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1018 % % 1019 % % 1020 % % 1021 % M a g i c k G e t O p t i o n % 1022 % % 1023 % % 1024 % % 1025 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1026 % 1027 % MagickGetOption() returns a value associated with a wand and the specified 1028 % key. Use MagickRelinquishMemory() to free the value when you are finished 1029 % with it. 1030 % 1031 % The format of the MagickGetOption method is: 1032 % 1033 % char *MagickGetOption(MagickWand *wand,const char *key) 1034 % 1035 % A description of each parameter follows: 1036 % 1037 % o wand: the magick wand. 1038 % 1039 % o key: the key. 1040 % 1041 */ MagickGetOption(MagickWand * wand,const char * key)1042 WandExport char *MagickGetOption(MagickWand *wand,const char *key) 1043 { 1044 const char 1045 *option; 1046 1047 assert(wand != (MagickWand *) NULL); 1048 assert(wand->signature == MagickWandSignature); 1049 if (wand->debug != MagickFalse) 1050 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 1051 option=GetImageOption(wand->image_info,key); 1052 return(ConstantString(option)); 1053 } 1054 1055 /* 1056 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1057 % % 1058 % % 1059 % % 1060 % M a g i c k G e t O p t i o n s % 1061 % % 1062 % % 1063 % % 1064 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1065 % 1066 % MagickGetOptions() returns all the option names that match the specified 1067 % pattern associated with a wand. Use MagickGetOption() to return the value 1068 % of a particular option. Use MagickRelinquishMemory() to free the value 1069 % when you are finished with it. 1070 % 1071 % The format of the MagickGetOptions method is: 1072 % 1073 % char *MagickGetOptions(MagickWand *wand,const char *pattern, 1074 % size_t *number_options) 1075 % 1076 % A description of each parameter follows: 1077 % 1078 % o wand: the magick wand. 1079 % 1080 % o pattern: Specifies a pointer to a text string containing a pattern. 1081 % 1082 % o number_options: the number options associated with this wand. 1083 % 1084 */ MagickGetOptions(MagickWand * wand,const char * pattern,size_t * number_options)1085 WandExport char **MagickGetOptions(MagickWand *wand,const char *pattern, 1086 size_t *number_options) 1087 { 1088 char 1089 **options; 1090 1091 const char 1092 *option; 1093 1094 ssize_t 1095 i; 1096 1097 size_t 1098 length; 1099 1100 assert(wand != (MagickWand *) NULL); 1101 assert(wand->signature == MagickWandSignature); 1102 if (wand->debug != MagickFalse) 1103 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 1104 if (wand->images == (Image *) NULL) 1105 { 1106 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError, 1107 "ContainsNoImages","`%s'",wand->name); 1108 return((char **) NULL); 1109 } 1110 length=1024; 1111 options=(char **) AcquireQuantumMemory(length,sizeof(*options)); 1112 if (options == (char **) NULL) 1113 return((char **) NULL); 1114 ResetImageOptionIterator(wand->image_info); 1115 option=GetNextImageOption(wand->image_info); 1116 for (i=0; option != (const char *) NULL; ) 1117 { 1118 if ((*option != '[') && 1119 (GlobExpression(option,pattern,MagickFalse) != MagickFalse)) 1120 { 1121 if ((i+1) >= (ssize_t) length) 1122 { 1123 length<<=1; 1124 options=(char **) ResizeQuantumMemory(options,length, 1125 sizeof(*options)); 1126 if (options == (char **) NULL) 1127 { 1128 (void) ThrowMagickException(wand->exception,GetMagickModule(), 1129 ResourceLimitError,"MemoryAllocationFailed","`%s'", 1130 wand->name); 1131 return((char **) NULL); 1132 } 1133 } 1134 options[i]=ConstantString(option); 1135 i++; 1136 } 1137 option=GetNextImageOption(wand->image_info); 1138 } 1139 options[i]=(char *) NULL; 1140 *number_options=(size_t) i; 1141 return(options); 1142 } 1143 1144 /* 1145 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1146 % % 1147 % % 1148 % % 1149 % M a g i c k G e t O r i e n t a t i o n % 1150 % % 1151 % % 1152 % % 1153 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1154 % 1155 % MagickGetOrientation() gets the wand orientation type. 1156 % 1157 % The format of the MagickGetOrientation method is: 1158 % 1159 % OrientationType MagickGetOrientation(MagickWand *wand) 1160 % 1161 % A description of each parameter follows: 1162 % 1163 % o wand: the magick wand. 1164 % 1165 */ MagickGetOrientation(MagickWand * wand)1166 WandExport OrientationType MagickGetOrientation(MagickWand *wand) 1167 { 1168 assert(wand != (MagickWand *) NULL); 1169 assert(wand->signature == MagickWandSignature); 1170 if (wand->debug != MagickFalse) 1171 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 1172 return(wand->image_info->orientation); 1173 } 1174 1175 /* 1176 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1177 % % 1178 % % 1179 % % 1180 % M a g i c k G e t P a c k a g e N a m e % 1181 % % 1182 % % 1183 % % 1184 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1185 % 1186 % MagickGetPackageName() returns the ImageMagick package name as a string 1187 % constant. 1188 % 1189 % The format of the MagickGetPackageName method is: 1190 % 1191 % const char *MagickGetPackageName(void) 1192 % 1193 % 1194 */ MagickGetPackageName(void)1195 WandExport const char *MagickGetPackageName(void) 1196 { 1197 return(GetMagickPackageName()); 1198 } 1199 1200 /* 1201 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1202 % % 1203 % % 1204 % % 1205 % M a g i c k G e t P a g e % 1206 % % 1207 % % 1208 % % 1209 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1210 % 1211 % MagickGetPage() returns the page geometry associated with the magick wand. 1212 % 1213 % The format of the MagickGetPage method is: 1214 % 1215 % MagickBooleanType MagickGetPage(const MagickWand *wand, 1216 % size_t *width,size_t *height,ssize_t *x,ssize_t *y) 1217 % 1218 % A description of each parameter follows: 1219 % 1220 % o wand: the magick wand. 1221 % 1222 % o width: the page width. 1223 % 1224 % o height: page height. 1225 % 1226 % o x: the page x-offset. 1227 % 1228 % o y: the page y-offset. 1229 % 1230 */ MagickGetPage(const MagickWand * wand,size_t * width,size_t * height,ssize_t * x,ssize_t * y)1231 WandExport MagickBooleanType MagickGetPage(const MagickWand *wand, 1232 size_t *width,size_t *height,ssize_t *x,ssize_t *y) 1233 { 1234 RectangleInfo 1235 geometry; 1236 1237 assert(wand != (const MagickWand *) NULL); 1238 assert(wand->signature == MagickWandSignature); 1239 if (wand->debug != MagickFalse) 1240 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 1241 (void) memset(&geometry,0,sizeof(geometry)); 1242 (void) ParseAbsoluteGeometry(wand->image_info->page,&geometry); 1243 *width=geometry.width; 1244 *height=geometry.height; 1245 *x=geometry.x; 1246 *y=geometry.y; 1247 return(MagickTrue); 1248 } 1249 1250 /* 1251 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1252 % % 1253 % % 1254 % % 1255 % M a g i c k G e t P o i n t s i z e % 1256 % % 1257 % % 1258 % % 1259 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1260 % 1261 % MagickGetPointsize() returns the font pointsize associated with the 1262 % MagickWand. 1263 % 1264 % The format of the MagickGetPointsize method is: 1265 % 1266 % double MagickGetPointsize(MagickWand *wand) 1267 % 1268 % A description of each parameter follows: 1269 % 1270 % o wand: the magick wand. 1271 % 1272 */ MagickGetPointsize(MagickWand * wand)1273 WandExport double MagickGetPointsize(MagickWand *wand) 1274 { 1275 assert(wand != (MagickWand *) NULL); 1276 assert(wand->signature == MagickWandSignature); 1277 if (wand->debug != MagickFalse) 1278 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 1279 return(wand->image_info->pointsize); 1280 } 1281 1282 /* 1283 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1284 % % 1285 % % 1286 % % 1287 % M a g i c k G e t Q u a n t u m D e p t h % 1288 % % 1289 % % 1290 % % 1291 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1292 % 1293 % MagickGetQuantumDepth() returns the ImageMagick quantum depth as a string 1294 % constant. 1295 % 1296 % The format of the MagickGetQuantumDepth method is: 1297 % 1298 % const char *MagickGetQuantumDepth(size_t *depth) 1299 % 1300 % A description of each parameter follows: 1301 % 1302 % o depth: the quantum depth is returned as a number. 1303 % 1304 */ MagickGetQuantumDepth(size_t * depth)1305 WandExport const char *MagickGetQuantumDepth(size_t *depth) 1306 { 1307 return(GetMagickQuantumDepth(depth)); 1308 } 1309 1310 /* 1311 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1312 % % 1313 % % 1314 % % 1315 % M a g i c k G e t Q u a n t u m R a n g e % 1316 % % 1317 % % 1318 % % 1319 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1320 % 1321 % MagickGetQuantumRange() returns the ImageMagick quantum range as a string 1322 % constant. 1323 % 1324 % The format of the MagickGetQuantumRange method is: 1325 % 1326 % const char *MagickGetQuantumRange(size_t *range) 1327 % 1328 % A description of each parameter follows: 1329 % 1330 % o range: the quantum range is returned as a number. 1331 % 1332 */ MagickGetQuantumRange(size_t * range)1333 WandExport const char *MagickGetQuantumRange(size_t *range) 1334 { 1335 return(GetMagickQuantumRange(range)); 1336 } 1337 1338 /* 1339 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1340 % % 1341 % % 1342 % % 1343 % M a g i c k G e t R e l e a s e D a t e % 1344 % % 1345 % % 1346 % % 1347 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1348 % 1349 % MagickGetReleaseDate() returns the ImageMagick release date as a string 1350 % constant. 1351 % 1352 % The format of the MagickGetReleaseDate method is: 1353 % 1354 % const char *MagickGetReleaseDate(void) 1355 % 1356 */ MagickGetReleaseDate(void)1357 WandExport const char *MagickGetReleaseDate(void) 1358 { 1359 return(GetMagickReleaseDate()); 1360 } 1361 1362 /* 1363 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1364 % % 1365 % % 1366 % % 1367 % M a g i c k G e t R e s o l u t i o n % 1368 % % 1369 % % 1370 % % 1371 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1372 % 1373 % MagickGetResolution() gets the image X and Y resolution. 1374 % 1375 % The format of the MagickGetResolution method is: 1376 % 1377 % MagickBooleanType MagickGetResolution(const MagickWand *wand,double *x, 1378 % double *y) 1379 % 1380 % A description of each parameter follows: 1381 % 1382 % o wand: the magick wand. 1383 % 1384 % o x: the x-resolution. 1385 % 1386 % o y: the y-resolution. 1387 % 1388 */ MagickGetResolution(const MagickWand * wand,double * x,double * y)1389 WandExport MagickBooleanType MagickGetResolution(const MagickWand *wand, 1390 double *x,double *y) 1391 { 1392 assert(wand != (MagickWand *) NULL); 1393 assert(wand->signature == MagickWandSignature); 1394 if (wand->debug != MagickFalse) 1395 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 1396 *x=DefaultResolution; 1397 *y=DefaultResolution; 1398 if (wand->image_info->density != (char *) NULL) 1399 { 1400 GeometryInfo 1401 geometry_info; 1402 1403 MagickStatusType 1404 flags; 1405 1406 flags=ParseGeometry(wand->image_info->density,&geometry_info); 1407 *x=geometry_info.rho; 1408 *y=geometry_info.sigma; 1409 if ((flags & SigmaValue) == 0) 1410 *y=(*x); 1411 } 1412 return(MagickTrue); 1413 } 1414 1415 /* 1416 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1417 % % 1418 % % 1419 % % 1420 % M a g i c k G e t R e s o u r c e % 1421 % % 1422 % % 1423 % % 1424 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1425 % 1426 % MagickGetResource() returns the specified resource in megabytes. 1427 % 1428 % The format of the MagickGetResource method is: 1429 % 1430 % MagickSizeType MagickGetResource(const ResourceType type) 1431 % 1432 % A description of each parameter follows: 1433 % 1434 % o wand: the magick wand. 1435 % 1436 */ MagickGetResource(const ResourceType type)1437 WandExport MagickSizeType MagickGetResource(const ResourceType type) 1438 { 1439 return(GetMagickResource(type)); 1440 } 1441 1442 /* 1443 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1444 % % 1445 % % 1446 % % 1447 % M a g i c k G e t R e s o u r c e L i m i t % 1448 % % 1449 % % 1450 % % 1451 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1452 % 1453 % MagickGetResourceLimit() returns the specified resource limit in megabytes. 1454 % 1455 % The format of the MagickGetResourceLimit method is: 1456 % 1457 % MagickSizeType MagickGetResourceLimit(const ResourceType type) 1458 % 1459 % A description of each parameter follows: 1460 % 1461 % o wand: the magick wand. 1462 % 1463 */ MagickGetResourceLimit(const ResourceType type)1464 WandExport MagickSizeType MagickGetResourceLimit(const ResourceType type) 1465 { 1466 return(GetMagickResourceLimit(type)); 1467 } 1468 1469 /* 1470 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1471 % % 1472 % % 1473 % % 1474 % M a g i c k G e t S a m p l i n g F a c t o r s % 1475 % % 1476 % % 1477 % % 1478 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1479 % 1480 % MagickGetSamplingFactors() gets the horizontal and vertical sampling factor. 1481 % 1482 % The format of the MagickGetSamplingFactors method is: 1483 % 1484 % double *MagickGetSamplingFactor(MagickWand *wand, 1485 % size_t *number_factors) 1486 % 1487 % A description of each parameter follows: 1488 % 1489 % o wand: the magick wand. 1490 % 1491 % o number_factors: the number of factors in the returned array. 1492 % 1493 */ MagickGetSamplingFactors(MagickWand * wand,size_t * number_factors)1494 WandExport double *MagickGetSamplingFactors(MagickWand *wand, 1495 size_t *number_factors) 1496 { 1497 double 1498 *sampling_factors; 1499 1500 const char 1501 *p; 1502 1503 ssize_t 1504 i; 1505 1506 assert(wand != (MagickWand *) NULL); 1507 assert(wand->signature == MagickWandSignature); 1508 if (wand->debug != MagickFalse) 1509 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 1510 *number_factors=0; 1511 sampling_factors=(double *) NULL; 1512 if (wand->image_info->sampling_factor == (char *) NULL) 1513 return(sampling_factors); 1514 i=0; 1515 for (p=wand->image_info->sampling_factor; p != (char *) NULL; p=strchr(p,',')) 1516 { 1517 while (((int) *p != 0) && ((isspace((int) ((unsigned char) *p)) != 0) || 1518 (*p == ','))) 1519 p++; 1520 i++; 1521 } 1522 sampling_factors=(double *) AcquireQuantumMemory((size_t) i+1, 1523 sizeof(*sampling_factors)); 1524 if (sampling_factors == (double *) NULL) 1525 ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed", 1526 wand->image_info->filename); 1527 i=0; 1528 for (p=wand->image_info->sampling_factor; p != (char *) NULL; p=strchr(p,',')) 1529 { 1530 while (((int) *p != 0) && ((isspace((int) ((unsigned char) *p)) != 0) || 1531 (*p == ','))) 1532 p++; 1533 sampling_factors[i]=StringToDouble(p,(char **) NULL); 1534 i++; 1535 } 1536 *number_factors=(size_t) i; 1537 return(sampling_factors); 1538 } 1539 1540 /* 1541 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1542 % % 1543 % % 1544 % % 1545 % M a g i c k G e t S i z e % 1546 % % 1547 % % 1548 % % 1549 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1550 % 1551 % MagickGetSize() returns the size associated with the magick wand. 1552 % 1553 % The format of the MagickGetSize method is: 1554 % 1555 % MagickBooleanType MagickGetSize(const MagickWand *wand, 1556 % size_t *columns,size_t *rows) 1557 % 1558 % A description of each parameter follows: 1559 % 1560 % o wand: the magick wand. 1561 % 1562 % o columns: the width in pixels. 1563 % 1564 % o height: the height in pixels. 1565 % 1566 */ MagickGetSize(const MagickWand * wand,size_t * columns,size_t * rows)1567 WandExport MagickBooleanType MagickGetSize(const MagickWand *wand, 1568 size_t *columns,size_t *rows) 1569 { 1570 RectangleInfo 1571 geometry; 1572 1573 assert(wand != (const MagickWand *) NULL); 1574 assert(wand->signature == MagickWandSignature); 1575 if (wand->debug != MagickFalse) 1576 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 1577 (void) memset(&geometry,0,sizeof(geometry)); 1578 (void) ParseAbsoluteGeometry(wand->image_info->size,&geometry); 1579 *columns=geometry.width; 1580 *rows=geometry.height; 1581 return(MagickTrue); 1582 } 1583 1584 /* 1585 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1586 % % 1587 % % 1588 % % 1589 % M a g i c k G e t S i z e O f f s e t % 1590 % % 1591 % % 1592 % % 1593 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1594 % 1595 % MagickGetSizeOffset() returns the size offset associated with the magick 1596 % wand. 1597 % 1598 % The format of the MagickGetSizeOffset method is: 1599 % 1600 % MagickBooleanType MagickGetSizeOffset(const MagickWand *wand, 1601 % ssize_t *offset) 1602 % 1603 % A description of each parameter follows: 1604 % 1605 % o wand: the magick wand. 1606 % 1607 % o offset: the image offset. 1608 % 1609 */ MagickGetSizeOffset(const MagickWand * wand,ssize_t * offset)1610 WandExport MagickBooleanType MagickGetSizeOffset(const MagickWand *wand, 1611 ssize_t *offset) 1612 { 1613 RectangleInfo 1614 geometry; 1615 1616 assert(wand != (const MagickWand *) NULL); 1617 assert(wand->signature == MagickWandSignature); 1618 if (wand->debug != MagickFalse) 1619 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 1620 (void) memset(&geometry,0,sizeof(geometry)); 1621 (void) ParseAbsoluteGeometry(wand->image_info->size,&geometry); 1622 *offset=geometry.x; 1623 return(MagickTrue); 1624 } 1625 1626 /* 1627 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1628 % % 1629 % % 1630 % % 1631 % M a g i c k G e t T y p e % 1632 % % 1633 % % 1634 % % 1635 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1636 % 1637 % MagickGetType() returns the wand type. 1638 % 1639 % The format of the MagickGetType method is: 1640 % 1641 % ImageType MagickGetType(MagickWand *wand) 1642 % 1643 % A description of each parameter follows: 1644 % 1645 % o wand: the magick wand. 1646 % 1647 */ MagickGetType(MagickWand * wand)1648 WandExport ImageType MagickGetType(MagickWand *wand) 1649 { 1650 assert(wand != (MagickWand *) NULL); 1651 assert(wand->signature == MagickWandSignature); 1652 if (wand->debug != MagickFalse) 1653 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 1654 return(wand->image_info->type); 1655 } 1656 1657 /* 1658 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1659 % % 1660 % % 1661 % % 1662 % M a g i c k G e t V e r s i o n % 1663 % % 1664 % % 1665 % % 1666 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1667 % 1668 % MagickGetVersion() returns the ImageMagick API version as a string constant 1669 % and as a number. 1670 % 1671 % The format of the MagickGetVersion method is: 1672 % 1673 % const char *MagickGetVersion(size_t *version) 1674 % 1675 % A description of each parameter follows: 1676 % 1677 % o version: the ImageMagick version is returned as a number. 1678 % 1679 */ MagickGetVersion(size_t * version)1680 WandExport const char *MagickGetVersion(size_t *version) 1681 { 1682 return(GetMagickVersion(version)); 1683 } 1684 1685 /* 1686 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1687 % % 1688 % % 1689 % % 1690 % M a g i c k P r o f i l e I m a g e % 1691 % % 1692 % % 1693 % % 1694 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1695 % 1696 % MagickProfileImage() adds or removes a ICC, IPTC, or generic profile 1697 % from an image. If the profile is NULL, it is removed from the image 1698 % otherwise added. Use a name of '*' and a profile of NULL to remove all 1699 % profiles from the image. 1700 % 1701 % The format of the MagickProfileImage method is: 1702 % 1703 % MagickBooleanType MagickProfileImage(MagickWand *wand,const char *name, 1704 % const void *profile,const size_t length) 1705 % 1706 % A description of each parameter follows: 1707 % 1708 % o wand: the magick wand. 1709 % 1710 % o name: Name of profile to add or remove: ICC, IPTC, or generic profile. 1711 % 1712 % o profile: the profile. 1713 % 1714 % o length: the length of the profile. 1715 % 1716 */ MagickProfileImage(MagickWand * wand,const char * name,const void * profile,const size_t length)1717 WandExport MagickBooleanType MagickProfileImage(MagickWand *wand, 1718 const char *name,const void *profile,const size_t length) 1719 { 1720 assert(wand != (MagickWand *) NULL); 1721 assert(wand->signature == MagickWandSignature); 1722 if (wand->debug != MagickFalse) 1723 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 1724 if (wand->images == (Image *) NULL) 1725 ThrowWandException(WandError,"ContainsNoImages",wand->name); 1726 return(ProfileImage(wand->images,name,profile,length,wand->exception)); 1727 } 1728 1729 /* 1730 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1731 % % 1732 % % 1733 % % 1734 % M a g i c k R e m o v e I m a g e P r o f i l e % 1735 % % 1736 % % 1737 % % 1738 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1739 % 1740 % MagickRemoveImageProfile() removes the named image profile and returns it. 1741 % 1742 % The format of the MagickRemoveImageProfile method is: 1743 % 1744 % unsigned char *MagickRemoveImageProfile(MagickWand *wand, 1745 % const char *name,size_t *length) 1746 % 1747 % A description of each parameter follows: 1748 % 1749 % o wand: the magick wand. 1750 % 1751 % o name: Name of profile to return: ICC, IPTC, or generic profile. 1752 % 1753 % o length: the length of the profile. 1754 % 1755 */ MagickRemoveImageProfile(MagickWand * wand,const char * name,size_t * length)1756 WandExport unsigned char *MagickRemoveImageProfile(MagickWand *wand, 1757 const char *name,size_t *length) 1758 { 1759 StringInfo 1760 *profile; 1761 1762 unsigned char 1763 *datum; 1764 1765 assert(wand != (MagickWand *) NULL); 1766 assert(wand->signature == MagickWandSignature); 1767 if (wand->debug != MagickFalse) 1768 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 1769 if (wand->images == (Image *) NULL) 1770 { 1771 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError, 1772 "ContainsNoImages","`%s'",wand->name); 1773 return((unsigned char *) NULL); 1774 } 1775 *length=0; 1776 profile=RemoveImageProfile(wand->images,name); 1777 if (profile == (StringInfo *) NULL) 1778 return((unsigned char *) NULL); 1779 datum=(unsigned char *) AcquireQuantumMemory(GetStringInfoLength(profile), 1780 sizeof(*datum)); 1781 if (datum == (unsigned char *) NULL) 1782 return((unsigned char *) NULL); 1783 (void) memcpy(datum,GetStringInfoDatum(profile), 1784 GetStringInfoLength(profile)); 1785 *length=GetStringInfoLength(profile); 1786 profile=DestroyStringInfo(profile); 1787 return(datum); 1788 } 1789 1790 /* 1791 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1792 % % 1793 % % 1794 % % 1795 % M a g i c k S e t A n t i a l i a s % 1796 % % 1797 % % 1798 % % 1799 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1800 % 1801 % MagickSetAntialias() sets the antialias propery of the wand. 1802 % 1803 % The format of the MagickSetAntialias method is: 1804 % 1805 % MagickBooleanType MagickSetAntialias(MagickWand *wand, 1806 % const MagickBooleanType antialias) 1807 % 1808 % A description of each parameter follows: 1809 % 1810 % o wand: the magick wand. 1811 % 1812 % o antialias: the antialias property. 1813 % 1814 */ MagickSetAntialias(MagickWand * wand,const MagickBooleanType antialias)1815 WandExport MagickBooleanType MagickSetAntialias(MagickWand *wand, 1816 const MagickBooleanType antialias) 1817 { 1818 assert(wand != (MagickWand *) NULL); 1819 assert(wand->signature == MagickWandSignature); 1820 if (wand->debug != MagickFalse) 1821 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 1822 wand->image_info->antialias=antialias; 1823 return(MagickTrue); 1824 } 1825 1826 /* 1827 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1828 % % 1829 % % 1830 % % 1831 % M a g i c k S e t B a c k g r o u n d C o l o r % 1832 % % 1833 % % 1834 % % 1835 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1836 % 1837 % MagickSetBackgroundColor() sets the wand background color. 1838 % 1839 % The format of the MagickSetBackgroundColor method is: 1840 % 1841 % MagickBooleanType MagickSetBackgroundColor(MagickWand *wand, 1842 % const PixelWand *background) 1843 % 1844 % A description of each parameter follows: 1845 % 1846 % o wand: the magick wand. 1847 % 1848 % o background: the background pixel wand. 1849 % 1850 */ MagickSetBackgroundColor(MagickWand * wand,const PixelWand * background)1851 WandExport MagickBooleanType MagickSetBackgroundColor(MagickWand *wand, 1852 const PixelWand *background) 1853 { 1854 assert(wand != (MagickWand *) NULL); 1855 assert(wand->signature == MagickWandSignature); 1856 if (wand->debug != MagickFalse) 1857 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 1858 PixelGetQuantumPacket(background,&wand->image_info->background_color); 1859 return(MagickTrue); 1860 } 1861 1862 /* 1863 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1864 % % 1865 % % 1866 % % 1867 % M a g i c k S e t C o l o r s p a c e % 1868 % % 1869 % % 1870 % % 1871 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1872 % 1873 % MagickSetColorspace() sets the wand colorspace type. 1874 % 1875 % The format of the MagickSetColorspace method is: 1876 % 1877 % MagickBooleanType MagickSetColorspace(MagickWand *wand, 1878 % const ColorspaceType colorspace) 1879 % 1880 % A description of each parameter follows: 1881 % 1882 % o wand: the magick wand. 1883 % 1884 % o colorspace: the wand colorspace. 1885 % 1886 */ MagickSetColorspace(MagickWand * wand,const ColorspaceType colorspace)1887 WandExport MagickBooleanType MagickSetColorspace(MagickWand *wand, 1888 const ColorspaceType colorspace) 1889 { 1890 assert(wand != (MagickWand *) NULL); 1891 assert(wand->signature == MagickWandSignature); 1892 if (wand->debug != MagickFalse) 1893 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 1894 wand->image_info->colorspace=colorspace; 1895 return(MagickTrue); 1896 } 1897 1898 /* 1899 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1900 % % 1901 % % 1902 % % 1903 % M a g i c k S e t C o m p r e s s i o n % 1904 % % 1905 % % 1906 % % 1907 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1908 % 1909 % MagickSetCompression() sets the wand compression type. 1910 % 1911 % The format of the MagickSetCompression method is: 1912 % 1913 % MagickBooleanType MagickSetCompression(MagickWand *wand, 1914 % const CompressionType compression) 1915 % 1916 % A description of each parameter follows: 1917 % 1918 % o wand: the magick wand. 1919 % 1920 % o compression: the wand compression. 1921 % 1922 */ MagickSetCompression(MagickWand * wand,const CompressionType compression)1923 WandExport MagickBooleanType MagickSetCompression(MagickWand *wand, 1924 const CompressionType compression) 1925 { 1926 assert(wand != (MagickWand *) NULL); 1927 assert(wand->signature == MagickWandSignature); 1928 if (wand->debug != MagickFalse) 1929 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 1930 wand->image_info->compression=compression; 1931 return(MagickTrue); 1932 } 1933 1934 /* 1935 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1936 % % 1937 % % 1938 % % 1939 % M a g i c k S e t C o m p r e s s i o n Q u a l i t y % 1940 % % 1941 % % 1942 % % 1943 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1944 % 1945 % MagickSetCompressionQuality() sets the wand compression quality. 1946 % 1947 % The format of the MagickSetCompressionQuality method is: 1948 % 1949 % MagickBooleanType MagickSetCompressionQuality(MagickWand *wand, 1950 % const size_t quality) 1951 % 1952 % A description of each parameter follows: 1953 % 1954 % o wand: the magick wand. 1955 % 1956 % o quality: the wand compression quality. 1957 % 1958 */ MagickSetCompressionQuality(MagickWand * wand,const size_t quality)1959 WandExport MagickBooleanType MagickSetCompressionQuality(MagickWand *wand, 1960 const size_t quality) 1961 { 1962 assert(wand != (MagickWand *) NULL); 1963 assert(wand->signature == MagickWandSignature); 1964 if (wand->debug != MagickFalse) 1965 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 1966 wand->image_info->quality=quality; 1967 return(MagickTrue); 1968 } 1969 1970 /* 1971 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1972 % % 1973 % % 1974 % % 1975 % M a g i c k S e t D e p t h % 1976 % % 1977 % % 1978 % % 1979 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1980 % 1981 % MagickSetDepth() sets the wand pixel depth. 1982 % 1983 % The format of the MagickSetDepth method is: 1984 % 1985 % MagickBooleanType MagickSetDepth(MagickWand *wand, 1986 % const size_t depth) 1987 % 1988 % A description of each parameter follows: 1989 % 1990 % o wand: the magick wand. 1991 % 1992 % o depth: the wand pixel depth. 1993 % 1994 */ MagickSetDepth(MagickWand * wand,const size_t depth)1995 WandExport MagickBooleanType MagickSetDepth(MagickWand *wand,const size_t depth) 1996 { 1997 assert(wand != (MagickWand *) NULL); 1998 assert(wand->signature == MagickWandSignature); 1999 if (wand->debug != MagickFalse) 2000 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2001 wand->image_info->depth=depth; 2002 return(MagickTrue); 2003 } 2004 2005 /* 2006 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2007 % % 2008 % % 2009 % % 2010 % M a g i c k S e t E x t r a c t % 2011 % % 2012 % % 2013 % % 2014 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2015 % 2016 % MagickSetExtract() sets the extract geometry before you read or write an 2017 % image file. Use it for inline cropping (e.g. 200x200+0+0) or resizing 2018 % (e.g.200x200). 2019 % 2020 % The format of the MagickSetExtract method is: 2021 % 2022 % MagickBooleanType MagickSetExtract(MagickWand *wand, 2023 % const char *geometry) 2024 % 2025 % A description of each parameter follows: 2026 % 2027 % o wand: the magick wand. 2028 % 2029 % o geometry: the extract geometry. 2030 % 2031 */ MagickSetExtract(MagickWand * wand,const char * geometry)2032 WandExport MagickBooleanType MagickSetExtract(MagickWand *wand, 2033 const char *geometry) 2034 { 2035 assert(wand != (MagickWand *) NULL); 2036 assert(wand->signature == MagickWandSignature); 2037 if (wand->debug != MagickFalse) 2038 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2039 if (wand->image_info->extract != (char *) NULL) 2040 wand->image_info->extract=DestroyString(wand->image_info->extract); 2041 if (geometry != (const char *) NULL) 2042 (void) CloneString(&wand->image_info->extract,geometry); 2043 return(MagickTrue); 2044 } 2045 2046 /* 2047 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2048 % % 2049 % % 2050 % % 2051 % M a g i c k S e t F i l e n a m e % 2052 % % 2053 % % 2054 % % 2055 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2056 % 2057 % MagickSetFilename() sets the filename before you read or write an image file. 2058 % 2059 % The format of the MagickSetFilename method is: 2060 % 2061 % MagickBooleanType MagickSetFilename(MagickWand *wand, 2062 % const char *filename) 2063 % 2064 % A description of each parameter follows: 2065 % 2066 % o wand: the magick wand. 2067 % 2068 % o filename: the image filename. 2069 % 2070 */ MagickSetFilename(MagickWand * wand,const char * filename)2071 WandExport MagickBooleanType MagickSetFilename(MagickWand *wand, 2072 const char *filename) 2073 { 2074 assert(wand != (MagickWand *) NULL); 2075 assert(wand->signature == MagickWandSignature); 2076 if (wand->debug != MagickFalse) 2077 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2078 if (filename != (const char *) NULL) 2079 (void) CopyMagickString(wand->image_info->filename,filename, 2080 MagickPathExtent); 2081 return(MagickTrue); 2082 } 2083 2084 /* 2085 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2086 % % 2087 % % 2088 % % 2089 % M a g i c k S e t F o n t % 2090 % % 2091 % % 2092 % % 2093 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2094 % 2095 % MagickSetFont() sets the font associated with the MagickWand. 2096 % 2097 % The format of the MagickSetFont method is: 2098 % 2099 % MagickBooleanType MagickSetFont(MagickWand *wand, const char *font) 2100 % 2101 % A description of each parameter follows: 2102 % 2103 % o wand: the magick wand. 2104 % 2105 % o font: the font 2106 % 2107 */ MagickSetFont(MagickWand * wand,const char * font)2108 WandExport MagickBooleanType MagickSetFont(MagickWand *wand,const char *font) 2109 { 2110 if ((font == (const char *) NULL) || (*font == '\0')) 2111 return(MagickFalse); 2112 assert(wand != (MagickWand *) NULL); 2113 assert(wand->signature == MagickWandSignature); 2114 if (wand->debug != MagickFalse) 2115 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2116 (void) CloneString(&wand->image_info->font,font); 2117 return(MagickTrue); 2118 } 2119 2120 /* 2121 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2122 % % 2123 % % 2124 % % 2125 % M a g i c k S e t F o r m a t % 2126 % % 2127 % % 2128 % % 2129 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2130 % 2131 % MagickSetFormat() sets the format of the magick wand. 2132 % 2133 % The format of the MagickSetFormat method is: 2134 % 2135 % MagickBooleanType MagickSetFormat(MagickWand *wand,const char *format) 2136 % 2137 % A description of each parameter follows: 2138 % 2139 % o wand: the magick wand. 2140 % 2141 % o format: the image format. 2142 % 2143 */ MagickSetFormat(MagickWand * wand,const char * format)2144 WandExport MagickBooleanType MagickSetFormat(MagickWand *wand, 2145 const char *format) 2146 { 2147 const MagickInfo 2148 *magick_info; 2149 2150 assert(wand != (MagickWand *) NULL); 2151 assert(wand->signature == MagickWandSignature); 2152 if (wand->debug != MagickFalse) 2153 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2154 2155 if ((format == (char *) NULL) || (*format == '\0')) 2156 { 2157 *wand->image_info->magick='\0'; 2158 return(MagickTrue); 2159 } 2160 magick_info=GetMagickInfo(format,wand->exception); 2161 if (magick_info == (const MagickInfo *) NULL) 2162 return(MagickFalse); 2163 ClearMagickException(wand->exception); 2164 (void) CopyMagickString(wand->image_info->magick,format,MagickPathExtent); 2165 return(MagickTrue); 2166 } 2167 2168 /* 2169 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2170 % % 2171 % % 2172 % % 2173 % M a g i c k S e t G r a v i t y % 2174 % % 2175 % % 2176 % % 2177 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2178 % 2179 % MagickSetGravity() sets the gravity type. 2180 % 2181 % The format of the MagickSetGravity type is: 2182 % 2183 % MagickBooleanType MagickSetGravity(MagickWand *wand, 2184 % const GravityType type) 2185 % 2186 % A description of each parameter follows: 2187 % 2188 % o wand: the magick wand. 2189 % 2190 % o type: the gravity type. 2191 % 2192 */ MagickSetGravity(MagickWand * wand,const GravityType type)2193 WandExport MagickBooleanType MagickSetGravity(MagickWand *wand, 2194 const GravityType type) 2195 { 2196 MagickBooleanType 2197 status; 2198 2199 assert(wand != (MagickWand *) NULL); 2200 assert(wand->signature == MagickWandSignature); 2201 if (wand->debug != MagickFalse) 2202 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2203 status=SetImageOption(wand->image_info,"gravity",CommandOptionToMnemonic( 2204 MagickGravityOptions,(ssize_t) type)); 2205 return(status); 2206 } 2207 2208 /* 2209 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2210 % % 2211 % % 2212 % % 2213 % M a g i c k S e t I m a g e A r t i f a c t % 2214 % % 2215 % % 2216 % % 2217 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2218 % 2219 % MagickSetImageArtifact() sets a key-value pair in the image artifact 2220 % namespace. Artifacts differ from properties. Properties are public and are 2221 % generally exported to an external image format if the format supports it. 2222 % Artifacts are private and are utilized by the internal ImageMagick API to 2223 % modify the behavior of certain algorithms. 2224 % 2225 % The format of the MagickSetImageArtifact method is: 2226 % 2227 % MagickBooleanType MagickSetImageArtifact(MagickWand *wand, 2228 % const char *artifact,const char *value) 2229 % 2230 % A description of each parameter follows: 2231 % 2232 % o wand: the magick wand. 2233 % 2234 % o artifact: the artifact. 2235 % 2236 % o value: the value. 2237 % 2238 */ MagickSetImageArtifact(MagickWand * wand,const char * artifact,const char * value)2239 WandExport MagickBooleanType MagickSetImageArtifact(MagickWand *wand, 2240 const char *artifact,const char *value) 2241 { 2242 assert(wand != (MagickWand *) NULL); 2243 assert(wand->signature == MagickWandSignature); 2244 if (wand->debug != MagickFalse) 2245 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2246 if (wand->images == (Image *) NULL) 2247 ThrowWandException(WandError,"ContainsNoImages",wand->name); 2248 return(SetImageArtifact(wand->images,artifact,value)); 2249 } 2250 2251 /* 2252 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2253 % % 2254 % % 2255 % % 2256 % M a g i c k S e t P r o f i l e I m a g e % 2257 % % 2258 % % 2259 % % 2260 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2261 % 2262 % MagickSetImageProfile() adds a named profile to the magick wand. If a 2263 % profile with the same name already exists, it is replaced. This method 2264 % differs from the MagickProfileImage() method in that it does not apply any 2265 % CMS color profiles. 2266 % 2267 % The format of the MagickSetImageProfile method is: 2268 % 2269 % MagickBooleanType MagickSetImageProfile(MagickWand *wand, 2270 % const char *name,const void *profile,const size_t length) 2271 % 2272 % A description of each parameter follows: 2273 % 2274 % o wand: the magick wand. 2275 % 2276 % o name: Name of profile to add or remove: ICC, IPTC, or generic profile. 2277 % 2278 % o profile: the profile. 2279 % 2280 % o length: the length of the profile. 2281 % 2282 */ MagickSetImageProfile(MagickWand * wand,const char * name,const void * profile,const size_t length)2283 WandExport MagickBooleanType MagickSetImageProfile(MagickWand *wand, 2284 const char *name,const void *profile,const size_t length) 2285 { 2286 MagickBooleanType 2287 status; 2288 2289 StringInfo 2290 *profile_info; 2291 2292 assert(wand != (MagickWand *) NULL); 2293 assert(wand->signature == MagickWandSignature); 2294 if (wand->debug != MagickFalse) 2295 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2296 if (wand->images == (Image *) NULL) 2297 ThrowWandException(WandError,"ContainsNoImages",wand->name); 2298 profile_info=AcquireStringInfo((size_t) length); 2299 SetStringInfoDatum(profile_info,(unsigned char *) profile); 2300 status=SetImageProfile(wand->images,name,profile_info,wand->exception); 2301 profile_info=DestroyStringInfo(profile_info); 2302 return(status); 2303 } 2304 2305 /* 2306 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2307 % % 2308 % % 2309 % % 2310 % M a g i c k S e t I m a g e P r o p e r t y % 2311 % % 2312 % % 2313 % % 2314 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2315 % 2316 % MagickSetImageProperty() associates a property with an image. 2317 % 2318 % The format of the MagickSetImageProperty method is: 2319 % 2320 % MagickBooleanType MagickSetImageProperty(MagickWand *wand, 2321 % const char *property,const char *value) 2322 % 2323 % A description of each parameter follows: 2324 % 2325 % o wand: the magick wand. 2326 % 2327 % o property: the property. 2328 % 2329 % o value: the value. 2330 % 2331 */ MagickSetImageProperty(MagickWand * wand,const char * property,const char * value)2332 WandExport MagickBooleanType MagickSetImageProperty(MagickWand *wand, 2333 const char *property,const char *value) 2334 { 2335 MagickBooleanType 2336 status; 2337 2338 assert(wand != (MagickWand *) NULL); 2339 assert(wand->signature == MagickWandSignature); 2340 if (wand->debug != MagickFalse) 2341 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2342 if (wand->images == (Image *) NULL) 2343 ThrowWandException(WandError,"ContainsNoImages",wand->name); 2344 status=SetImageProperty(wand->images,property,value,wand->exception); 2345 return(status); 2346 } 2347 2348 /* 2349 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2350 % % 2351 % % 2352 % % 2353 % M a g i c k S e t I n t e r l a c e S c h e m e % 2354 % % 2355 % % 2356 % % 2357 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2358 % 2359 % MagickSetInterlaceScheme() sets the image compression. 2360 % 2361 % The format of the MagickSetInterlaceScheme method is: 2362 % 2363 % MagickBooleanType MagickSetInterlaceScheme(MagickWand *wand, 2364 % const InterlaceType interlace_scheme) 2365 % 2366 % A description of each parameter follows: 2367 % 2368 % o wand: the magick wand. 2369 % 2370 % o interlace_scheme: the image interlace scheme: NoInterlace, LineInterlace, 2371 % PlaneInterlace, PartitionInterlace. 2372 % 2373 */ MagickSetInterlaceScheme(MagickWand * wand,const InterlaceType interlace_scheme)2374 WandExport MagickBooleanType MagickSetInterlaceScheme(MagickWand *wand, 2375 const InterlaceType interlace_scheme) 2376 { 2377 assert(wand != (MagickWand *) NULL); 2378 assert(wand->signature == MagickWandSignature); 2379 if (wand->debug != MagickFalse) 2380 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2381 wand->image_info->interlace=interlace_scheme; 2382 return(MagickTrue); 2383 } 2384 2385 /* 2386 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2387 % % 2388 % % 2389 % % 2390 % M a g i c k S e t I n t e r p o l a t e M e t h o d % 2391 % % 2392 % % 2393 % % 2394 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2395 % 2396 % MagickSetInterpolateMethod() sets the interpolate pixel method. 2397 % 2398 % The format of the MagickSetInterpolateMethod method is: 2399 % 2400 % MagickBooleanType MagickSetInterpolateMethod(MagickWand *wand, 2401 % const InterpolateMethodPixel method) 2402 % 2403 % A description of each parameter follows: 2404 % 2405 % o wand: the magick wand. 2406 % 2407 % o method: the interpolate pixel method. 2408 % 2409 */ MagickSetInterpolateMethod(MagickWand * wand,const PixelInterpolateMethod method)2410 WandExport MagickBooleanType MagickSetInterpolateMethod(MagickWand *wand, 2411 const PixelInterpolateMethod method) 2412 { 2413 MagickBooleanType 2414 status; 2415 2416 assert(wand != (MagickWand *) NULL); 2417 assert(wand->signature == MagickWandSignature); 2418 if (wand->debug != MagickFalse) 2419 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2420 status=SetImageOption(wand->image_info,"interpolate", 2421 CommandOptionToMnemonic(MagickInterpolateOptions,(ssize_t) method)); 2422 return(status); 2423 } 2424 2425 /* 2426 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2427 % % 2428 % % 2429 % % 2430 % M a g i c k S e t O p t i o n % 2431 % % 2432 % % 2433 % % 2434 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2435 % 2436 % MagickSetOption() associates one or options with the wand (.e.g 2437 % MagickSetOption(wand,"jpeg:perserve","yes")). 2438 % 2439 % The format of the MagickSetOption method is: 2440 % 2441 % MagickBooleanType MagickSetOption(MagickWand *wand,const char *key, 2442 % const char *value) 2443 % 2444 % A description of each parameter follows: 2445 % 2446 % o wand: the magick wand. 2447 % 2448 % o key: The key. 2449 % 2450 % o value: The value. 2451 % 2452 */ MagickSetOption(MagickWand * wand,const char * key,const char * value)2453 WandExport MagickBooleanType MagickSetOption(MagickWand *wand,const char *key, 2454 const char *value) 2455 { 2456 assert(wand != (MagickWand *) NULL); 2457 assert(wand->signature == MagickWandSignature); 2458 if (wand->debug != MagickFalse) 2459 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2460 return(SetImageOption(wand->image_info,key,value)); 2461 } 2462 2463 /* 2464 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2465 % % 2466 % % 2467 % % 2468 % M a g i c k S e t O r i e n t a t i o n % 2469 % % 2470 % % 2471 % % 2472 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2473 % 2474 % MagickSetOrientation() sets the wand orientation type. 2475 % 2476 % The format of the MagickSetOrientation method is: 2477 % 2478 % MagickBooleanType MagickSetOrientation(MagickWand *wand, 2479 % const OrientationType orientation) 2480 % 2481 % A description of each parameter follows: 2482 % 2483 % o wand: the magick wand. 2484 % 2485 % o orientation: the wand orientation. 2486 % 2487 */ MagickSetOrientation(MagickWand * wand,const OrientationType orientation)2488 WandExport MagickBooleanType MagickSetOrientation(MagickWand *wand, 2489 const OrientationType orientation) 2490 { 2491 assert(wand != (MagickWand *) NULL); 2492 assert(wand->signature == MagickWandSignature); 2493 if (wand->debug != MagickFalse) 2494 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2495 wand->image_info->orientation=orientation; 2496 return(MagickTrue); 2497 } 2498 2499 /* 2500 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2501 % % 2502 % % 2503 % % 2504 % M a g i c k S e t P a g e % 2505 % % 2506 % % 2507 % % 2508 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2509 % 2510 % MagickSetPage() sets the page geometry of the magick wand. 2511 % 2512 % The format of the MagickSetPage method is: 2513 % 2514 % MagickBooleanType MagickSetPage(MagickWand *wand, 2515 % const size_t width,const size_t height,const ssize_t x, 2516 % const ssize_t y) 2517 % 2518 % A description of each parameter follows: 2519 % 2520 % o wand: the magick wand. 2521 % 2522 % o width: the page width. 2523 % 2524 % o height: the page height. 2525 % 2526 % o x: the page x-offset. 2527 % 2528 % o y: the page y-offset. 2529 % 2530 */ MagickSetPage(MagickWand * wand,const size_t width,const size_t height,const ssize_t x,const ssize_t y)2531 WandExport MagickBooleanType MagickSetPage(MagickWand *wand, 2532 const size_t width,const size_t height,const ssize_t x, 2533 const ssize_t y) 2534 { 2535 char 2536 geometry[MagickPathExtent]; 2537 2538 assert(wand != (MagickWand *) NULL); 2539 assert(wand->signature == MagickWandSignature); 2540 if (wand->debug != MagickFalse) 2541 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2542 (void) FormatLocaleString(geometry,MagickPathExtent,"%.20gx%.20g%+.20g%+.20g", 2543 (double) width,(double) height,(double) x,(double) y); 2544 (void) CloneString(&wand->image_info->page,geometry); 2545 return(MagickTrue); 2546 } 2547 2548 /* 2549 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2550 % % 2551 % % 2552 % % 2553 % M a g i c k S e t P a s s p h r a s e % 2554 % % 2555 % % 2556 % % 2557 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2558 % 2559 % MagickSetPassphrase() sets the passphrase. 2560 % 2561 % The format of the MagickSetPassphrase method is: 2562 % 2563 % MagickBooleanType MagickSetPassphrase(MagickWand *wand, 2564 % const char *passphrase) 2565 % 2566 % A description of each parameter follows: 2567 % 2568 % o wand: the magick wand. 2569 % 2570 % o passphrase: the passphrase. 2571 % 2572 */ MagickSetPassphrase(MagickWand * wand,const char * passphrase)2573 WandExport MagickBooleanType MagickSetPassphrase(MagickWand *wand, 2574 const char *passphrase) 2575 { 2576 assert(wand != (MagickWand *) NULL); 2577 assert(wand->signature == MagickWandSignature); 2578 if (wand->debug != MagickFalse) 2579 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2580 (void) SetImageOption(wand->image_info,"authenticate",passphrase); 2581 return(MagickTrue); 2582 } 2583 2584 /* 2585 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2586 % % 2587 % % 2588 % % 2589 % M a g i c k S e t P o i n t s i z e % 2590 % % 2591 % % 2592 % % 2593 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2594 % 2595 % MagickSetPointsize() sets the font pointsize associated with the MagickWand. 2596 % 2597 % The format of the MagickSetPointsize method is: 2598 % 2599 % MagickBooleanType MagickSetPointsize(MagickWand *wand, 2600 % const double pointsize) 2601 % 2602 % A description of each parameter follows: 2603 % 2604 % o wand: the magick wand. 2605 % 2606 % o pointsize: the size of the font 2607 % 2608 */ MagickSetPointsize(MagickWand * wand,const double pointsize)2609 WandExport MagickBooleanType MagickSetPointsize(MagickWand *wand, 2610 const double pointsize) 2611 { 2612 assert(wand != (MagickWand *) NULL); 2613 assert(wand->signature == MagickWandSignature); 2614 if (wand->debug != MagickFalse) 2615 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2616 wand->image_info->pointsize=pointsize; 2617 return(MagickTrue); 2618 } 2619 2620 /* 2621 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2622 % % 2623 % % 2624 % % 2625 % M a g i c k S e t P r o g r e s s M o n i t o r % 2626 % % 2627 % % 2628 % % 2629 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2630 % 2631 % MagickSetProgressMonitor() sets the wand progress monitor to the specified 2632 % method and returns the previous progress monitor if any. The progress 2633 % monitor method looks like this: 2634 % 2635 % MagickBooleanType MagickProgressMonitor(const char *text, 2636 % const MagickOffsetType offset,const MagickSizeType span, 2637 % void *client_data) 2638 % 2639 % If the progress monitor returns MagickFalse, the current operation is 2640 % interrupted. 2641 % 2642 % The format of the MagickSetProgressMonitor method is: 2643 % 2644 % MagickProgressMonitor MagickSetProgressMonitor(MagickWand *wand 2645 % const MagickProgressMonitor progress_monitor,void *client_data) 2646 % 2647 % A description of each parameter follows: 2648 % 2649 % o wand: the magick wand. 2650 % 2651 % o progress_monitor: Specifies a pointer to a method to monitor progress 2652 % of an image operation. 2653 % 2654 % o client_data: Specifies a pointer to any client data. 2655 % 2656 */ MagickSetProgressMonitor(MagickWand * wand,const MagickProgressMonitor progress_monitor,void * client_data)2657 WandExport MagickProgressMonitor MagickSetProgressMonitor(MagickWand *wand, 2658 const MagickProgressMonitor progress_monitor,void *client_data) 2659 { 2660 MagickProgressMonitor 2661 previous_monitor; 2662 2663 assert(wand != (MagickWand *) NULL); 2664 assert(wand->signature == MagickWandSignature); 2665 if (wand->debug != MagickFalse) 2666 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2667 previous_monitor=SetImageInfoProgressMonitor(wand->image_info, 2668 progress_monitor,client_data); 2669 return(previous_monitor); 2670 } 2671 2672 /* 2673 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2674 % % 2675 % % 2676 % % 2677 % M a g i c k S e t R e s o u r c e L i m i t % 2678 % % 2679 % % 2680 % % 2681 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2682 % 2683 % MagickSetResourceLimit() sets the limit for a particular resource in 2684 % megabytes. 2685 % 2686 % The format of the MagickSetResourceLimit method is: 2687 % 2688 % MagickBooleanType MagickSetResourceLimit(const ResourceType type, 2689 % const MagickSizeType limit) 2690 % 2691 % A description of each parameter follows: 2692 % 2693 % o type: the type of resource: AreaResource, MemoryResource, MapResource, 2694 % DiskResource, FileResource. 2695 % 2696 % o The maximum limit for the resource. 2697 % 2698 */ MagickSetResourceLimit(const ResourceType type,const MagickSizeType limit)2699 WandExport MagickBooleanType MagickSetResourceLimit(const ResourceType type, 2700 const MagickSizeType limit) 2701 { 2702 return(SetMagickResourceLimit(type,limit)); 2703 } 2704 2705 /* 2706 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2707 % % 2708 % % 2709 % % 2710 % M a g i c k S e t R e s o l u t i o n % 2711 % % 2712 % % 2713 % % 2714 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2715 % 2716 % MagickSetResolution() sets the image resolution. 2717 % 2718 % The format of the MagickSetResolution method is: 2719 % 2720 % MagickBooleanType MagickSetResolution(MagickWand *wand, 2721 % const double x_resolution,const double y_resolution) 2722 % 2723 % A description of each parameter follows: 2724 % 2725 % o wand: the magick wand. 2726 % 2727 % o x_resolution: the image x resolution. 2728 % 2729 % o y_resolution: the image y resolution. 2730 % 2731 */ MagickSetResolution(MagickWand * wand,const double x_resolution,const double y_resolution)2732 WandExport MagickBooleanType MagickSetResolution(MagickWand *wand, 2733 const double x_resolution,const double y_resolution) 2734 { 2735 char 2736 density[MagickPathExtent]; 2737 2738 assert(wand != (MagickWand *) NULL); 2739 assert(wand->signature == MagickWandSignature); 2740 if (wand->debug != MagickFalse) 2741 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2742 (void) FormatLocaleString(density,MagickPathExtent,"%gx%g",x_resolution, 2743 y_resolution); 2744 (void) CloneString(&wand->image_info->density,density); 2745 return(MagickTrue); 2746 } 2747 2748 /* 2749 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2750 % % 2751 % % 2752 % % 2753 % M a g i c k S e t S a m p l i n g F a c t o r s % 2754 % % 2755 % % 2756 % % 2757 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2758 % 2759 % MagickSetSamplingFactors() sets the image sampling factors. 2760 % 2761 % The format of the MagickSetSamplingFactors method is: 2762 % 2763 % MagickBooleanType MagickSetSamplingFactors(MagickWand *wand, 2764 % const size_t number_factors,const double *sampling_factors) 2765 % 2766 % A description of each parameter follows: 2767 % 2768 % o wand: the magick wand. 2769 % 2770 % o number_factoes: the number of factors. 2771 % 2772 % o sampling_factors: An array of doubles representing the sampling factor 2773 % for each color component (in RGB order). 2774 % 2775 */ MagickSetSamplingFactors(MagickWand * wand,const size_t number_factors,const double * sampling_factors)2776 WandExport MagickBooleanType MagickSetSamplingFactors(MagickWand *wand, 2777 const size_t number_factors,const double *sampling_factors) 2778 { 2779 char 2780 sampling_factor[MagickPathExtent]; 2781 2782 ssize_t 2783 i; 2784 2785 assert(wand != (MagickWand *) NULL); 2786 assert(wand->signature == MagickWandSignature); 2787 if (wand->debug != MagickFalse) 2788 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2789 if (wand->image_info->sampling_factor != (char *) NULL) 2790 wand->image_info->sampling_factor=(char *) 2791 RelinquishMagickMemory(wand->image_info->sampling_factor); 2792 if (number_factors == 0) 2793 return(MagickTrue); 2794 for (i=0; i < (ssize_t) (number_factors-1); i++) 2795 { 2796 (void) FormatLocaleString(sampling_factor,MagickPathExtent,"%g,", 2797 sampling_factors[i]); 2798 (void) ConcatenateString(&wand->image_info->sampling_factor, 2799 sampling_factor); 2800 } 2801 (void) FormatLocaleString(sampling_factor,MagickPathExtent,"%g", 2802 sampling_factors[i]); 2803 (void) ConcatenateString(&wand->image_info->sampling_factor,sampling_factor); 2804 return(MagickTrue); 2805 } 2806 2807 /* 2808 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2809 % % 2810 % % 2811 % % 2812 % M a g i c k S e t S e e d % 2813 % % 2814 % % 2815 % % 2816 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2817 % 2818 % MagickSetSeed() sets the pseudo-random number generator seed. Use it to 2819 % generate a pedictable sequence of random numbers. 2820 % 2821 % The format of the MagickSetSeed method is: 2822 % 2823 % void MagickSetSeed(const unsigned long seed) 2824 % 2825 % A description of each parameter follows: 2826 % 2827 % o seed: the seed. 2828 % 2829 */ MagickSetSeed(const unsigned long seed)2830 WandExport void MagickSetSeed(const unsigned long seed) 2831 { 2832 SetRandomSecretKey(seed); 2833 } 2834 2835 /* 2836 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2837 % % 2838 % % 2839 % % 2840 % M a g i c k S e t S e c u r i t y P o l i c y % 2841 % % 2842 % % 2843 % % 2844 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2845 % 2846 % MagickSetSecurityPolicy() sets the ImageMagick security policy. It returns 2847 % MagickFalse if the policy is already set or if the policy does not parse. 2848 % 2849 % The format of the MagickSetAntialias method is: 2850 % 2851 % MagickBooleanType MagickSetAntialias(MagickWand *wand, 2852 % const char *policy) 2853 % 2854 % A description of each parameter follows: 2855 % 2856 % o wand: the magick wand. 2857 % 2858 % o policy: the security policy in the XML format. 2859 % 2860 */ MagickSetSecurityPolicy(MagickWand * wand,const char * policy)2861 WandExport MagickBooleanType MagickSetSecurityPolicy(MagickWand *wand, 2862 const char *policy) 2863 { 2864 assert(wand != (MagickWand *) NULL); 2865 assert(wand->signature == MagickWandSignature); 2866 if (wand->debug != MagickFalse) 2867 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2868 return(SetMagickSecurityPolicy(policy,wand->exception)); 2869 } 2870 2871 /* 2872 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2873 % % 2874 % % 2875 % % 2876 % M a g i c k S e t S i z e % 2877 % % 2878 % % 2879 % % 2880 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2881 % 2882 % MagickSetSize() sets the size of the magick wand. Set it before you 2883 % read a raw image format such as RGB, GRAY, or CMYK. 2884 % 2885 % The format of the MagickSetSize method is: 2886 % 2887 % MagickBooleanType MagickSetSize(MagickWand *wand, 2888 % const size_t columns,const size_t rows) 2889 % 2890 % A description of each parameter follows: 2891 % 2892 % o wand: the magick wand. 2893 % 2894 % o columns: the width in pixels. 2895 % 2896 % o rows: the rows in pixels. 2897 % 2898 */ MagickSetSize(MagickWand * wand,const size_t columns,const size_t rows)2899 WandExport MagickBooleanType MagickSetSize(MagickWand *wand, 2900 const size_t columns,const size_t rows) 2901 { 2902 char 2903 geometry[MagickPathExtent]; 2904 2905 assert(wand != (MagickWand *) NULL); 2906 assert(wand->signature == MagickWandSignature); 2907 if (wand->debug != MagickFalse) 2908 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2909 (void) FormatLocaleString(geometry,MagickPathExtent,"%.20gx%.20g",(double) 2910 columns,(double) rows); 2911 (void) CloneString(&wand->image_info->size,geometry); 2912 return(MagickTrue); 2913 } 2914 2915 /* 2916 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2917 % % 2918 % % 2919 % % 2920 % M a g i c k S e t S i z e O f f s e t % 2921 % % 2922 % % 2923 % % 2924 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2925 % 2926 % MagickSetSizeOffset() sets the size and offset of the magick wand. Set it 2927 % before you read a raw image format such as RGB, GRAY, or CMYK. 2928 % 2929 % The format of the MagickSetSizeOffset method is: 2930 % 2931 % MagickBooleanType MagickSetSizeOffset(MagickWand *wand, 2932 % const size_t columns,const size_t rows, 2933 % const ssize_t offset) 2934 % 2935 % A description of each parameter follows: 2936 % 2937 % o wand: the magick wand. 2938 % 2939 % o columns: the image width in pixels. 2940 % 2941 % o rows: the image rows in pixels. 2942 % 2943 % o offset: the image offset. 2944 % 2945 */ MagickSetSizeOffset(MagickWand * wand,const size_t columns,const size_t rows,const ssize_t offset)2946 WandExport MagickBooleanType MagickSetSizeOffset(MagickWand *wand, 2947 const size_t columns,const size_t rows,const ssize_t offset) 2948 { 2949 char 2950 geometry[MagickPathExtent]; 2951 2952 assert(wand != (MagickWand *) NULL); 2953 assert(wand->signature == MagickWandSignature); 2954 if (wand->debug != MagickFalse) 2955 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2956 (void) FormatLocaleString(geometry,MagickPathExtent,"%.20gx%.20g%+.20g", 2957 (double) columns,(double) rows,(double) offset); 2958 (void) CloneString(&wand->image_info->size,geometry); 2959 return(MagickTrue); 2960 } 2961 2962 /* 2963 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2964 % % 2965 % % 2966 % % 2967 % M a g i c k S e t T y p e % 2968 % % 2969 % % 2970 % % 2971 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2972 % 2973 % MagickSetType() sets the image type attribute. 2974 % 2975 % The format of the MagickSetType method is: 2976 % 2977 % MagickBooleanType MagickSetType(MagickWand *wand, 2978 % const ImageType image_type) 2979 % 2980 % A description of each parameter follows: 2981 % 2982 % o wand: the magick wand. 2983 % 2984 % o image_type: the image type: UndefinedType, BilevelType, GrayscaleType, 2985 % GrayscaleAlphaType, PaletteType, PaletteAlphaType, TrueColorType, 2986 % TrueColorAlphaType, ColorSeparationType, ColorSeparationAlphaType, 2987 % or OptimizeType. 2988 % 2989 */ MagickSetType(MagickWand * wand,const ImageType image_type)2990 WandExport MagickBooleanType MagickSetType(MagickWand *wand, 2991 const ImageType image_type) 2992 { 2993 assert(wand != (MagickWand *) NULL); 2994 assert(wand->signature == MagickWandSignature); 2995 if (wand->debug != MagickFalse) 2996 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); 2997 wand->image_info->type=image_type; 2998 return(MagickTrue); 2999 } 3000