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 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>DevIL: /home/dwoods/DevIL/src-IL/include/il_psp.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<h1>/home/dwoods/DevIL/src-IL/include/il_psp.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//-----------------------------------------------------------------------------</span>
<a name="l00002"></a>00002 <span class="comment">//</span>
<a name="l00003"></a>00003 <span class="comment">// ImageLib Sources</span>
<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2000-2002 by Denton Woods</span>
<a name="l00005"></a>00005 <span class="comment">// Last modified: 05/02/2002 <--Y2K Compliant! =]</span>
<a name="l00006"></a>00006 <span class="comment">//</span>
<a name="l00007"></a>00007 <span class="comment">// Filename: src-IL/include/il_psp.h</span>
<a name="l00008"></a>00008 <span class="comment">//</span>
<a name="l00009"></a>00009 <span class="comment">// Description: Reads a Paint Shop Pro file.</span>
<a name="l00010"></a>00010 <span class="comment">//</span>
<a name="l00011"></a>00011 <span class="comment">//-----------------------------------------------------------------------------</span>
<a name="l00012"></a>00012
<a name="l00013"></a>00013
<a name="l00014"></a>00014 <span class="preprocessor">#ifndef PSP_H</span>
<a name="l00015"></a>00015 <span class="preprocessor"></span><span class="preprocessor">#define PSP_H</span>
<a name="l00016"></a>00016 <span class="preprocessor"></span>
<a name="l00017"></a>00017 <span class="preprocessor">#include "il_internal.h"</span>
<a name="l00018"></a>00018
<a name="l00019"></a>00019
<a name="l00020"></a>00020 <span class="comment">// Block identifiers</span>
<a name="l00021"></a>00021 <span class="keyword">enum</span> PSPBlockID {
<a name="l00022"></a>00022 PSP_IMAGE_BLOCK = 0, <span class="comment">// (0) General Image Attributes Block (main)</span>
<a name="l00023"></a>00023 PSP_CREATOR_BLOCK, <span class="comment">// (1) Creator Data Block (main)</span>
<a name="l00024"></a>00024 PSP_COLOR_BLOCK, <span class="comment">// (2) Color Palette Block (main and sub)</span>
<a name="l00025"></a>00025 PSP_LAYER_START_BLOCK, <span class="comment">// (3) Layer Bank Block (main)</span>
<a name="l00026"></a>00026 PSP_LAYER_BLOCK, <span class="comment">// (4) Layer Block (sub)</span>
<a name="l00027"></a>00027 PSP_CHANNEL_BLOCK, <span class="comment">// (5) Channel Block (sub)</span>
<a name="l00028"></a>00028 PSP_SELECTION_BLOCK, <span class="comment">// (6) Selection Block (main)</span>
<a name="l00029"></a>00029 PSP_ALPHA_BANK_BLOCK, <span class="comment">// (7) Alpha Bank Block (main)</span>
<a name="l00030"></a>00030 PSP_ALPHA_CHANNEL_BLOCK, <span class="comment">// (8) Alpha Channel Block (sub)</span>
<a name="l00031"></a>00031 PSP_COMPOSITE_IMAGE_BLOCK, <span class="comment">// (9) Composite Image Block (sub)</span>
<a name="l00032"></a>00032 PSP_EXTENDED_DATA_BLOCK, <span class="comment">// (10) Extended Data Block (main)</span>
<a name="l00033"></a>00033 PSP_TUBE_BLOCK, <span class="comment">// (11) Picture Tube Data Block (main)</span>
<a name="l00034"></a>00034 PSP_ADJUSTMENT_EXTENSION_BLOCK, <span class="comment">// (12) Adjustment Layer Block (sub)</span>
<a name="l00035"></a>00035 PSP_VECTOR_EXTENSION_BLOCK, <span class="comment">// (13) Vector Layer Block (sub)</span>
<a name="l00036"></a>00036 PSP_SHAPE_BLOCK, <span class="comment">// (14) Vector Shape Block (sub)</span>
<a name="l00037"></a>00037 PSP_PAINTSTYLE_BLOCK, <span class="comment">// (15) Paint Style Block (sub)</span>
<a name="l00038"></a>00038 PSP_COMPOSITE_IMAGE_BANK_BLOCK, <span class="comment">// (16) Composite Image Bank (main)</span>
<a name="l00039"></a>00039 PSP_COMPOSITE_ATTRIBUTES_BLOCK, <span class="comment">// (17) Composite Image Attr. (sub)</span>
<a name="l00040"></a>00040 PSP_JPEG_BLOCK, <span class="comment">// (18) JPEG Image Block (sub)</span>
<a name="l00041"></a>00041 PSP_LINESTYLE_BLOCK, <span class="comment">// (19) Line Style Block (sub)</span>
<a name="l00042"></a>00042 PSP_TABLE_BANK_BLOCK, <span class="comment">// (20) Table Bank Block (main)</span>
<a name="l00043"></a>00043 PSP_TABLE_BLOCK, <span class="comment">// (21) Table Block (sub)</span>
<a name="l00044"></a>00044 PSP_PAPER_BLOCK, <span class="comment">// (22) Vector Table Paper Block (sub)</span>
<a name="l00045"></a>00045 PSP_PATTERN_BLOCK, <span class="comment">// (23) Vector Table Pattern Block (sub)</span>
<a name="l00046"></a>00046 };
<a name="l00047"></a>00047
<a name="l00048"></a>00048
<a name="l00049"></a>00049 <span class="comment">// Bitmap type</span>
<a name="l00050"></a>00050 <span class="keyword">enum</span> PSPDIBType {
<a name="l00051"></a>00051 PSP_DIB_IMAGE = 0, <span class="comment">// Layer color bitmap</span>
<a name="l00052"></a>00052 PSP_DIB_TRANS_MASK, <span class="comment">// Layer transparency mask bitmap</span>
<a name="l00053"></a>00053 PSP_DIB_USER_MASK, <span class="comment">// Layer user mask bitmap</span>
<a name="l00054"></a>00054 PSP_DIB_SELECTION, <span class="comment">// Selection mask bitmap</span>
<a name="l00055"></a>00055 PSP_DIB_ALPHA_MASK, <span class="comment">// Alpha channel mask bitmap</span>
<a name="l00056"></a>00056 PSP_DIB_THUMBNAIL <span class="comment">// Thumbnail bitmap</span>
<a name="l00057"></a>00057 };
<a name="l00058"></a>00058
<a name="l00059"></a>00059 <span class="comment">// Channel types</span>
<a name="l00060"></a>00060 <span class="keyword">enum</span> PSPChannelType {
<a name="l00061"></a>00061 PSP_CHANNEL_COMPOSITE = 0, <span class="comment">// Channel of single channel bitmap</span>
<a name="l00062"></a>00062 PSP_CHANNEL_RED, <span class="comment">// Red channel of 24 bit bitmap</span>
<a name="l00063"></a>00063 PSP_CHANNEL_GREEN, <span class="comment">// Green channel of 24 bit bitmap</span>
<a name="l00064"></a>00064 PSP_CHANNEL_BLUE <span class="comment">// Blue channel of 24 bit bitmap</span>
<a name="l00065"></a>00065 };
<a name="l00066"></a>00066
<a name="l00067"></a>00067 <span class="comment">// Possible metrics used to measure resolution</span>
<a name="l00068"></a>00068 <span class="keyword">enum</span> PSP_METRIC {
<a name="l00069"></a>00069 PSP_METRIC_UNDEFINED = 0, <span class="comment">// Metric unknown</span>
<a name="l00070"></a>00070 PSP_METRIC_INCH, <span class="comment">// Resolution is in inches</span>
<a name="l00071"></a>00071 PSP_METRIC_CM <span class="comment">// Resolution is in centimeters</span>
<a name="l00072"></a>00072 };
<a name="l00073"></a>00073
<a name="l00074"></a>00074
<a name="l00075"></a>00075 <span class="comment">// Possible types of compression.</span>
<a name="l00076"></a>00076 <span class="keyword">enum</span> PSPCompression {
<a name="l00077"></a>00077 PSP_COMP_NONE = 0, <span class="comment">// No compression</span>
<a name="l00078"></a>00078 PSP_COMP_RLE, <span class="comment">// RLE compression</span>
<a name="l00079"></a>00079 PSP_COMP_LZ77, <span class="comment">// LZ77 compression</span>
<a name="l00080"></a>00080 PSP_COMP_JPEG <span class="comment">// JPEG compression (only used by thumbnail and composite image)</span>
<a name="l00081"></a>00081 };
<a name="l00082"></a>00082
<a name="l00083"></a>00083
<a name="l00084"></a>00084 <span class="comment">// Picture tube placement mode.</span>
<a name="l00085"></a>00085 <span class="keyword">enum</span> TubePlacementMode {
<a name="l00086"></a>00086 tpmRandom, <span class="comment">// Place tube images in random intervals</span>
<a name="l00087"></a>00087 tpmConstant <span class="comment">// Place tube images in constant intervals</span>
<a name="l00088"></a>00088 };
<a name="l00089"></a>00089
<a name="l00090"></a>00090 <span class="comment">// Picture tube selection mode.</span>
<a name="l00091"></a>00091 <span class="keyword">enum</span> TubeSelectionMode {
<a name="l00092"></a>00092 tsmRandom, <span class="comment">// Randomly select the next image in tube to display</span>
<a name="l00093"></a>00093 tsmIncremental, <span class="comment">// Select each tube image in turn</span>
<a name="l00094"></a>00094 tsmAngular, <span class="comment">// Select image based on cursor direction</span>
<a name="l00095"></a>00095 tsmPressure, <span class="comment">// Select image based on pressure (from pressure-sensitive pad)</span>
<a name="l00096"></a>00096 tsmVelocity <span class="comment">// Select image based on cursor speed</span>
<a name="l00097"></a>00097 };
<a name="l00098"></a>00098
<a name="l00099"></a>00099 <span class="comment">// Extended data field types.</span>
<a name="l00100"></a>00100 <span class="keyword">enum</span> PSPExtendedDataID {
<a name="l00101"></a>00101 PSP_XDATA_TRNS_INDEX = 0 <span class="comment">// Transparency index field</span>
<a name="l00102"></a>00102 };
<a name="l00103"></a>00103
<a name="l00104"></a>00104 <span class="comment">// Creator field types.</span>
<a name="l00105"></a>00105 <span class="keyword">enum</span> PSPCreatorFieldID {
<a name="l00106"></a>00106 PSP_CRTR_FLD_TITLE = 0, <span class="comment">// Image document title field</span>
<a name="l00107"></a>00107 PSP_CRTR_FLD_CRT_DATE, <span class="comment">// Creation date field</span>
<a name="l00108"></a>00108 PSP_CRTR_FLD_MOD_DATE, <span class="comment">// Modification date field</span>
<a name="l00109"></a>00109 PSP_CRTR_FLD_ARTIST, <span class="comment">// Artist name field</span>
<a name="l00110"></a>00110 PSP_CRTR_FLD_CPYRGHT, <span class="comment">// Copyright holder name field</span>
<a name="l00111"></a>00111 PSP_CRTR_FLD_DESC, <span class="comment">// Image document description field</span>
<a name="l00112"></a>00112 PSP_CRTR_FLD_APP_ID, <span class="comment">// Creating app id field</span>
<a name="l00113"></a>00113 PSP_CRTR_FLD_APP_VER, <span class="comment">// Creating app version field</span>
<a name="l00114"></a>00114 };
<a name="l00115"></a>00115
<a name="l00116"></a>00116 <span class="comment">// Creator application identifiers.</span>
<a name="l00117"></a>00117 <span class="keyword">enum</span> PSPCreatorAppID {
<a name="l00118"></a>00118 PSP_CREATOR_APP_UNKNOWN = 0, <span class="comment">// Creator application unknown</span>
<a name="l00119"></a>00119 PSP_CREATOR_APP_PAINT_SHOP_PRO <span class="comment">// Creator is Paint Shop Pro</span>
<a name="l00120"></a>00120 };
<a name="l00121"></a>00121
<a name="l00122"></a>00122 <span class="comment">// Layer types.</span>
<a name="l00123"></a>00123 <span class="keyword">enum</span> PSPLayerType {
<a name="l00124"></a>00124 PSP_LAYER_NORMAL = 0, <span class="comment">// Normal layer</span>
<a name="l00125"></a>00125 PSP_LAYER_FLOATING_SELECTION <span class="comment">// Floating selection layer</span>
<a name="l00126"></a>00126 };
<a name="l00127"></a>00127
<a name="l00128"></a>00128 <span class="comment">// Truth values.</span>
<a name="l00129"></a>00129 <span class="comment">/*enum PSP_BOOLEAN {</span>
<a name="l00130"></a>00130 <span class="comment"> FALSE = 0,</span>
<a name="l00131"></a>00131 <span class="comment"> TRUE</span>
<a name="l00132"></a>00132 <span class="comment">};*/</span>
<a name="l00133"></a>00133
<a name="l00134"></a>00134
<a name="l00135"></a>00135
<a name="l00136"></a>00136 <span class="preprocessor">#ifdef _MSC_VER</span>
<a name="l00137"></a>00137 <span class="preprocessor"></span><span class="preprocessor">#pragma pack(push, packed_struct, 1)</span>
<a name="l00138"></a>00138 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00139"></a>00139 <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>PSPRECT
<a name="l00140"></a>00140 {
<a name="l00141"></a>00141 ILuint x1,y1,x2,y2;
<a name="l00142"></a>00142 } IL_PACKSTRUCT PSPRECT;
<a name="l00143"></a>00143
<a name="l00144"></a>00144 <span class="keyword">typedef</span> <span class="keyword">struct </span>PSPHEAD
<a name="l00145"></a>00145 {
<a name="l00146"></a>00146 <span class="keywordtype">char</span> FileSig[32];
<a name="l00147"></a>00147 ILushort MajorVersion;
<a name="l00148"></a>00148 ILushort MinorVersion;
<a name="l00149"></a>00149 } IL_PACKSTRUCT PSPHEAD;
<a name="l00150"></a>00150
<a name="l00151"></a>00151 <span class="keyword">typedef</span> <span class="keyword">struct </span>BLOCKHEAD
<a name="l00152"></a>00152 {
<a name="l00153"></a>00153 ILubyte HeadID[4];
<a name="l00154"></a>00154 ILushort BlockID;
<a name="l00155"></a>00155 ILuint BlockLen;
<a name="l00156"></a>00156 } IL_PACKSTRUCT BLOCKHEAD;
<a name="l00157"></a>00157
<a name="l00158"></a>00158 <span class="keyword">typedef</span> <span class="keyword">struct </span>GENATT_CHUNK
<a name="l00159"></a>00159 {
<a name="l00160"></a>00160 ILint Width;
<a name="l00161"></a>00161 ILint Height;
<a name="l00162"></a>00162 ILdouble Resolution;
<a name="l00163"></a>00163 ILubyte ResMetric;
<a name="l00164"></a>00164 ILushort Compression;
<a name="l00165"></a>00165 ILushort BitDepth;
<a name="l00166"></a>00166 ILushort PlaneCount;
<a name="l00167"></a>00167 ILuint ColourCount;
<a name="l00168"></a>00168 ILubyte GreyscaleFlag;
<a name="l00169"></a>00169 ILuint SizeOfImage;
<a name="l00170"></a>00170 ILint ActiveLayer;
<a name="l00171"></a>00171 ILushort LayerCount;
<a name="l00172"></a>00172 ILuint GraphicContents;
<a name="l00173"></a>00173 } IL_PACKSTRUCT GENATT_CHUNK;
<a name="l00174"></a>00174
<a name="l00175"></a>00175 <span class="keyword">typedef</span> <span class="keyword">struct </span>LAYERINFO_CHUNK
<a name="l00176"></a>00176 {
<a name="l00177"></a>00177 ILubyte LayerType;
<a name="l00178"></a>00178 PSPRECT ImageRect;
<a name="l00179"></a>00179 PSPRECT SavedImageRect;
<a name="l00180"></a>00180 ILubyte Opacity;
<a name="l00181"></a>00181 ILubyte BlendingMode;
<a name="l00182"></a>00182 ILubyte LayerFlags;
<a name="l00183"></a>00183 ILubyte TransProtFlag;
<a name="l00184"></a>00184 ILubyte LinkID;
<a name="l00185"></a>00185 PSPRECT MaskRect;
<a name="l00186"></a>00186 PSPRECT SavedMaskRect;
<a name="l00187"></a>00187 ILubyte MaskLinked;
<a name="l00188"></a>00188 ILubyte MaskDisabled;
<a name="l00189"></a>00189 ILubyte InvertMaskBlend;
<a name="l00190"></a>00190 ILushort BlendRange;
<a name="l00191"></a>00191 ILubyte SourceBlend1[4];
<a name="l00192"></a>00192 ILubyte DestBlend1[4];
<a name="l00193"></a>00193 ILubyte SourceBlend2[4];
<a name="l00194"></a>00194 ILubyte DestBlend2[4];
<a name="l00195"></a>00195 ILubyte SourceBlend3[4];
<a name="l00196"></a>00196 ILubyte DestBlend3[4];
<a name="l00197"></a>00197 ILubyte SourceBlend4[4];
<a name="l00198"></a>00198 ILubyte DestBlend4[4];
<a name="l00199"></a>00199 ILubyte SourceBlend5[4];
<a name="l00200"></a>00200 ILubyte DestBlend5[4];
<a name="l00201"></a>00201 } IL_PACKSTRUCT LAYERINFO_CHUNK;
<a name="l00202"></a>00202
<a name="l00203"></a>00203 <span class="keyword">typedef</span> <span class="keyword">struct </span>LAYERBITMAP_CHUNK
<a name="l00204"></a>00204 {
<a name="l00205"></a>00205 ILushort NumBitmaps;
<a name="l00206"></a>00206 ILushort NumChannels;
<a name="l00207"></a>00207 } IL_PACKSTRUCT LAYERBITMAP_CHUNK;
<a name="l00208"></a>00208
<a name="l00209"></a>00209 <span class="keyword">typedef</span> <span class="keyword">struct </span>CHANNEL_CHUNK
<a name="l00210"></a>00210 {
<a name="l00211"></a>00211 ILuint CompLen;
<a name="l00212"></a>00212 ILuint Length;
<a name="l00213"></a>00213 ILushort BitmapType;
<a name="l00214"></a>00214 ILushort ChanType;
<a name="l00215"></a>00215 } IL_PACKSTRUCT CHANNEL_CHUNK;
<a name="l00216"></a>00216
<a name="l00217"></a>00217 <span class="keyword">typedef</span> <span class="keyword">struct </span>ALPHAINFO_CHUNK
<a name="l00218"></a>00218 {
<a name="l00219"></a>00219 PSPRECT AlphaRect;
<a name="l00220"></a>00220 PSPRECT AlphaSavedRect;
<a name="l00221"></a>00221 } IL_PACKSTRUCT ALPHAINFO_CHUNK;
<a name="l00222"></a>00222
<a name="l00223"></a>00223 <span class="keyword">typedef</span> <span class="keyword">struct </span>ALPHA_CHUNK
<a name="l00224"></a>00224 {
<a name="l00225"></a>00225 ILushort BitmapCount;
<a name="l00226"></a>00226 ILushort ChannelCount;
<a name="l00227"></a>00227 } IL_PACKSTRUCT ALPHA_CHUNK;
<a name="l00228"></a>00228
<a name="l00229"></a>00229 <span class="preprocessor">#ifdef _MSC_VER</span>
<a name="l00230"></a>00230 <span class="preprocessor"></span><span class="preprocessor">#pragma pack(pop, packed_struct)</span>
<a name="l00231"></a>00231 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00232"></a>00232 <span class="preprocessor"></span>
<a name="l00233"></a>00233
<a name="l00234"></a>00234 <span class="comment">// Function definitions</span>
<a name="l00235"></a>00235 ILboolean iLoadPspInternal(<span class="keywordtype">void</span>);
<a name="l00236"></a>00236 ILboolean iCheckPsp(<span class="keywordtype">void</span>);
<a name="l00237"></a>00237 ILboolean iIsValidPsp(<span class="keywordtype">void</span>);
<a name="l00238"></a>00238 ILboolean ReadGenAttributes(<span class="keywordtype">void</span>);
<a name="l00239"></a>00239 ILboolean ParseChunks(<span class="keywordtype">void</span>);
<a name="l00240"></a>00240 ILboolean ReadLayerBlock(ILuint BlockLen);
<a name="l00241"></a>00241 ILboolean ReadAlphaBlock(ILuint BlockLen);
<a name="l00242"></a>00242 ILubyte *GetChannel(<span class="keywordtype">void</span>);
<a name="l00243"></a>00243 ILboolean UncompRLE(ILubyte *CompData, ILubyte *Data, ILuint CompLen);
<a name="l00244"></a>00244 ILboolean ReadPalette(ILuint BlockLen);
<a name="l00245"></a>00245 ILboolean AssembleImage(<span class="keywordtype">void</span>);
<a name="l00246"></a>00246 ILboolean Cleanup(<span class="keywordtype">void</span>);
<a name="l00247"></a>00247
<a name="l00248"></a>00248
<a name="l00249"></a>00249
<a name="l00250"></a>00250 <span class="preprocessor">#endif//PSP_H</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun Mar 8 20:01:41 2009 for DevIL by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
|