<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>AlbumShaper: framing.cpp Source File</title> <link href="tabs.css" rel="stylesheet" type="text/css"> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.9 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>File Members</span></a></li> </ul> </div> <h1>framing.cpp</h1><a href="framing_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//==============================================</span> <a name="l00002"></a>00002 <span class="comment">// copyright : (C) 2003-2005 by Will Stokes</span> <a name="l00003"></a>00003 <span class="comment">//==============================================</span> <a name="l00004"></a>00004 <span class="comment">// This program is free software; you can redistribute it</span> <a name="l00005"></a>00005 <span class="comment">// and/or modify it under the terms of the GNU General</span> <a name="l00006"></a>00006 <span class="comment">// Public License as published by the Free Software</span> <a name="l00007"></a>00007 <span class="comment">// Foundation; either version 2 of the License, or</span> <a name="l00008"></a>00008 <span class="comment">// (at your option) any later version.</span> <a name="l00009"></a>00009 <span class="comment">//==============================================</span> <a name="l00010"></a>00010 <a name="l00011"></a>00011 <span class="comment">//Systemwide includes</span> <a name="l00012"></a>00012 <span class="preprocessor">#include <qfile.h></span> <a name="l00013"></a>00013 <span class="preprocessor">#include <qtextstream.h></span> <a name="l00014"></a>00014 <span class="preprocessor">#include <qstringlist.h></span> <a name="l00015"></a>00015 <span class="preprocessor">#include <qnamespace.h></span> <a name="l00016"></a>00016 <span class="preprocessor">#include <qkeysequence.h></span> <a name="l00017"></a>00017 <a name="l00018"></a>00018 <span class="comment">//Projectwide includes</span> <a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="framing_8h.html">framing.h</a>"</span> <a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="helpWindow_8h.html">helpWindow.h</a>"</span> <a name="l00021"></a>00021 <span class="preprocessor">#include "../../config.h"</span> <a name="l00022"></a>00022 <a name="l00023"></a>00023 <span class="comment">//==============================================</span> <a name="l00024"></a><a class="code" href="classFraming.html#876d3548f79d8a169bfbb1a25848fcf8">00024</a> QString <a class="code" href="classFraming.html#876d3548f79d8a169bfbb1a25848fcf8" title="returns the html filename">Framing::filename</a>() <a name="l00025"></a>00025 { <a name="l00026"></a>00026 <span class="keywordflow">return</span> QString(<span class="stringliteral">"%1/framing.html"</span>).arg(<a class="code" href="config_8cpp.html#8e603096352908a187b5364096a8d581">TEMP_DIR</a>); <a name="l00027"></a>00027 } <a name="l00028"></a>00028 <span class="comment">//==============================================</span> <a name="l00029"></a><a class="code" href="classFraming.html#be4d2bb35e028658f65f2235a5df28f1">00029</a> <span class="keywordtype">void</span> <a class="code" href="classFraming.html#be4d2bb35e028658f65f2235a5df28f1" title="generates the html file">Framing::generateHTML</a>(QTextStream::Encoding type, QString charSet) <a name="l00030"></a>00030 { <a name="l00031"></a>00031 QString ctrlKey; <a name="l00032"></a>00032 <span class="preprocessor">#if defined(Q_OS_MACX)</span> <a name="l00033"></a>00033 <span class="preprocessor"></span> ctrlKey = <span class="stringliteral">"Command"</span>; <a name="l00034"></a>00034 <span class="preprocessor">#else</span> <a name="l00035"></a>00035 <span class="preprocessor"></span> ctrlKey = <span class="stringliteral">"Ctrl"</span>; <a name="l00036"></a>00036 <span class="preprocessor">#endif</span> <a name="l00037"></a>00037 <span class="preprocessor"></span> <a name="l00038"></a>00038 <span class="comment">//create/open html file</span> <a name="l00039"></a>00039 QFile file( <a class="code" href="classFraming.html#876d3548f79d8a169bfbb1a25848fcf8" title="returns the html filename">filename</a>() ); <a name="l00040"></a>00040 <span class="keywordflow">if</span>(file.open(IO_WriteOnly)) <a name="l00041"></a>00041 { <a name="l00042"></a>00042 <span class="comment">//-----</span> <a name="l00043"></a>00043 QTextStream stream; <a name="l00044"></a>00044 stream.setEncoding( type ); <a name="l00045"></a>00045 stream.setDevice( &file ); <a name="l00046"></a>00046 <span class="comment">//-----</span> <a name="l00047"></a>00047 stream << <span class="stringliteral">"<html><head>\n"</span>; <a name="l00048"></a>00048 stream << <span class="stringliteral">"<meta http-equiv='Content-Type' content='text/html; charset="</span> << charSet << <span class="stringliteral">"'>\n"</span>; <a name="l00049"></a>00049 stream << <span class="stringliteral">"</head><body>\n"</span>; <a name="l00050"></a>00050 stream << <span class="stringliteral">"<table cellpadding='4'><tr>\n"</span>; <a name="l00051"></a>00051 stream << <span class="stringliteral">"<td><img src='"</span> << <a class="code" href="config_8cpp.html#59e02362a9a29a755712dc830a3eb513">IMAGE_PATH</a> << <span class="stringliteral">"helpImages/asHelpLogoSmall.png'></td>\n"</span>; <a name="l00052"></a>00052 stream << <span class="stringliteral">"<td valign='middle'><font face='Arial, sans-serif' size='+3'>"</span>; <a name="l00053"></a>00053 stream << HelpWindow::tr(<span class="stringliteral">"Framing"</span>) << <span class="stringliteral">"</font></td>\n"</span>; <a name="l00054"></a>00054 stream << <span class="stringliteral">"</tr></table>\n"</span>; <a name="l00055"></a>00055 <a name="l00056"></a>00056 stream << <span class="stringliteral">"<font face='Arial, sans-serif'>\n"</span>; <a name="l00057"></a>00057 stream << <span class="stringliteral">"<table cellspacing='10' cellpadding='0'><tr><td>\n"</span>; <a name="l00058"></a>00058 <a name="l00059"></a>00059 stream << <span class="stringliteral">"<table width='100%' cellpadding='4' cellspacing='0'><tr><td bgcolor='lightgray'>\n"</span>; <a name="l00060"></a>00060 stream << <span class="stringliteral">"<font size='+1'><b>"</span> << HelpWindow::tr(<span class="stringliteral">"Batch Effects:"</span>) << <span class="stringliteral">"</b></font>\n"</span>; <a name="l00061"></a>00061 stream << <span class="stringliteral">"</td></tr></table>\n"</span>; <a name="l00062"></a>00062 <a name="l00063"></a>00063 stream << <span class="stringliteral">"<p align='justify'>\n"</span>; <a name="l00064"></a>00064 stream << HelpWindow::tr(<span class="stringliteral">"Album Shaper makes rotating your pictures a snap; in fact, you can rotate multiple pictures at once! Select one or more photos in a collection and click the <font color='red'>Rotate Right</font> or <font color='red'>Rotate Left</font> button. If you scanned a negative backwards and need a quick flip, or if you took that photo that is a little tilted, double click the photo or select it and switch to the <font color='red'>Edit</font> tab to use additional framing tools."</span>) << <span class="stringliteral">"\n"</span>; <a name="l00065"></a>00065 <a name="l00066"></a>00066 stream << <span class="stringliteral">"</td></tr><tr><td>\n"</span>; <a name="l00067"></a>00067 <a name="l00068"></a>00068 stream << <span class="stringliteral">"<table width='100%' cellpadding='4' cellspacing='0'><tr><td bgcolor='lightgray'>\n"</span>; <a name="l00069"></a>00069 stream << <span class="stringliteral">"<font size='+1'><b>"</span> << HelpWindow::tr(<span class="stringliteral">"Rotating & Flipping:"</span>) << <span class="stringliteral">"</b></font>\n"</span>; <a name="l00070"></a>00070 stream << <span class="stringliteral">"</td></tr></table>\n"</span>; <a name="l00071"></a>00071 <a name="l00072"></a>00072 stream << <span class="stringliteral">"<table cellpadding='4' cellspacing='0'><tr><td valign='middle'>\n"</span>; <a name="l00073"></a>00073 stream << <span class="stringliteral">"<p align='justify'>\n"</span>; <a name="l00074"></a>00074 stream << HelpWindow::tr(<span class="stringliteral">"Using the framing controls found at the bottom left of the photo editor, you can rotate, correct tilt, flip, and crop your photos. Rotate and flip operations require a single click."</span>) << <span class="stringliteral">"\n"</span>; <a name="l00075"></a>00075 stream << <span class="stringliteral">"</td><td valign='middle'>\n"</span>; <a name="l00076"></a>00076 stream << <span class="stringliteral">"<img src='"</span> << IMAGE_PATH << <span class="stringliteral">"helpImages/frameControls.png'>\n"</span>; <a name="l00077"></a>00077 stream << <span class="stringliteral">"</td></tr></table>\n"</span>; <a name="l00078"></a>00078 <a name="l00079"></a>00079 stream << <span class="stringliteral">"</td></tr><tr><td>\n"</span>; <a name="l00080"></a>00080 <a name="l00081"></a>00081 stream << <span class="stringliteral">"<table width='100%' cellpadding='4' cellspacing='0'><tr><td bgcolor='lightgray'>\n"</span>; <a name="l00082"></a>00082 stream << <span class="stringliteral">"<font size='+1'><b>"</span> << HelpWindow::tr(<span class="stringliteral">"Tilt Correction:"</span>) << <span class="stringliteral">"</b></font>\n"</span>; <a name="l00083"></a>00083 stream << <span class="stringliteral">"</td></tr></table>\n"</span>; <a name="l00084"></a>00084 <a name="l00085"></a>00085 stream << <span class="stringliteral">"<table cellpadding='4' cellspacing='0'><tr><td valign='middle'>\n"</span>; <a name="l00086"></a>00086 stream << <span class="stringliteral">"<img src='"</span> << IMAGE_PATH << <span class="stringliteral">"helpImages/tiltCorrection.png'>\n"</span>; <a name="l00087"></a>00087 stream << <span class="stringliteral">"</td><td valign='middle'>\n"</span>; <a name="l00088"></a>00088 stream << <span class="stringliteral">"<p align='justify'>\n"</span>; <a name="l00089"></a>00089 stream << HelpWindow::tr(<span class="stringliteral">"You can correct tilt in images by identifying what should be a vertical or horizontal edge. Click the green tilt correction button, then click two places along what should be a vertical or horizontal edge. Album Shaper takes cares of the rest, figuring out how many degrees to rotate your image for you."</span>) << <span class="stringliteral">"\n"</span>; <a name="l00090"></a>00090 stream << <span class="stringliteral">"</td></tr></table>\n"</span>; <a name="l00091"></a>00091 <a name="l00092"></a>00092 stream << <span class="stringliteral">"</td></tr><tr><td>\n"</span>; <a name="l00093"></a>00093 <a name="l00094"></a>00094 stream << <span class="stringliteral">"<table width='100%' cellpadding='4' cellspacing='0'><tr><td bgcolor='lightgray'>\n"</span>; <a name="l00095"></a>00095 stream << <span class="stringliteral">"<font size='+1'><b>"</span> << HelpWindow::tr(<span class="stringliteral">"Cropping:"</span>) << <span class="stringliteral">"</b></font>\n"</span>; <a name="l00096"></a>00096 stream << <span class="stringliteral">"</td></tr></table>\n"</span>; <a name="l00097"></a>00097 <a name="l00098"></a>00098 stream << <span class="stringliteral">"<table cellpadding='4' cellspacing='0'><tr><td valign='middle'>\n"</span>; <a name="l00099"></a>00099 stream << <span class="stringliteral">"<p align='justify'>\n"</span>; <a name="l00100"></a>00100 stream << HelpWindow::tr(<span class="stringliteral">"Cropping to preset size is easy. First, select the dimensions you are interested in from the aspect ratio menu. The largest portion of the photo that matches that size is automatically selected. Simply click and drag to move the selected region. You can scale the selection by holding Shift and clicking and dragging right and left to expand or shrink the selection about its center. To crop to the selected region, click the <font color='red'>crop</font> button."</span>) << <span class="stringliteral">"\n"</span>; <a name="l00101"></a>00101 stream << <span class="stringliteral">"</td><td valign='middle'>\n"</span>; <a name="l00102"></a>00102 stream << <span class="stringliteral">"<img src='"</span> << IMAGE_PATH << <span class="stringliteral">"helpImages/cropping5x7.png'>\n"</span>; <a name="l00103"></a>00103 stream << <span class="stringliteral">"</td></tr></table>\n"</span>; <a name="l00104"></a>00104 <a name="l00105"></a>00105 stream << <span class="stringliteral">"</td></tr><tr><td>\n"</span>; <a name="l00106"></a>00106 <a name="l00107"></a>00107 stream << <span class="stringliteral">"<table cellpadding='4' cellspacing='0'><tr><td valign='middle'>\n"</span>; <a name="l00108"></a>00108 stream << <span class="stringliteral">"<img src='"</span> << IMAGE_PATH << <span class="stringliteral">"helpImages/dpiWarning.png'>\n"</span>; <a name="l00109"></a>00109 stream << <span class="stringliteral">"</td><td valign='middle'>\n"</span>; <a name="l00110"></a>00110 stream << <span class="stringliteral">"<p align='justify'>\n"</span>; <a name="l00111"></a>00111 stream << HelpWindow::tr(<span class="stringliteral">"Album Shaper takes the difficulties out of cropping and printing your photos. If you crop too small, you will get lower quality prints. If Album Shaper knows the dimensions you want, it passively lets you know if you are cropping too small by changing the color of the selection rectangle. If the selection rectangle turns red, you know the quality of your print will be lower. In such situations the target DPI (dots per inch) is printed next to the selected resolution."</span>) << <span class="stringliteral">"\n"</span>; <a name="l00112"></a>00112 stream << <span class="stringliteral">"</td></tr></table>\n"</span>; <a name="l00113"></a>00113 <a name="l00114"></a>00114 stream << <span class="stringliteral">"</td></tr><tr><td>\n"</span>; <a name="l00115"></a>00115 <a name="l00116"></a>00116 stream << <span class="stringliteral">"<table cellpadding='4' cellspacing='0'><tr><td valign='middle'>\n"</span>; <a name="l00117"></a>00117 stream << <span class="stringliteral">"<p align='justify'>\n"</span>; <a name="l00118"></a>00118 stream << HelpWindow::tr(<span class="stringliteral">"In addition to cropping to standard print sizes, you can crop images to your current display resolution for creating desktop wallpapers, or even crop to a custom size by clicking and dragging out a selection. You can adjust the corners and edges of the selection independently by clicking and dragging as well."</span>) << <span class="stringliteral">"\n"</span>; <a name="l00119"></a>00119 stream << <span class="stringliteral">"<p>\n"</span>; <a name="l00120"></a>00120 stream << QString(HelpWindow::tr(<span class="stringliteral">"To rotate the selected region about its center, hold %1 and click the selected region."</span>)).arg(ctrlKey) << <span class="stringliteral">"\n"</span>; <a name="l00121"></a>00121 stream << <span class="stringliteral">"</td><td valign='middle'>\n"</span>; <a name="l00122"></a>00122 stream << <span class="stringliteral">"<img src='"</span> << IMAGE_PATH << <span class="stringliteral">"helpImages/customRotate.png'>\n"</span>; <a name="l00123"></a>00123 stream << <span class="stringliteral">"</td></tr></table>\n"</span>; <a name="l00124"></a>00124 <a name="l00125"></a>00125 stream << <span class="stringliteral">"</font>\n"</span>; <a name="l00126"></a>00126 stream << <span class="stringliteral">"</body></html>\n"</span>; <a name="l00127"></a>00127 file.close(); <a name="l00128"></a>00128 } <a name="l00129"></a>00129 } <a name="l00130"></a>00130 <span class="comment">//==============================================</span> </pre></div></div> <hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 23 02:34:25 2009 for AlbumShaper by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address> </body> </html>