From: Gokul Kartha Date: Mon, 29 Nov 2010 22:18:35 +0000 (+0200) Subject: Added Logic for Customizable Plugin and Filter Support Framework X-Git-Url: http://git.maemo.org/git/?p=photoenhancer;a=commitdiff_plain;h=08c29dc7964a5492f31534e2fcd466b1985b32f3 Added Logic for Customizable Plugin and Filter Support Framework Need to Implement the XML parser Added Algoroithem for Classic Look Filter --- 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 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 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 0000000..68867c4 Binary files /dev/null and b/src/filters/autocolor/autocolorfilter.o differ 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