From 97d708fe2ef37ca3096398e3293b4d2ebc0f42c1 Mon Sep 17 00:00:00 2001 From: Gokul Kartha Date: Wed, 17 Nov 2010 20:52:08 +0200 Subject: [PATCH] FOlder Restructure --- docs/README | 12 ++ src/app/n900/app.pro | 14 +++ src/app/windows/Makefile | 216 +++++++++++++++++++++++++++++++++ src/app/windows/app.pro | 14 +++ src/app/windows/appwindow.cpp | 112 +++++++++++++++++ src/app/windows/appwindow.h | 61 ++++++++++ src/app/windows/appwindow.o | Bin 0 -> 8796 bytes src/app/windows/main.cpp | 9 ++ src/app/windows/main.o | Bin 0 -> 1700 bytes src/app/windows/moc_appwindow.cpp | 88 ++++++++++++++ src/app/windows/moc_appwindow.o | Bin 0 -> 7628 bytes src/app/x11/appwindow.cpp | 112 +++++++++++++++++ src/app/x11/appwindow.h | 61 ++++++++++ src/app/x11/main.cpp | 9 ++ src/app/x11/x11.pro | 13 ++ src/core/baseui/baseui.pro | 12 ++ src/core/baseui/workspace.cpp | 29 +++++ src/core/baseui/workspace.h | 25 ++++ src/core/interfaces/filterinterface.h | 17 +++ src/core/utils/utils.pro | 12 ++ src/filters/sepia/sepiafilter.o | Bin 0 -> 7376 bytes 21 files changed, 816 insertions(+) create mode 100644 docs/README create mode 100644 src/app/n900/app.pro create mode 100644 src/app/windows/Makefile create mode 100644 src/app/windows/app.pro create mode 100644 src/app/windows/appwindow.cpp create mode 100644 src/app/windows/appwindow.h create mode 100644 src/app/windows/appwindow.o create mode 100644 src/app/windows/main.cpp create mode 100644 src/app/windows/main.o create mode 100644 src/app/windows/moc_appwindow.cpp create mode 100644 src/app/windows/moc_appwindow.o create mode 100644 src/app/x11/appwindow.cpp create mode 100644 src/app/x11/appwindow.h create mode 100644 src/app/x11/main.cpp create mode 100644 src/app/x11/x11.pro create mode 100644 src/core/baseui/baseui.pro create mode 100644 src/core/baseui/workspace.cpp create mode 100644 src/core/baseui/workspace.h create mode 100644 src/core/interfaces/filterinterface.h create mode 100644 src/core/interfaces/plugininterface.h create mode 100644 src/core/utils/logger.cpp create mode 100644 src/core/utils/logger.h create mode 100644 src/core/utils/utils.pro create mode 100644 src/filters/sepia/sepiafilter.o diff --git a/docs/README b/docs/README new file mode 100644 index 0000000..fa03cb5 --- /dev/null +++ b/docs/README @@ -0,0 +1,12 @@ +PhotoEnhancer +--------------- + Draft :1.0 + Author:Gokul Kartha + +1)Introduction + PhotoEnhancer is a photo editing and touch app application. +2)Installation + +3)Releases + + diff --git a/src/app/n900/app.pro b/src/app/n900/app.pro new file mode 100644 index 0000000..931de25 --- /dev/null +++ b/src/app/n900/app.pro @@ -0,0 +1,14 @@ +###################################################################### +# Automatically generated by qmake (2.01a) Tue Nov 16 21:47:22 2010 +###################################################################### + +TEMPLATE = app +TARGET = ../../bin/photoenhancer +DEPENDPATH += . +INCLUDEPATH +=. ../core/baseui ../core/utils +LIBS+=-L../../libs/ -lpebaseui -lpeutils +# Input +HEADERS += appwindow.h +SOURCES += appwindow.cpp main.cpp + +FORMS += diff --git a/src/app/windows/Makefile b/src/app/windows/Makefile new file mode 100644 index 0000000..78ea10d --- /dev/null +++ b/src/app/windows/Makefile @@ -0,0 +1,216 @@ +############################################################################# +# Makefile for building: ../../bin/photoenhancer +# Generated by qmake (2.01a) (Qt 4.7.0) on: Wed Nov 17 19:56:48 2010 +# Project: app.pro +# Template: app +# Command: /usr/bin/qmake -o Makefile app.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 $(DEFINES) +CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(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/baseui -I../core/utils -I. +LINK = g++ +LFLAGS = -Wl,-O1 +LIBS = $(SUBLIBS) -L/usr/lib -L../../libs/ -lpebaseui -lpeutils -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 = appwindow.cpp \ + main.cpp moc_appwindow.cpp +OBJECTS = appwindow.o \ + main.o \ + moc_appwindow.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 \ + app.pro +QMAKE_TARGET = photoenhancer +DESTDIR = ../../bin/ +TARGET = ../../bin/photoenhancer + +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 $(TARGET) + +$(TARGET): $(OBJECTS) + @$(CHK_DIR_EXISTS) ../../bin/ || $(MKDIR) ../../bin/ + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS) + +Makefile: app.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 app.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 app.pro + +dist: + @$(CHK_DIR_EXISTS) .tmp/photoenhancer1.0.0 || $(MKDIR) .tmp/photoenhancer1.0.0 + $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/photoenhancer1.0.0/ && $(COPY_FILE) --parents appwindow.h .tmp/photoenhancer1.0.0/ && $(COPY_FILE) --parents appwindow.cpp main.cpp .tmp/photoenhancer1.0.0/ && (cd `dirname .tmp/photoenhancer1.0.0` && $(TAR) photoenhancer1.0.0.tar photoenhancer1.0.0 && $(COMPRESS) photoenhancer1.0.0.tar) && $(MOVE) `dirname .tmp/photoenhancer1.0.0`/photoenhancer1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/photoenhancer1.0.0 + + +clean:compiler_clean + -$(DEL_FILE) $(OBJECTS) + -$(DEL_FILE) *~ core *.core + + +####### Sub-libraries + +distclean: clean + -$(DEL_FILE) $(TARGET) + -$(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: moc_appwindow.cpp +compiler_moc_header_clean: + -$(DEL_FILE) moc_appwindow.cpp +moc_appwindow.cpp: appwindow.h + /usr/bin/moc-qt4 $(DEFINES) $(INCPATH) appwindow.h -o moc_appwindow.cpp + +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: compiler_moc_header_clean + +####### Compile + +appwindow.o: appwindow.cpp appwindow.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o appwindow.o appwindow.cpp + +main.o: main.cpp appwindow.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp + +moc_appwindow.o: moc_appwindow.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_appwindow.o moc_appwindow.cpp + +####### Install + +install: FORCE + +uninstall: FORCE + +FORCE: + diff --git a/src/app/windows/app.pro b/src/app/windows/app.pro new file mode 100644 index 0000000..931de25 --- /dev/null +++ b/src/app/windows/app.pro @@ -0,0 +1,14 @@ +###################################################################### +# Automatically generated by qmake (2.01a) Tue Nov 16 21:47:22 2010 +###################################################################### + +TEMPLATE = app +TARGET = ../../bin/photoenhancer +DEPENDPATH += . +INCLUDEPATH +=. ../core/baseui ../core/utils +LIBS+=-L../../libs/ -lpebaseui -lpeutils +# Input +HEADERS += appwindow.h +SOURCES += appwindow.cpp main.cpp + +FORMS += diff --git a/src/app/windows/appwindow.cpp b/src/app/windows/appwindow.cpp new file mode 100644 index 0000000..b89219e --- /dev/null +++ b/src/app/windows/appwindow.cpp @@ -0,0 +1,112 @@ +#include "appwindow.h" +#include "workspace.h" +#include +#include +#include + + +AppWindow::AppWindow(QWidget *parent):QMainWindow(parent) +{ + mWorkspace=new Workspace(); + setCentralWidget(mWorkspace); + createActions(); + createMenus(); + createToolBars(); + createStatusBar(); + readSettings(); +} + + void AppWindow::newFile() + { + + } + + void AppWindow::open() + { + + } + + bool AppWindow::save() + { + + } + + bool AppWindow::saveAs() + { + + } + + void AppWindow::createActions() + { + newAct = new QAction(QIcon(":/images/new.png"), tr("&New"), this); + newAct->setShortcuts(QKeySequence::New); + newAct->setStatusTip(tr("Create a new file")); + connect(newAct, SIGNAL(triggered()), this, SLOT(newFile())); + + openAct = new QAction(QIcon(":/images/open.png"), tr("&Open..."), this); + openAct->setShortcuts(QKeySequence::Open); + openAct->setStatusTip(tr("Open an existing file")); + connect(openAct, SIGNAL(triggered()), this, SLOT(open())); + + saveAct = new QAction(QIcon(":/images/save.png"), tr("&Save"), this); + saveAct->setShortcuts(QKeySequence::Save); + saveAct->setStatusTip(tr("Save the document to disk")); + connect(saveAct, SIGNAL(triggered()), this, SLOT(save())); + + saveAsAct = new QAction(tr("Save &As..."), this); + saveAsAct->setShortcuts(QKeySequence::SaveAs); + saveAsAct->setStatusTip(tr("Save the document under a new name")); + connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs())); + + exitAct = new QAction(tr("E&xit"), this); + exitAct->setShortcuts(QKeySequence::Quit); + exitAct->setStatusTip(tr("Exit the application")); + connect(exitAct, SIGNAL(triggered()), this, SLOT(close())); + + + menuBar()->addSeparator(); + + } + + void AppWindow::createToolBars() + { + fileToolBar = addToolBar(tr("File")); + fileToolBar->addAction(newAct); + fileToolBar->addAction(openAct); + fileToolBar->addAction(saveAct); + + + } + + void AppWindow::createStatusBar() + { + statusBar()->showMessage(tr("Ready")); + } + + void AppWindow::readSettings() + { + + } + + void AppWindow::writeSettings() + { + + } + + bool AppWindow::maybeSave() + { + + return true; + } + + + void AppWindow::createMenus() + { + fileMenu = menuBar()->addMenu(tr("&File")); + fileMenu->addAction(newAct); + fileMenu->addAction(openAct); + fileMenu->addAction(saveAct); + fileMenu->addAction(saveAsAct); + fileMenu->addSeparator(); + fileMenu->addAction(exitAct); + } diff --git a/src/app/windows/appwindow.h b/src/app/windows/appwindow.h new file mode 100644 index 0000000..42b4b47 --- /dev/null +++ b/src/app/windows/appwindow.h @@ -0,0 +1,61 @@ +#ifndef APPWINDOW_H +#define APPWINDOW_H +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class Workspace; + + + +class AppWindow:public QMainWindow +{ + Q_OBJECT + +public: + AppWindow(QWidget *parent=0); + +private: + QMenu *fileMenu; + QMenu *editMenu; + QToolBar *fileToolBar; + QToolBar *editToolBar; + QAction *newAct; + QAction *openAct; + QAction *saveAct; + QAction *saveAsAct; + QAction *exitAct; + + + Workspace *mWorkspace; + +private slots: + void newFile(); + void open(); + bool save(); + bool saveAs(); + +private: + + +private: + void createActions(); + void createMenus(); + void createToolBars(); + void createStatusBar(); + void readSettings(); + void writeSettings(); + bool maybeSave(); + + +}; + +#endif // APPWINDOW_H diff --git a/src/app/windows/appwindow.o b/src/app/windows/appwindow.o new file mode 100644 index 0000000000000000000000000000000000000000..aeba1cd54fd4cbecd976fe4ec009e9fbe3b3713a GIT binary patch literal 8796 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 +#include "appwindow.h" +int main(int argc,char **argv) +{ + QApplication app(argc,argv); + AppWindow window; + window.showMaximized(); + return app.exec(); +} diff --git a/src/app/windows/main.o b/src/app/windows/main.o new file mode 100644 index 0000000000000000000000000000000000000000..62595cffe411b6f5d004cfeb3fde64fd4fc7d94e GIT binary patch literal 1700 zcma)6O-~bH5T2z43W6ef@S{;e)&!%jREk97L7){Au>!Gb{92doN;kIKrrkmzCLRch zo65zT9yodMpf^t*^}rwS;1AHmL=KvG;6PHJ+1=MJRio4FKJz>?@4S6yXZKNZ@`5Bu zBut_ZH5k#}7B3QaVSu`+Q>40>c0MnE`nJ4LtR=gg+j3_0wj6bAIlF4hH=KuZ&Pm9T z)nsHnA$L)Gm_Wl$T>i3Euh*f4xrP(I6(lZG+niwBH+c%J&typ&DwO`hgsp3jGST{RhyKIW^1I( zmdm8f>AGrEb)#sjNY5Fh=!JaVu#jaHY(tqyrB9S?O@BZNuQ#&l{gRe9{J;2La2Q!U zD{X%Ec_5!nSdZ@<1a=4!C}TkuxC0lj=U(uWKH~EbkZsF@Uw5}>V8?KA{=f1Dk;C=< z5q9hKfeYgp+ZZnPIiD>Ga@=#>JIDCCR z*$0jL!siox*$rQu6)wF*J(C^Z#J<5jITS^KL5N-Oc^|IF&xHM8y-CdaM`*%CJ;4PA z^)P*}3!QQMSA%(Q2j=3`-l`Ds3)Zj@`7ewwh1?DV<89l%JbaG*ewb&j7ac#;NO#XU z)WlOwoM%uN*IN+;$b7Adzi#61nmFY((^B+ek<_%cU|Jb<#wb_tPO(m^I#;c#MWa+M zSX$1s7uESeQg5bWr=~}X#hj^Ywpp;oW62qFYDzabbOwRzs8d*gJT)?X-OS7xHb;aX z8!BfD3zxO3nKze=OmhDBigBZA=x*TZwMIcVFE)J{|IFJVaq3Tt6EUbGIA;rnXo9hu z=nCUbqN|L%i0%R{DSJ." +#elif Q_MOC_OUTPUT_REVISION != 62 +#error "This file was generated using the moc from 4.7.0. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_AppWindow[] = { + + // content: + 5, // revision + 0, // classname + 0, 0, // classinfo + 4, 14, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + 0, // flags + 0, // signalCount + + // slots: signature, parameters, type, tag, flags + 11, 10, 10, 10, 0x08, + 21, 10, 10, 10, 0x08, + 33, 10, 28, 10, 0x08, + 40, 10, 28, 10, 0x08, + + 0 // eod +}; + +static const char qt_meta_stringdata_AppWindow[] = { + "AppWindow\0\0newFile()\0open()\0bool\0" + "save()\0saveAs()\0" +}; + +const QMetaObject AppWindow::staticMetaObject = { + { &QMainWindow::staticMetaObject, qt_meta_stringdata_AppWindow, + qt_meta_data_AppWindow, 0 } +}; + +#ifdef Q_NO_DATA_RELOCATION +const QMetaObject &AppWindow::getStaticMetaObject() { return staticMetaObject; } +#endif //Q_NO_DATA_RELOCATION + +const QMetaObject *AppWindow::metaObject() const +{ + return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject; +} + +void *AppWindow::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_AppWindow)) + return static_cast(const_cast< AppWindow*>(this)); + return QMainWindow::qt_metacast(_clname); +} + +int AppWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QMainWindow::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: newFile(); break; + case 1: open(); break; + case 2: { bool _r = save(); + if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; + case 3: { bool _r = saveAs(); + if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; + default: ; + } + _id -= 4; + } + return _id; +} +QT_END_MOC_NAMESPACE diff --git a/src/app/windows/moc_appwindow.o b/src/app/windows/moc_appwindow.o new file mode 100644 index 0000000000000000000000000000000000000000..13e9411c4aaf0c08fa2e406897858a57317cd949 GIT binary patch literal 7628 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 L&o27<$9(x;MH!m- literal 0 HcmV?d00001 diff --git a/src/app/x11/appwindow.cpp b/src/app/x11/appwindow.cpp new file mode 100644 index 0000000..b89219e --- /dev/null +++ b/src/app/x11/appwindow.cpp @@ -0,0 +1,112 @@ +#include "appwindow.h" +#include "workspace.h" +#include +#include +#include + + +AppWindow::AppWindow(QWidget *parent):QMainWindow(parent) +{ + mWorkspace=new Workspace(); + setCentralWidget(mWorkspace); + createActions(); + createMenus(); + createToolBars(); + createStatusBar(); + readSettings(); +} + + void AppWindow::newFile() + { + + } + + void AppWindow::open() + { + + } + + bool AppWindow::save() + { + + } + + bool AppWindow::saveAs() + { + + } + + void AppWindow::createActions() + { + newAct = new QAction(QIcon(":/images/new.png"), tr("&New"), this); + newAct->setShortcuts(QKeySequence::New); + newAct->setStatusTip(tr("Create a new file")); + connect(newAct, SIGNAL(triggered()), this, SLOT(newFile())); + + openAct = new QAction(QIcon(":/images/open.png"), tr("&Open..."), this); + openAct->setShortcuts(QKeySequence::Open); + openAct->setStatusTip(tr("Open an existing file")); + connect(openAct, SIGNAL(triggered()), this, SLOT(open())); + + saveAct = new QAction(QIcon(":/images/save.png"), tr("&Save"), this); + saveAct->setShortcuts(QKeySequence::Save); + saveAct->setStatusTip(tr("Save the document to disk")); + connect(saveAct, SIGNAL(triggered()), this, SLOT(save())); + + saveAsAct = new QAction(tr("Save &As..."), this); + saveAsAct->setShortcuts(QKeySequence::SaveAs); + saveAsAct->setStatusTip(tr("Save the document under a new name")); + connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs())); + + exitAct = new QAction(tr("E&xit"), this); + exitAct->setShortcuts(QKeySequence::Quit); + exitAct->setStatusTip(tr("Exit the application")); + connect(exitAct, SIGNAL(triggered()), this, SLOT(close())); + + + menuBar()->addSeparator(); + + } + + void AppWindow::createToolBars() + { + fileToolBar = addToolBar(tr("File")); + fileToolBar->addAction(newAct); + fileToolBar->addAction(openAct); + fileToolBar->addAction(saveAct); + + + } + + void AppWindow::createStatusBar() + { + statusBar()->showMessage(tr("Ready")); + } + + void AppWindow::readSettings() + { + + } + + void AppWindow::writeSettings() + { + + } + + bool AppWindow::maybeSave() + { + + return true; + } + + + void AppWindow::createMenus() + { + fileMenu = menuBar()->addMenu(tr("&File")); + fileMenu->addAction(newAct); + fileMenu->addAction(openAct); + fileMenu->addAction(saveAct); + fileMenu->addAction(saveAsAct); + fileMenu->addSeparator(); + fileMenu->addAction(exitAct); + } diff --git a/src/app/x11/appwindow.h b/src/app/x11/appwindow.h new file mode 100644 index 0000000..42b4b47 --- /dev/null +++ b/src/app/x11/appwindow.h @@ -0,0 +1,61 @@ +#ifndef APPWINDOW_H +#define APPWINDOW_H +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class Workspace; + + + +class AppWindow:public QMainWindow +{ + Q_OBJECT + +public: + AppWindow(QWidget *parent=0); + +private: + QMenu *fileMenu; + QMenu *editMenu; + QToolBar *fileToolBar; + QToolBar *editToolBar; + QAction *newAct; + QAction *openAct; + QAction *saveAct; + QAction *saveAsAct; + QAction *exitAct; + + + Workspace *mWorkspace; + +private slots: + void newFile(); + void open(); + bool save(); + bool saveAs(); + +private: + + +private: + void createActions(); + void createMenus(); + void createToolBars(); + void createStatusBar(); + void readSettings(); + void writeSettings(); + bool maybeSave(); + + +}; + +#endif // APPWINDOW_H diff --git a/src/app/x11/main.cpp b/src/app/x11/main.cpp new file mode 100644 index 0000000..b1de183 --- /dev/null +++ b/src/app/x11/main.cpp @@ -0,0 +1,9 @@ +#include +#include "appwindow.h" +int main(int argc,char **argv) +{ + QApplication app(argc,argv); + AppWindow window; + window.showMaximized(); + return app.exec(); +} diff --git a/src/app/x11/x11.pro b/src/app/x11/x11.pro new file mode 100644 index 0000000..2c0a3e2 --- /dev/null +++ b/src/app/x11/x11.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) Tue Nov 16 21:47:22 2010 +###################################################################### + +TEMPLATE = app +TARGET = ../../../bin/photoenhancer +DEPENDPATH +=. ../../core/baseui ../../core/utils +INCLUDEPATH +=. ../../core/baseui ../../core/utils +LIBS+=-L../../../libs/ -lPEBaseui \ + -L../../../libs/ -lPEUtils +# Input +HEADERS += appwindow.h +SOURCES += appwindow.cpp main.cpp diff --git a/src/core/baseui/baseui.pro b/src/core/baseui/baseui.pro new file mode 100644 index 0000000..33253a6 --- /dev/null +++ b/src/core/baseui/baseui.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) Tue Nov 16 21:24:19 2010 +###################################################################### + +TEMPLATE = lib +TARGET = ../../../libs/PEBaseui +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += workspace.h +SOURCES += workspace.cpp diff --git a/src/core/baseui/workspace.cpp b/src/core/baseui/workspace.cpp new file mode 100644 index 0000000..673555e --- /dev/null +++ b/src/core/baseui/workspace.cpp @@ -0,0 +1,29 @@ +#include "workspace.h" +#include +Workspace::Workspace(QWidget *parent) : + QWidget(parent) +{ + loadImage("/home/shakir/Desktop/Test/test1.jpg"); +} +void Workspace::loadImage(QString fileName) +{ + mImage=QImage(fileName); +} +void Workspace::zoomIn() +{ + mImage=mImage.scaledToHeight(mImage.height()*1.5); + mImage=mImage.scaledToWidth(mImage.width()*1.5); + update(); +} +void Workspace::zoomOut() +{ + mImage=mImage.scaledToHeight(mImage.height()*0.5); + mImage=mImage.scaledToWidth(mImage.width()*0.5); + update(); +} + +void Workspace::paintEvent(QPaintEvent *p) +{ + QPainter painter(this); + painter.drawImage(mImage.rect(),mImage); +} diff --git a/src/core/baseui/workspace.h b/src/core/baseui/workspace.h new file mode 100644 index 0000000..8835af4 --- /dev/null +++ b/src/core/baseui/workspace.h @@ -0,0 +1,25 @@ +#ifndef WORKSPACE_H +#define WORKSPACE_H + +#include + +class Workspace : public QWidget +{ + Q_OBJECT +public: + Workspace(QWidget *parent = 0); + void loadImage(QString fileName); + virtual void paintEvent(QPaintEvent *); +signals: + + +public slots: + void zoomIn(); + void zoomOut(); + +private: + QImage mImage; + +}; + +#endif // WORKSPACE_H diff --git a/src/core/interfaces/filterinterface.h b/src/core/interfaces/filterinterface.h new file mode 100644 index 0000000..59d25ce --- /dev/null +++ b/src/core/interfaces/filterinterface.h @@ -0,0 +1,17 @@ +#ifndef FILTERINTERFACE_H +#define FILTERINTERFACE_H +#include +#include + +class FilterInterface:public QObject +{ +public: + FilterInterface() + { + + } + virtual void applyFilter(QImage &image)=0; + virtual void displayFilterConfig(){} +}; + +#endif // FILTERINTERFACE_H diff --git a/src/core/interfaces/plugininterface.h b/src/core/interfaces/plugininterface.h new file mode 100644 index 0000000..e69de29 diff --git a/src/core/utils/logger.cpp b/src/core/utils/logger.cpp new file mode 100644 index 0000000..e69de29 diff --git a/src/core/utils/logger.h b/src/core/utils/logger.h new file mode 100644 index 0000000..e69de29 diff --git a/src/core/utils/utils.pro b/src/core/utils/utils.pro new file mode 100644 index 0000000..2bea3aa --- /dev/null +++ b/src/core/utils/utils.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) Wed Nov 17 19:52:33 2010 +###################################################################### + +TEMPLATE = lib +TARGET = ../../../libs/PEUtils +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += logger.h +SOURCES += logger.cpp diff --git a/src/filters/sepia/sepiafilter.o b/src/filters/sepia/sepiafilter.o new file mode 100644 index 0000000000000000000000000000000000000000..5724403a2096f0d2cda597831de79e67590f4ee8 GIT binary patch literal 7376 zcmcgxZERG>6`l2Ns7cI6DG8*IW&uMXz{U%R4~@+CS;GkNkrB(0MSf}#Y zlQNraKb75j@zsUCOqPypv^J*M8?pP~>wYBQCpjWbj|C zYTCAoga39jmots!Wtq0}(!oP#q@~F^!$u#qE}|QBQ?u5oT&JL)hTif4Q^sB^>@lPB z*1R?C$cfKKM`0SWPWyCmj=_;bun&zSc0L{1J^ad1XA#G5=+^Aa?mMzK-672M-_7=y zqE7>CSfmT7@%fDUbx2y~;~`(+Y@C_3 zO0%z$edv5?X1eZ;p^=$8S@Hk7KHbiHCBxxXyDuJXh$kF71yc1oko0CgT;)PG^#a!! zjoJ4ofZLy48Te??wVL05+WP*9V;|OhPBnb7=8W^|?7)sc)||WaGwaR2->jMQ_>J;O zgTJkLZ6tUy)%}N>&1EG^UwY_IHFsES;K}AryJ4 zY0TsZuh|<<_a&kS+(}cH?Cp$qS^Gsu)5uch)T^(U*c~3@_D;wm3}YZU7B)f#lS(3# zwjG7bAe2f<06eW;5BkAVc+(ewctb%~7=~Ea?v8Y(qCK_OC@sN!`>KKDS%dEu&hKS-xJ~f!;<&~% zj@a>V^#+dI=Ra}(6V27q(&j#)18!Mmu@{MEad}HL3U#@sl=ZeiIzu*^xeDcecW$MAa zf}CH>_voC#`Q(?ofvIz*<&$45$t%eD#bX|Qsiy}Piid#UJayAT`OeAr+CmY8gYN}5 zEtC-iwF-?jEH-qGv!3hRy(*!vHvDUluQl{s78$?6M0?>^9O~xGqHfM0>c#|;w zKesEBo%pY~8TIQodcyUaD}(s^J@^May7{Ihev0^xLNJo~m~Z=(&PeB#EE0#6&b@0s zcFbc+r9G8nquZ5f^7KnG1PC@_29{nFm=X#!x`Fy`xKyH1rwj3R zRes*RW?((Vluiu!pY!NPJo+(@{tJ(O)}vqX=zsC(pLz5LjVZu*9)nI!wukY0&sr@C zUkm>{%=ZR4bitx_OuZjm8pTeBbrx36Cz){B+VOKb?ePeSIR-SceN% zV_ld(EBLdLKb8Ec;!ibyR`F-G_+ReL6J6-YGv+2e&b2PGp>f;#b&Zj24GpbUTcmB> z`bH~)NN@oja|H$Os+MgX`|OxgzXG@K$Wwb0%@m&Mc&9Gb7I_~p>d+<3sKeoCUtdCf zFR->(w`}T(cG)D}qViSG#rHbhZe=-JUwpt$Sn)W4)h%_&L^4$uw)UxVQeT;}_vT7T zOJzr*-!3#&b){^(*R?60>a^`_@9F@#OOHAgAB?ieDzMc6Hmf*v%`*DxZad!9?YQ8A zF+z-zL3eQ73ahzQ4TRY%vSUpHfGpVN`R2fG(p=$+9@~k!16No}IQ*;=p)(duJ67|S z80mAx^3FuU!Wg$~&CyiWMPZ9KyTh+bRN4FS9l>g@Zn2mtB$Gb(>kpe&6jb5Fd+d}f zY&E08wwzkPRT1lsCoqJvGQjF`Y5^=9>rXq$9)&9w)XG@0w-?j7De1&J4~*%6YJ9UQ zhVXs^;&N#US41MQfq`g8e1CWa^67XamWZa)5$8ak9f|jLCM`sVaVoN|Kv>MWNq4Lu zbu`k~pRyzS<0+> ze;K6oBM#|@q#q#&KR#OUbQf45g#3Q7(!IA6$5RM#Je?9(u5di9+zTFV3BCsRoao!& z-Y0z<-Tl$GNr;*BfQr