/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % A c q u i r e S e m a p h o r e I n f o % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % AcquireSemaphoreInfo() acquires a semaphore. % % The format of the AcquireSemaphoreInfo method is: % % void AcquireSemaphoreInfo(SemaphoreInfo **semaphore_info) % % A description of each parameter follows: % % o semaphore_info: Specifies a pointer to an SemaphoreInfo structure. % */ MagickExport void AcquireSemaphoreInfo(SemaphoreInfo **semaphore_info) { assert(semaphore_info != (SemaphoreInfo **) NULL); #if defined(HAVE_PTHREAD) if (pthread_mutex_lock(&semaphore_mutex) != 0) { (void) fprintf(stderr,"pthread_mutex_lock failed %s\n",strerror(errno)); _exit(1); } #endif #if defined(__WINDOWS__) while (InterlockedCompareExchange(&semaphore_mutex,1L,0L) != 0) Sleep(10); #endif if (*semaphore_info == (SemaphoreInfo *) NULL) *semaphore_info=AllocateSemaphoreInfo(); #if defined(HAVE_PTHREAD) if (pthread_mutex_unlock(&semaphore_mutex) != 0) { (void) fprintf(stderr,"pthread_mutex_unlock failed %s\n",strerror(errno)); _exit(1); } #endif #if defined(__WINDOWS__) InterlockedExchange(&semaphore_mutex,0L); #endif (void) LockSemaphoreInfo(*semaphore_info); }
/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % + I n i t i a l i z e D e l e g a t e I n f o % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Method InitializeDelegateInfo initializes the delegate facility % % The format of the InitializeDelegateInfo method is: % % MagickPassFail InitializeDelegateInfo(void) % % */ MagickPassFail InitializeDelegateInfo(void) { assert(delegate_semaphore == (SemaphoreInfo *) NULL); delegate_semaphore=AllocateSemaphoreInfo(); return MagickPass; }
/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % G e t E x c e p t i o n I n f o % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % GetExceptionInfo() initializes an exception to default values. % % The format of the GetExceptionInfo method is: % % GetExceptionInfo(ExceptionInfo *exception) % % A description of each parameter follows: % % o exception: the exception info. % */ MagickExport void GetExceptionInfo(ExceptionInfo *exception) { assert(exception != (ExceptionInfo *) NULL); (void) ResetMagickMemory(exception,0,sizeof(*exception)); exception->severity=UndefinedException; exception->exceptions=(void *) NewLinkedList(0); exception->semaphore=AllocateSemaphoreInfo(); exception->signature=MagickSignature; }
/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % A c q u i r e S e m a p h o r e I n f o % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % AcquireSemaphoreInfo() acquires a semaphore. % % The format of the AcquireSemaphoreInfo method is: % % void AcquireSemaphoreInfo(SemaphoreInfo **semaphore_info) % % A description of each parameter follows: % % o semaphore_info: Specifies a pointer to an SemaphoreInfo structure. % */ MagickExport void AcquireSemaphoreInfo(SemaphoreInfo **semaphore_info) { assert(semaphore_info != (SemaphoreInfo **) NULL); if (*semaphore_info == (SemaphoreInfo *) NULL) { LockMagickMutex(); if (*semaphore_info == (SemaphoreInfo *) NULL) *semaphore_info=AllocateSemaphoreInfo(); UnlockMagickMutex(); } }
/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % + I n i t i a l i z e M a g i c k I n f o L i s t % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Method InitializeMagickInfoList initializes the magick info facility % % The format of the InitializeMagickInfoList method is: % % MagickPassFail InitializeMagickInfoList(void) % % */ MagickPassFail InitializeMagickInfoList(void) { assert(magick_semaphore == (SemaphoreInfo *) NULL); magick_semaphore=AllocateSemaphoreInfo(); #if defined(SupportMagickModules) assert(module_semaphore == (SemaphoreInfo *) NULL); module_semaphore=AllocateSemaphoreInfo(); #endif /* #if defined(SupportMagickModules) */ #if !defined(BuildMagickModules) RegisterStaticModules(); /* Register all static modules */ #endif /* !defined(BuildMagickModules) */ #if defined(SupportMagickModules) InitializeMagickModules(); /* Module loader */ #endif /* defined(SupportMagickModules) */ return MagickPass; }
/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % G e t Q u a n t u m I n f o % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % GetQuantumInfo() initializes the QuantumInfo structure to default values. % % The format of the GetQuantumInfo method is: % % GetQuantumInfo(const ImageInfo *image_info,QuantumInfo *quantum_info) % % A description of each parameter follows: % % o image_info: the image info. % % o quantum_info: the quantum info. % */ MagickExport void GetQuantumInfo(const ImageInfo *image_info, QuantumInfo *quantum_info) { const char *option; assert(quantum_info != (QuantumInfo *) NULL); (void) ResetMagickMemory(quantum_info,0,sizeof(*quantum_info)); quantum_info->quantum=8; quantum_info->maximum=1.0; quantum_info->scale=QuantumRange; quantum_info->pack=MagickTrue; quantum_info->semaphore=AllocateSemaphoreInfo(); quantum_info->signature=MagickSignature; if (image_info == (const ImageInfo *) NULL) return; option=GetImageOption(image_info,"quantum:format"); if (option != (char *) NULL) quantum_info->format=(QuantumFormatType) ParseCommandOption( MagickQuantumFormatOptions,MagickFalse,option); option=GetImageOption(image_info,"quantum:minimum"); if (option != (char *) NULL) quantum_info->minimum=StringToDouble(option,(char **) NULL); option=GetImageOption(image_info,"quantum:maximum"); if (option != (char *) NULL) quantum_info->maximum=StringToDouble(option,(char **) NULL); if ((quantum_info->minimum == 0.0) && (quantum_info->maximum == 0.0)) quantum_info->scale=0.0; else if (quantum_info->minimum == quantum_info->maximum) { quantum_info->scale=(MagickRealType) QuantumRange/quantum_info->minimum; quantum_info->minimum=0.0; } else quantum_info->scale=(MagickRealType) QuantumRange/(quantum_info->maximum- quantum_info->minimum); option=GetImageOption(image_info,"quantum:scale"); if (option != (char *) NULL) quantum_info->scale=StringToDouble(option,(char **) NULL); option=GetImageOption(image_info,"quantum:polarity"); if (option != (char *) NULL) quantum_info->min_is_white=LocaleCompare(option,"min-is-white") == 0 ? MagickTrue : MagickFalse; quantum_info->endian=image_info->endian; ResetQuantumState(quantum_info); }
/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % A c q u i r e S e m a p h o r e I n f o % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % AcquireSemaphoreInfo() acquires a semaphore. % % The format of the AcquireSemaphoreInfo method is: % % void AcquireSemaphoreInfo(SemaphoreInfo **semaphore_info) % % A description of each parameter follows: % % o semaphore_info: Specifies a pointer to an SemaphoreInfo structure. % */ MagickExport void AcquireSemaphoreInfo(SemaphoreInfo **semaphore_info) { assert(semaphore_info != (SemaphoreInfo **) NULL); #if defined(MAGICKCORE_HAVE_PTHREAD) if (pthread_mutex_lock(&semaphore_mutex) != 0) (void) fprintf(stderr,"pthread_mutex_lock failed %s\n", GetExceptionMessage(errno)); #elif defined(MAGICKORE_HAVE_WINTHREADS) while (InterlockedCompareExchange(&semaphore_mutex,1L,0L) != 0) Sleep(10); #endif if (*semaphore_info == (SemaphoreInfo *) NULL) *semaphore_info=AllocateSemaphoreInfo(); #if defined(MAGICKCORE_HAVE_PTHREAD) if (pthread_mutex_unlock(&semaphore_mutex) != 0) (void) fprintf(stderr,"pthread_mutex_unlock failed %s\n", GetExceptionMessage(errno)); #elif defined(MAGICKORE_HAVE_WINTHREADS) InterlockedExchange(&semaphore_mutex,0L); #endif (void) LockSemaphoreInfo(*semaphore_info); }
/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % + M a g i c C o m p o n e n t G e n e s i s % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % MagicComponentGenesis() instantiates the magic component. % % The format of the MagicComponentGenesis method is: % % MagickBooleanType MagicComponentGenesis(void) % */ MagickExport MagickBooleanType MagicComponentGenesis(void) { if (magic_semaphore == (SemaphoreInfo *) NULL) magic_semaphore=AllocateSemaphoreInfo(); return(MagickTrue); }
/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % + C o n f i g u r e C o m p o n e n t G e n e s i s % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % ConfigureComponentGenesis() instantiates the configure component. % % The format of the ConfigureComponentGenesis method is: % % MagickBooleanType ConfigureComponentGenesis(void) % */ MagickExport MagickBooleanType ConfigureComponentGenesis(void) { if (configure_semaphore == (SemaphoreInfo *) NULL) configure_semaphore=AllocateSemaphoreInfo(); return(MagickTrue); }
/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % + R e g i s t r y C o m p o n e n t G e n e s i s % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % RegistryComponentGenesis() instantiates the registry component. % % The format of the RegistryComponentGenesis method is: % % MagickBooleanType RegistryComponentGenesis(void) % */ MagickExport MagickBooleanType RegistryComponentGenesis(void) { if (registry_semaphore == (SemaphoreInfo *) NULL) registry_semaphore=AllocateSemaphoreInfo(); return(MagickTrue); }