Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 4f45e7bdfd4a5ff17f5f8eaab90d017f > files > 1388

albumshaper-2.1-6mdv2010.0.i586.rpm

<!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: painting.cpp File Reference</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&nbsp;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&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>painting.cpp File Reference</h1><code>#include &lt;qimage.h&gt;</code><br>
<code>#include &lt;qstring.h&gt;</code><br>
<code>#include &lt;qapplication.h&gt;</code><br>
<code>#include &lt;math.h&gt;</code><br>
<code>#include &quot;<a class="el" href="painting_8h_source.html">painting.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="manipulationOptions_8h_source.html">manipulationOptions.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="statusWidget_8h_source.html">../../gui/statusWidget.h</a>&quot;</code><br>

<p>
<div class="dynheader">
Include dependency graph for painting.cpp:</div>
<div class="dynsection">
</div>

<p>
<a href="painting_8cpp_source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structTriplet.html">Triplet</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structHistogram.html">Histogram</a></td></tr>

<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="painting_8cpp.html#0c75cd66aeb0ed0856388c53c642a25d">resetHistogram</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="painting_8cpp.html#96b46f44f684038c172a8adcd4fb9530">findHighestCounts</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">QImage *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="painting_8cpp.html#014a24abedbd69fe2a641c7edfadd959">oilPaintingEffect</a> (QString filename, <a class="el" href="classManipulationOptions.html">ManipulationOptions</a> *options)</td></tr>

<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structHistogram.html">Histogram</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a></td></tr>

</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="96b46f44f684038c172a8adcd4fb9530"></a><!-- doxytag: member="painting.cpp::findHighestCounts" ref="96b46f44f684038c172a8adcd4fb9530" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void findHighestCounts           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="painting_8cpp_source.html#l00087">87</a> of file <a class="el" href="painting_8cpp_source.html">painting.cpp</a>.</p>

<p>References <a class="el" href="painting_8cpp_source.html#l00060">Triplet::b</a>, <a class="el" href="painting_8cpp_source.html#l00060">Triplet::g</a>, <a class="el" href="painting_8cpp_source.html#l00068">Histogram::highestCountIndex</a>, <a class="el" href="painting_8cpp_source.html#l00060">Triplet::r</a>, and <a class="el" href="painting_8cpp_source.html#l00065">Histogram::values</a>.</p>

<p>Referenced by <a class="el" href="painting_8cpp_source.html#l00103">oilPaintingEffect()</a>.</p>
<div class="fragment"><pre class="fragment"><a name="l00088"></a>00088 {
<a name="l00089"></a>00089   <span class="keyword">static</span> <span class="keywordtype">int</span> i;
<a name="l00090"></a>00090   <span class="keywordflow">for</span>(i = 1; i&lt;256; i++)
<a name="l00091"></a>00091   {    
<a name="l00092"></a>00092     <span class="keywordflow">if</span>( <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#ae156fb2f874455bc8aa66b83a5977ee">values</a>[i].<a class="code" href="structTriplet.html#95ee093e8e86e197ad690a0e8e169d75">r</a> &gt; <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#ae156fb2f874455bc8aa66b83a5977ee">values</a>[ <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#3bdc40f9aa588a0c90deb13cc9e64cc8">highestCountIndex</a>.<a class="code" href="structTriplet.html#95ee093e8e86e197ad690a0e8e169d75">r</a> ].<a class="code" href="structTriplet.html#95ee093e8e86e197ad690a0e8e169d75">r</a> )    
<a name="l00093"></a>00093     { <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#3bdc40f9aa588a0c90deb13cc9e64cc8">highestCountIndex</a>.<a class="code" href="structTriplet.html#95ee093e8e86e197ad690a0e8e169d75">r</a> = i; }
<a name="l00094"></a>00094 
<a name="l00095"></a>00095     <span class="keywordflow">if</span>( <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#ae156fb2f874455bc8aa66b83a5977ee">values</a>[i].<a class="code" href="structTriplet.html#e92c534dbfa98ba94577fc8b0e995cd2">g</a> &gt; <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#ae156fb2f874455bc8aa66b83a5977ee">values</a>[ <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#3bdc40f9aa588a0c90deb13cc9e64cc8">highestCountIndex</a>.<a class="code" href="structTriplet.html#e92c534dbfa98ba94577fc8b0e995cd2">g</a> ].<a class="code" href="structTriplet.html#e92c534dbfa98ba94577fc8b0e995cd2">g</a> )    
<a name="l00096"></a>00096     { <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#3bdc40f9aa588a0c90deb13cc9e64cc8">highestCountIndex</a>.<a class="code" href="structTriplet.html#e92c534dbfa98ba94577fc8b0e995cd2">g</a> = i; }
<a name="l00097"></a>00097   
<a name="l00098"></a>00098     <span class="keywordflow">if</span>( <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#ae156fb2f874455bc8aa66b83a5977ee">values</a>[i].<a class="code" href="structTriplet.html#b04c763889df0502639bc2020f445057">b</a> &gt; <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#ae156fb2f874455bc8aa66b83a5977ee">values</a>[ <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#3bdc40f9aa588a0c90deb13cc9e64cc8">highestCountIndex</a>.<a class="code" href="structTriplet.html#b04c763889df0502639bc2020f445057">b</a> ].<a class="code" href="structTriplet.html#b04c763889df0502639bc2020f445057">b</a> )    
<a name="l00099"></a>00099     { <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#3bdc40f9aa588a0c90deb13cc9e64cc8">highestCountIndex</a>.<a class="code" href="structTriplet.html#b04c763889df0502639bc2020f445057">b</a> = i; }                    
<a name="l00100"></a>00100   }
<a name="l00101"></a>00101 }
</pre></div>
<p>

</div>
</div><p>
<a class="anchor" name="014a24abedbd69fe2a641c7edfadd959"></a><!-- doxytag: member="painting.cpp::oilPaintingEffect" ref="014a24abedbd69fe2a641c7edfadd959" args="(QString filename, ManipulationOptions *options)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">QImage* oilPaintingEffect           </td>
          <td>(</td>
          <td class="paramtype">QString&nbsp;</td>
          <td class="paramname"> <em>filename</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classManipulationOptions.html">ManipulationOptions</a> *&nbsp;</td>
          <td class="paramname"> <em>options</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="painting_8cpp_source.html#l00103">103</a> of file <a class="el" href="painting_8cpp_source.html">painting.cpp</a>.</p>

<p>References <a class="el" href="painting_8cpp_source.html#l00060">Triplet::b</a>, <a class="el" href="redEye__internal_8h_source.html#l00037">editedImage</a>, <a class="el" href="painting_8cpp_source.html#l00087">findHighestCounts()</a>, <a class="el" href="painting_8cpp_source.html#l00060">Triplet::g</a>, <a class="el" href="manipulationOptions_8h_source.html#l00021">ManipulationOptions::getStatus()</a>, <a class="el" href="painting_8cpp_source.html#l00068">Histogram::highestCountIndex</a>, <a class="el" href="statusWidget_8cpp_source.html#l00119">StatusWidget::incrementProgress()</a>, <a class="el" href="redEye__internal_8h_source.html#l00031">newProgress</a>, <a class="el" href="painting_8cpp_source.html#l00060">Triplet::r</a>, <a class="el" href="painting_8cpp_source.html#l00073">resetHistogram()</a>, <a class="el" href="statusWidget_8cpp_source.html#l00089">StatusWidget::showProgressBar()</a>, <a class="el" href="redEye__internal_8h_source.html#l00021">status</a>, <a class="el" href="redEye__internal_8h_source.html#l00028">updateIncrement</a>, and <a class="el" href="painting_8cpp_source.html#l00065">Histogram::values</a>.</p>

<p>Referenced by <a class="el" href="editingInterface_8cpp_source.html#l00834">EditingInterface::applyEffect()</a>.</p>
<div class="fragment"><pre class="fragment"><a name="l00104"></a>00104 {
<a name="l00105"></a>00105   <span class="comment">//load original image  </span>
<a name="l00106"></a>00106   QImage originalImage( filename );
<a name="l00107"></a>00107 
<a name="l00108"></a>00108   <span class="comment">//convert to 32-bit depth if necessary</span>
<a name="l00109"></a>00109   <span class="keywordflow">if</span>( originalImage.depth() &lt; 32 ) { originalImage = originalImage.convertDepth( 32, Qt::AutoColor ); }
<a name="l00110"></a>00110 
<a name="l00111"></a>00111 <span class="comment">//determine if busy indicators will be used</span>
<a name="l00112"></a>00112   <span class="keywordtype">bool</span> useBusyIndicators = <span class="keyword">false</span>;
<a name="l00113"></a>00113   <a class="code" href="classStatusWidget.html">StatusWidget</a>* <a class="code" href="redEye__internal_8h.html#65b682074aef9e63bb1dad48c3e9e9df">status</a> = NULL;
<a name="l00114"></a>00114   <span class="keywordflow">if</span>( options != NULL &amp;&amp; options-&gt;<a class="code" href="classManipulationOptions.html#9bc4d4123333012b705b599043406e68">getStatus</a>() != NULL )
<a name="l00115"></a>00115   {
<a name="l00116"></a>00116     useBusyIndicators = <span class="keyword">true</span>;
<a name="l00117"></a>00117     status = options-&gt;<a class="code" href="classManipulationOptions.html#9bc4d4123333012b705b599043406e68">getStatus</a>(); 
<a name="l00118"></a>00118   }
<a name="l00119"></a>00119   
<a name="l00120"></a>00120   <span class="comment">//setup progress bar</span>
<a name="l00121"></a>00121   <span class="keywordflow">if</span>(useBusyIndicators)
<a name="l00122"></a>00122   {
<a name="l00123"></a>00123     QString statusMessage = qApp-&gt;translate( <span class="stringliteral">"oilPaintingEffect"</span>, <span class="stringliteral">"Applying Oil Painting Effect:"</span> );
<a name="l00124"></a>00124     status-&gt;<a class="code" href="classStatusWidget.html#57d461014070b9d651c36bd157cab9c1" title="Initializes the progress bar.">showProgressBar</a>( statusMessage, 100 );
<a name="l00125"></a>00125     qApp-&gt;processEvents();  
<a name="l00126"></a>00126   }
<a name="l00127"></a>00127 
<a name="l00128"></a>00128   <span class="comment">//update progress bar for every 1% of completion</span>
<a name="l00129"></a>00129   <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="redEye__internal_8h.html#32598f506d413f48cda8e1c930dae6b3">updateIncrement</a> = (int) ( 0.01 * originalImage.width() * originalImage.height() );
<a name="l00130"></a>00130   <span class="keywordtype">int</span> <a class="code" href="redEye__internal_8h.html#caa08422437cae250a76ca488cbe1567">newProgress</a> = 0; 
<a name="l00131"></a>00131   
<a name="l00132"></a>00132   <span class="comment">//construct edited image</span>
<a name="l00133"></a>00133   QImage* <a class="code" href="redEye__internal_8h.html#63116a8b94b4ed0e99ddcb7f6f3bd919">editedImage</a> = <span class="keyword">new</span> QImage( filename );
<a name="l00134"></a>00134   
<a name="l00135"></a>00135   <span class="comment">//convert to 32-bit depth if necessary</span>
<a name="l00136"></a>00136   <span class="keywordflow">if</span>( editedImage-&gt;depth() &lt; 32 )
<a name="l00137"></a>00137   {
<a name="l00138"></a>00138     QImage* tmp = editedImage;
<a name="l00139"></a>00139     editedImage = <span class="keyword">new</span> QImage( tmp-&gt;convertDepth( 32, Qt::AutoColor ) );
<a name="l00140"></a>00140     <span class="keyword">delete</span> tmp; tmp=NULL;
<a name="l00141"></a>00141   }
<a name="l00142"></a>00142   
<a name="l00143"></a>00143   <span class="comment">//compute the radius using image resolution</span>
<a name="l00144"></a>00144   <span class="keywordtype">double</span> minDimen = (double) QMIN( editedImage-&gt;width(), editedImage-&gt;height() );  
<a name="l00145"></a>00145   <span class="keyword">const</span> <span class="keywordtype">int</span> RADIUS = (int) QMAX( 2, (sqrt(minDimen)/4) );
<a name="l00146"></a>00146   
<a name="l00147"></a>00147   <span class="comment">//iterate over image</span>
<a name="l00148"></a>00148   <span class="keywordtype">int</span> originalImageX, originalImageY;
<a name="l00149"></a>00149   <span class="keywordtype">int</span> editedImageX, editedImageY;
<a name="l00150"></a>00150   <span class="keywordtype">int</span> clampedX, clampedY;
<a name="l00151"></a>00151   <span class="keywordtype">int</span> trailingEdgeY, leadingEdgeY;
<a name="l00152"></a>00152   
<a name="l00153"></a>00153   QRgb* rgb;
<a name="l00154"></a>00154   uchar* scanLine;  
<a name="l00155"></a>00155   uchar* trailingScanLine;
<a name="l00156"></a>00156   uchar* leadingScanLine;
<a name="l00157"></a>00157 
<a name="l00158"></a>00158   <span class="comment">//iterate over columns    </span>
<a name="l00159"></a>00159   <span class="keywordflow">for</span>( editedImageX=0; editedImageX &lt; editedImage-&gt;width(); editedImageX++)
<a name="l00160"></a>00160   {
<a name="l00161"></a>00161     <span class="comment">//------------------</span>
<a name="l00162"></a>00162     <span class="comment">//reset histogram object</span>
<a name="l00163"></a>00163     <a class="code" href="painting_8cpp.html#0c75cd66aeb0ed0856388c53c642a25d">resetHistogram</a>();
<a name="l00164"></a>00164     <span class="comment">//------------------</span>
<a name="l00165"></a>00165     <span class="comment">//fill histogram with data that would have results from Y=-1</span>
<a name="l00166"></a>00166     <span class="keywordflow">for</span>(originalImageY =  0 - 1 - RADIUS; 
<a name="l00167"></a>00167         originalImageY &lt;= 0 - 1 + RADIUS; 
<a name="l00168"></a>00168         originalImageY++)
<a name="l00169"></a>00169     {
<a name="l00170"></a>00170       clampedY = QMAX( QMIN( originalImageY, originalImage.height() - 1 ), 0 );        
<a name="l00171"></a>00171       scanLine = originalImage.scanLine( clampedY );
<a name="l00172"></a>00172       
<a name="l00173"></a>00173       <span class="keywordflow">for</span>(originalImageX =  editedImageX - RADIUS;
<a name="l00174"></a>00174           originalImageX &lt;= editedImageX + RADIUS; 
<a name="l00175"></a>00175           originalImageX++)
<a name="l00176"></a>00176       {
<a name="l00177"></a>00177         clampedX = QMAX( QMIN( originalImageX, originalImage.width() - 1 ), 0 );
<a name="l00178"></a>00178         
<a name="l00179"></a>00179         <span class="comment">//get rgb value</span>
<a name="l00180"></a>00180         rgb = ((QRgb*)scanLine+clampedX);
<a name="l00181"></a>00181         
<a name="l00182"></a>00182         <span class="comment">//update counts for this r/g/b value</span>
<a name="l00183"></a>00183         <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#ae156fb2f874455bc8aa66b83a5977ee">values</a>[ qRed(*rgb)   ].<a class="code" href="structTriplet.html#95ee093e8e86e197ad690a0e8e169d75">r</a>++;
<a name="l00184"></a>00184         <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#ae156fb2f874455bc8aa66b83a5977ee">values</a>[ qGreen(*rgb) ].<a class="code" href="structTriplet.html#e92c534dbfa98ba94577fc8b0e995cd2">g</a>++;
<a name="l00185"></a>00185         <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#ae156fb2f874455bc8aa66b83a5977ee">values</a>[ qBlue(*rgb)   ].<a class="code" href="structTriplet.html#b04c763889df0502639bc2020f445057">b</a>++;        
<a name="l00186"></a>00186       } <span class="comment">//originalX</span>
<a name="l00187"></a>00187     } <span class="comment">//originalY</span>
<a name="l00188"></a>00188     <span class="comment">//------------------</span>
<a name="l00189"></a>00189 
<a name="l00190"></a>00190     <span class="comment">//now iterate over rows by simply removing trailing edge data and adding leading edge data</span>
<a name="l00191"></a>00191     <span class="keywordflow">for</span>( editedImageY=0; editedImageY &lt; editedImage-&gt;height(); editedImageY++)
<a name="l00192"></a>00192     {             
<a name="l00193"></a>00193       trailingEdgeY = QMAX( QMIN( editedImageY-1-RADIUS, originalImage.height() - 1 ), 0 );        
<a name="l00194"></a>00194       leadingEdgeY  = QMAX( QMIN( editedImageY+RADIUS, originalImage.height() - 1 ), 0 );        
<a name="l00195"></a>00195     
<a name="l00196"></a>00196       trailingScanLine = originalImage.scanLine( trailingEdgeY );
<a name="l00197"></a>00197       leadingScanLine  = originalImage.scanLine( leadingEdgeY );
<a name="l00198"></a>00198   
<a name="l00199"></a>00199       <span class="keywordflow">for</span>(originalImageX =  editedImageX - RADIUS;
<a name="l00200"></a>00200           originalImageX &lt;= editedImageX + RADIUS; 
<a name="l00201"></a>00201           originalImageX++)
<a name="l00202"></a>00202       {
<a name="l00203"></a>00203         clampedX = QMAX( QMIN( originalImageX, originalImage.width() - 1 ), 0 );
<a name="l00204"></a>00204        
<a name="l00205"></a>00205         <span class="comment">//remove trail edge data</span>
<a name="l00206"></a>00206         rgb = ((QRgb*)trailingScanLine+clampedX);
<a name="l00207"></a>00207         <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#ae156fb2f874455bc8aa66b83a5977ee">values</a>[ qRed(*rgb)   ].<a class="code" href="structTriplet.html#95ee093e8e86e197ad690a0e8e169d75">r</a>--;
<a name="l00208"></a>00208         <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#ae156fb2f874455bc8aa66b83a5977ee">values</a>[ qGreen(*rgb) ].<a class="code" href="structTriplet.html#e92c534dbfa98ba94577fc8b0e995cd2">g</a>--;
<a name="l00209"></a>00209         <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#ae156fb2f874455bc8aa66b83a5977ee">values</a>[ qBlue(*rgb)   ].<a class="code" href="structTriplet.html#b04c763889df0502639bc2020f445057">b</a>--;        
<a name="l00210"></a>00210         
<a name="l00211"></a>00211         <span class="comment">//add leading edge data</span>
<a name="l00212"></a>00212         rgb = ((QRgb*)leadingScanLine+clampedX);
<a name="l00213"></a>00213         <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#ae156fb2f874455bc8aa66b83a5977ee">values</a>[ qRed(*rgb)   ].<a class="code" href="structTriplet.html#95ee093e8e86e197ad690a0e8e169d75">r</a>++;
<a name="l00214"></a>00214         <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#ae156fb2f874455bc8aa66b83a5977ee">values</a>[ qGreen(*rgb) ].<a class="code" href="structTriplet.html#e92c534dbfa98ba94577fc8b0e995cd2">g</a>++;
<a name="l00215"></a>00215         <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#ae156fb2f874455bc8aa66b83a5977ee">values</a>[ qBlue(*rgb)   ].<a class="code" href="structTriplet.html#b04c763889df0502639bc2020f445057">b</a>++;        
<a name="l00216"></a>00216       } <span class="comment">//originalX</span>
<a name="l00217"></a>00217 
<a name="l00218"></a>00218       <span class="comment">//find highest color counts</span>
<a name="l00219"></a>00219       <a class="code" href="painting_8cpp.html#96b46f44f684038c172a8adcd4fb9530">findHighestCounts</a>();
<a name="l00220"></a>00220       
<a name="l00221"></a>00221       <span class="comment">//replace each color channel value with average of </span>
<a name="l00222"></a>00222       <span class="comment">//current value and most occuring value within neighborhood</span>
<a name="l00223"></a>00223       scanLine = editedImage-&gt;scanLine( editedImageY );
<a name="l00224"></a>00224       rgb = ((QRgb*)scanLine+editedImageX);                                         
<a name="l00225"></a>00225       *rgb = qRgb( (qRed(*rgb)   + <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#3bdc40f9aa588a0c90deb13cc9e64cc8">highestCountIndex</a>.<a class="code" href="structTriplet.html#95ee093e8e86e197ad690a0e8e169d75">r</a>) / 2,
<a name="l00226"></a>00226                    (qGreen(*rgb) + <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#3bdc40f9aa588a0c90deb13cc9e64cc8">highestCountIndex</a>.<a class="code" href="structTriplet.html#e92c534dbfa98ba94577fc8b0e995cd2">g</a>) / 2,
<a name="l00227"></a>00227                    (qBlue(*rgb)  + <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#3bdc40f9aa588a0c90deb13cc9e64cc8">highestCountIndex</a>.<a class="code" href="structTriplet.html#b04c763889df0502639bc2020f445057">b</a>) / 2 );                            
<a name="l00228"></a>00228 
<a name="l00229"></a>00229 
<a name="l00230"></a>00230       <span class="comment">//update status bar if significant progress has been made since last update</span>
<a name="l00231"></a>00231       <span class="keywordflow">if</span>(useBusyIndicators)
<a name="l00232"></a>00232       {
<a name="l00233"></a>00233         newProgress++;
<a name="l00234"></a>00234         <span class="keywordflow">if</span>(newProgress &gt;= updateIncrement)
<a name="l00235"></a>00235         {
<a name="l00236"></a>00236           newProgress = 0;
<a name="l00237"></a>00237           status-&gt;<a class="code" href="classStatusWidget.html#de18735223ae40506c32c96b9c9c5476" title="Updates the progress bar by one step.">incrementProgress</a>();
<a name="l00238"></a>00238           qApp-&gt;processEvents();  
<a name="l00239"></a>00239         }
<a name="l00240"></a>00240       }
<a name="l00241"></a>00241       
<a name="l00242"></a>00242     } <span class="comment">//editedImageX</span>
<a name="l00243"></a>00243   } <span class="comment">//editedImageY</span>
<a name="l00244"></a>00244   
<a name="l00245"></a>00245   <span class="comment">//return pointer to edited image</span>
<a name="l00246"></a>00246   <span class="keywordflow">return</span> editedImage;  
<a name="l00247"></a>00247 }
</pre></div>
<p>

</div>
</div><p>
<a class="anchor" name="0c75cd66aeb0ed0856388c53c642a25d"></a><!-- doxytag: member="painting.cpp::resetHistogram" ref="0c75cd66aeb0ed0856388c53c642a25d" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void resetHistogram           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="painting_8cpp_source.html#l00073">73</a> of file <a class="el" href="painting_8cpp_source.html">painting.cpp</a>.</p>

<p>References <a class="el" href="painting_8cpp_source.html#l00060">Triplet::b</a>, <a class="el" href="painting_8cpp_source.html#l00060">Triplet::g</a>, <a class="el" href="painting_8cpp_source.html#l00068">Histogram::highestCountIndex</a>, <a class="el" href="painting_8cpp_source.html#l00060">Triplet::r</a>, and <a class="el" href="painting_8cpp_source.html#l00065">Histogram::values</a>.</p>

<p>Referenced by <a class="el" href="painting_8cpp_source.html#l00103">oilPaintingEffect()</a>.</p>
<div class="fragment"><pre class="fragment"><a name="l00074"></a>00074 {
<a name="l00075"></a>00075   <span class="keyword">static</span> <span class="keywordtype">int</span> i;
<a name="l00076"></a>00076   <span class="keywordflow">for</span>(i=0;i&lt;256;i++)
<a name="l00077"></a>00077   {
<a name="l00078"></a>00078     <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#ae156fb2f874455bc8aa66b83a5977ee">values</a>[i].<a class="code" href="structTriplet.html#95ee093e8e86e197ad690a0e8e169d75">r</a> = 0;
<a name="l00079"></a>00079     <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#ae156fb2f874455bc8aa66b83a5977ee">values</a>[i].<a class="code" href="structTriplet.html#e92c534dbfa98ba94577fc8b0e995cd2">g</a> = 0;
<a name="l00080"></a>00080     <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#ae156fb2f874455bc8aa66b83a5977ee">values</a>[i].<a class="code" href="structTriplet.html#b04c763889df0502639bc2020f445057">b</a> = 0;
<a name="l00081"></a>00081   }
<a name="l00082"></a>00082   <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#3bdc40f9aa588a0c90deb13cc9e64cc8">highestCountIndex</a>.<a class="code" href="structTriplet.html#95ee093e8e86e197ad690a0e8e169d75">r</a> = 0;
<a name="l00083"></a>00083   <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#3bdc40f9aa588a0c90deb13cc9e64cc8">highestCountIndex</a>.<a class="code" href="structTriplet.html#e92c534dbfa98ba94577fc8b0e995cd2">g</a> = 0;
<a name="l00084"></a>00084   <a class="code" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>.<a class="code" href="structHistogram.html#3bdc40f9aa588a0c90deb13cc9e64cc8">highestCountIndex</a>.<a class="code" href="structTriplet.html#b04c763889df0502639bc2020f445057">b</a> = 0;
<a name="l00085"></a>00085 }
</pre></div>
<p>

</div>
</div><p>
<hr><h2>Variable Documentation</h2>
<a class="anchor" name="f59d3df2344fa40bb429c332a7feb846"></a><!-- doxytag: member="painting.cpp::histogram" ref="f59d3df2344fa40bb429c332a7feb846" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structHistogram.html">Histogram</a> <a class="el" href="painting_8cpp.html#f59d3df2344fa40bb429c332a7feb846">histogram</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="painting_8cpp_source.html#l00071">71</a> of file <a class="el" href="painting_8cpp_source.html">painting.cpp</a>.</p>

</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun Aug 23 02:34:31 2009 for AlbumShaper by&nbsp;
<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>