AlbumShaper  1.0a3
selectionInterface.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_SELECTIONINTERFACE_H
00012 #define GUI_EDITING_SELECTIONINTERFACE_H
00013 
00015 typedef enum
00016 {  
00017   DRAW_SELECTION,
00018   MOVE_SELECTION,
00019   MOVE_TOP_LEFT_CORNER,
00020   MOVE_TOP_RIGHT_CORNER,
00021   MOVE_BOTTOM_LEFT_CORNER,
00022   MOVE_BOTTOM_RIGHT_CORNER,
00023   MOVE_LEFT_SIDE,
00024   MOVE_RIGHT_SIDE,
00025   MOVE_TOP_SIDE,
00026   MOVE_BOTTOM_SIDE,
00027   SCALE_SELECTION,
00028   DRAW_LINE,
00029   NO_EFFECT
00030 } DRAG_MODE;
00031 
00032 //--------------------
00033 //forward declarations
00034 class QPoint;
00035 //--------------------
00036 
00037 #include <qwidget.h>
00038 #include <qimage.h>
00039 
00040 //=====================================
00043 //=====================================
00044 class SelectionInterface : public QWidget
00045 {
00046 Q_OBJECT
00047 
00048 public:
00050   SelectionInterface(QWidget *parent=0, 
00051                             const char* name=0);
00052                  
00054   ~SelectionInterface();
00055   
00057   void setPhoto(QString imageFilename, bool resetSelection=true);
00058   
00061   void getSelection(QPoint &topLeft, QPoint &bottomRight);
00062 
00065   void setSelection(QPoint topLeft, QPoint bottomRight, double cropMaxDimen=-1.0);
00066   
00068   bool selectionEmpty();
00069   
00071   void getDisplaySize(int &width, int &height);
00072   
00074   void enterDrawLineMode();  
00075   //----------------------
00076 signals:
00079   void ctrlClick();
00080     
00082   void selectionChanged();
00083   
00085   void aspectRatioChanged();
00086   
00089   void lineSelected( QPoint p1, QPoint p2 ); 
00090   //----------------------
00091 protected:
00092   QSize sizeHint();    
00093   void paintEvent( QPaintEvent *e);
00094   void mousePressEvent( QMouseEvent *e);
00095   void mouseReleaseEvent( QMouseEvent *);
00096   void mouseMoveEvent( QMouseEvent *e);
00097   void resizeEvent( QResizeEvent * );
00098   void keyPressEvent(QKeyEvent *e);
00099   void keyReleaseEvent(QKeyEvent *e);
00100   //----------------------
00101 public slots:
00103   void selectNone();
00104 
00106   void selectAll();
00107   //----------------------
00108 private:
00110   DRAG_MODE mouseActionByPosition(QPoint p);
00111     
00113   QPoint cropSelectedPoint(QPoint p);
00114 
00116   QPoint ConvertDisplayToImageCoordinate( QPoint p );
00117   
00119   QPoint ConvertImageToDisplayCoordinate( QPoint p );
00120   
00122   void constructDisplayImages();
00123   
00125   void updateCursorShape( QPoint p );
00126   
00128   bool scaleSelection( int delta );
00129   
00131   QImage fullScreenImage;
00132     
00134   QImage scaledImage;
00135   
00137   QImage unselectedScaledImage;
00138   
00140   QPoint mousePressPoint;
00141   
00143   QPoint mouseDragPoint;
00144   
00146   QPoint cachedMousePosition;
00147   
00149   DRAG_MODE currentDragMode;
00150 
00153   DRAG_MODE currentMouseShape;
00154   
00156   QString origImageFilename;
00157   
00159   QSize origImageSize;  
00160     
00162   bool SHIFT_Pressed;
00163   
00165   bool CTRL_Pressed;
00166   
00169   QPoint cachedSelctionCenter;
00170   QSize cachedSelectionSize;
00171   
00173   double cropMaxDimen;
00174 //----------------------
00175 };
00176 //======================
00177 
00178 #endif //GUI_EDITING_SELECTIONINTERFACE_H