File: pldatasink_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-- 11,798 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: pldatasink.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>pldatasink.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: pldatasink_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-2002 Ulrich von Zadow</span>
00007 <span class="comment">|</span>
00008 <span class="comment">\--------------------------------------------------------------------</span>
00009 <span class="comment">*/</span>
00010 <span class="comment">// not quite ready for prime-time; bdelmee; 2/99</span>
00011 
00012 <span class="preprocessor">#ifndef INCL_PLDATASNK</span>
00013 <span class="preprocessor"></span><span class="preprocessor">#define INCL_PLDATASNK</span>
00014 <span class="preprocessor"></span>
00015 <span class="preprocessor">#include "plexcept.h"</span>
00016 <span class="preprocessor">#include "<a class="code" href="plpaintlibdefs_8h.html">plpaintlibdefs.h</a>"</span>
00017 
00018 <span class="preprocessor">#ifndef AFX_PLOBJECT_H__E40881E3_C809_11D3_97BC_0050046F615E__INCLUDED_</span>
00019 <span class="preprocessor"></span><span class="preprocessor">#include "plobject.h"</span>
00020 <span class="preprocessor">#endif</span>
00021 <span class="preprocessor"></span>
00022 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
00023 <span class="comment"></span>
00024 <span class="comment">//! This is a base class for a destination of picture data.</span>
00025 <span class="comment">//! It defines methods to open, write to, close data sinks.</span>
<a name="l00026"></a><a class="code" href="classPLDataSink.html">00026</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classPLDataSink.html">PLDataSink</a> : <span class="keyword">public</span> PLObject
00027 {
00028   <span class="comment">// I'd like to get rid of this, but now it is needed so the encoders</span>
00029   <span class="comment">// can maintain the actually useful length of the buffer.</span>
00030   <span class="comment">// TODO: Get rid of this!!</span>
00031   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classPLTIFFEncoder.html">PLTIFFEncoder</a>;
00032   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classPLTIFFEncoderEx.html">PLTIFFEncoderEx</a>;
00033 
00034 <span class="keyword">public</span>:<span class="comment"></span>
00035 <span class="comment">  //!</span>
00036 <span class="comment"></span>  <span class="keywordtype">void</span> Open
00037     ( <span class="keyword">const</span> <span class="keywordtype">char</span>* pszName,
00038       PLBYTE*   pData,
00039       size_t  MaxDataSize
00040     );
00041 <span class="preprocessor">#ifdef _WINDOWS</span>
00042 <span class="preprocessor"></span><span class="comment">  //!</span>
00043 <span class="comment"></span>  <span class="keywordtype">void</span> OpenW
00044     ( <span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* pszwName,
00045       PLBYTE*   pData,
00046       size_t  MaxDataSize
00047     );
00048 <span class="preprocessor">#endif</span>
00049 <span class="preprocessor"></span><span class="comment"></span>
00050 <span class="comment">  //!</span>
00051 <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Close
00052     ();
00053 <span class="comment"></span>
00054 <span class="comment">  //!</span>
00055 <span class="comment"></span>  <span class="keywordtype">char</span>* GetName
00056     ();
00057 <span class="preprocessor">#ifdef _WINDOWS</span>
00058 <span class="preprocessor"></span>  <span class="keywordtype">wchar_t</span> * GetNameW
00059     ();
00060 
00061   <span class="keywordtype">bool</span> NameIsWide
00062     ();
00063 <span class="preprocessor">#endif</span>
00064 <span class="preprocessor"></span>
00065 <span class="comment"></span>
00066 <span class="comment">  //!</span>
00067 <span class="comment"></span>  PLBYTE* GetBufferPtr
00068     ();
00069 <span class="comment"></span>
00070 <span class="comment">  //!</span>
00071 <span class="comment"></span>  size_t GetDataSize
00072     ();
00073 <span class="comment"></span>
00074 <span class="comment">  //!</span>
00075 <span class="comment"></span>  size_t GetMaxDataSize
00076     ();
00077 <span class="comment"></span>
00078 <span class="comment">  //!</span>
00079 <span class="comment"></span>  size_t WriteNBytes
00080     ( size_t   n,
00081           PLBYTE* pData
00082     );
00083 
00084   <span class="keywordtype">void</span> WriteByte
00085     ( PLBYTE Data
00086     );
00087 <span class="comment"></span>
00088 <span class="comment">  //!</span>
00089 <span class="comment"></span>  <span class="keywordtype">void</span> Skip
00090     ( size_t n );
00091 <span class="comment"></span>
00092 <span class="comment">  //! Test to see if we didn't go past the "end of the file"</span>
00093 <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classPLDataSink.html#a9">CheckEOF</a>
00094     ();
00095 
00096 <span class="keyword">protected</span>:
00097   PLBYTE* m_pStartData;
00098   <span class="keywordtype">int</span>   m_nCurPos;   <span class="comment">// this SHOULD be an unsigned int (size_t), but TIFFLib wants an int</span>
00099 <span class="comment"></span>
00100 <span class="comment">  //!</span>
00101 <span class="comment"></span>  <a class="code" href="classPLDataSink.html">PLDataSink</a>
00102     ();
00103 <span class="comment"></span>
00104 <span class="comment">  //!</span>
00105 <span class="comment"></span>  <span class="keyword">virtual</span> ~<a class="code" href="classPLDataSink.html">PLDataSink</a>
00106    ();
00107 
00108 <span class="keyword">private</span>:
00109   <span class="keywordtype">char</span>*  m_pszName;    <span class="comment">// Name of the data source for diagnostic purposes</span>
00110 <span class="preprocessor">#ifdef _WINDOWS</span>
00111 <span class="preprocessor"></span>  <span class="keywordtype">wchar_t</span> * m_pszwName;
00112   <span class="keywordtype">bool</span> m_bNameIsWide;
00113 <span class="preprocessor">#endif</span>
00114 <span class="preprocessor"></span>  size_t m_nMaxFileSize;
00115 };
00116 
00117 
00118 <span class="preprocessor">#ifdef _WINDOWS</span>
00119 <span class="preprocessor"></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> PLDataSink::NameIsWide
00120     ()
00121 {
00122   <span class="keywordflow">return</span> m_bNameIsWide;
00123 }
00124 <span class="preprocessor">#endif</span>
00125 <span class="preprocessor"></span>
00126 <span class="keyword">inline</span> PLBYTE * PLDataSink::GetBufferPtr
00127     ()
00128 {
00129         <span class="keywordflow">return</span> m_pStartData + m_nCurPos;
00130 }
00131 
00132 <span class="keyword">inline</span> size_t PLDataSink::GetMaxDataSize
00133     ()
00134 {
00135   <span class="keywordflow">return</span>  m_nMaxFileSize;
00136 }
00137 
00138 <span class="keyword">inline</span> size_t PLDataSink::GetDataSize
00139     ()
00140 {
00141   <span class="comment">// return currently used buffer size</span>
00142   <span class="keywordflow">return</span> m_nCurPos;
00143 }
00144 
00145 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classPLDataSink.html#a9">PLDataSink::CheckEOF</a>
<a name="l00146"></a><a class="code" href="classPLDataSink.html#a9">00146</a>     ()
00147 {
00148   <span class="comment">//if (GetFileSize() &gt; GetMaxFileSize())</span>
00149   <span class="keywordflow">if</span> (m_nCurPos &gt; (<span class="keywordtype">int</span>)m_nMaxFileSize)
00150   {
00151     <span class="keywordflow">throw</span> <a class="code" href="classPLTextException.html">PLTextException</a> (PL_ERREND_OF_FILE,
00152           <span class="stringliteral">"Buffer overflow while encoding.\n"</span>);
00153   }
00154 }
00155 
00156 <span class="keyword">inline</span> <span class="keywordtype">void</span> PLDataSink::Skip
00157     ( size_t n )
00158 {
00159         <span class="comment">// maybe we should fill the gap with nulls</span>
00160   m_nCurPos += (<span class="keywordtype">int</span>)n;
00161   CheckEOF ();
00162 }
00163 
00164 <span class="preprocessor">#endif  // INCL_PLDATASNK</span>
00165 <span class="preprocessor"></span><span class="comment">/*</span>
00166 <span class="comment">/--------------------------------------------------------------------</span>
00167 <span class="comment">|</span>
00168 <span class="comment">|      $Log: pldatasink_8h-source.html,v $
00168 <span class="comment">|      Revision 1.4  2004/09/15 15:26:29  uzadow
00168 <span class="comment">|      Linux compatibility changes, doc update.
00168 <span class="comment">|</span>
00169 <span class="comment">|      Revision 1.6  2004/06/06 12:56:38  uzadow</span>
00170 <span class="comment">|      Doxygenified documentation.</span>
00171 <span class="comment">|</span>
00172 <span class="comment">|      Revision 1.5  2003/08/03 12:03:20  uzadow</span>
00173 <span class="comment">|      Added unicode support; fixed some header includes.</span>
00174 <span class="comment">|</span>
00175 <span class="comment">|      Revision 1.4  2002/02/24 13:00:20  uzadow</span>
00176 <span class="comment">|      Documentation update; removed buggy PLFilterRotate.</span>
00177 <span class="comment">|</span>
00178 <span class="comment">|      Revision 1.3  2001/10/06 22:03:26  uzadow</span>
00179 <span class="comment">|      Added PL prefix to basic data types.</span>
00180 <span class="comment">|</span>
00181 <span class="comment">|      Revision 1.2  2001/10/06 20:44:45  uzadow</span>
00182 <span class="comment">|      Linux compatibility</span>
00183 <span class="comment">|</span>
00184 <span class="comment">|      Revision 1.1  2001/09/16 19:03:22  uzadow</span>
00185 <span class="comment">|      Added global name prefix PL, changed most filenames.</span>
00186 <span class="comment">|</span>
00187 <span class="comment">|      Revision 1.5  2000/01/16 20:43:13  anonymous</span>
00188 <span class="comment">|      Removed MFC dependencies</span>
00189 <span class="comment">|</span>
00190 <span class="comment">|      Revision 1.4  2000/01/08 15:56:12  Ulrich von Zadow</span>
00191 <span class="comment">|      Made sure change logging works in every file.</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>