Added Logic for Customizable Plugin and Filter Support Framework
authorGokul Kartha <everyourgokul@gmail.com>
Mon, 29 Nov 2010 22:18:35 +0000 (00:18 +0200)
committerGokul Kartha <everyourgokul@gmail.com>
Mon, 29 Nov 2010 22:18:35 +0000 (00:18 +0200)
Need to Implement the XML parser
Added Algoroithem for Classic Look Filter

27 files changed:
filters/classic.xml [new file with mode: 0644]
filters/grey.xml [new file with mode: 0644]
filters/libfilter_autocolor.so [new symlink]
filters/libfilter_autocolor.so.1 [new symlink]
filters/libfilter_autocolor.so.1.0 [new symlink]
filters/libfilter_autocolor.so.1.0.0 [new file with mode: 0755]
filters/sepia.xml [new file with mode: 0644]
plugins/facebook.xml [new file with mode: 0644]
src/app/app.pro
src/app/engine/engine.pro [new file with mode: 0644]
src/app/engine/filterloader.cpp [new file with mode: 0644]
src/app/engine/filterloader.h [new file with mode: 0644]
src/app/engine/pluginloader.cpp [new file with mode: 0644]
src/app/engine/pluginloader.h [new file with mode: 0644]
src/app/viewer/photoviewer.cpp
src/app/viewer/photoviewer.h
src/app/x11/appwindow.cpp
src/app/x11/appwindow.h
src/app/x11/x11.pro
src/core/baseui/workspace.cpp
src/core/baseui/workspace.h
src/filters/autocolor/Makefile [new file with mode: 0644]
src/filters/autocolor/autocolor.pro [new file with mode: 0644]
src/filters/autocolor/autocolorfilter.cpp [new file with mode: 0644]
src/filters/autocolor/autocolorfilter.h [new file with mode: 0644]
src/filters/autocolor/autocolorfilter.o [new file with mode: 0644]
src/filters/filters.pro

diff --git a/filters/classic.xml b/filters/classic.xml
new file mode 100644 (file)
index 0000000..61c01bf
--- /dev/null
@@ -0,0 +1 @@
+<filter file="libfilter_autocolor" name="Classic Photo" Author="Gokul Kartha"/>
diff --git a/filters/grey.xml b/filters/grey.xml
new file mode 100644 (file)
index 0000000..3522447
--- /dev/null
@@ -0,0 +1 @@
+<filter file="" name="Classic Photo" Author="Gokul Kartha"/>
diff --git a/filters/libfilter_autocolor.so b/filters/libfilter_autocolor.so
new file mode 120000 (symlink)
index 0000000..c17d5db
--- /dev/null
@@ -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 (symlink)
index 0000000..c17d5db
--- /dev/null
@@ -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 (symlink)
index 0000000..c17d5db
--- /dev/null
@@ -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 (executable)
index 0000000..a2dc127
Binary files /dev/null and b/filters/libfilter_autocolor.so.1.0.0 differ
diff --git a/filters/sepia.xml b/filters/sepia.xml
new file mode 100644 (file)
index 0000000..3522447
--- /dev/null
@@ -0,0 +1 @@
+<filter file="" name="Classic Photo" Author="Gokul Kartha"/>
diff --git a/plugins/facebook.xml b/plugins/facebook.xml
new file mode 100644 (file)
index 0000000..235b4bc
--- /dev/null
@@ -0,0 +1,6 @@
+<plugins version="1.0">
+       <plugin id="facebook_exporter" minversion="1.0">
+               <library file=""/>
+               <description author="Gokul Kartha" description="Supports facebook integration" website="http://google.com" license="GPL"/>
+       </plugin>
+</plugins>
index 3835bdd..584f74f 100644 (file)
@@ -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 (file)
index 0000000..6e2a332
--- /dev/null
@@ -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 (file)
index 0000000..a245651
--- /dev/null
@@ -0,0 +1,44 @@
+#include "filterloader.h"
+#include <QStringList>
+
+FilterLoader::FilterLoader(QObject *parent) :
+    QObject(parent),hasInitialized(false)
+{
+}
+void FilterLoader::loadFilters()
+{
+    if(hasInitialized)return;
+
+    QStringList filterDescs=fetchFilterSpecs();
+    for(int i=0;i<filterDescs.count();i++)
+    {
+        parseSpec(filterDescs[i]);
+    }
+    hasInitialized=true;
+}
+void FilterLoader::parseSpec(QString file)
+{
+    /*PARSE XML TAGS AND LOAD THE LIBRARY
+    if(loadFilter(libFile))
+        emit filterReady("Grey Filter","grey_filter");
+    */
+}
+bool FilterLoader::loadFilter(QString libFile)
+{
+
+    return false;
+}
+
+Filter FilterLoader::getFilter(QString id) const
+{
+    if(mFilters.contains(id))
+        return mFilters.value(id);
+    else
+         Filter();
+}
+
+QStringList FilterLoader::fetchFilterSpecs()
+{
+    //The function searches the xml Files in the filters directory
+    //So each filter library must have an assocaited xml file as description
+}
diff --git a/src/app/engine/filterloader.h b/src/app/engine/filterloader.h
new file mode 100644 (file)
index 0000000..939c546
--- /dev/null
@@ -0,0 +1,40 @@
+#ifndef FILTERLOADER_H
+#define FILTERLOADER_H
+
+#include <QObject>
+#include "filterinterface.h"
+#include <QMap>
+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<QString,Filter> 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 (file)
index 0000000..30c14c8
--- /dev/null
@@ -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 (file)
index 0000000..614f4ce
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef PLUGINLOADER_H
+#define PLUGINLOADER_H
+
+#include <QObject>
+
+class PluginLoader : public QObject
+{
+    Q_OBJECT
+public:
+    explicit PluginLoader(QObject *parent = 0);
+
+signals:
+
+public slots:
+
+};
+
+#endif // PLUGINLOADER_H
index 307b37a..d4485a9 100644 (file)
@@ -1,15 +1,28 @@
 #include "photoviewer.h"
 #include <QCoreApplication>
-
+#include <QFileDialog>
+#include<QDockWidget>
 #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()
 {
index a4e338c..a2e5eee 100644 (file)
@@ -11,6 +11,8 @@ public:
 private:
     Workspace *mWorkspace;
     void processCommandLineArgs();
+private slots:
+    void browseFiles();
 signals:
 
 public slots:
index b89219e..2d48258 100644 (file)
@@ -1,14 +1,33 @@
 #include "appwindow.h"
 #include "workspace.h"
+#include "filterloader.h"
+
 #include <QDockWidget>
 #include <QToolBar>
+#include <QFileDialog>
+#include <QDockWidget>
 #include <QMenuBar>
 
 
+
 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
 
  }
 
index 42b4b47..271605c 100644 (file)
@@ -13,7 +13,7 @@
 #include <QtGui/QWidget>
 
 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();
index 2c0a3e2..7ee3941 100644 (file)
@@ -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
index b77feef..6abcd75 100644 (file)
@@ -1,5 +1,9 @@
 #include "workspace.h"
 #include <QPainter>
+#include <QKeyEvent>
+
+#include <QDebug>
+
 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()<<e->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);
 }
index a7f669b..d75c49d 100644 (file)
@@ -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 (file)
index 0000000..b351f91
--- /dev/null
@@ -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 (file)
index 0000000..1265ac1
--- /dev/null
@@ -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 (file)
index 0000000..87e5809
--- /dev/null
@@ -0,0 +1,41 @@
+#include "autocolorfilter.h"
+#include <QImage>
+#include <QColor>
+#include <QDebug>
+AutoColorFilter::AutoColorFilter()
+{
+}
+void AutoColorFilter::applyFilter(QImage &image)
+{
+        int outputRed,outputGreen,outputBlue,cg,dr,dg,db,inputRed,inputBlue,inputGreen;
+    for(int i=0;i<image.width();i++)
+        for(int j=0;j<image.height();j++)
+        {
+            QColor inPixel(image.pixel(i,j));
+            inputRed=inPixel.red();
+            inputBlue=inPixel.blue();
+            inputGreen=inPixel.green();
+
+            cg=(inputBlue+inputGreen+inputRed)/3;
+            dr=inputRed-cg;
+            dg=inputGreen-cg;
+            db=inputBlue-cg;
+
+            outputBlue=inputBlue-dr;
+            outputGreen=inputGreen-dg;
+            outputRed=inputRed-dr;
+
+            if(outputBlue<0) outputBlue=0;
+            if(outputGreen<0) outputGreen=0;
+            if(outputRed<0) outputRed=0;
+
+            if(outputBlue>255) 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 (file)
index 0000000..e785c9b
--- /dev/null
@@ -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 (file)
index 0000000..68867c4
Binary files /dev/null and b/src/filters/autocolor/autocolorfilter.o differ
index 44f4f7e..cda686f 100644 (file)
@@ -1,2 +1,2 @@
 TEMPLATE = subdirs
-SUBDIRS = sepia grey
+SUBDIRS = sepia grey autocolor