Click here to Skip to main content
15,886,518 members
Articles / Desktop Programming / MFC

ImageStone - A Powerful C++ Class Library for Image Manipulation

Rate me:
Please Sign up or sign in to vote.
4.81/5 (250 votes)
6 Dec 2011Zlib3 min read 1.1M   51.5K   405  
An article on a library for image manipulation
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>ImageStone: FCColor Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.1 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a></div>
<h1>FCColor Class Reference</h1>Color helper class.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="_f_color_8h-source.html">FColor.h</a>&gt;</code>
<p>
<a href="class_f_c_color-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_f_c_color.html#e0">CombineAlphaPixel</a> (RGBQUAD *pDest, RGBQUAD cr1, RGBQUAD cr2, BYTE nAlpha2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Combine two pixel, result put into pDest.  <a href="#e0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e1" doxytag="FCColor::AlphaBlendPixel"></a>
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_f_c_color.html#e1">AlphaBlendPixel</a> (BYTE *pDest, const BYTE *pSrc, BYTE nAlphaSrc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">AlphaBlend two pixel, result put into pDest. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e2" doxytag="FCColor::GetGrayscale"></a>
static BYTE&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_f_c_color.html#e2">GetGrayscale</a> (const void *prgb)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculate pixel's grayscale value. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_f_c_color.html#e3">CopyPixel</a> (void *pDest, const void *pSrc, int nBytes)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rapid pixel copy.  <a href="#e3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static RGBQUAD&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_f_c_color.html#e4">Get_Bilinear_Pixel</a> (double x, double y, BOOL bHasAlpha, const BYTE *crPixel[4])</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Computes bilinear interpolation of four pixels.  <a href="#e4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e5" doxytag="FCColor::crBlack"></a>
static RGBQUAD&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_f_c_color.html#e5">crBlack</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Color black. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e6" doxytag="FCColor::crWhite"></a>
static RGBQUAD&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_f_c_color.html#e6">crWhite</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Color white. <br></td></tr>
<tr><td colspan="2"><div class="groupHeader">RGB &lt;==&gt; HLS (Hue, Lightness, Saturation).</div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="z1_0" doxytag="FCColor::RGBtoHLS"></a>
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_f_c_color.html#z1_0">RGBtoHLS</a> (const void *prgb, double *H, double *L, double *S)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">RGB ==&gt; HLS. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="z1_1" doxytag="FCColor::HLStoRGB"></a>
static RGBQUAD&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_f_c_color.html#z1_1">HLStoRGB</a> (const double &amp;H, const double &amp;L, const double &amp;S)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">HLS ==&gt; RGB. <br></td></tr>
<tr><td colspan="2"><div class="groupHeader">RGB &lt;==&gt; HSV (Hue, Saturation, Value).</div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="z3_0" doxytag="FCColor::RGBtoHSV"></a>
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_f_c_color.html#z3_0">RGBtoHSV</a> (const void *prgb, double *H, double *S, double *V)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">RGB ==&gt; HSV. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="z3_1" doxytag="FCColor::HSVtoRGB"></a>
static RGBQUAD&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_f_c_color.html#z3_1">HSVtoRGB</a> (double H, const double &amp;S, const double &amp;V)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">HSV ==&gt; RGB. <br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Color helper class. 
<p>
all function has no param check. 
<p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="e0" doxytag="FCColor::CombineAlphaPixel"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">PCL_forceinline void FCColor::CombineAlphaPixel           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">RGBQUAD *&nbsp;</td>
          <td class="mdname" nowrap> <em>pDest</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>RGBQUAD&nbsp;</td>
          <td class="mdname" nowrap> <em>cr1</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>RGBQUAD&nbsp;</td>
          <td class="mdname" nowrap> <em>cr2</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>BYTE&nbsp;</td>
          <td class="mdname" nowrap> <em>nAlpha2</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"><code> [static]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Combine two pixel, result put into pDest. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pDest</em>&nbsp;</td><td>: must be 32bpp </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>cr1</em>&nbsp;</td><td>: background </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>cr2</em>&nbsp;</td><td>: foreground </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nAlpha2</em>&nbsp;</td><td>: alpha value of cr2 </td></tr>
  </table>
</dl>
    </td>
  </tr>
</table>
<a class="anchor" name="e3" doxytag="FCColor::CopyPixel"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">PCL_forceinline void FCColor::CopyPixel           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">void *&nbsp;</td>
          <td class="mdname" nowrap> <em>pDest</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>const void *&nbsp;</td>
          <td class="mdname" nowrap> <em>pSrc</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap> <em>nBytes</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"><code> [static]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Rapid pixel copy. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>nBytes</em>&nbsp;</td><td>: can be 1,2,3,4 </td></tr>
  </table>
</dl>
    </td>
  </tr>
</table>
<a class="anchor" name="e4" doxytag="FCColor::Get_Bilinear_Pixel"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">RGBQUAD FCColor::Get_Bilinear_Pixel           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">double&nbsp;</td>
          <td class="mdname" nowrap> <em>x</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>double&nbsp;</td>
          <td class="mdname" nowrap> <em>y</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>BOOL&nbsp;</td>
          <td class="mdname" nowrap> <em>bHasAlpha</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>const BYTE *&nbsp;</td>
          <td class="mdname" nowrap> <em>crPixel</em>[4]</td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"><code> [inline, static]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Computes bilinear interpolation of four pixels. 
<p>
The pixels in 'crPixel' in the following (x,y) order: [0,0], [1,0], [0,1], [1,1].     </td>
  </tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="_f_color_8h-source.html">FColor.h</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Wed Mar 8 11:12:47 2006 for ImageStone by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.1 </small></address>
</body>
</html>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The zlib/libpng License


Written By
Team Leader PhoXo
China China
graduate from University of Science and Technology of China at 2002.

Now I work at www.phoxo.com.

Comments and Discussions