File: plpixel24_8h-source.html

package info (click to toggle)
paintlib 2.6.2-8
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 7,900 kB
  • ctags: 3,875
  • sloc: cpp: 25,209; sh: 10,600; ansic: 1,891; makefile: 119
file content (211 lines) | stat: -rw-r--r-- 14,343 bytes parent folder | download | duplicates (2)
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&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Compound&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Compound&nbsp;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>&amp; 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>&amp;) <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>&amp;) <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 &gt;= 0 &amp;&amp; Factor &lt;= 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))&gt;&gt;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))&gt;&gt;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))&gt;&gt;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>&amp; 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>&amp; 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>() &amp;&amp; GetG() == Pix.<a class="code" href="classPLPixel24.html#a7">GetG</a>() &amp;&amp; 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>&amp; 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>