Fix build on Debian unstable which now has GraphicsMagick rather than ImageMagick.
authorCarl Hetherington <cth@carlh.net>
Sat, 18 Oct 2014 21:18:15 +0000 (22:18 +0100)
committerCarl Hetherington <cth@carlh.net>
Sat, 18 Oct 2014 21:18:15 +0000 (22:18 +0100)
src/lib/image_examiner.cc
src/lib/image_proxy.cc
src/lib/util.cc
src/tools/wscript
src/wx/wscript
test/image_test.cc
wscript

index 4ff324f68d4d76ba29e6437e353e48d1b178be65..7058ea3b282935c2a9265660500190ae770bd8d2 100644 (file)
@@ -38,7 +38,9 @@ ImageExaminer::ImageExaminer (shared_ptr<const Film> film, shared_ptr<const Imag
        , _image_content (content)
        , _video_length (0)
 {
        , _image_content (content)
        , _video_length (0)
 {
+#ifdef DCPOMATIC_IMAGE_MAGICK  
        using namespace MagickCore;
        using namespace MagickCore;
+#endif 
        Magick::Image* image = new Magick::Image (content->path(0).string());
        _video_size = libdcp::Size (image->columns(), image->rows());
        delete image;
        Magick::Image* image = new Magick::Image (content->path(0).string());
        _video_size = libdcp::Size (image->columns(), image->rows());
        delete image;
index 3aba6cf7c93fffd8fbb6c61cba85ad7e408c1988..3851f88e78c79e873ee962110ff1a929747ba0e8 100644 (file)
@@ -156,7 +156,11 @@ MagickImageProxy::image () const
        /* Write line-by-line here as _image must be aligned, and write() cannot be told about strides */
        uint8_t* p = _image->data()[0];
        for (int i = 0; i < size.height; ++i) {
        /* Write line-by-line here as _image must be aligned, and write() cannot be told about strides */
        uint8_t* p = _image->data()[0];
        for (int i = 0; i < size.height; ++i) {
+#ifdef DCPOMATIC_IMAGE_MAGICK          
                using namespace MagickCore;
                using namespace MagickCore;
+#else
+               using namespace MagickLib;
+#endif         
                magick_image->write (0, i, size.width, 1, "RGB", CharPixel, p);
                p += _image->stride()[0];
        }
                magick_image->write (0, i, size.width, 1, "RGB", CharPixel, p);
                p += _image->stride()[0];
        }
index 290dd20ef1f7d186f7844caa9222c175058a14e4..2e9ca66b22ccf597004b6b89892406c0d4d5da3e 100644 (file)
 #endif
 #include <glib.h>
 #include <openjpeg.h>
 #endif
 #include <glib.h>
 #include <openjpeg.h>
+#ifdef DCPOMATIC_IMAGE_MAGICK
 #include <magick/MagickCore.h>
 #include <magick/MagickCore.h>
+#else
+#include <magick/common.h>
+#include <magick/magick_config.h>
+#endif
 #include <magick/version.h>
 #include <libdcp/version.h>
 #include <libdcp/util.h>
 #include <magick/version.h>
 #include <libdcp/version.h>
 #include <libdcp/util.h>
index c4ea1530fa831d0ff583ead168d29011cb6a9a16..ac270af704026fe3763b1b08a2657e82ed704b30 100644 (file)
@@ -11,7 +11,7 @@ def configure(conf):
 def build(bld):
     for t in ['dcpomatic_cli', 'dcpomatic_server_cli', 'server_test', 'dcpomatic_kdm', 'dcpomatic_create']:
         obj = bld(features = 'cxx cxxprogram')
 def build(bld):
     for t in ['dcpomatic_cli', 'dcpomatic_server_cli', 'server_test', 'dcpomatic_kdm', 'dcpomatic_create']:
         obj = bld(features = 'cxx cxxprogram')
-        obj.uselib = 'BOOST_THREAD BOOST_DATETIME OPENJPEG DCP CXML AVFORMAT AVFILTER AVCODEC AVUTIL SWSCALE POSTPROC WXWIDGETS QUICKMAIL'
+        obj.uselib = 'BOOST_THREAD BOOST_DATETIME OPENJPEG DCP CXML AVFORMAT AVFILTER AVCODEC AVUTIL SWSCALE POSTPROC QUICKMAIL'
         obj.includes = ['..']
         obj.use    = ['libdcpomatic']
         obj.source = '%s.cc' % t
         obj.includes = ['..']
         obj.use    = ['libdcpomatic']
         obj.source = '%s.cc' % t
index 8bf2451c22cba584271a648c7037a7d2b909a0ca..07105006904bfaa27cc0474bf5b095355e68ba1c 100644 (file)
@@ -64,7 +64,6 @@ def configure(conf):
                                     'wx_gtk2u_adv-3.0', 'wx_gtk2u_core-3.0', 'wx_baseu_xml-3.0', 'wx_baseu-3.0']
         conf.env.LIB_WXWIDGETS = ['tiff', 'SM', 'dl', 'jpeg', 'png', 'X11', 'expat']
         if conf.env.TARGET_DEBIAN and conf.env.DEBIAN_UNSTABLE:
                                     'wx_gtk2u_adv-3.0', 'wx_gtk2u_core-3.0', 'wx_baseu_xml-3.0', 'wx_baseu-3.0']
         conf.env.LIB_WXWIDGETS = ['tiff', 'SM', 'dl', 'jpeg', 'png', 'X11', 'expat']
         if conf.env.TARGET_DEBIAN and conf.env.DEBIAN_UNSTABLE:
-            conf.env.LIB_WXWIDGETS.append('Xxf86vm')
             conf.env.LIB_WXWIDGETS.append('Xext')
             conf.env.LIB_WXWIDGETS.append('X11')
 
             conf.env.LIB_WXWIDGETS.append('Xext')
             conf.env.LIB_WXWIDGETS.append('X11')
 
index 51ad49ebf63479694cd2c4099686a3e630babe7d..5662c729b5bd354dad0ec43cd1efc0eca769b642 100644 (file)
@@ -174,16 +174,24 @@ read_file (string file)
 
        boost::shared_ptr<Image> image (new Image (PIX_FMT_RGB24, size, true));
 
 
        boost::shared_ptr<Image> image (new Image (PIX_FMT_RGB24, size, true));
 
+#ifdef DCPOMATIC_IMAGE_MAGICK  
        using namespace MagickCore;
        using namespace MagickCore;
+#endif 
        
        uint8_t* p = image->data()[0];
        for (int y = 0; y < size.height; ++y) {
                uint8_t* q = p;
                for (int x = 0; x < size.width; ++x) {
                        Magick::Color c = magick_image.pixelColor (x, y);
        
        uint8_t* p = image->data()[0];
        for (int y = 0; y < size.height; ++y) {
                uint8_t* q = p;
                for (int x = 0; x < size.width; ++x) {
                        Magick::Color c = magick_image.pixelColor (x, y);
+#ifdef DCPOMATIC_IMAGE_MAGICK                  
                        *q++ = c.redQuantum() * 255 / QuantumRange;
                        *q++ = c.greenQuantum() * 255 / QuantumRange;
                        *q++ = c.blueQuantum() * 255 / QuantumRange;
                        *q++ = c.redQuantum() * 255 / QuantumRange;
                        *q++ = c.greenQuantum() * 255 / QuantumRange;
                        *q++ = c.blueQuantum() * 255 / QuantumRange;
+#else                  
+                       *q++ = c.redQuantum() * 255 / MaxRGB;
+                       *q++ = c.greenQuantum() * 255 / MaxRGB;
+                       *q++ = c.blueQuantum() * 255 / MaxRGB;
+#endif                 
                }
                p += image->stride()[0];
        }
                }
                p += image->stride()[0];
        }
@@ -195,14 +203,20 @@ static
 void
 write_file (shared_ptr<Image> image, string file)
 {
 void
 write_file (shared_ptr<Image> image, string file)
 {
+#ifdef DCPOMATIC_IMAGE_MAGICK  
        using namespace MagickCore;
        using namespace MagickCore;
+#endif 
        
        Magick::Image magick_image (Magick::Geometry (image->size().width, image->size().height), Magick::Color (0, 0, 0));
        uint8_t*p = image->data()[0];
        for (int y = 0; y < image->size().height; ++y) {
                uint8_t* q = p;
                for (int x = 0; x < image->size().width; ++x) {
        
        Magick::Image magick_image (Magick::Geometry (image->size().width, image->size().height), Magick::Color (0, 0, 0));
        uint8_t*p = image->data()[0];
        for (int y = 0; y < image->size().height; ++y) {
                uint8_t* q = p;
                for (int x = 0; x < image->size().width; ++x) {
+#ifdef DCPOMATIC_IMAGE_MAGICK
                        Magick::Color c (q[0] * QuantumRange / 256, q[1] * QuantumRange / 256, q[2] * QuantumRange / 256);
                        Magick::Color c (q[0] * QuantumRange / 256, q[1] * QuantumRange / 256, q[2] * QuantumRange / 256);
+#else                  
+                       Magick::Color c (q[0] * MaxRGB / 256, q[1] * MaxRGB / 256, q[2] * MaxRGB / 256);
+#endif                 
                        magick_image.pixelColor (x, y, c);
                        q += 3;
                }
                        magick_image.pixelColor (x, y, c);
                        q += 3;
                }
diff --git a/wscript b/wscript
index eb80b9efc3e24a44376d9bd29ca5c0f085f68c0a..f5d1a1c3438722c28e3f419cca09da78d195e6b2 100644 (file)
--- a/wscript
+++ b/wscript
@@ -1,6 +1,8 @@
 import subprocess
 import os
 import sys
 import subprocess
 import os
 import sys
+import distutils
+import distutils.spawn
 
 APPNAME = 'dcpomatic'
 VERSION = '1.75.1devel'
 
 APPNAME = 'dcpomatic'
 VERSION = '1.75.1devel'
@@ -322,7 +324,13 @@ def configure(conf):
     # Dependencies which are always dynamically linked
     conf.check_cfg(package='sndfile', args='--cflags --libs', uselib_store='SNDFILE', mandatory=True)
     conf.check_cfg(package='glib-2.0', args='--cflags --libs', uselib_store='GLIB', mandatory=True)
     # Dependencies which are always dynamically linked
     conf.check_cfg(package='sndfile', args='--cflags --libs', uselib_store='SNDFILE', mandatory=True)
     conf.check_cfg(package='glib-2.0', args='--cflags --libs', uselib_store='GLIB', mandatory=True)
-    conf.check_cfg(package= '', path=conf.options.magickpp_config, args='--cppflags --cxxflags --libs', uselib_store='MAGICK', mandatory=True)
+    if distutils.spawn.find_executable(conf.options.magickpp_config):
+        conf.check_cfg(package='', path=conf.options.magickpp_config, args='--cppflags --cxxflags --libs', uselib_store='MAGICK', mandatory=True)
+        conf.env.append_value('CXXFLAGS', '-DDCPOMATIC_IMAGE_MAGICK')
+    else:
+        conf.check_cfg(package='GraphicsMagick++', args='--cppflags --cxxflags --libs', uselib_store='MAGICK', mandatory=True)
+        conf.env.append_value('CXXFLAGS', '-DDCPOMATIC_GRAPHICS_MAGICK')
+        
     conf.check_cfg(package='libzip', args='--cflags --libs', uselib_store='ZIP', mandatory=True)
 
     conf.check_cc(fragment="""
     conf.check_cfg(package='libzip', args='--cflags --libs', uselib_store='ZIP', mandatory=True)
 
     conf.check_cc(fragment="""