From 08c29dc7964a5492f31534e2fcd466b1985b32f3 Mon Sep 17 00:00:00 2001 From: Gokul Kartha Date: Tue, 30 Nov 2010 00:18:35 +0200 Subject: [PATCH] Added Logic for Customizable Plugin and Filter Support Framework Need to Implement the XML parser Added Algoroithem for Classic Look Filter --- filters/classic.xml | 1 + filters/grey.xml | 1 + filters/libfilter_autocolor.so | 1 + filters/libfilter_autocolor.so.1 | 1 + filters/libfilter_autocolor.so.1.0 | 1 + filters/libfilter_autocolor.so.1.0.0 | Bin 0 -> 12731 bytes filters/sepia.xml | 1 + plugins/facebook.xml | 6 + src/app/app.pro | 3 +- src/app/engine/engine.pro | 16 ++ src/app/engine/filterloader.cpp | 44 ++++++ src/app/engine/filterloader.h | 40 +++++ src/app/engine/pluginloader.cpp | 6 + src/app/engine/pluginloader.h | 18 +++ src/app/viewer/photoviewer.cpp | 21 ++- src/app/viewer/photoviewer.h | 2 + src/app/x11/appwindow.cpp | 30 +++- src/app/x11/appwindow.h | 8 +- src/app/x11/x11.pro | 7 +- src/core/baseui/workspace.cpp | 26 +++- src/core/baseui/workspace.h | 4 + src/filters/autocolor/Makefile | 226 +++++++++++++++++++++++++++++ src/filters/autocolor/autocolor.pro | 12 ++ src/filters/autocolor/autocolorfilter.cpp | 41 ++++++ src/filters/autocolor/autocolorfilter.h | 13 ++ src/filters/autocolor/autocolorfilter.o | Bin 0 -> 6964 bytes src/filters/filters.pro | 2 +- 27 files changed, 516 insertions(+), 15 deletions(-) create mode 100644 filters/classic.xml create mode 100644 filters/grey.xml create mode 120000 filters/libfilter_autocolor.so create mode 120000 filters/libfilter_autocolor.so.1 create mode 120000 filters/libfilter_autocolor.so.1.0 create mode 100755 filters/libfilter_autocolor.so.1.0.0 create mode 100644 filters/sepia.xml create mode 100644 plugins/facebook.xml create mode 100644 src/app/engine/engine.pro create mode 100644 src/app/engine/filterloader.cpp create mode 100644 src/app/engine/filterloader.h create mode 100644 src/app/engine/pluginloader.cpp create mode 100644 src/app/engine/pluginloader.h create mode 100644 src/filters/autocolor/Makefile create mode 100644 src/filters/autocolor/autocolor.pro create mode 100644 src/filters/autocolor/autocolorfilter.cpp create mode 100644 src/filters/autocolor/autocolorfilter.h create mode 100644 src/filters/autocolor/autocolorfilter.o diff --git a/filters/classic.xml b/filters/classic.xml new file mode 100644 index 0000000..61c01bf --- /dev/null +++ b/filters/classic.xml @@ -0,0 +1 @@ + diff --git a/filters/grey.xml b/filters/grey.xml new file mode 100644 index 0000000..3522447 --- /dev/null +++ b/filters/grey.xml @@ -0,0 +1 @@ + diff --git a/filters/libfilter_autocolor.so b/filters/libfilter_autocolor.so new file mode 120000 index 0000000..c17d5db --- /dev/null +++ b/filters/libfilter_autocolor.so @@ -0,0 +1 @@ +libfilter_autocolor.so.1.0.0 \ No newline at end of file diff --git a/filters/libfilter_autocolor.so.1 b/filters/libfilter_autocolor.so.1 new file mode 120000 index 0000000..c17d5db --- /dev/null +++ b/filters/libfilter_autocolor.so.1 @@ -0,0 +1 @@ +libfilter_autocolor.so.1.0.0 \ No newline at end of file diff --git a/filters/libfilter_autocolor.so.1.0 b/filters/libfilter_autocolor.so.1.0 new file mode 120000 index 0000000..c17d5db --- /dev/null +++ b/filters/libfilter_autocolor.so.1.0 @@ -0,0 +1 @@ +libfilter_autocolor.so.1.0.0 \ No newline at end of file diff --git a/filters/libfilter_autocolor.so.1.0.0 b/filters/libfilter_autocolor.so.1.0.0 new file mode 100755 index 0000000000000000000000000000000000000000..a2dc127201f9b58265210676f3bbbb3b25e8d908 GIT binary patch literal 12731 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 H)5iASp&W<< literal 0 HcmV?d00001 diff --git a/filters/sepia.xml b/filters/sepia.xml new file mode 100644 index 0000000..3522447 --- /dev/null +++ b/filters/sepia.xml @@ -0,0 +1 @@ + diff --git a/plugins/facebook.xml b/plugins/facebook.xml new file mode 100644 index 0000000..235b4bc --- /dev/null +++ b/plugins/facebook.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/app/app.pro b/src/app/app.pro index 3835bdd..584f74f 100644 --- a/src/app/app.pro +++ b/src/app/app.pro @@ -1,2 +1,3 @@ TEMPLATE = subdirs -SUBDIRS = viewer x11 +SUBDIRS=engine x11 viewer + diff --git a/src/app/engine/engine.pro b/src/app/engine/engine.pro new file mode 100644 index 0000000..6e2a332 --- /dev/null +++ b/src/app/engine/engine.pro @@ -0,0 +1,16 @@ +###################################################################### +# Automatically generated by qmake (2.01a) Tue Nov 16 21:24:19 2010 +###################################################################### + +TEMPLATE = lib +TARGET = ../../../libs/PEEngine +DEPENDPATH += . +INCLUDEPATH += . ../../core/interfaces + +HEADERS += \ + pluginloader.h \ + filterloader.h + +SOURCES += \ + pluginloader.cpp \ + filterloader.cpp diff --git a/src/app/engine/filterloader.cpp b/src/app/engine/filterloader.cpp new file mode 100644 index 0000000..a245651 --- /dev/null +++ b/src/app/engine/filterloader.cpp @@ -0,0 +1,44 @@ +#include "filterloader.h" +#include + +FilterLoader::FilterLoader(QObject *parent) : + QObject(parent),hasInitialized(false) +{ +} +void FilterLoader::loadFilters() +{ + if(hasInitialized)return; + + QStringList filterDescs=fetchFilterSpecs(); + for(int i=0;i +#include "filterinterface.h" +#include +struct Filter +{ + FilterInterface *filter; + QString description; + QString author; +}; + +//The class deals with the filters. + +class FilterLoader : public QObject +{ + Q_OBJECT +public: + explicit FilterLoader(QObject *parent = 0); + Filter getFilter(QString id) const; +signals: + void filterReady(QString displayableName,QString id); +public slots: +private: + //a List of available filters accessed through an id + QMap mFilters; + bool hasInitialized; +public: + void loadFilters(); +private: + QStringList fetchFilterSpecs(); + + void parseSpec(QString file); + + bool loadFilter(QString); + +}; + +#endif // FILTERLOADER_H diff --git a/src/app/engine/pluginloader.cpp b/src/app/engine/pluginloader.cpp new file mode 100644 index 0000000..30c14c8 --- /dev/null +++ b/src/app/engine/pluginloader.cpp @@ -0,0 +1,6 @@ +#include "pluginloader.h" + +PluginLoader::PluginLoader(QObject *parent) : + QObject(parent) +{ +} diff --git a/src/app/engine/pluginloader.h b/src/app/engine/pluginloader.h new file mode 100644 index 0000000..614f4ce --- /dev/null +++ b/src/app/engine/pluginloader.h @@ -0,0 +1,18 @@ +#ifndef PLUGINLOADER_H +#define PLUGINLOADER_H + +#include + +class PluginLoader : public QObject +{ + Q_OBJECT +public: + explicit PluginLoader(QObject *parent = 0); + +signals: + +public slots: + +}; + +#endif // PLUGINLOADER_H diff --git a/src/app/viewer/photoviewer.cpp b/src/app/viewer/photoviewer.cpp index 307b37a..d4485a9 100644 --- a/src/app/viewer/photoviewer.cpp +++ b/src/app/viewer/photoviewer.cpp @@ -1,15 +1,28 @@ #include "photoviewer.h" #include - +#include +#include #include "workspace.h" PhotoViewer::PhotoViewer(QWidget *parent) : QMainWindow(parent) { - mWorkspace=new Workspace(); - setCentralWidget(mWorkspace); - processCommandLineArgs(); + mWorkspace=new Workspace(this); + // setCentralWidget(mWorkspace); + // processCommandLineArgs(); + browseFiles(); + QDockWidget *dockWidget = new QDockWidget(tr("Dock Widget"), this); + dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | + Qt::RightDockWidgetArea); + dockWidget->setWidget(mWorkspace); + addDockWidget(Qt::BottomDockWidgetArea, dockWidget); } +void PhotoViewer::browseFiles() +{ + QString fileName=QFileDialog::getOpenFileName(this,tr("Open Image"), "/home/everyourgokul/Desktop/", tr("Image Files (*.png *.jpg *.bmp)")); + mWorkspace->loadImage(fileName); +} + //temporary implementaion void PhotoViewer::processCommandLineArgs() { diff --git a/src/app/viewer/photoviewer.h b/src/app/viewer/photoviewer.h index a4e338c..a2e5eee 100644 --- a/src/app/viewer/photoviewer.h +++ b/src/app/viewer/photoviewer.h @@ -11,6 +11,8 @@ public: private: Workspace *mWorkspace; void processCommandLineArgs(); +private slots: + void browseFiles(); signals: public slots: diff --git a/src/app/x11/appwindow.cpp b/src/app/x11/appwindow.cpp index b89219e..2d48258 100644 --- a/src/app/x11/appwindow.cpp +++ b/src/app/x11/appwindow.cpp @@ -1,14 +1,33 @@ #include "appwindow.h" #include "workspace.h" +#include "filterloader.h" + #include #include +#include +#include #include + AppWindow::AppWindow(QWidget *parent):QMainWindow(parent) { - mWorkspace=new Workspace(); - setCentralWidget(mWorkspace); + //Creates the workspace objec + mWorkspace=new Workspace(this); + + //Creates the Filter Handler Object and Connect the Signals + mFilterHandle=new FilterLoader(this); + connect(mFilterHandle,SIGNAL(filterReady(QString,QString)),this,SLOT(onFilterReady(QString,QString))); + mFilterHandle->loadFilters(); + + //Temporary + QDockWidget *dockWidget = new QDockWidget(tr("Dock Widget"), this); + dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); + dockWidget->setWidget(mWorkspace); + addDockWidget(Qt::BottomDockWidgetArea, dockWidget); + setCentralWidget(dockWidget); + //Imple Over + //UI Definion createActions(); createMenus(); createToolBars(); @@ -23,6 +42,13 @@ AppWindow::AppWindow(QWidget *parent):QMainWindow(parent) void AppWindow::open() { + QString fileName=QFileDialog::getOpenFileName(this,tr("Open Image"), "/home/everyourgokul/Desktop/", tr("Image Files (*.png *.jpg *.bmp)")); + mWorkspace->loadImage(fileName); + } + + void AppWindow::onFilterReady(QString name,QString id) + { + //here we need to add the name into the filters menu } diff --git a/src/app/x11/appwindow.h b/src/app/x11/appwindow.h index 42b4b47..271605c 100644 --- a/src/app/x11/appwindow.h +++ b/src/app/x11/appwindow.h @@ -13,7 +13,7 @@ #include class Workspace; - +class FilterLoader; class AppWindow:public QMainWindow @@ -24,6 +24,9 @@ public: AppWindow(QWidget *parent=0); private: + + +private: QMenu *fileMenu; QMenu *editMenu; QToolBar *fileToolBar; @@ -36,8 +39,11 @@ private: Workspace *mWorkspace; + FilterLoader *mFilterHandle; + private slots: + void onFilterReady(QString name,QString id); void newFile(); void open(); bool save(); diff --git a/src/app/x11/x11.pro b/src/app/x11/x11.pro index 2c0a3e2..7ee3941 100644 --- a/src/app/x11/x11.pro +++ b/src/app/x11/x11.pro @@ -4,10 +4,11 @@ TEMPLATE = app TARGET = ../../../bin/photoenhancer -DEPENDPATH +=. ../../core/baseui ../../core/utils -INCLUDEPATH +=. ../../core/baseui ../../core/utils +DEPENDPATH +=. ../../core/baseui ../../core/utils ../engine +INCLUDEPATH +=. ../../core/baseui ../../core/utils ../engine ../../core/interfaces LIBS+=-L../../../libs/ -lPEBaseui \ - -L../../../libs/ -lPEUtils + -L../../../libs/ -lPEUtils \ + -L../../../libs/ -lPEEngine # Input HEADERS += appwindow.h SOURCES += appwindow.cpp main.cpp diff --git a/src/core/baseui/workspace.cpp b/src/core/baseui/workspace.cpp index b77feef..6abcd75 100644 --- a/src/core/baseui/workspace.cpp +++ b/src/core/baseui/workspace.cpp @@ -1,5 +1,9 @@ #include "workspace.h" #include +#include + +#include + ImageLoader::ImageLoader() { url=QString(); @@ -15,6 +19,7 @@ void ImageLoader::run() emit ready(image); } + Workspace::Workspace(QWidget *parent) : QWidget(parent) { @@ -30,12 +35,24 @@ void Workspace::onImageLoaded(QImage &image) { mImage=image.copy(); update(); + setMaximumSize(mImage.size()); + setMinimumSize(mImage.size()); + + +} +void Workspace::keyPressEvent(QKeyEvent *e) +{ + qDebug()<key(); + if(e->key()==Qt::Key_Z) + zoomIn(); + else if(e->key()==Qt::Key_X) + zoomOut(); } void Workspace::zoomIn() { - mImage=mImage.scaledToHeight(mImage.height()*1.5); - mImage=mImage.scaledToWidth(mImage.width()*1.5); + mImage=mImage.scaledToHeight(mImage.height()*1.5).copy(rect()); + mImage=mImage.scaledToWidth(mImage.width()*1.5).copy(rect()); update(); } void Workspace::zoomOut() @@ -48,5 +65,8 @@ void Workspace::zoomOut() void Workspace::paintEvent(QPaintEvent *p) { QPainter painter(this); - painter.drawImage(mImage.rect(),mImage); + + int resultX=(rect().width()-mImage.width())/2; + int resultY=(rect().height()-mImage.height())/2; + painter.drawImage(QPoint(resultX,resultY),mImage); } diff --git a/src/core/baseui/workspace.h b/src/core/baseui/workspace.h index a7f669b..d75c49d 100644 --- a/src/core/baseui/workspace.h +++ b/src/core/baseui/workspace.h @@ -18,6 +18,7 @@ private: QString url; }; +//Need to be scrollable image class Workspace : public QWidget { Q_OBJECT @@ -25,8 +26,11 @@ public: Workspace(QWidget *parent = 0); void loadImage(QString fileName); virtual void paintEvent(QPaintEvent *); + void keyPressEvent(QKeyEvent *); signals: + //testing + public slots: void zoomIn(); void zoomOut(); diff --git a/src/filters/autocolor/Makefile b/src/filters/autocolor/Makefile new file mode 100644 index 0000000..b351f91 --- /dev/null +++ b/src/filters/autocolor/Makefile @@ -0,0 +1,226 @@ +############################################################################# +# Makefile for building: libfilter_autocolor.so.1.0.0 +# Generated by qmake (2.01a) (Qt 4.7.0) on: Mon Nov 29 21:58:47 2010 +# Project: autocolor.pro +# Template: lib +# Command: /usr/bin/qmake -o Makefile autocolor.pro +############################################################################# + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED +CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT -fPIC $(DEFINES) +CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT -fPIC $(DEFINES) +INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I../../core/interfaces -I. +LINK = g++ +LFLAGS = -Wl,-O1 -shared -Wl,-soname,libfilter_autocolor.so.1 +LIBS = $(SUBLIBS) -L/usr/lib -lQtGui -lQtCore -lpthread +AR = ar cqs +RANLIB = +QMAKE = /usr/bin/qmake +TAR = tar -cf +COMPRESS = gzip -9f +COPY = cp -f +SED = sed +COPY_FILE = $(COPY) +COPY_DIR = $(COPY) -r +STRIP = strip +INSTALL_FILE = install -m 644 -p +INSTALL_DIR = $(COPY_DIR) +INSTALL_PROGRAM = install -m 755 -p +DEL_FILE = rm -f +SYMLINK = ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p + +####### Output directory + +OBJECTS_DIR = ./ + +####### Files + +SOURCES = autocolorfilter.cpp +OBJECTS = autocolorfilter.o +DIST = /usr/share/qt4/mkspecs/common/g++.conf \ + /usr/share/qt4/mkspecs/common/unix.conf \ + /usr/share/qt4/mkspecs/common/linux.conf \ + /usr/share/qt4/mkspecs/qconfig.pri \ + /usr/share/qt4/mkspecs/modules/qt_webkit_version.pri \ + /usr/share/qt4/mkspecs/features/qt_functions.prf \ + /usr/share/qt4/mkspecs/features/qt_config.prf \ + /usr/share/qt4/mkspecs/features/exclusive_builds.prf \ + /usr/share/qt4/mkspecs/features/default_pre.prf \ + /usr/share/qt4/mkspecs/features/release.prf \ + /usr/share/qt4/mkspecs/features/default_post.prf \ + /usr/share/qt4/mkspecs/features/warn_on.prf \ + /usr/share/qt4/mkspecs/features/qt.prf \ + /usr/share/qt4/mkspecs/features/unix/thread.prf \ + /usr/share/qt4/mkspecs/features/moc.prf \ + /usr/share/qt4/mkspecs/features/resources.prf \ + /usr/share/qt4/mkspecs/features/uic.prf \ + /usr/share/qt4/mkspecs/features/yacc.prf \ + /usr/share/qt4/mkspecs/features/lex.prf \ + /usr/share/qt4/mkspecs/features/include_source_dir.prf \ + autocolor.pro +QMAKE_TARGET = filter_autocolor +DESTDIR = ../../../filters/ +TARGET = libfilter_autocolor.so.1.0.0 +TARGETA = ../../../filters/libfilter_autocolor.a +TARGETD = libfilter_autocolor.so.1.0.0 +TARGET0 = libfilter_autocolor.so +TARGET1 = libfilter_autocolor.so.1 +TARGET2 = libfilter_autocolor.so.1.0 + +first: all +####### Implicit rules + +.SUFFIXES: .o .c .cpp .cc .cxx .C + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.C.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<" + +####### Build rules + +all: Makefile ../../../filters/$(TARGET) + +../../../filters/$(TARGET): $(OBJECTS) $(SUBLIBS) $(OBJCOMP) + @$(CHK_DIR_EXISTS) ../../../filters/ || $(MKDIR) ../../../filters/ + -$(DEL_FILE) $(TARGET) $(TARGET0) $(TARGET1) $(TARGET2) + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) $(OBJCOMP) + -ln -s $(TARGET) $(TARGET0) + -ln -s $(TARGET) $(TARGET1) + -ln -s $(TARGET) $(TARGET2) + -$(DEL_FILE) ../../../filters/$(TARGET) + -$(DEL_FILE) ../../../filters/$(TARGET0) + -$(DEL_FILE) ../../../filters/$(TARGET1) + -$(DEL_FILE) ../../../filters/$(TARGET2) + -$(MOVE) $(TARGET) $(TARGET0) $(TARGET1) $(TARGET2) ../../../filters/ + + + +staticlib: $(TARGETA) + +$(TARGETA): $(OBJECTS) $(OBJCOMP) + -$(DEL_FILE) $(TARGETA) + $(AR) $(TARGETA) $(OBJECTS) + +Makefile: autocolor.pro /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mkspecs/common/g++.conf \ + /usr/share/qt4/mkspecs/common/unix.conf \ + /usr/share/qt4/mkspecs/common/linux.conf \ + /usr/share/qt4/mkspecs/qconfig.pri \ + /usr/share/qt4/mkspecs/modules/qt_webkit_version.pri \ + /usr/share/qt4/mkspecs/features/qt_functions.prf \ + /usr/share/qt4/mkspecs/features/qt_config.prf \ + /usr/share/qt4/mkspecs/features/exclusive_builds.prf \ + /usr/share/qt4/mkspecs/features/default_pre.prf \ + /usr/share/qt4/mkspecs/features/release.prf \ + /usr/share/qt4/mkspecs/features/default_post.prf \ + /usr/share/qt4/mkspecs/features/warn_on.prf \ + /usr/share/qt4/mkspecs/features/qt.prf \ + /usr/share/qt4/mkspecs/features/unix/thread.prf \ + /usr/share/qt4/mkspecs/features/moc.prf \ + /usr/share/qt4/mkspecs/features/resources.prf \ + /usr/share/qt4/mkspecs/features/uic.prf \ + /usr/share/qt4/mkspecs/features/yacc.prf \ + /usr/share/qt4/mkspecs/features/lex.prf \ + /usr/share/qt4/mkspecs/features/include_source_dir.prf \ + /usr/lib/libQtGui.prl \ + /usr/lib/libQtCore.prl + $(QMAKE) -o Makefile autocolor.pro +/usr/share/qt4/mkspecs/common/g++.conf: +/usr/share/qt4/mkspecs/common/unix.conf: +/usr/share/qt4/mkspecs/common/linux.conf: +/usr/share/qt4/mkspecs/qconfig.pri: +/usr/share/qt4/mkspecs/modules/qt_webkit_version.pri: +/usr/share/qt4/mkspecs/features/qt_functions.prf: +/usr/share/qt4/mkspecs/features/qt_config.prf: +/usr/share/qt4/mkspecs/features/exclusive_builds.prf: +/usr/share/qt4/mkspecs/features/default_pre.prf: +/usr/share/qt4/mkspecs/features/release.prf: +/usr/share/qt4/mkspecs/features/default_post.prf: +/usr/share/qt4/mkspecs/features/warn_on.prf: +/usr/share/qt4/mkspecs/features/qt.prf: +/usr/share/qt4/mkspecs/features/unix/thread.prf: +/usr/share/qt4/mkspecs/features/moc.prf: +/usr/share/qt4/mkspecs/features/resources.prf: +/usr/share/qt4/mkspecs/features/uic.prf: +/usr/share/qt4/mkspecs/features/yacc.prf: +/usr/share/qt4/mkspecs/features/lex.prf: +/usr/share/qt4/mkspecs/features/include_source_dir.prf: +/usr/lib/libQtGui.prl: +/usr/lib/libQtCore.prl: +qmake: FORCE + @$(QMAKE) -o Makefile autocolor.pro + +dist: + @$(CHK_DIR_EXISTS) .tmp/filter_autocolor1.0.0 || $(MKDIR) .tmp/filter_autocolor1.0.0 + $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/filter_autocolor1.0.0/ && $(COPY_FILE) --parents autocolorfilter.h .tmp/filter_autocolor1.0.0/ && $(COPY_FILE) --parents autocolorfilter.cpp .tmp/filter_autocolor1.0.0/ && (cd `dirname .tmp/filter_autocolor1.0.0` && $(TAR) filter_autocolor1.0.0.tar filter_autocolor1.0.0 && $(COMPRESS) filter_autocolor1.0.0.tar) && $(MOVE) `dirname .tmp/filter_autocolor1.0.0`/filter_autocolor1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/filter_autocolor1.0.0 + + +clean:compiler_clean + -$(DEL_FILE) $(OBJECTS) + -$(DEL_FILE) *~ core *.core + + +####### Sub-libraries + +distclean: clean + -$(DEL_FILE) ../../../filters/$(TARGET) + -$(DEL_FILE) ../../../filters/$(TARGET0) ../../../filters/$(TARGET1) ../../../filters/$(TARGET2) $(TARGETA) + -$(DEL_FILE) Makefile + + +check: first + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +compiler_moc_header_make_all: +compiler_moc_header_clean: +compiler_rcc_make_all: +compiler_rcc_clean: +compiler_image_collection_make_all: qmake_image_collection.cpp +compiler_image_collection_clean: + -$(DEL_FILE) qmake_image_collection.cpp +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_uic_make_all: +compiler_uic_clean: +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: + +####### Compile + +autocolorfilter.o: autocolorfilter.cpp autocolorfilter.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o autocolorfilter.o autocolorfilter.cpp + +####### Install + +install: FORCE + +uninstall: FORCE + +FORCE: + diff --git a/src/filters/autocolor/autocolor.pro b/src/filters/autocolor/autocolor.pro new file mode 100644 index 0000000..1265ac1 --- /dev/null +++ b/src/filters/autocolor/autocolor.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) Tue Nov 16 21:24:31 2010 +###################################################################### + +TEMPLATE = lib +TARGET = ../../../filters/filter_autocolor +DEPENDPATH += . +INCLUDEPATH += . ../../core/interfaces + +# Input +HEADERS += autocolorfilter.h +SOURCES += autocolorfilter.cpp diff --git a/src/filters/autocolor/autocolorfilter.cpp b/src/filters/autocolor/autocolorfilter.cpp new file mode 100644 index 0000000..87e5809 --- /dev/null +++ b/src/filters/autocolor/autocolorfilter.cpp @@ -0,0 +1,41 @@ +#include "autocolorfilter.h" +#include +#include +#include +AutoColorFilter::AutoColorFilter() +{ +} +void AutoColorFilter::applyFilter(QImage &image) +{ + int outputRed,outputGreen,outputBlue,cg,dr,dg,db,inputRed,inputBlue,inputGreen; + for(int i=0;i255) outputBlue=255; + if(outputGreen>255) outputGreen=255; + if(outputRed>255) outputRed=255; + + + QColor outPixel(outputRed,outputGreen,outputBlue); + image.setPixel(i,j,outPixel.rgb()); + } + +} diff --git a/src/filters/autocolor/autocolorfilter.h b/src/filters/autocolor/autocolorfilter.h new file mode 100644 index 0000000..e785c9b --- /dev/null +++ b/src/filters/autocolor/autocolorfilter.h @@ -0,0 +1,13 @@ +#ifndef SEPIAFILTER_H +#define SEPIAFILTER_H + +#include "filterinterface.h" +class AutoColorFilter:public FilterInterface +{ +public: + AutoColorFilter(); + void applyFilter(QImage &image); + +}; + +#endif // SEPIAFILTER_H diff --git a/src/filters/autocolor/autocolorfilter.o b/src/filters/autocolor/autocolorfilter.o new file mode 100644 index 0000000000000000000000000000000000000000..68867c4f9a13a1f13fc1fcdf929097c47bf9a2af GIT binary patch literal 6964 zcmcgwU2I%O6`t$6N!{YqAtXvm61sNW)TYVCo7heq6|l3uPTY7MJF!zKt$VXxU)$TR zcelHDjg3-hw4|_XEE!RWO07hsR)~i_@DRY2^5Fa^DIh^WNaTTsJn&a!Re%aHD8ig? z?#%9Zyxtb2Vpez0oO8bU=FHEXpZhhdx7#obCX>NTR?-;z-2xN-?T0Rmbb3wYZ^GL-MU;m8=%@?M}O6Hv-aq}3gLx$P@H>t0iyQ!d*}Y`Wp15Y=9#{m zUV!uYL5jP#p{5kTylgHt46VxDFuaEGX3F*ztYVS&8?_hi{%3ia@Hy);z{TFW@LRIy zuE(E!-X6X-H+yLpVxGPH1O)YeZt;=)@RBkF`Ru(ywwijt2SmO_bY2cxZlOBAzA(I0 z$ll8@65D;2NBzUsKrGVQe1%f|G9)QW@qkaAO}WL*1*^L79kA!FR_8a$9?o6g{46T| zf7d75`ANxOYiHI?hLZ7Qx;qwkoiq_wE97cE*y=%g5`-IzL>&cpU)dv}&>?^0&`37n zX7~2S5|MP$-x8qTo?uIsTU(pBp_LW3H(Yx}RAzjo{{%D6R~pYF3gA!rdvhkrPQylNt+KCs?y_Ys z3ExXt6eVw8Zr!WCZ*cD4kogtzmE%U;AJVh1hMxs8Gm~y)gruAHG{|&EiCFDwXW6P)pb$8Ys0#pp{9)m zYlutSHR(2m+>8{fE!hCM=Idr3Jz^YpWxB^#Z_=U6>w)2 z+|w0sUsrJ0l-H{Ff`Z#w0r#4M!+A^cJw|yfU+d{Xx=7D53?gk55@)&xrIF+XT3CNT z67%I@dccQ%2RDkF^dMct`Atc{Az`e6|0rBDVR(Fk2YgufWs>oYkwL}%kZ^q66+np_ zAzf`p3msY;$%b~|Tr1m=r@YGdSK{OQ2icJ%-+9Wbe9sY|pKRd6`B?J3LwS|YPYo{@ zANo|~JFCQpbGGFBrN(!L_{zoibB*t9B|gd)`Tj2WOll|6MdIt=Iq%Oe@*j{?8>f0@|Lr7z}MT+TdS_}?IaS;VXMF~V&SM@j>7CP4adK%v;p+jt{YGkvD zj(Pc(&^t)hQUAXybO`u=s_D0c?#=Hl?0uno^=)NUV#0dHX(DXZ+zNG0JXiB_7Hna!vVqK95{0D{JLHRnG|9zw{ zDEM*V$H>*u{C`<1|GK9CNYnqM=~c>rkO+-uns4eo^c6^pnJ3>+VM!HK$E`{+VypB|0(L(olFuM$_y za&6+*)Uu9Z35_ZkjHFU=aiz9Sv<>u3M#deG9~1f3FULmR39rJUEft$~;#MpMVA}xy zLK6yFFNktn-=B6yi>0`wWh9<;R+?JJ(~gtyY=WmPw#Bw9>vL7WM_x=S^X#FplH40b+Trp0w5SHb0tT&N#0=dq~k`s z0bN;RF!+*d!x@caT&w?B6x9@qm7MXo)fWs7go`vSp$OSx{ob^YC0d;+x^r9oZ37lE zE6KRen`&rgSx~bZn{?8=u+>i$4i?oFT+PvmSe%BGS4OZ4W4kjc$Bre& zk`_gX@ml@PfwYXZM|Lg)b;M3((~dnAOS{=foJ?iDePCy%?U8m+#vY=N(Ab}R^miI^ zFJm#tX2x*8_66y~IpjXZz74sb_5xbteJzabfNW*#5M&!;7UTi?_6JFP-y(^6uuq|$ z@5A2C*gGW6LyY0P4gW3S|D*8Z+zdZX1n^@mMfvR{O*+Qlq~oLG4~52jq^u(e98L_t z;iLv!1N?;hq3qtq72BclEuZZ6rM7WQKTNB)X& z(nW;F`Q&}Z*{j7F##w>JW2e{NDjJ*)=<69f14)zbEF=Z@Cgg*R%|p^&e_O~UA^!_5 CD1b2l literal 0 HcmV?d00001 diff --git a/src/filters/filters.pro b/src/filters/filters.pro index 44f4f7e..cda686f 100644 --- a/src/filters/filters.pro +++ b/src/filters/filters.pro @@ -1,2 +1,2 @@ TEMPLATE = subdirs -SUBDIRS = sepia grey +SUBDIRS = sepia grey autocolor -- 1.7.9.5