--- /dev/null
+<filter file="libfilter_autocolor" name="Classic Photo" Author="Gokul Kartha"/>
--- /dev/null
+<filter file="" name="Classic Photo" Author="Gokul Kartha"/>
--- /dev/null
+libfilter_autocolor.so.1.0.0
\ No newline at end of file
--- /dev/null
+libfilter_autocolor.so.1.0.0
\ No newline at end of file
--- /dev/null
+libfilter_autocolor.so.1.0.0
\ No newline at end of file
--- /dev/null
+<filter file="" name="Classic Photo" Author="Gokul Kartha"/>
--- /dev/null
+<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>
TEMPLATE = subdirs
-SUBDIRS = viewer x11
+SUBDIRS=engine x11 viewer
+
--- /dev/null
+######################################################################
+# 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
--- /dev/null
+#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
+}
--- /dev/null
+#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
--- /dev/null
+#include "pluginloader.h"
+
+PluginLoader::PluginLoader(QObject *parent) :
+ QObject(parent)
+{
+}
--- /dev/null
+#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
#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()
{
private:
Workspace *mWorkspace;
void processCommandLineArgs();
+private slots:
+ void browseFiles();
signals:
public slots:
#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();
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
}
#include <QtGui/QWidget>
class Workspace;
-
+class FilterLoader;
class AppWindow:public QMainWindow
AppWindow(QWidget *parent=0);
private:
+
+
+private:
QMenu *fileMenu;
QMenu *editMenu;
QToolBar *fileToolBar;
Workspace *mWorkspace;
+ FilterLoader *mFilterHandle;
+
private slots:
+ void onFilterReady(QString name,QString id);
void newFile();
void open();
bool save();
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
#include "workspace.h"
#include <QPainter>
+#include <QKeyEvent>
+
+#include <QDebug>
+
ImageLoader::ImageLoader()
{
url=QString();
emit ready(image);
}
+
Workspace::Workspace(QWidget *parent) :
QWidget(parent)
{
{
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()
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);
}
QString url;
};
+//Need to be scrollable image
class Workspace : public QWidget
{
Q_OBJECT
Workspace(QWidget *parent = 0);
void loadImage(QString fileName);
virtual void paintEvent(QPaintEvent *);
+ void keyPressEvent(QKeyEvent *);
signals:
+ //testing
+
public slots:
void zoomIn();
void zoomOut();
--- /dev/null
+#############################################################################
+# 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:
+
--- /dev/null
+######################################################################
+# 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
--- /dev/null
+#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());
+ }
+
+}
--- /dev/null
+#ifndef SEPIAFILTER_H
+#define SEPIAFILTER_H
+
+#include "filterinterface.h"
+class AutoColorFilter:public FilterInterface
+{
+public:
+ AutoColorFilter();
+ void applyFilter(QImage &image);
+
+};
+
+#endif // SEPIAFILTER_H
TEMPLATE = subdirs
-SUBDIRS = sepia grey
+SUBDIRS = sepia grey autocolor