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
|
<!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: pldirectfbbmp.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>pldirectfbbmp.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: pldirectfbbmp_8h-source.html,v 1.4 2004/09/15 15:26:29 uzadow Exp $</span>
00005 <span class="comment">|</span>
00006 <span class="comment">| Copyright (c) 1996-2003 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_PLDIRECTFBBMP</span>
00012 <span class="preprocessor"></span><span class="preprocessor">#define INCL_PLDIRECTFBBMP</span>
00013 <span class="preprocessor"></span>
00014 <span class="preprocessor">#ifndef INCL_PLBITMAP</span>
00015 <span class="preprocessor"></span><span class="preprocessor">#include "plbitmap.h"</span>
00016 <span class="preprocessor">#endif</span>
00017 <span class="preprocessor"></span>
00018 <span class="preprocessor">#include <directfb.h></span>
00019 <span class="comment"></span>
00020 <span class="comment">//! Manipulates bitmaps stored as DirectFB surfaces.</span>
00021 <span class="comment">//! 8, 24 and 32 bpp (pixel formats DSPF_ARGB, DSPF_RGB32, DSPF_RGB24, DSPF_A8).</span>
00022 <span class="comment">//! The surfaces used are system memory surfaces. </span>
<a name="l00023"></a><a class="code" href="classPLDirectFBBmp.html">00023</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classPLDirectFBBmp.html">PLDirectFBBmp</a> : <span class="keyword">public</span> <a class="code" href="classPLBmp.html">PLBmp</a>
00024 {
00025
00026 <span class="keyword">public</span>:<span class="comment"></span>
00027 <span class="comment"> //! Sets a pointer to the main DirectFB interface. This needs to be done </span>
00028 <span class="comment"> //! before any PLDirectFBBmps get allocated.</span>
00029 <span class="comment"></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classPLDirectFBBmp.html#e0">SetDirectFB</a>
00030 ( IDirectFB * pDirectFB
00031 );
00032 <span class="comment"></span>
00033 <span class="comment"> //! Creates an empty bitmap object.</span>
00034 <span class="comment"> //! The Create() function allocates a DirectFB system memory surface for this bitmap.</span>
00035 <span class="comment"> //! Note that only system memory surfaces are supported at the moment.</span>
00036 <span class="comment"></span> <a class="code" href="classPLDirectFBBmp.html">PLDirectFBBmp</a>
00037 ();
00038 <span class="comment"></span>
00039 <span class="comment"> //! Destroys the bitmap.</span>
00040 <span class="comment"></span> <span class="keyword">virtual</span> ~<a class="code" href="classPLDirectFBBmp.html">PLDirectFBBmp</a>
00041 ();
00042 <span class="comment"></span>
00043 <span class="comment"> //! Copy constructor</span>
00044 <span class="comment"></span> <a class="code" href="classPLDirectFBBmp.html">PLDirectFBBmp</a>
00045 ( <span class="keyword">const</span> <a class="code" href="classPLBmp.html">PLBmp</a> &Orig
00046 );
00047 <span class="comment"></span>
00048 <span class="comment"> //! Copy constructor</span>
00049 <span class="comment"></span> <a class="code" href="classPLDirectFBBmp.html">PLDirectFBBmp</a>
00050 ( <span class="keyword">const</span> <a class="code" href="classPLDirectFBBmp.html">PLDirectFBBmp</a> &Orig
00051 );
00052
00053 <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateFromSurface
00054 ( IDirectFBSurface * pSurface,
00055 <span class="keywordtype">bool</span> bOwnsSurface
00056 );
00057
00058 <span class="preprocessor">#ifdef _DEBUG</span>
00059 <span class="preprocessor"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> AssertValid
00060 () <span class="keyword">const</span>; <span class="comment">// Tests internal object state</span>
00061 <span class="preprocessor">#endif</span>
00062 <span class="preprocessor"></span><span class="comment"></span>
00063 <span class="comment"> //! Assignment operator.</span>
00064 <span class="comment"></span> <a class="code" href="classPLDirectFBBmp.html">PLDirectFBBmp</a> &<span class="keyword">operator</span>=
00065 ( <span class="keyword">const</span> <a class="code" href="classPLBmp.html">PLBmp</a> &Orig
00066 );
00067 <span class="comment"></span>
00068 <span class="comment"> //! Assignment operator.</span>
00069 <span class="comment"></span> <a class="code" href="classPLDirectFBBmp.html">PLDirectFBBmp</a> &<span class="keyword">operator</span>=
00070 ( <span class="keyword">const</span> <a class="code" href="classPLDirectFBBmp.html">PLDirectFBBmp</a> &Orig
00071 );
00072
00073 <span class="comment">// PLDirectFBBmp information</span>
00074 <span class="comment"></span>
00075 <span class="comment"> //! Returns a pointer to the internal DirectFB surface. The surface is still</span>
00076 <span class="comment"> //! owned by the bitmap object.</span>
00077 <span class="comment"> //! Using this pointer, you can bring DirectFB and paintlib data out of sync</span>
00078 <span class="comment"> //! easily. Handle with care.</span>
00079 <span class="comment"></span> IDirectFBSurface * <a class="code" href="classPLDirectFBBmp.html#a7">GetSurface</a>
00080 ();
00081 <span class="comment"></span>
00082 <span class="comment"> //! Returns the amount of memory used by the object.</span>
00083 <span class="comment"></span> <span class="keywordtype">long</span> <a class="code" href="classPLDirectFBBmp.html#a8">GetMemUsed</a>
00084 ();
00085 <span class="comment"></span>
00086 <span class="comment"> //! Returns number of bytes used per line.</span>
00087 <span class="comment"></span> <span class="keywordtype">long</span> <a class="code" href="classPLDirectFBBmp.html#a9">GetBytesPerLine</a>
00088 ();
00089
00090 <span class="comment">// Static functions</span>
00091 <span class="comment"></span>
00092 <span class="comment"> //! Returns memory needed by a bitmap with the specified attributes.</span>
00093 <span class="comment"></span> <span class="keyword">static</span> <span class="keywordtype">long</span> <a class="code" href="classPLDirectFBBmp.html#e1">GetMemNeeded</a>
00094 ( PLLONG width,
00095 PLLONG height,
00096 PLWORD BitsPerPixel
00097 );
00098 <span class="comment"></span>
00099 <span class="comment"> //! Returns memory needed by bitmap bits.</span>
00100 <span class="comment"></span> <span class="keyword">static</span> <span class="keywordtype">long</span> <a class="code" href="classPLDirectFBBmp.html#e2">GetBitsMemNeeded</a>
00101 ( PLLONG width,
00102 PLLONG height,
00103 PLWORD BitsPerPixel
00104 );
00105
00106
00107 <span class="keyword">protected</span>:
00108 <span class="comment">// Local functions</span>
00109
00110 <span class="comment">// Create a new bitmap with uninitialized bits. Assumes no memory</span>
00111 <span class="comment">// is allocated yet.</span>
00112 <span class="keyword">virtual</span> <span class="keywordtype">void</span> internalCreate
00113 ( PLLONG Width,
00114 PLLONG Height,
00115 PLWORD BitsPerPixel,
00116 <span class="keywordtype">bool</span> bAlphaChannel,
00117 <span class="keywordtype">bool</span> bIsGreyscale
00118 );
00119
00120 <span class="comment">// Deletes memory allocated by member variables.</span>
00121 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classPLDirectFBBmp.html#b1">freeMembers</a>
00122 ();
00123
00124 <span class="comment">// Initializes internal table of line addresses.</span>
00125 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classPLDirectFBBmp.html#b2">initLineArray</a>
00126 ();
00127
00128 <span class="keyword">private</span>:
00129 <span class="keyword">static</span> IDirectFB * s_pDirectFB;
00130 IDirectFBSurface * m_pSurface; <span class="comment">// Pointer to the bits.</span>
00131 <span class="keywordtype">bool</span> m_bOwnsSurface;
00132 };
00133
00134 <span class="comment">// Note that _both_ these copy constructors are needed. If only the</span>
00135 <span class="comment">// second one is there, MSVC 6.0 generates a default copy</span>
00136 <span class="comment">// constructor anyway :-(.</span>
00137 <span class="keyword">inline</span> <a class="code" href="classPLDirectFBBmp.html#a0">PLDirectFBBmp::PLDirectFBBmp</a>
<a name="l00138"></a><a class="code" href="classPLDirectFBBmp.html#a3">00138</a> ( <span class="keyword">const</span> <a class="code" href="classPLDirectFBBmp.html">PLDirectFBBmp</a> &Orig
00139 )
00140 : <a class="code" href="classPLBmp.html">PLBmp</a> ()
00141 {
00142 internalCopy (Orig);
00143 }
00144
00145 <span class="keyword">inline</span> <a class="code" href="classPLDirectFBBmp.html#a0">PLDirectFBBmp::PLDirectFBBmp</a>
<a name="l00146"></a><a class="code" href="classPLDirectFBBmp.html#a2">00146</a> ( <span class="keyword">const</span> <a class="code" href="classPLBmp.html">PLBmp</a> &Orig
00147 )
00148 : <a class="code" href="classPLBmp.html">PLBmp</a> ()
00149 {
00150 internalCopy (Orig);
00151 }
00152
00153 <span class="keyword">inline</span> <a class="code" href="classPLDirectFBBmp.html">PLDirectFBBmp</a> & PLDirectFBBmp::operator=
<a name="l00154"></a><a class="code" href="classPLDirectFBBmp.html#a5">00154</a> ( <span class="keyword">const</span> <a class="code" href="classPLBmp.html">PLBmp</a> &Orig
00155 )
00156 {
00157 <a class="code" href="classPLBmp.html#a2">PLBmp::operator=</a>(Orig);
00158 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00159 }
00160
00161 <span class="keyword">inline</span> <a class="code" href="classPLDirectFBBmp.html">PLDirectFBBmp</a> & PLDirectFBBmp::operator=
<a name="l00162"></a><a class="code" href="classPLDirectFBBmp.html#a6">00162</a> ( <span class="keyword">const</span> <a class="code" href="classPLDirectFBBmp.html">PLDirectFBBmp</a> &Orig
00163 )
00164 {
00165 <a class="code" href="classPLBmp.html#a2">PLBmp::operator=</a>(Orig);
00166 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00167 }
00168
00169
00170 <span class="preprocessor">#endif</span>
00171 <span class="preprocessor"></span><span class="comment">/*</span>
00172 <span class="comment">/--------------------------------------------------------------------</span>
00173 <span class="comment">|</span>
00174 <span class="comment">| $Log: pldirectfbbmp_8h-source.html,v $
00174 <span class="comment">| Revision 1.4 2004/09/15 15:26:29 uzadow
00174 <span class="comment">| Linux compatibility changes, doc update.
00174 <span class="comment">|</span>
00175 <span class="comment">| Revision 1.4 2004/06/12 14:52:46 uzadow</span>
00176 <span class="comment">| Added CreateFromSurface function.</span>
00177 <span class="comment">|</span>
00178 <span class="comment">| Revision 1.3 2004/06/06 12:56:38 uzadow</span>
00179 <span class="comment">| Doxygenified documentation.</span>
00180 <span class="comment">|</span>
00181 <span class="comment">| Revision 1.2 2004/04/16 20:14:41 uzadow</span>
00182 <span class="comment">| Changes to make cdoc work.</span>
00183 <span class="comment">|</span>
00184 <span class="comment">| Revision 1.1 2003/07/27 13:50:48 uzadow</span>
00185 <span class="comment">| Added support for DirectFB surfaces.</span>
00186 <span class="comment">|</span>
00187 <span class="comment">|</span>
00188 <span class="comment">|</span>
00189 <span class="comment">\--------------------------------------------------------------------</span>
00190 <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>
|