Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Class Members | File Members

editingInterface.h

Go to the documentation of this file.
00001 //==============================================
00002 //  copyright            : (C) 2003-2005 by Will Stokes
00003 //==============================================
00004 //  This program is free software; you can redistribute it
00005 //  and/or modify it under the terms of the GNU General
00006 //  Public License as published by the Free Software
00007 //  Foundation; either version 2 of the License, or
00008 //  (at your option) any later version.
00009 //==============================================
00010 
00011 #ifndef GUI_EDITING_EDITINGINTERFACE_H
00012 #define GUI_EDITING_EDITINGINTERFACE_H
00013 
00014 //--------------------
00015 //forward declarations
00016 class QLabel;
00017 class QImage;
00018 class QToolButton;
00019 class QPushButton;
00020 class QComboBox;
00021 class ClickableLabel;
00022 class LayoutWidget;
00023 class SelectionInterface;
00024 class Subalbum;
00025 class Photo;
00026 class ManipulationOptions;
00027 //--------------------
00028 
00031 typedef enum
00032 {  
00033   BW_EFFECT = 0,
00034   SEPIA_EFFECT,
00035   INVERT_EFFECT,
00036   EMBOSS_EFFECT,
00037   MOSAIC_EFFECT,
00038   PAINTING_EFFECT,
00039   //===============
00040   //place effects that are not release quality below
00041   //NUM_MANIPULATIONS to exclude them from the drop-down menu
00042   NUM_MANIPULATIONS,
00043   POINTILLISM_EFFECT,
00044 } MANIPULATION;
00045 
00046 #include <qwidget.h>
00047 #include "../../backend/tools/imageTools.h"
00048 
00049 //=====================================
00051 //=====================================
00052 
00053 class EditingInterface : public QWidget
00054 {
00055 Q_OBJECT
00056 
00057 public:
00059   EditingInterface(QWidget *parent=0, const char* name=0);
00060 
00061   ~EditingInterface();
00062 
00064   void setPhoto(Subalbum* collection, Photo* photo);
00065 
00067   Photo* getPhoto();
00068   
00069   //returns true if currently selected photo is revertable
00070   bool currentPhotoRevertable();
00071   
00073   void revertCurrentPhoto();
00074 //----------------------
00075 signals:
00076   void photoModified();
00077 //----------------------    
00078 public slots:
00079   void handleSelectionChanged();
00080   void handleAspectRatioChanged();
00081   void setFocus();
00082   //----------------------
00083 protected:
00084   void keyPressEvent( QKeyEvent *e );
00085 //----------------------
00086 private slots:
00088   void showPrevPhoto();
00089 
00091   void showNextPhoto();
00092 
00094   void showFirstPhoto();
00095   
00097   void showLastPhoto();
00098   
00100   void rotateRight();
00101 
00103   void rotateLeft();
00104 
00106   void flipHorizontal();
00107 
00109   void startCorrectTilt();
00110   
00112   void finishCorrectTilt( QPoint p1, QPoint p2 ); 
00113   
00115   void flipVertical();
00116 
00118   void selectAspectRatio();
00119 
00121   void screenResolutionChanged();
00122   
00124   void rotateSelection();
00125   
00127   void crop();
00128 
00130   void enhanceContrast();
00131 
00133   void colorBalance();
00134   
00136   void removeRedeye();
00137 
00139   void tuneLevels();
00140   
00142   void adjustGrain();
00143   
00145   void selectEffect();
00146   
00148   void applyEffect();
00149   
00151   void returnAction();
00152   //----------------------
00153 private:
00155   void showNextPrevFirstLastPhoto( Photo* newPhoto );    
00156     
00158   void rotateFlip( TRANSFORM_CODE rotationFlipType );
00159 
00161   bool findSelection(QPoint& topLeft, QPoint& bottomRight);
00162   
00164   void selectAll(QPoint& topLeft, QPoint& bottomRight);
00165 
00167   QImage* applyEffect(QString filename, ManipulationOptions* options=NULL);
00168   
00170   void applyImageUpdate(QImage* editedImage, bool resetSelection);
00173   ClickableLabel *previousButton, *nextButton;
00174   
00177   SelectionInterface* selectionInterface;
00178 
00180   QComboBox* aspectRatios;
00181   
00182   //Widget for selecting orientation for cropping
00183   QComboBox* orientations;
00184   
00186   int displayResolutionIndex;
00187   
00189   QSize* aspectRatioValues;     
00190   double* maxDimensions;
00191 
00193   bool selectionRotated;
00194   
00196   QToolButton* correctTiltButton;
00197 
00199   QToolButton* cropButton;
00200   
00202   ClickableLabel* redEyeReductionButton;
00203     
00205   QComboBox* effectsList;
00206   
00208   QPushButton* applyEffectButton;
00209 
00211   QLabel* effectPreview;
00214   Subalbum* collection;
00215   
00217   Photo* photo;
00218 
00220   QString effectPreviewImageFilename;
00221   
00223   LayoutWidget* layout;
00224   
00226   int displayWidth, displayHeight;
00227   
00229   int imageWidth, imageHeight; 
00230 //----------------------
00231 };
00232 //======================
00233 
00234 #endif //GUI_EDITING_EDITINGINTERFACE_H

Generated on Wed May 4 11:10:13 2005 for AlbumShaper by  doxygen 1.3.9.1