PanningPreviewInterface Class Reference

#include <panningPreviewInterface.h>

Inheritance diagram for PanningPreviewInterface:
[legend]
Collaboration diagram for PanningPreviewInterface:
[legend]

List of all members.

Public Slots

void setSelection (QRect selection)

Signals

void selectionChanged ()

Public Member Functions

 PanningPreviewInterface (QString imageFilename, QWidget *parent=0, const char *name=0)
 Creates layout.
virtual QSize sizeHint () const
QRect getSelection ()
QSize paintingSize ()

Protected Member Functions

void resizeEvent (QResizeEvent *)

Private Member Functions

void generateOrigImage ()

Private Attributes

QImage fullSizeImage
 Full size image.
QRect selection
 Current selection.


Detailed Description

Definition at line 21 of file panningPreviewInterface.h.


Constructor & Destructor Documentation

PanningPreviewInterface::PanningPreviewInterface ( QString  imageFilename,
QWidget parent = 0,
const char *  name = 0 
)

Creates layout.

Definition at line 15 of file panningPreviewInterface.cpp.

References fullSizeImage, and selection.

00016                                                                                       : 
00017                                                   SplitViewInterface (parent, name )
00018 {
00019   //load full size image
00020   fullSizeImage = QImage( imageFilename );
00021           
00022   //a 0-width selection is invalid and prevents 
00023   //resize events from triggering painting
00024   //until the true selection region is set
00025   selection.setWidth( 0 );
00026 }


Member Function Documentation

void PanningPreviewInterface::generateOrigImage (  )  [private]

Definition at line 105 of file panningPreviewInterface.cpp.

References fullSizeImage, selection, selectionChanged(), and SplitViewInterface::setImages().

Referenced by setSelection().

00106 {
00107   //generate orig image
00108   //set adjusted image to null so repain won't occur until it is reset
00109   setImages( fullSizeImage.copy( selection.left(), selection.top(),
00110                                  selection.width(), selection.height() ),
00111              QImage() );
00112   
00113   //emit signal indicating adjusted image is out of date
00114   emit selectionChanged();
00115 }

QRect PanningPreviewInterface::getSelection (  ) 

Definition at line 117 of file panningPreviewInterface.cpp.

References selection.

Referenced by GrainEditor::generateAdjustedPreviewImage(), and GrainEditor::previewResized().

00118 { return selection; }

QSize PanningPreviewInterface::paintingSize (  ) 

Definition at line 34 of file panningPreviewInterface.cpp.

References fullSizeImage.

Referenced by resizeEvent(), and setSelection().

00035 {
00036   return QSize( QMIN( fullSizeImage.width(),  size().width()  ),
00037                 QMIN( fullSizeImage.height(), size().height() ) );
00038 }

void PanningPreviewInterface::resizeEvent ( QResizeEvent *   )  [protected, virtual]

Implements SplitViewInterface.

Definition at line 40 of file panningPreviewInterface.cpp.

References fullSizeImage, paintingSize(), selection, and setSelection().

00041 {
00042   //center of new selection...
00043   QPoint center;
00044   
00045   //if selection not set then default to center of image
00046   if( selection.width() == 0)
00047   {
00048     //compute center selection center
00049     center = QPoint( fullSizeImage.width() / 2,
00050                      fullSizeImage.height() / 2 );
00051   }
00052   //else construct new selection that is centered over old selection
00053   else
00054   {
00055     //compute center selection center
00056     center = QPoint( selection.left() + selection.width()/2,
00057                      selection.top() + selection.height()/2 );
00058   }
00059   
00060   //determine width/height that will be used for painting
00061   QSize actualSize = paintingSize();
00062 
00063   //compute new selection area centerd over old selection region
00064   QRect newSelection;
00065   newSelection.setLeft( center.x() - actualSize.width() /2 );
00066   newSelection.setTop ( center.y() - actualSize.height()/2 );
00067   newSelection.setRight( newSelection.left() + actualSize.width()  - 1 );
00068   newSelection.setBottom( newSelection.top() + actualSize.height() - 1 );
00069   
00070   //set selection which will result in regenerating of orig and adjusted images
00071   setSelection( newSelection ); 
00072 }

void PanningPreviewInterface::selectionChanged (  )  [signal]

Referenced by generateOrigImage().

void PanningPreviewInterface::setSelection ( QRect  selection  )  [slot]

Definition at line 74 of file panningPreviewInterface.cpp.

References fullSizeImage, generateOrigImage(), paintingSize(), and selection.

Referenced by resizeEvent().

00075 {
00076   //set the selection
00077   selection = s; 
00078 
00079   //get the available painting size
00080   QSize actualSize = paintingSize();
00081 
00082   //if too wide or tall shrink selection
00083   if( selection.width() > actualSize.width() )
00084     selection.setRight( selection.left() + actualSize.width() - 1 );
00085   if( selection.height() > actualSize.height() )
00086     selection.setBottom( selection.top() + actualSize.height() - 1 );
00087 
00088  //shift selection area if it extends beyond image boundary
00089   if( selection.left() < 0 )
00090     selection.moveBy( -selection.left(), 0 );
00091   
00092   if( selection.top() < 0 )
00093     selection.moveBy( 0, -selection.top() );
00094   
00095   if( selection.right() > fullSizeImage.width()-1 )
00096     selection.moveBy( (fullSizeImage.width()-1) - selection.right(), 0 );
00097 
00098   if( selection.bottom() > fullSizeImage.height()-1 )
00099     selection.moveBy( 0, (fullSizeImage.height()-1) - selection.bottom() );
00100   
00101   //regenerate orig and adjusted images
00102   generateOrigImage();
00103 }

QSize PanningPreviewInterface::sizeHint (  )  const [virtual]

Implements SplitViewInterface.

Definition at line 28 of file panningPreviewInterface.cpp.

00029 {
00030   //subjetively chosen default size :)
00031   return QSize( 500, 400 );
00032 }


Member Data Documentation

Full size image.

Definition at line 46 of file panningPreviewInterface.h.

Referenced by generateOrigImage(), paintingSize(), PanningPreviewInterface(), resizeEvent(), and setSelection().

Current selection.

Definition at line 49 of file panningPreviewInterface.h.

Referenced by generateOrigImage(), getSelection(), PanningPreviewInterface(), resizeEvent(), and setSelection().


The documentation for this class was generated from the following files:

Generated on Sun Aug 23 02:34:37 2009 for AlbumShaper by  doxygen 1.5.9