cmxistut.h

Go to the documentation of this file.
00001 // $Id: cmxistut.h 751 2006-03-31 15:43:49Z alex $
00002 /* @@tag:xara-cn@@ DO NOT MODIFY THIS LINE
00003 ================================XARAHEADERSTART===========================
00004  
00005                Xara LX, a vector drawing and manipulation program.
00006                     Copyright (C) 1993-2006 Xara Group Ltd.
00007        Copyright on certain contributions may be held in joint with their
00008               respective authors. See AUTHORS file for details.
00009 
00010 LICENSE TO USE AND MODIFY SOFTWARE
00011 ----------------------------------
00012 
00013 This file is part of Xara LX.
00014 
00015 Xara LX is free software; you can redistribute it and/or modify it
00016 under the terms of the GNU General Public License version 2 as published
00017 by the Free Software Foundation.
00018 
00019 Xara LX and its component source files are distributed in the hope
00020 that it will be useful, but WITHOUT ANY WARRANTY; without even the
00021 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00022 See the GNU General Public License for more details.
00023 
00024 You should have received a copy of the GNU General Public License along
00025 with Xara LX (see the file GPL in the root directory of the
00026 distribution); if not, write to the Free Software Foundation, Inc., 51
00027 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
00028 
00029 
00030 ADDITIONAL RIGHTS
00031 -----------------
00032 
00033 Conditional upon your continuing compliance with the GNU General Public
00034 License described above, Xara Group Ltd grants to you certain additional
00035 rights. 
00036 
00037 The additional rights are to use, modify, and distribute the software
00038 together with the wxWidgets library, the wxXtra library, and the "CDraw"
00039 library and any other such library that any version of Xara LX relased
00040 by Xara Group Ltd requires in order to compile and execute, including
00041 the static linking of that library to XaraLX. In the case of the
00042 "CDraw" library, you may satisfy obligation under the GNU General Public
00043 License to provide source code by providing a binary copy of the library
00044 concerned and a copy of the license accompanying it.
00045 
00046 Nothing in this section restricts any of the rights you have under
00047 the GNU General Public License.
00048 
00049 
00050 SCOPE OF LICENSE
00051 ----------------
00052 
00053 This license applies to this program (XaraLX) and its constituent source
00054 files only, and does not necessarily apply to other Xara products which may
00055 in part share the same code base, and are subject to their own licensing
00056 terms.
00057 
00058 This license does not apply to files in the wxXtra directory, which
00059 are built into a separate library, and are subject to the wxWindows
00060 license contained within that directory in the file "WXXTRA-LICENSE".
00061 
00062 This license does not apply to the binary libraries (if any) within
00063 the "libs" directory, which are subject to a separate license contained
00064 within that directory in the file "LIBS-LICENSE".
00065 
00066 
00067 ARRANGEMENTS FOR CONTRIBUTION OF MODIFICATIONS
00068 ----------------------------------------------
00069 
00070 Subject to the terms of the GNU Public License (see above), you are
00071 free to do whatever you like with your modifications. However, you may
00072 (at your option) wish contribute them to Xara's source tree. You can
00073 find details of how to do this at:
00074   http://www.xaraxtreme.org/developers/
00075 
00076 Prior to contributing your modifications, you will need to complete our
00077 contributor agreement. This can be found at:
00078   http://www.xaraxtreme.org/developers/contribute/
00079 
00080 Please note that Xara will not accept modifications which modify any of
00081 the text between the start and end of this header (marked
00082 XARAHEADERSTART and XARAHEADEREND).
00083 
00084 
00085 MARKS
00086 -----
00087 
00088 Xara, Xara LX, Xara X, Xara X/Xtreme, Xara Xtreme, the Xtreme and Xara
00089 designs are registered or unregistered trademarks, design-marks, and/or
00090 service marks of Xara Group Ltd. All rights in these marks are reserved.
00091 
00092 
00093       Xara Group Ltd, Gaddesden Place, Hemel Hempstead, HP2 6EX, UK.
00094                         http://www.xara.com/
00095 
00096 =================================XARAHEADEREND============================
00097  */
00098 // data reading definitions for CMX import
00099 
00100 #ifndef INC_CMXISTUT
00101 #define INC_CMXISTUT
00102 
00103 #include "cmxform.h"
00104 #include "cmxibits.h"
00105 
00106 //-0-0-----------------------------------------------------------------------------------
00107 
00108 // naming conventions:
00109 //    cmxi<Name>            -- structure
00110 //    cmxi<Name>Desc        -- instructions for loading this structure
00111 //
00112 // but remember, boys and girls, this should be done for you if you use my
00113 // lovely CMX structure defining stuff. In fact, you probably won't even
00114 // notice them as the CI_READDATA hides this from you as well.
00115 
00116 //-0-0-----------------------------------------------------------------------------------
00117 
00118 // first of all, I'll define the instruction codes I'm going to use
00119 
00120 // data types
00121 //--------- name -------------- code ----- target data type
00122 #define     CI_READBYTE         1       // INT32
00123 #define     CI_READINT16        2       // INT32
00124 #define     CI_READINT32        3       // INT32
00125 #define     CI_READUINT16       4       // UINT32
00126 #define     CI_READUINT32       5       // UINT32
00127 #define     CI_READREFERENCE    6       // INT32
00128 #define     CI_READLENGTH       7       // INT32
00129 #define     CI_READCOORD        8       // DocCoord
00130 #define     CI_READBBOX         9       // DocRect
00131 #define     CI_READNATURALWORD  10      // UINT32 (reads 16/32 bit word)
00132 #define     CI_READOFFSET       11      // UINT32 (file offset)
00133 #define     CI_READBOOLEAN      12      // BOOL
00134 #define     CI_READANGLE        13      // double (angle in radians)
00135 #define     CI_READDOUBLE       14      // double
00136 #define     CI_READRENDATTR     15      // cmxiRenderAttr (rendering attributes)
00137 #define     CI_READPOINTLIST    16      // Path * (remember to delete it)
00138 #define     CI_READCOLOURLIST   17      // CMXImportColourList * (remember to delete it)
00139 #define     CI_READSTRING       18      // StringBase * (remember to delete it)
00140 #define     CI_READMATRIX       19      // Matrix
00141 #define     CI_READSTRINGF_VAL  20      // char[n]
00142 #define     CI_READTILING       21      // cmxiTiling (tiling description)
00143 #define     CI_READINT16ARRAY   22      // cmxiIntArray (delete array afterwards with delete [])
00144 #define     CI_READCHARLIST     23      // characterList for 16bit (remember to delete the WCHAR *)
00145 #define     CI_READCOLUMN       24      // the column specification (something to delete there!)
00146 #define     CI_TRANSPARENCY     25      //  In case the new transparency is used we need to stop 
00147                                         //  and tell why.
00148 
00149 
00150 // structural bits
00151 //--------- name -------------- code ----- what it does
00152 #define     CI_STOP             0       // stop everything
00153 #define     CI_SKIPIN_VAL       64      // skip n bytes from input
00154 #define     CI_SKIPOUT_VAL      65      // skip n bytes in output structure
00155 #define     CI_STORENEXT        66      // stores next value for use in if's
00156 #define     CI_IFSTOREDIS_VAL   67      // do next bits if stored has certain value
00157 #define     CI_ELSEIF_VAL       68      // else statement
00158 #define     CI_ENDIF            69      // end if bit
00159 #define     CI_DO16             70      // do next bits for 16 bit only
00160 #define     CI_DO32             71      // do next bits for 32 bit only
00161 #define     CI_DOALL            72      // do next bits for everything (default)
00162 #define     CI_TAG_VAL          73      // expect a tag
00163 #define     CI_ENDTAG           74      // end of tag -- fix up file location
00164 #define     CI_MINENDTAG        75      // expect one of those end of tags codes
00165                                         // use where you see <Tag_EndTag> in CMX documentation
00166 #define     CI_SETOUTMARKER     76      // set an output marker
00167 #define     CI_GOTOOUTLOC_VAL   77      // goto a set distance after the output marker in the output structure
00168 #define     CI_SKIPINTIMES_VAL  78      // skip input data depending on stored value
00169 #define     CI_SETINMARKER      79      // sets a marker for the input file location
00170 #define     CI_ENSUREINLOC      80      // ensures that the file location is in the correct position
00171                                         // SizeInFile value currently stored
00172 #define     CI_TAG_IF_THERE     81      //  Trick to cope with transparency
00173 
00174 // macros for things with parameters
00175 #define     CI_SKIPIN(type)         (CI_SKIPIN_VAL), sizeof(type)
00176 #define     CI_SKIPOUT(type)        (CI_SKIPOUT_VAL), sizeof(type)
00177 #define     CI_SKIPIN_BYTES(n)      (CI_SKIPIN_VAL), (n)
00178 #define     CI_SKIPOUT_BYTES(n)     (CI_SKIPOUT_VAL), (n)
00179 #define     CI_IFSTOREDIS(type, n)  (CI_IFSTOREDIS_VAL), (type), (n)
00180 #define     CI_ELSEIF(type, n)      (CI_ELSEIF_VAL), (type), (n)
00181 #define     CI_TAG(n)               (CI_TAG_VAL), (n)
00182 #define     CI_GOTOOUTLOC(type)     (CI_GOTOOUTLOC_VAL), sizeof(type)
00183 #define     CI_SKIPINTIMES(type)    (CI_SKIPINTIMES_VAL), sizeof(type)
00184 #define     CI_SKIPINTIMES_BYTES(n) (CI_SKIPINTIMES_VAL), (n)
00185 #define     CI_READSTRINGF(n)       (CI_READSTRINGF_VAL), (n)
00186 #define     CI_SKIPINTIMES_BYTE(n)  (CI_SKIPINTIMES_VAL), (n)
00187 
00188 #define     CI_IF_TAG(n)            (CI_TAG_IF_THERE), (n)
00189 
00190 // parameters
00191 #define     CI_IFTYPE_VALUE     0       // if value is equal
00192 #define     CI_IFTYPE_BITSET    1       // if bit is set
00193 #define     CI_IFTYPE_BOOL      2       // for handling Corel's BOOLs (use TRUE/FALSE in the statements)
00194 
00195 #ifdef _DEBUG
00196 #define     CI_TRACE_VAL    101
00197 #define     CI_TRACE(n)     (CI_TRACE_VAL), (n),
00198 #else
00199 #define     CI_TRACE(n)     
00200 #endif
00201 
00202 
00203 // notes about if's in the 'language' 'defined' above:
00204 //   if's can be nested
00205 //   each level of if's has it's own stored value so you can do nested if's
00206 //   without worrying about corrupting the stored value of the if above you
00207 //   output markers are stacked as well
00208 
00209 // a thing so we know some information about our stuff
00210 class CMXIinfo
00211 {
00212 public:
00213     static void SetUpInfo(void);
00214 
00215     static char CommandLengths[256];
00216 
00217 protected:
00218     static void SetLengths(char *instrs, INT32 num, INT32 val);
00219 };
00220 
00221 // handy thing to read structures from the file
00222 #define CI_READDATA(type, name)     cmxi##type name; if(!ReadData(&name, cmxi##type##Desc)) return FALSE;
00223 
00224 typedef struct {
00225     INT32 NumElements;
00226     INT32 *pElements;
00227 } cmxiIntArray;
00228 
00229 
00230 #pragma pack(push, 1)
00231 
00232 //-0-0-----------------------------------------------------------------------------------
00233 
00234 // now for some macros to help setting things up
00235 #define START_CMXSTRUCT     typedef struct {
00236 #ifndef COMPILING_CMXISTUT_CPP
00237 #define END_CMXSTRUCT(name) } cmxi##name; extern char cmxi##name##Desc[];
00238 #else
00239 #define END_CMXSTRUCT(name) } cmxi##name;
00240 #endif
00241 
00242 #define START_CMXDESC(name) char cmxi##name##Desc[] = {
00243 #define END_CMXDESC         ,CI_STOP};
00244 
00245 //-0-0-----------------------------------------------------------------------------------
00246 
00247 typedef struct {
00248     INT32   count;
00249     WCHAR*  characters;
00250     WORD*   indices;
00251 } characterList;
00252 
00253 typedef struct {
00254     INT32   count;
00255     INT32*  columns;
00256     INT32*  gutters;
00257 } cmxiColumnList;
00258 
00259 
00260 // structure to allow us to bung DocCoords in unions
00261 typedef struct {
00262     INT32 x,y;
00263 } fudgedDocCoord;
00264 
00265 typedef struct {
00266     INT32 x0,y0,x1,y1;
00267 } fudgedDocRect;
00268 
00269 // definitions of structures we will encounter in the file. Remember that
00270 // each has an associted description in cmxistut.cpp which you'll have to
00271 // update as well as these
00272 
00273 START_CMXSTRUCT
00274     char ID[32];
00275     INT32 ByteOrder;
00276     INT32 CoordSize;
00277     INT32 Major;
00278     INT32 Minor;
00279     INT32 Unit;
00280     double Factor;
00281     INT32 IOption, IForeignKey, ICapability, IndexSection, InfoSection, Thumbnail;
00282     struct {
00283         INT32 x0, y1, x1, y0;
00284     } bbox;
00285     INT32 Tally;
00286 END_CMXSTRUCT(FileHeader)
00287 
00288 START_CMXSTRUCT
00289     INT32 MasterID;
00290     INT32 Size;
00291     INT32 RecordCount;
00292 END_CMXSTRUCT(MasterIndexHeader)
00293 
00294 
00295 START_CMXSTRUCT
00296     INT32 IndexRecordID;
00297     INT32 Offset;
00298 END_CMXSTRUCT(MasterIndexEntry)
00299 
00300 START_CMXSTRUCT
00301     INT32 RecordCount;
00302 END_CMXSTRUCT(SimpleIndexHeader)
00303 
00304 START_CMXSTRUCT
00305     INT32 SizeInFile;
00306     INT32 PageOffset;
00307     INT32 LayerTableOffset;
00308     INT32 ThumbnailOffset;
00309     INT32 RefListOffset;
00310     // unknown extra bonus data
00311 END_CMXSTRUCT(PageIndexEntry)
00312 
00313 START_CMXSTRUCT
00314     INT32 Size;
00315     INT32 Code;
00316 END_CMXSTRUCT(CommandHeader)
00317 
00318 START_CMXSTRUCT
00319     INT32 PageNumber;
00320     UINT32 PageFlags;
00321     DocRect BBox;
00322     INT32 EndPageOffset;
00323     INT32 GroupCount;
00324     INT32 InstructionCount;
00325     Matrix PageMatrix;      // just a concantation of matrices so far -- probably just ignore it
00326 END_CMXSTRUCT(BeginPage)
00327 
00328 START_CMXSTRUCT
00329     INT32 PageNumber;
00330     INT32 LayerNumber;
00331     INT32 LayerFlags;
00332     INT32 InstructionCount;
00333     StringBase *pLayerName;
00334     Matrix LayerMatrix;
00335 END_CMXSTRUCT(BeginLayer)
00336 
00337 START_CMXSTRUCT
00338     INT32 ColourModel;
00339     INT32 PaletteType;
00340     union {
00341         struct {
00342             INT32 ID, Density;
00343         } Pantone;
00344         struct {
00345             INT32 Cyan, Magenta, Yellow, Key;
00346         } CMYK;
00347         struct {
00348             INT32 Red, Green, Blue;
00349         } RGB;
00350         struct {
00351             INT32 Hue, Saturation, Value;
00352         } HSV;
00353         struct {
00354             INT32 Grey;
00355         } Grey;
00356         struct {
00357             INT32 Value1, Value2, Value3, Value4;
00358         } Misc;
00359     } Spec;
00360 END_CMXSTRUCT(Colour)
00361 
00362 START_CMXSTRUCT
00363     INT32 Width;
00364     INT32 Height;
00365     INT32 XOffset;
00366     INT32 YOffset;
00367     INT32 InterTileOffset;
00368     INT32 TilingFlags;
00369 END_CMXSTRUCT(Tiling)
00370 
00371 typedef struct {
00372     INT32 FillID;
00373     union {
00374         struct {
00375             INT32 ColourReference;
00376             INT32 ScreenReference;
00377         } Uniform;
00378         struct {
00379             INT32 Type;
00380             INT32 Screen;
00381             INT32 Padding;
00382             double Angle;
00383             fudgedDocCoord Offset;
00384             INT32 StepCount;
00385             INT32 FillMode;
00386             INT32 RateMethod;
00387             INT32 RateValue;
00388             CMXImportColourList *pColours;
00389         } Fountain;
00390         struct {
00391             INT32 Reference;
00392             INT32 ParamCount;
00393             StringBase *UserFunction;
00394         } Postscript;
00395         struct {
00396             INT32 VectorFillReference;
00397             cmxiTiling Tile;
00398             fudgedDocRect BBox;
00399         } Bitmap;       // and vector fills
00400         struct {
00401             INT32 BitmapReference;
00402             cmxiTiling Tile;
00403             INT32 ForeColourReference;
00404             INT32 BackColourReference;
00405             INT32 ScreenReference;
00406         } TwoColourBitmap;
00407         struct {
00408             INT32 VectorFillReference;
00409             cmxiTiling Tile;
00410             fudgedDocRect BBox;
00411             INT32 StringLen1, StringLen2, StringLen3, ParamCount;
00412         } Texture;
00413     } Spec;
00414 } cmxiFillSpec;
00415 
00416 typedef union {
00417     struct {
00418         INT32 TintMethod;
00419         INT32 UniformRate;
00420         INT32 ColourRef;
00421         INT32 RangeProcRef;
00422     } Glass;
00423     struct {
00424         INT32 UniformRate;
00425         INT32 RangeProcRef;
00426     } Magnify;
00427     struct {
00428         INT32 UniformRate;
00429         INT32 RangeProcRef;
00430     } Fisheye;
00431     struct {
00432         INT32 OutlineMethod;
00433         INT32 OutlineColour;
00434         INT32 FillMethod;
00435         INT32 FillColour;
00436         INT32 RangeProcRef;
00437     } Wireframe;
00438 } cmxiLensSpecSpec;
00439 
00440 typedef struct {
00441     INT32 Type;
00442     union {
00443         struct {
00444             INT32 TintMethod;
00445             INT32 UniformRate;
00446             INT32 ColourRef;
00447             INT32 RangeProcRef;
00448         } Glass;
00449         struct {
00450             INT32 UniformRate;
00451             INT32 RangeProcRef;
00452         } Magnify;
00453         struct {
00454             INT32 UniformRate;
00455             INT32 RangeProcRef;
00456         } Fisheye;
00457         struct {
00458             INT32 OutlineMethod;
00459             INT32 OutlineColour;
00460             INT32 FillMethod;
00461             INT32 FillColour;
00462             INT32 RangeProcRef;
00463         } Wireframe;
00464     };
00465 } cmxiLensSpec;
00466 
00467 typedef struct {
00468     INT32 ContainerReference;
00469     BOOL AutoTransform;
00470 } cmxiContainerSpec;
00471 
00472 START_CMXSTRUCT
00473     INT32 Mask;
00474     cmxiFillSpec FillSpec;
00475     INT32 OutlineReference;
00476     cmxiLensSpec LensSpec;
00477     cmxiContainerSpec ContainerSpec;
00478 END_CMXSTRUCT(RenderAttr)
00479 
00480 START_CMXSTRUCT
00481     cmxiRenderAttr RenderAttributes;
00482     Path *PointList;
00483     DocRect BBox;
00484 END_CMXSTRUCT(PolyCurve)
00485 
00486 START_CMXSTRUCT                         // Graeme (3-2-00)
00487     cmxiRenderAttr RenderAttributes;
00488     DocCoord Centre;
00489     INT32 Width;
00490     INT32 Height;
00491     double CornerRadius;
00492     double Rotation;
00493     DocRect BBox;
00494 END_CMXSTRUCT ( Rectangle )
00495 
00496 START_CMXSTRUCT
00497     Matrix TransformMatrix;
00498 END_CMXSTRUCT(AddGlobalTransform)
00499 
00500 START_CMXSTRUCT
00501     Matrix TransformMatrix;
00502 END_CMXSTRUCT(SetGlobalTransform)
00503 
00504 START_CMXSTRUCT
00505     INT32 LineStyleRef;
00506     INT32 ScreenRef;
00507     INT32 ColourRef;
00508     INT32 ArrowheadsRef;
00509     INT32 PenRef;
00510     INT32 DotDashRef;
00511 END_CMXSTRUCT(Outline)
00512 
00513 START_CMXSTRUCT
00514     INT32 Width;
00515     INT32 Aspect;
00516     double Angle;
00517     Matrix Mat;
00518 END_CMXSTRUCT(Pen)
00519 
00520 START_CMXSTRUCT
00521     INT32 Spec;
00522     INT32 CapAndJoin;
00523 END_CMXSTRUCT(LineStyle)
00524 
00525 START_CMXSTRUCT
00526     cmxiIntArray Dots;
00527 END_CMXSTRUCT(DotDash)
00528 
00529 START_CMXSTRUCT
00530     cmxiRenderAttr RenderAttributes;
00531     DocRect ImageExtent;
00532     DocRect CroppingRectangle;
00533     Matrix Transformation;
00534     INT32 ImageType;
00535     INT32 ImageFileReference1;
00536     INT32 ImageFileReference2;
00537 END_CMXSTRUCT(DrawImage)
00538 
00539 START_CMXSTRUCT
00540     INT32 SizeInFile;
00541     INT32 Offset;
00542     INT32 Type;
00543     // unknown extra bonus data
00544 END_CMXSTRUCT(EmbeddedFileIndexEntry)
00545 
00546 START_CMXSTRUCT
00547     INT32 SizeInFile;
00548     INT32 ReferenceList;
00549     INT32 Position;
00550     // unknown extra bonus data
00551 END_CMXSTRUCT(ProcedureIndexEntry)
00552 
00553 START_CMXSTRUCT
00554     INT32 Offset;
00555 END_CMXSTRUCT(JumpAbsolute)
00556 
00557 START_CMXSTRUCT
00558     INT32 Type;
00559     INT32 Compression;
00560     INT32 ISize;
00561     INT32 ICompressedSize;
00562 END_CMXSTRUCT(ImageInfo)
00563 
00564 START_CMXSTRUCT
00565     UINT32 Type;
00566     UINT32 Size;
00567     INT32 Reserved1, Reserved2;
00568     INT32 OffsetToBits;
00569 END_CMXSTRUCT(ImageContents)
00570 
00571 START_CMXSTRUCT
00572     UINT32 Type;
00573     UINT32 Size;
00574     INT32 Reserved1, Reserved2;
00575     INT32 OffsetToBits;
00576 END_CMXSTRUCT(ImageContentsDIB)
00577 
00578 START_CMXSTRUCT
00579     UINT32 Type;
00580     UINT32 CompressionType;
00581     UINT32 Width;
00582     UINT32 Height;
00583     UINT32 Planes;
00584     UINT32 BitsPerPlane;
00585     UINT32 BytesPerPlane;
00586     UINT32 BufferSize;
00587     UINT32 CompressedBufferSize;
00588     UINT32 XPelsPerKM;
00589     UINT32 YPelsPerKM;
00590     INT32 IPaletteOffset;
00591     INT32 IDataOffset;
00592     INT32 IStartBufOffset;
00593     INT32 IAlphaOffset;
00594     INT32 IMaskOffset;
00595 END_CMXSTRUCT(RImageHeader)
00596 
00597 START_CMXSTRUCT
00598     INT32 Type;
00599     INT32 NumEntries;
00600 END_CMXSTRUCT(RImagePalette)
00601 
00602 START_CMXSTRUCT
00603     INT32 Blue, Green, Red;
00604 END_CMXSTRUCT(RImagePaletteEntry)
00605 
00606 typedef union {
00607     struct {
00608         INT32 x0, x1;
00609     } Vertical;
00610     struct {
00611         INT32 y0, y1;
00612     } Horizontal;
00613     fudgedDocRect Rectangular;
00614     Path *pPolygon;
00615 } cmxiRegionSpec;
00616 
00617 START_CMXSTRUCT
00618     INT32 RegionType;
00619     cmxiRegionSpec Spec;
00620     INT32 ClipMode;
00621     INT32 RecoverySpecification;
00622 END_CMXSTRUCT(AddClippingRegion)
00623 
00624 START_CMXSTRUCT
00625     INT32 RecordCount;
00626     INT32 SizeInFile;
00627     INT32 Type;
00628 END_CMXSTRUCT(ArrowShapeIndexHeader)
00629 
00630 START_CMXSTRUCT
00631     INT32 Offset;
00632 END_CMXSTRUCT(ArrowShapeIndexEntry)
00633 
00634 START_CMXSTRUCT
00635     Path *pShape;
00636     INT32 LineOffset;
00637 END_CMXSTRUCT(ArrowShape)
00638 
00639 START_CMXSTRUCT
00640     INT32 StartRef;
00641     INT32 EndRef;
00642 END_CMXSTRUCT(Arrowheads)
00643 
00644 START_CMXSTRUCT
00645     INT32 RecordCount;
00646     INT32 SizeInFile;
00647     INT32 Type;
00648 END_CMXSTRUCT(BitmapIndexHeader)
00649 
00650 START_CMXSTRUCT
00651     INT32 Offset;
00652 END_CMXSTRUCT(BitmapIndexEntry)
00653 
00654 START_CMXSTRUCT
00655     INT32 RecordCount;
00656     INT32 SizeInFile;
00657     INT32 Type;
00658 END_CMXSTRUCT(FontIndexHeader)
00659 
00660 START_CMXSTRUCT
00661     INT32 Offset;
00662 END_CMXSTRUCT(FontIndexEntry)
00663 
00664 
00665 START_CMXSTRUCT
00666     BOOL    Artistic;
00667     INT32   Pad;
00668     DocRect BBox;
00669     INT32   Frames;
00670     INT32   Num_Paragraph;
00671     INT32   Num_Instruction;
00672 END_CMXSTRUCT(BeginTextStream)
00673 
00674 START_CMXSTRUCT
00675     cmxiColumnList  columns;
00676     INT32       Height;
00677     INT32       Skew;
00678     Matrix      Mat;
00679 END_CMXSTRUCT(TextFrame)
00680 
00681 START_CMXSTRUCT
00682     cmxiRenderAttr  RenderAttributes;
00683     INT32           FontRef;
00684     INT32           FontSize;
00685     INT32           KerningVertical;
00686     INT32           KerningHorizontal;
00687     double          KerningAngle;
00688     INT32           Justification;
00689     INT32           InterCharSpacing;
00690     INT32           InterWordSpacing;
00691     INT32           InterLineSpacing;
00692     INT32           BeforeParagraphSpacing;
00693     INT32           AfterParagraphSpacing;
00694     INT32           MaxInterChar;
00695     INT32           MinInterWord;
00696     INT32           MaxInterWord;
00697     INT32           SpacingMode;
00698     INT32           UnderlineFlag;
00699     INT32           UnderlineDistanceFromBaseline;
00700     INT32           UnderlineStrokeThickness;
00701     INT32           ThickUnderlineFlag;
00702     INT32           ThickUnderlineDistanceFromBaseline;
00703     INT32           ThickUnderlineStrokeThickness;
00704     INT32           DoubleUnderlineFlag;
00705     INT32           DoubleUnderlineDistanceFromBaseline;
00706     INT32           DoubleUnderlineStrokeThickness;
00707     INT32           DoubleUnderline1Flag;
00708     INT32           DoubleUnderline1DistanceFromBaseline;
00709     INT32           DoubleUnderline1StrokeThickness;
00710     INT32           DoubleUnderline2Flag;
00711     INT32           DoubleUnderline2DistanceFromBaseline;
00712     INT32           DoubleUnderline2StrokeThickness;
00713     INT32           ThickOverlineFlag;
00714     INT32           ThickOverlineDistanceFromBaseline;
00715     INT32           ThickOverlineStrokeThickness;
00716     INT32           ThickOverline1Flag;
00717     INT32           ThickOverline1DistanceFromBaseline;
00718     INT32           ThickOverline1StrokeThickness;
00719     INT32           ThickOverline2Flag;
00720     INT32           ThickOverline2DistanceFromBaseline;
00721     INT32           ThickOverline2StrokeThickness;
00722     INT32           ThickStrikeoutFlag;
00723     INT32           ThickStrikeoutDistanceFromBaseline;
00724     INT32           ThickStrikeoutStrokeThickness;
00725     INT32           DoubleStrikeout1Flag;
00726     INT32           DoubleStrikeout1DistanceFromBaseline;
00727     INT32           DoubleStrikeout1StrokeThickness;
00728     INT32           DoubleStrikeout2Flag;
00729     INT32           DoubleStrikeout2DistanceFromBaseline;
00730     INT32           DoubleStrikeout2StrokeThickness;
00731     INT32           TabCount;
00732     BOOL            BulletOn;
00733     INT32           BulletFlagMulticolour;
00734     INT32           BulletDefaultFont;          
00735     INT32           BulletFontSize;
00736     INT32           BulletCharacter;            
00737     INT32           BulletVerticalShift;
00738     INT32           BulletHorizontalShift;
00739     double          BulletKerningAngle;
00740     cmxiRenderAttr  BulletRenderAttributes;
00741     INT32           LeftMargin; 
00742     INT32           RightMargin;
00743     INT32           FirstLine;
00744     INT32           RemainingLines;
00745     BOOL            AutoHyphenation;
00746     BOOL            BreakCapitalisedWords;
00747     INT32           MinWordLength;          
00748     INT32           MinCharsBefore;
00749     INT32           MinCharsAfter;
00750     INT32           HotZone;
00751     BOOL            DropCapOn;
00752     //INT32         DropCapDefaultFont;         
00753     //INT32         DropCapFontSize;
00754     //INT32         DropCapVerticalShift;
00755     //INT32         DropCapHorizontalShift; 
00756     //double            DropCapKerningAngle;            
00757 END_CMXSTRUCT(BeginParagraph)
00758 
00759 
00760 START_CMXSTRUCT
00761     characterList   ch;
00762 END_CMXSTRUCT(Characters)
00763 
00764 START_CMXSTRUCT
00765     INT32           UsageMask;
00766     INT32           FontRef;
00767     INT32           TypeSize;
00768     double          CharAngle;
00769     cmxiRenderAttr  RenderAttributes;   
00770     INT32           HShift;
00771     INT32           VShift;
00772 END_CMXSTRUCT(CharInfo)
00773 
00774 START_CMXSTRUCT
00775     INT32   count;
00776     INT32   SizeInFile;
00777     INT32   Type;
00778     INT32   *Offsets;
00779 END_CMXSTRUCT(FontIndex)
00780 
00781 
00782 START_CMXSTRUCT
00783         //  Font Info
00784     StringBase *    FontName;
00785     INT32           FontStyle;
00786         //  Panose Stuffs
00787     INT32   bFamily;
00788     INT32   bSerifStyle;
00789     INT32   bWeight;
00790     INT32   bProportion;
00791     INT32   bContrast;
00792     INT32   bStrokeVaration;
00793     INT32   bArmStyle;
00794     INT32   bLetterForm;
00795     INT32   bMidline;
00796     INT32   bXHeight;
00797 END_CMXSTRUCT(FontRecord)
00798 
00799     
00800 
00801 //-0-0-----------------------------------------------------------------------------------
00802 
00803 #pragma pack(pop)
00804 #endif  // INC_CMXISTUT
00805 

Generated on Sat Nov 10 03:44:46 2007 for Camelot by  doxygen 1.4.4