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 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>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 <stdio.h></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() > GetMaxFileSize())</span>
00149 <span class="keywordflow">if</span> (m_nCurPos > (<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>
|