]> granicus.if.org Git - imagemagick/blob - Magick++/lib/Functions.cpp
EnableOpenCL returns true if OpenCL was enabled successfully.
[imagemagick] / Magick++ / lib / Functions.cpp
1 // This may look like C code, but it is really -*- C++ -*-
2 //
3 // Copyright Bob Friesenhahn, 1999, 2002, 2003
4 //
5 // Simple C++ function wrappers for ImageMagick equivalents
6 //
7
8 #define MAGICKCORE_IMPLEMENTATION  1
9 #define MAGICK_PLUSPLUS_IMPLEMENTATION 1
10
11 #include "Magick++/Include.h"
12 #include <string>
13
14 using namespace std;
15
16 #include "Magick++/Functions.h"
17 #include "Magick++/Exception.h"
18
19 static bool magick_initialized=false;
20
21 // Clone C++ string as allocated C string, de-allocating any existing string
22 void Magick::CloneString(char **destination_, const std::string &source_)
23 {
24   MagickCore::CloneString(destination_,source_.c_str());
25 }
26
27 MagickPPExport void Magick::DisableOpenCL(void)
28 {
29   GetPPException;
30   MagickCore::InitImageMagickOpenCL(MagickCore::MAGICK_OPENCL_OFF,NULL,NULL,
31     &exceptionInfo);
32   ThrowPPException;
33 }
34
35 MagickPPExport bool Magick::EnableOpenCL(const bool useCache_)
36 {
37   bool
38     status;
39
40   GetPPException;
41   if (useCache_)
42     status=MagickCore::InitImageMagickOpenCL(
43       MagickCore::MAGICK_OPENCL_DEVICE_SELECT_AUTO,NULL,NULL,&exceptionInfo) ==
44       MagickTrue;
45   else
46     status=MagickCore::InitImageMagickOpenCL(
47       MagickCore::MAGICK_OPENCL_DEVICE_SELECT_AUTO_CLEAR_CACHE,NULL,NULL,
48       &exceptionInfo) == MagickTrue;
49   ThrowPPException;
50   return(status);
51 }
52
53 MagickPPExport void Magick::InitializeMagick(const char *path_)
54 {
55   MagickCore::MagickCoreGenesis(path_,MagickFalse);
56   if (!magick_initialized)
57     magick_initialized=true;
58 }
59
60 MagickPPExport void Magick::TerminateMagick(void)
61 {
62   if (magick_initialized)
63     {
64       magick_initialized=false;
65       MagickCore::MagickCoreTerminus();
66     }
67 }