1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>paintlib: plpixel24.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.2 -->
<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Compound List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Compound Members</a></div>
<h1>plpixel24.h</h1><div class="fragment"><pre>00001 <span class="comment">/*</span>
00002 <span class="comment">/--------------------------------------------------------------------</span>
00003 <span class="comment">|</span>
00004 <span class="comment">| $Id: plpixel24_8h-source.html,v 1.4 2004/09/15 15:26:32 uzadow Exp $</span>
00005 <span class="comment">|</span>
00006 <span class="comment">| Copyright (c) 1996-2002 Ulrich von Zadow</span>
00007 <span class="comment">|</span>
00008 <span class="comment">\--------------------------------------------------------------------</span>
00009 <span class="comment">*/</span>
00010
00011 <span class="preprocessor">#ifndef INCL_PLPIXEL24</span>
00012 <span class="preprocessor"></span><span class="preprocessor">#define INCL_PLPIXEL24</span>
00013 <span class="preprocessor"></span>
00014 <span class="preprocessor">#include "plpixeldefs.h"</span>
00015 <span class="preprocessor">#include "<a class="code" href="plpaintlibdefs_8h.html">plpaintlibdefs.h</a>"</span>
00016 <span class="preprocessor">#include "plpixel32.h"</span>
00017 <span class="comment"></span>
00018 <span class="comment">//! 24 bit pixel class. A pixel in this class contains 8 bits each of</span>
00019 <span class="comment">//! red, green and blue. The order of the color components is</span>
00020 <span class="comment">//! OS-dependent and defined in config.h. This class is meant to be</span>
00021 <span class="comment">//! fast, so all methods are inlined.</span>
<a name="l00022"></a><a class="code" href="classPLPixel24.html">00022</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classPLPixel24.html">PLPixel24</a>
00023 {
00024 <span class="keyword">public</span>:<span class="comment"></span>
00025 <span class="comment"> //!</span>
00026 <span class="comment"></span> <a class="code" href="classPLPixel24.html">PLPixel24</a> ();<span class="comment"></span>
00027 <span class="comment"> //!</span>
00028 <span class="comment"></span> <a class="code" href="classPLPixel24.html">PLPixel24</a> (PLBYTE r, PLBYTE g, PLBYTE b);<span class="comment"></span>
00029 <span class="comment"> //!</span>
00030 <span class="comment"></span> <span class="keywordtype">void</span> Set (PLBYTE r, PLBYTE g, PLBYTE b);<span class="comment"></span>
00031 <span class="comment"> //!</span>
00032 <span class="comment"></span> <span class="keywordtype">void</span> SetR (PLBYTE r);<span class="comment"></span>
00033 <span class="comment"> //!</span>
00034 <span class="comment"></span> <span class="keywordtype">void</span> SetG (PLBYTE g);<span class="comment"></span>
00035 <span class="comment"> //!</span>
00036 <span class="comment"></span> <span class="keywordtype">void</span> SetB (PLBYTE b);<span class="comment"></span>
00037 <span class="comment"> //!</span>
00038 <span class="comment"></span> PLBYTE GetR () <span class="keyword">const</span>;<span class="comment"></span>
00039 <span class="comment"> //!</span>
00040 <span class="comment"></span> PLBYTE GetG () <span class="keyword">const</span>;<span class="comment"></span>
00041 <span class="comment"> //!</span>
00042 <span class="comment"></span> PLBYTE GetB () <span class="keyword">const</span>;
00043 <span class="comment"></span>
00044 <span class="comment"> //!</span>
00045 <span class="comment"></span> <a class="code" href="classPLPixel24.html">PLPixel24</a> operator = (<span class="keyword">const</span> <a class="code" href="classPLPixel32.html">PLPixel32</a>& Pix);
00046 <span class="comment"></span>
00047 <span class="comment"> //!</span>
00048 <span class="comment"></span> operator PLPixel32 () <span class="keyword">const</span>;
00049 <span class="comment"></span>
00050 <span class="comment"> //!</span>
00051 <span class="comment"></span> <span class="keywordtype">bool</span> operator ==(<span class="keyword">const</span> <a class="code" href="classPLPixel24.html">PLPixel24</a>&) <span class="keyword">const</span>;
00052 <span class="comment"></span>
00053 <span class="comment"> //!</span>
00054 <span class="comment"></span> <span class="keywordtype">bool</span> operator !=(<span class="keyword">const</span> <a class="code" href="classPLPixel24.html">PLPixel24</a>&) <span class="keyword">const</span>;
00055 <span class="comment"></span>
00056 <span class="comment"> //! Simple and fast 'distance' between two pixels. Just adds the</span>
00057 <span class="comment"> //! distances between the color components and treats colors</span>
00058 <span class="comment"> //! equally.</span>
00059 <span class="comment"></span> <span class="keywordtype">int</span> <a class="code" href="classPLPixel24.html#a13">BoxDist</a> (<span class="keyword">const</span> <a class="code" href="classPLPixel24.html">PLPixel24</a> Pix) <span class="keyword">const</span>;
00060 <span class="comment"></span>
00061 <span class="comment"> //! Returns a weighed average between two pixels. Factor must be </span>
00062 <span class="comment"> //! between 0 and 256. Factor=256 means Pix1 is the result, Factor=0 </span>
00063 <span class="comment"> //! means Pix2 is the result.</span>
00064 <span class="comment"></span> <span class="keyword">static</span> <a class="code" href="classPLPixel24.html">PLPixel24</a> <a class="code" href="classPLPixel24.html#e0">Blend</a> (<span class="keywordtype">int</span> Factor, <span class="keyword">const</span> <a class="code" href="classPLPixel24.html">PLPixel24</a> Pix1,
00065 <span class="keyword">const</span> <a class="code" href="classPLPixel24.html">PLPixel24</a> Pix2);
00066
00067 <span class="keyword">private</span>:
00068 PLBYTE m_Data[3];
00069 };
00070
00071 <span class="keyword">inline</span> PLPixel24::PLPixel24()
00072 {
00073 }
00074
00075
00076 <span class="keyword">inline</span> PLPixel24::PLPixel24(PLBYTE r, PLBYTE g, PLBYTE b)
00077 {
00078 Set (r, g, b);
00079 }
00080
00081
00082 <span class="keyword">inline</span> <span class="keywordtype">void</span> PLPixel24::Set(PLBYTE r, PLBYTE g, PLBYTE b)
00083 {
00084 m_Data[PL_RGBA_RED] = r;
00085 m_Data[PL_RGBA_GREEN] = g;
00086 m_Data[PL_RGBA_BLUE] = b;
00087 }
00088
00089
00090 <span class="keyword">inline</span> <span class="keywordtype">void</span> PLPixel24::SetR(PLBYTE r)
00091 {
00092 m_Data[PL_RGBA_RED] = r;
00093 }
00094
00095
00096 <span class="keyword">inline</span> <span class="keywordtype">void</span> PLPixel24::SetG(PLBYTE g)
00097 {
00098 m_Data[PL_RGBA_GREEN] = g;
00099 }
00100
00101
00102 <span class="keyword">inline</span> <span class="keywordtype">void</span> PLPixel24::SetB(PLBYTE b)
00103 {
00104 m_Data[PL_RGBA_BLUE] = b;
00105 }
00106
00107
00108 <span class="keyword">inline</span> PLBYTE PLPixel24::GetR()<span class="keyword"> const</span>
00109 <span class="keyword"></span>{
00110 <span class="keywordflow">return</span> m_Data[PL_RGBA_RED];
00111 }
00112
00113
00114 <span class="keyword">inline</span> PLBYTE PLPixel24::GetG()<span class="keyword"> const</span>
00115 <span class="keyword"></span>{
00116 <span class="keywordflow">return</span> m_Data[PL_RGBA_GREEN];
00117 }
00118
00119
00120 <span class="keyword">inline</span> PLBYTE PLPixel24::GetB()<span class="keyword"> const</span>
00121 <span class="keyword"></span>{
00122 <span class="keywordflow">return</span> m_Data[PL_RGBA_BLUE];
00123 }
00124
00125
<a name="l00126"></a><a class="code" href="classPLPixel24.html#a13">00126</a> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classPLPixel24.html#a13">PLPixel24::BoxDist</a> (<span class="keyword">const</span> <a class="code" href="classPLPixel24.html">PLPixel24</a> Pix)<span class="keyword"> const</span>
00127 <span class="keyword"></span>{
00128 <span class="keywordflow">return</span> (abs ((<span class="keywordtype">int</span>)GetR()-Pix.<a class="code" href="classPLPixel24.html#a6">GetR</a>()) +
00129 abs ((<span class="keywordtype">int</span>)GetG()-Pix.<a class="code" href="classPLPixel24.html#a7">GetG</a>()) +
00130 abs ((<span class="keywordtype">int</span>)GetB()-Pix.<a class="code" href="classPLPixel24.html#a8">GetB</a>()));
00131 }
00132
00133
<a name="l00134"></a><a class="code" href="classPLPixel24.html#e0">00134</a> <span class="keyword">inline</span> <a class="code" href="classPLPixel24.html">PLPixel24</a> <a class="code" href="classPLPixel24.html#e0">PLPixel24::Blend</a> (<span class="keywordtype">int</span> Factor, <span class="keyword">const</span> <a class="code" href="classPLPixel24.html">PLPixel24</a> Pix1, <span class="keyword">const</span> <a class="code" href="classPLPixel24.html">PLPixel24</a> Pix2)
00135 {
00136 PLASSERT (Factor >= 0 && Factor <= 256);
00137
00138 <span class="keywordflow">return</span> <a class="code" href="classPLPixel24.html">PLPixel24</a> ((Pix1.<a class="code" href="classPLPixel24.html#a6">GetR</a>()*Factor+Pix2.<a class="code" href="classPLPixel24.html#a6">GetR</a>()*(256-Factor))>>8,
00139 (Pix1.<a class="code" href="classPLPixel24.html#a7">GetG</a>()*Factor+Pix2.<a class="code" href="classPLPixel24.html#a7">GetG</a>()*(256-Factor))>>8,
00140 (Pix1.<a class="code" href="classPLPixel24.html#a8">GetB</a>()*Factor+Pix2.<a class="code" href="classPLPixel24.html#a8">GetB</a>()*(256-Factor))>>8);
00141 }
00142
00143 <span class="keyword">inline</span> <a class="code" href="classPLPixel24.html">PLPixel24</a> PLPixel24::operator = (<span class="keyword">const</span> <a class="code" href="classPLPixel32.html">PLPixel32</a>& Pix)
00144 {
00145 SetR (Pix.<a class="code" href="classPLPixel32.html#a9">GetR</a>());
00146 SetG (Pix.<a class="code" href="classPLPixel32.html#a10">GetG</a>());
00147 SetB (Pix.<a class="code" href="classPLPixel32.html#a11">GetB</a>());
00148
00149 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00150 }
00151
00152 <span class="keyword">inline</span> PLPixel24::operator PLPixel32 ()<span class="keyword"> const</span>
00153 <span class="keyword"></span>{
00154 <span class="keywordflow">return</span> <a class="code" href="classPLPixel32.html">PLPixel32</a> (GetR(), GetG(), GetB(), 255);
00155 }
00156
00157 <span class="keyword">inline</span> <span class="keywordtype">bool</span> PLPixel24::operator ==(<span class="keyword">const</span> <a class="code" href="classPLPixel24.html">PLPixel24</a>& Pix)<span class="keyword"> const</span>
00158 <span class="keyword"></span>{
00159 <span class="keywordflow">return</span> (GetR() == Pix.<a class="code" href="classPLPixel24.html#a6">GetR</a>() && GetG() == Pix.<a class="code" href="classPLPixel24.html#a7">GetG</a>() && GetB() == Pix.<a class="code" href="classPLPixel24.html#a8">GetB</a>());
00160 }
00161
00162 <span class="keyword">inline</span> <span class="keywordtype">bool</span> PLPixel24::operator !=(<span class="keyword">const</span> <a class="code" href="classPLPixel24.html">PLPixel24</a>& Pix)<span class="keyword"> const</span>
00163 <span class="keyword"></span>{
00164 <span class="keywordflow">return</span> (!(*<span class="keyword">this</span> == Pix));
00165 }
00166
00167
00168 <span class="preprocessor">#endif</span>
00169 <span class="preprocessor"></span>
00170 <span class="comment">/*</span>
00171 <span class="comment">/--------------------------------------------------------------------</span>
00172 <span class="comment">|</span>
00173 <span class="comment">| $Log: plpixel24_8h-source.html,v $
00173 <span class="comment">| Revision 1.4 2004/09/15 15:26:32 uzadow
00173 <span class="comment">| Linux compatibility changes, doc update.
00173 <span class="comment">|</span>
00174 <span class="comment">| Revision 1.5 2004/06/09 21:34:53 uzadow</span>
00175 <span class="comment">| Added 16 bpp support to plbitmap, planybmp and pldirectfbbmp</span>
00176 <span class="comment">|</span>
00177 <span class="comment">| Revision 1.4 2004/06/09 20:27:48 uzadow</span>
00178 <span class="comment">| Added 16 bpp pixel class.</span>
00179 <span class="comment">|</span>
00180 <span class="comment">| Revision 1.3 2002/02/24 13:00:35 uzadow</span>
00181 <span class="comment">| Documentation update; removed buggy PLFilterRotate.</span>
00182 <span class="comment">|</span>
00183 <span class="comment">| Revision 1.2 2001/10/06 22:03:26 uzadow</span>
00184 <span class="comment">| Added PL prefix to basic data types.</span>
00185 <span class="comment">|</span>
00186 <span class="comment">| Revision 1.1 2001/10/03 13:58:43 uzadow</span>
00187 <span class="comment">| Added.</span>
00188 <span class="comment">|</span>
00189 <span class="comment">| Revision 1.1 2001/09/26 10:21:09 uzadow</span>
00190 <span class="comment">| Added PLPixel24, PLBmp::CreateCopy now supports 24 bpp in most cases.</span>
00191 <span class="comment">|</span>
00192 <span class="comment">|</span>
00193 <span class="comment">|</span>
00194 <span class="comment">\--------------------------------------------------------------------</span>
00195 <span class="comment">*/</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Sep 13 16:16:40 2004 for paintlib by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
</a>1.3.2 </small></address>
</body>
</html>
|