From 399e3ce12bafdf1e2668d69ad839f0ef4c686739 Mon Sep 17 00:00:00 2001 From: j-b-m Date: Sun, 1 Jul 2007 18:17:44 +0000 Subject: [PATCH] Add support for psd, xcf and exr images (KDE libraries needed for these formats). Make pcx and tiff images load correctly git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@1005 d19143bc-622f-0410-bfdd-b5b2a6649095 --- src/modules/fezzik.dict | 5 +++++ src/modules/qimage/Makefile | 4 ++++ src/modules/qimage/configure | 19 ++++++++++++++++++- src/modules/qimage/producer_qimage.c | 1 + src/modules/qimage/qimage_wrapper.cpp | 27 +++++++++++++++++++++++++++ src/modules/qimage/qimage_wrapper.h | 1 + 6 files changed, 56 insertions(+), 1 deletions(-) diff --git a/src/modules/fezzik.dict b/src/modules/fezzik.dict index ba7da2f..7d24ecd 100644 --- a/src/modules/fezzik.dict +++ b/src/modules/fezzik.dict @@ -8,6 +8,7 @@ http://*=avformat *.bmp=pixbuf,qimage,sdl_image *.dv=mcdv,avformat,libdv *.dif=mcdv,avformat,libdv +*.exr=qimage *.gif=pixbuf,qimage,sdl_image *.graphics=westley *.jfx=westley @@ -21,13 +22,17 @@ http://*=avformat *.mpeg=mcmpeg,avformat *.mpl=pango *.ogg=vorbis +*.pcx=pixbuf,qimage,sdl_image *.pgm=pgm,pixbuf,qimage,sdl_image *.png=pixbuf,qimage,sdl_image +*.psd=qimage *.story=westley *.svg=pixbuf *.tga=pixbuf,qimage,sdl_image +*.tiff=pixbuf,qimage,sdl_image *.txt=pango *.vob=mcmpeg,avformat *.wav=avformat *.wmv=avformat +*.xcf=qimage,sdl_image *=avformat diff --git a/src/modules/qimage/Makefile b/src/modules/qimage/Makefile index 44ad0d6..8c23b6e 100644 --- a/src/modules/qimage/Makefile +++ b/src/modules/qimage/Makefile @@ -9,6 +9,10 @@ CFLAGS+=-I../../ LDFLAGS=-L../../framework $(QTLIBS) -lmlt -lstdc++ CXXFLAGS+=$(CFLAGS) $(QTCXXFLAGS) -Wno-deprecated +ifdef USE_KDE +LDFLAGS+= -lkio +endif + SRCS := $(OBJS:.o=.c) $(CPPOBJS:.o=.cpp) all: $(TARGET) diff --git a/src/modules/qimage/configure b/src/modules/qimage/configure index 2c41cab..6b7b104 100755 --- a/src/modules/qimage/configure +++ b/src/modules/qimage/configure @@ -28,12 +28,19 @@ else qimage_includedir=/usr/include/qt3 qimage_libdir=/usr/lib/qt3 + kde_includedir=/usr/include/kde + if [ "$QTDIR" != "" ] then qimage_includedir="$QTDIR/include" qimage_libdir="$QTDIR" fi + if [ "$KDEDIR" != "" ] + then + kde_includedir="$KDEDIR/include" + fi + for i in "$@" do case $i in @@ -44,7 +51,17 @@ else if [ -d "$qimage_libdir" -a -d "$qimage_includedir" ] then - echo QTCXXFLAGS=-I$qimage_includedir > config.mak + echo > config.h + echo > config.mak + if [ -d "$kde_includedir" ] + then + echo "#define USE_KDE" >> config.h + echo "USE_KDE=1" >> config.mak + echo QTCXXFLAGS=-I$qimage_includedir -I$kde_includedir >> config.mak + else + echo "qimage: KDE environment not found - disabling extra image formats" + echo QTCXXFLAGS=-I$qimage_includedir >> config.mak + fi echo QTLIBS=-L$qimage_libdir/lib -lqt-mt >> config.mak echo qimage libmltqimage$LIBSUF >> ../producers.dat else diff --git a/src/modules/qimage/producer_qimage.c b/src/modules/qimage/producer_qimage.c index e172def..302bca0 100644 --- a/src/modules/qimage/producer_qimage.c +++ b/src/modules/qimage/producer_qimage.c @@ -46,6 +46,7 @@ mlt_producer producer_qimage_init( char *filename ) mlt_properties properties = MLT_PRODUCER_PROPERTIES( &this->parent ); // Callback registration + init_qimage(); producer->get_frame = producer_get_frame; producer->close = ( mlt_destructor )producer_close; diff --git a/src/modules/qimage/qimage_wrapper.cpp b/src/modules/qimage/qimage_wrapper.cpp index 168796d..af6838e 100644 --- a/src/modules/qimage/qimage_wrapper.cpp +++ b/src/modules/qimage/qimage_wrapper.cpp @@ -23,16 +23,33 @@ #include "qimage_wrapper.h" #include + + +#include "config.h" + +#ifdef USE_KDE +#include +#include +#endif + #include extern "C" { #include +#ifdef USE_KDE +static KInstance *instance = 0L; +#endif + static void qimage_delete( void *data ) { QImage *image = ( QImage * )data; delete image; +#ifdef USE_KDE + if (instance) delete instance; + instance = 0L; +#endif } static void clear_buffered_image( mlt_properties producer_props, uint8_t **current_image, uint8_t **current_alpha ) @@ -57,6 +74,16 @@ static void assign_buffered_image( mlt_properties producer_props, uint8_t *curre mlt_events_unblock( producer_props, NULL ); } +void init_qimage() +{ +#ifdef USE_KDE + if (!instance) { + instance = new KInstance("qimage_prod"); + KImageIO::registerFormats(); + } +#endif +} + void refresh_qimage( mlt_frame frame, int width, int height ) { // Obtain a previous assigned qimage (if it exists) diff --git a/src/modules/qimage/qimage_wrapper.h b/src/modules/qimage/qimage_wrapper.h index 2891f94..2136869 100644 --- a/src/modules/qimage/qimage_wrapper.h +++ b/src/modules/qimage/qimage_wrapper.h @@ -41,6 +41,7 @@ struct producer_qimage_s typedef struct producer_qimage_s *producer_qimage; extern void refresh_qimage( mlt_frame, int width, int height ); +extern void init_qimage(); #ifdef __cplusplus } -- 1.7.4.4