Main Page   Compound List   File List   Compound Members   File Members  

imageTools.h File Reference

Go to the source code of this file.

Functions

void resizeImage (int originalWidth, int originalHeight, int maxWidth, int maxHeight, int &newWidth, int &newHeight)
 Returns new image dimensions keeping size ratio.

void copyFile (QString oldFile, QString newFile)
 Copies a file from one location to another.

void createImages (QImage *fullImage, QImage **slideshowImage, QImage **thumbnailImage, QImage **paddedThumbnailImage, int &slideshowWidth, int &slideshowHeight)
 Given a pointer to a full image, constructs slideshow, thumbnail, and padded thumbnail images.


Function Documentation

void copyFile QString  oldFile,
QString  newFile
 

Copies a file from one location to another.

Definition at line 63 of file imageTools.cpp.

Referenced by Album::exportSubalbumImages().

00065 {
00066   ifstream inputstream(oldFile.ascii(), ios::binary|ios::in);
00067   ofstream outputstream(newFile.ascii(), ios::binary|ios::out);
00068 
00069   char buffer[500];
00070   while(inputstream.is_open() && inputstream)
00071   {
00072     inputstream.read(buffer, 500);
00073     outputstream.write(buffer, 500);
00074   }
00075 
00076   inputstream.close();
00077   outputstream.close();
00078 }

void createImages QImage *  fullImage,
QImage **  slideshowImage,
QImage **  thumbnailImage,
QImage **  paddedThumbnailImage,
int &  slideshowWidth,
int &  slideshowHeight
 

Given a pointer to a full image, constructs slideshow, thumbnail, and padded thumbnail images.

Definition at line 80 of file imageTools.cpp.

References resizeImage(), SLIDESHOW_HEIGHT, SLIDESHOW_WIDTH, THUMBNAIL_HEIGHT, and THUMBNAIL_WIDTH.

Referenced by Photo::flipHorizontally(), Photo::flipVertically(), Photo::rotate270(), Photo::rotate90(), and Photo::setImage().

00086 {
00087   //---------------------------------------------------------    
00088   if((*paddedThumbnailImage) != (*thumbnailImage))
00089     delete (*paddedThumbnailImage);
00090   delete (*thumbnailImage);
00091   delete (*slideshowImage);
00092   //---------------------------------------------------------    
00093   int thumbnailW = 0;
00094   int thumbnailH = 0;
00095   //---------------------------------------------------------    
00096   resizeImage( fullImage->width(), fullImage->height(),
00097                THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT,
00098                thumbnailW, thumbnailH);
00099   resizeImage( fullImage->width(), fullImage->height(),
00100                SLIDESHOW_WIDTH, SLIDESHOW_HEIGHT,
00101                slideshowWidth, slideshowHeight);
00102   //---------------------------------------------------------    
00103   //scale slide show image
00104   QImage temp = fullImage->smoothScale( slideshowWidth, slideshowHeight );
00105   temp.setAlphaBuffer(true);
00106   //create full size slide show image
00107   (*slideshowImage) = new QImage(SLIDESHOW_WIDTH, SLIDESHOW_HEIGHT, fullImage->depth());
00108   (*slideshowImage)->setAlphaBuffer(true);
00109   //copy scaled image into centered portion of real slideshow image
00110   int xDiff = SLIDESHOW_WIDTH - slideshowWidth;
00111   int yDiff = SLIDESHOW_HEIGHT - slideshowHeight;
00112 
00113   //set all pixels to white
00114   int x,y;
00115   for(x=0; x< SLIDESHOW_WIDTH; x++)
00116   {
00117     for(y=0; y<SLIDESHOW_HEIGHT; y++)
00118     {
00119       (*slideshowImage)->setPixel(x, y, QColor(255, 255, 255).rgb()); 
00120     }
00121   }
00122   
00123   int x2 = 0;
00124   int y2;
00125   for(x = xDiff/2; x< (xDiff/2) + slideshowWidth; x++)
00126   {
00127     y2 = 0;
00128     for(y = yDiff/2; y < (yDiff/2) + slideshowHeight; y++)
00129     {
00130        (*slideshowImage)->setPixel(x, y, temp.pixel(x2, y2));
00131        y2++;
00132     }
00133     x2++;  
00134   }
00135   //---------------------------------------------------------    
00136   //scale down thumbnail image
00137   (*thumbnailImage) = new QImage(fullImage->smoothScale( thumbnailW, thumbnailH ));
00138   (*thumbnailImage)->setAlphaBuffer(true); 
00139   //---------------------------------------------------------    
00140   //if scaled thumbnail image is same size as padded thumbnail should be reuse object
00141   if(thumbnailW == THUMBNAIL_WIDTH &&
00142      thumbnailH == THUMBNAIL_HEIGHT)
00143   {
00144      (*paddedThumbnailImage) = (*thumbnailImage);
00145   }
00146   //else pad thumbnail
00147   else
00148   {
00149     //created padded thumbnail image
00150     (*paddedThumbnailImage) = new QImage(THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT, fullImage->depth());
00151     (*paddedThumbnailImage)->setAlphaBuffer(true);
00152   
00153     //copy scaled image into centered portion of padded image
00154     xDiff = THUMBNAIL_WIDTH - thumbnailW;
00155     yDiff = THUMBNAIL_HEIGHT - thumbnailH;
00156 
00157     //set all pixels to white
00158     for(x=0; x< THUMBNAIL_WIDTH; x++)
00159     {
00160       for(y=0; y<THUMBNAIL_HEIGHT; y++)
00161       {
00162         (*paddedThumbnailImage)->setPixel(x, y, QColor(255, 255, 255).rgb()); 
00163       }
00164     }
00165   
00166     x2 = 0;
00167     for(x = xDiff/2; x< (xDiff/2) + thumbnailW; x++)
00168     {
00169       y2 = 0;
00170       for(y = yDiff/2; y < (yDiff/2) + thumbnailH; y++)
00171       {
00172         (*paddedThumbnailImage)->setPixel(x, y, (*thumbnailImage)->pixel(x2, y2));
00173         y2++;
00174       }
00175       x2++;  
00176     }
00177   }  
00178   //---------------------------------------------------------    
00179 }

void resizeImage int  originalWidth,
int  originalHeight,
int  maxWidth,
int  maxHeight,
int &  newWidth,
int &  newHeight
 

Returns new image dimensions keeping size ratio.

Definition at line 30 of file imageTools.cpp.

Referenced by createImages(), PhotoEditWidget::setPhoto(), Subalbum::setRepresentativeImages(), and Album::setRepresentativeImages().

00036 {
00037   //if original dimensions are within max new size then use
00038   //original dimensions
00039   if(originalWidth <= maxWidth &&
00040      originalHeight <= maxHeight)
00041   {
00042     newWidth = originalWidth;
00043     newHeight = originalHeight;
00044     return;
00045   }
00046   
00047   //else find dimension which is way over bounds
00048   float ratWidth = ((float)maxWidth) / ((float)originalWidth);
00049   float ratHeight = ((float)maxHeight) / ((float)originalHeight);
00050   
00051   if(ratWidth < ratHeight)
00052   {
00053     newWidth = maxWidth;
00054     newHeight = (int)((((float)maxWidth) / ((float)originalWidth)) * ((float)originalHeight));  
00055   }
00056   else
00057   {
00058     newHeight = maxHeight;
00059     newWidth = (int)((((float)maxHeight) / ((float)originalHeight)) * ((float)originalWidth));   
00060   }  
00061 }


Generated on Tue Jun 10 23:41:21 2003 for AlbumShaper by doxygen 1.3.1