rvcstyle.h

Go to the documentation of this file.
00001 /**
00002  * \file rvcstyle.h <mi32/rvcstyle.h>
00003  * \brief Definitions for Style objects
00004  *
00005  * \if NODOC
00006  * $Id: rvcstyle.h_v 1.88 2004/09/03 16:02:07 scowan Exp $
00007  *
00008  * $Log: rvcstyle.h_v $
00009  * Revision 1.88  2004/09/03 16:02:07  scowan
00010  * Removed unused items.
00011  *
00012  * Revision 1.87  2004/04/03 00:00:12  scowan
00013  * Moved unused prototypes to private include file.
00014  *
00015  * Revision 1.86  2004/04/02 23:28:49  scowan
00016  * Fixed deprecation.
00017  *
00018  * Revision 1.85  2004/04/02 22:14:34  scowan
00019  * Removed unused prototypes and make more functions deprecated.
00020  *
00021  * Revision 1.84  2004/04/02 16:59:21  scowan
00022  * Added more thingsd to be deprecated.
00023  *
00024  * Revision 1.83  2004/04/02 16:51:03  scowan
00025  * Removed unused prototype for combine styles.
00026  *
00027  * Revision 1.82  2004/03/31 18:35:01  dwilliss
00028  * Added versions of functions that take MISTRING instead of text font name,
00029  * which I'm about to deprecate
00030  *
00031  * Revision 1.81  2004/03/11 16:57:47  mju
00032  * Eliminate old obj selection dialogs as no longer used.
00033  *
00034  * Revision 1.80  2004/03/10 17:08:43  dwilliss
00035  * Added a polygons member to SYMBOLDATA
00036  *
00037  * Revision 1.79  2004/03/10 15:45:17  dwilliss
00038  * Added some new point symbol element types
00039  *
00040  * Revision 1.78  2003/10/15 17:39:35  mju
00041  * Deprecate groupkey.
00042  *
00043  * Revision 1.77  2003/09/25 21:29:07  dwilliss
00044  * Don't capitalize enum any more. Genitor needed it, doxygen doesn't like it.
00045  *
00046  * Revision 1.76  2003/09/15 13:49:56  fileserver!dwilliss
00047  * Doxygen
00048  *
00049  * Revision 1.75  2003/03/03 15:28:33  mju
00050  * Add variants on MfImportPointSymbol... using RVC::STYLE.
00051  *
00052  * Revision 1.74  2003/01/31 18:41:05  scowan
00053  * nc.
00054  *
00055  * Revision 1.73  2002/11/21 20:31:37  dwilliss
00056  * Added new HATCHPATTELEM constant
00057  *
00058  * Revision 1.72  2002/10/16 19:22:57  dwilliss
00059  * Prototype for new function
00060  *
00061  * Revision 1.71  2002/09/09 13:59:02  mju
00062  * Always prevent_memfunc.
00063  * Retire previously deprecated stuff.
00064  *
00065  * Revision 1.70  2002/08/22 16:20:35  scowan
00066  * More functions.
00067  *
00068  * Revision 1.69  2002/08/22 14:51:55  scowan
00069  * Added object name versions of style functions.
00070  *
00071  * Revision 1.68  2002/08/21 22:40:16  dwilliss
00072  * Correction to previous revision.  Needed to take a TEXTFONTNAME, not
00073  * RVC::OBJECTNAME
00074  *
00075  * Revision 1.67  2002/08/21 22:31:54  dwilliss
00076  * MfFontTransIndexToName() -- Made a version that takes RVC::OBJECTNAME to
00077  * fill in and deprecated the one that filled in a UNICODE*
00078  *
00079  * Revision 1.66  2002/08/21 20:38:57  scowan
00080  * Deprecate old object name define.
00081  *
00082  * Revision 1.65  2002/08/20 15:18:50  mju
00083  * Use prevent_memfunc macro, still checks no_deprecated.
00084  *
00085  * Revision 1.64  2002/05/23 20:04:45  scowan
00086  * Added add pattern function.
00087  *
00088  * Revision 1.63  2002/05/23 19:52:15  scowan
00089  * Added read pattern ext function.
00090  *
00091  * Revision 1.62  2002/04/16 19:12:56  dwilliss
00092  * Never mind...
00093  *
00094  * Revision 1.61  2002/03/08 23:16:17  scowan
00095  * Added fields to texzt style.
00096  *
00097  * Revision 1.60  2002/03/08 23:03:32  scowan
00098  * Added more ctors and other methods.
00099  *
00100  * Revision 1.59  2002/03/08 18:56:46  scowan
00101  * Added clear method.
00102  * delrecate mem... for struct info's.
00103  *
00104  * Revision 1.58  2001/12/20 21:48:30  mju
00105  * Enum docs.
00106  *
00107  * Revision 1.57  2001/09/14 14:58:36  mju
00108  * No Mdlg in win32native.
00109  *
00110  * Revision 1.56  2001/08/31 20:01:38  scowan
00111  * Added write style name function.
00112  *
00113  * Revision 1.55  2001/08/28 15:22:10  mju
00114  * Fix search/replace goof.
00115  *
00116  * Revision 1.54  2001/08/28 14:56:26  mju
00117  * Add MfStyleAdd() functions.
00118  *
00119  * Revision 1.53  2001/08/28 14:29:43  mju
00120  * Change RVCPOLYSTYLE to RVCPOLYGONSTYLE with typedef for old name.
00121  *
00122  * Revision 1.52  2001/08/15 16:09:11  mju
00123  * Change STYLETYPE and PATTERNTYPE to enums.
00124  *
00125  * Revision 1.51  2001/03/06 22:55:57  vdronov
00126  * added STYLETYPE_Empty = 0xFFFF
00127  *
00128  * Revision 1.50  2000/11/06 18:51:34  msmith
00129  * Genitor documentation.
00130  *
00131  * Revision 1.49  2000/07/07 20:53:11  scowan
00132  * Create filepath version of get style.
00133  *
00134  * Revision 1.48  2000/05/24 22:30:01  dwilliss
00135  * Added 2 new prototypes
00136  *
00137  * Revision 1.47  2000/04/27 17:18:38  mju
00138  * Define RVCPATTHDR struct and have other pattern headers inherit from it.
00139  *
00140  * Revision 1.46  2000/04/14 14:54:31  scowan
00141  * *** empty log message ***
00142  *
00143  * Revision 1.45  1999/11/19 14:30:27  mju
00144  * MdlgGet... prompt const.
00145  *
00146  * Revision 1.44  1999/10/18  21:06:27  mju
00147  * Remove RVCANYSTYLE union.
00148  *
00149  * Revision 1.43  1999/10/18  17:07:46  mju
00150  * Make MfStyleRead/WriteXxxx inline so they are typesafe.
00151  * Add MfStyleRead() and MfStyleWrite() inlines.
00152  *
00153  * Revision 1.42  1999/10/05  22:48:35  scowan
00154  * Changed headers to use inheritance.
00155  *
00156  * Revision 1.41  1999/08/05 21:16:35  mju
00157  * Use const for FindPattern and StyleLocate.
00158  *
00159  * Revision 1.40  1999/06/29  21:31:48  mju
00160  * Add CopyStyleRVCtoMem for text style.
00161  *
00162  * Revision 1.39  1999/06/11  14:46:29  mju
00163  * Obj sel dlg.
00164  *
00165  * Revision 1.38  1999/06/10  22:11:23  mju
00166  * Object selection dialog update.
00167  *
00168  * Revision 1.37  1999/05/07  21:23:41  mju
00169  * Hdr restruct.
00170  *
00171  * Revision 1.36  1999/02/17  18:47:59  mju
00172  * Add CopyStyle prototypes.
00173  *
00174  * Revision 1.35  1999/01/05  19:13:20  scowan
00175  * Swapped multiple keywords
00176  *
00177  * Revision 1.34  1998/11/06 22:11:44  dfrolov
00178  * rearange fields in HATCHPATTELEMENT structure
00179  *
00180  * Revision 1.33  1998/10/28  22:44:03  dfrolov
00181  * some changes in hatch patterns
00182  *
00183  * Revision 1.32  1998/10/23  19:07:41  dfrolov
00184  * add support for hatch patterns
00185  *
00186  * Revision 1.31  1998/09/30  21:54:41  scowan
00187  * Setup DLL.
00188  *
00189  * Revision 1.30  1998/09/25  22:46:20  scowan
00190  * Fixed for DLL.
00191  *
00192  * Revision 1.29  1998/09/23  23:12:31  scowan
00193  * *** empty log message ***
00194  *
00195  * Revision 1.28  1998/08/03  13:47:34  dwilliss
00196  * Changed a UINT8 spare[4] to FLOAT width
00197  *
00198  * Revision 1.27  1997/10/31  17:26:16  dfrolov
00199  * attempted to add new elements for symbols
00200  *
00201  * Revision 1.26  1997/06/20  19:56:53  scowan
00202  * Added Predefined.
00203  *
00204  * Revision 1.25  1996/12/20  16:37:34  coffee!dwilliss
00205  * Added __cplusplus things
00206  *
00207  * Revision 1.24  1996/07/13  00:18:12  mju
00208  * Remove MxFillPolygonBitmap prototypes as obsolete.
00209  *
00210  * Revision 1.23  1996/03/07  21:53:22  scowan
00211  * Added _MfWriteStyleRaw().
00212  *
00213  * Revision 1.22  1996/02/22  22:33:44  scowan
00214  * Added MfDeleteStyleType().
00215  *
00216  * Revision 1.21  1996/01/23  05:28:34  scowan
00217  * Added MfReplaceStyle().
00218  *
00219  * Revision 1.20  1996/01/17  16:59:24  coffee!dwilliss
00220  * Prototyped MfReadStyleName()
00221  *
00222  * Revision 1.19  1995/12/13  23:10:21  mju
00223  * Remove MfMakeDftStyleTable() prototype.
00224  *
00225  * Revision 1.18  1995/12/05  22:44:19  coffee!dwilliss
00226  * *** empty log message ***
00227  *
00228  * Revision 1.17  1995/10/25  17:22:07  mju
00229  * Move FONTSTYLE flags to stddefns.h.
00230  *
00231  * Revision 1.16  1995/08/28  16:59:06  scowan
00232  * Changed MfReadTextStyle() API.
00233  *
00234  * Revision 1.15  1995/08/28  16:33:32  scowan
00235  * Prototyped new MfFontTrans...() functions.
00236  *
00237  * Revision 1.14  1995/08/25  20:12:40  scowan
00238  * Added prototype for MfReadTextStyleExt().
00239  *
00240  * Revision 1.13  1995/07/26  13:24:58  mju
00241  * Add FontTrans... prototypes.
00242  *
00243  * Revision 1.12  1995/01/30  20:49:00  scowan
00244  * Added prototypes for MfDeleteStyle() and MfDeletePattern().
00245  *
00246  * Revision 1.11  1995/01/12  00:30:37  scowan
00247  * Added HeightUnits and LineSpaceUnits fields to RVCTEXTSTYLE.
00248  *
00249  * Revision 1.10  1994/06/30  14:07:36  coffee!dwilliss
00250  * Added PATTCOLOR_Variable.  Same as UserDefined, but more intuitively named.
00251  *
00252  * Revision 1.9  1994/05/06  21:54:54  scowan
00253  * Changed int to UINT32 in MfCombineStyles().
00254  *
00255  * Revision 1.8  1994/05/06  15:06:57  scowan
00256  * Changed long to INT32.
00257  * Changed flag parms to UINT32.
00258  *
00259  * Revision 1.7  1993/12/27  15:07:33  coffee!dwilliss
00260  * Added MapScale to RVCxxxxSTYLE structures
00261  *
00262  * Revision 1.6  1993/11/12  20:56:24  coffee!dwilliss
00263  * *** empty log message ***
00264  *
00265  * Revision 1.5  1993/08/06  19:43:16  shovland
00266  * added prototype for MfCombineStyles()
00267  *
00268  * Revision 1.4  1993/05/17  20:31:25  coffee!harrison
00269  * Added prototype for MfMakeDftStyleTable...
00270  *
00271  * Revision 1.3  1993/04/14  16:31:12  mju
00272  * Add MxFillPolygonBitmapW() prototype.
00273  *
00274  * Revision 1.2  1993/01/06  18:14:24  mju
00275  * Change API for MxFillPolygonsBitmap()
00276  *
00277  * \endif
00278 **/
00279 
00280 #ifndef INC_MI32_RVCSTYLE_H
00281 #define INC_MI32_RVCSTYLE_H
00282 
00283 #ifndef  INC_MI32_RVCDEFNS_H
00284    #include <mi32/rvcdefns.h>
00285 #endif
00286 
00287 #ifndef  INC_MI32_ELEMSTYL_H
00288    #include <mi32/elemstyl.h>
00289 #endif
00290 
00291 #ifndef  INC_MI32_COLOR_H
00292    #include <mi32/color.h>
00293 #endif
00294 
00295 //! Forward declarations
00296 
00297 struct POINTSTYLE;
00298 struct LINESTYLE;
00299 struct POLYSTYLE;
00300 struct TEXTSTYLE;
00301 namespace RVC {
00302    class STYLE;
00303    }
00304 
00305 /*
00306  * The following is so that I can add MapScale to the style objects, 
00307  * but not until after 4.5.  4.4 programs will croke if the 
00308  * RVCXXXXXSTYLE structures grow.  4.5 can handle it.
00309  * As soon as we want to add the MapScale stuff again, delete the
00310  * following #define
00311  */
00312 
00313 //! Definition for style object header.
00314 struct RVCSTYLEINFO : public RVCGENINFO {
00315    UINT16 PointStyleSize;              //!< Point style size
00316    UINT16 LineStyleSize;               //!< Line style size
00317    UINT16 PolyStyleSize;               //!< Polygon style size
00318    UINT16 TextStyleSize;               //!< Text style size
00319    UINT16 BitmapPattSize;              //!< Bitmap pattern size
00320    UINT16 HatchPattSize;               //!< Hatch pattern size
00321    UINT16 LinePattSize;                //!< Line pattern size
00322    UINT16 SymbolSize;                  //!< Symbol size
00323    
00324    RVCSTYLEINFO (
00325       ) {Clear();}
00326    
00327    RVCSTYLEINFO (
00328       const RVCGENINFO& ginfo
00329       ) {Clear();*static_cast<RVCGENINFO*>(this) = ginfo;}
00330    
00331    RVCSTYLEINFO& operator= (
00332       const RVCGENINFO& ginfo          //!< RVCSTYLEINFO to copy
00333       ) {*static_cast<RVCGENINFO*>(this) = ginfo; return (*this);}
00334    
00335    void Clear (
00336       ) {memset(static_cast<void*>(this), 0, sizeof(*this));}
00337    
00338    };
00339 
00340 //! Disallow memset/memcpy.
00341 PREVENT_MEMFUNC(RVCSTYLEINFO)
00342 
00343 
00344 /*----------------------------------------------------------------------------*/
00345 /*    Definitions for style structures as stored in file                      */
00346 /*----------------------------------------------------------------------------*/
00347 
00348 //! Structure for point drawing style.
00349 struct RVCPOINTSTYLE {
00350    RVC::OBJECTNAME name;               //!< Name
00351    UINT32 StyleFlags;                  //!< Flags
00352    INT32 SymbolNum;                    //!< Symbol number
00353    DOUBLE ScaleX;                      //!< Size in mm
00354    DOUBLE ScaleY;                      //!< Size in mm
00355    DOUBLE Angle;                       //!< Angle in radians (?)
00356    COLOR DrawColor;                    //!< Color
00357    DOUBLE MapScale;                    //!< MapScale to use given scales at
00358    };
00359 
00360 //! Structure for line drawing style.
00361 struct RVCLINESTYLE {
00362    RVC::OBJECTNAME name;               //!< Name
00363    UINT32 StyleFlags;                  //!< Flags
00364    INT32 PatternNum;                   //!< Pattern number
00365    DOUBLE Scale;                       //!< Actually line width in mm
00366    COLOR DrawColor;                    //!< Color
00367    DOUBLE MapScale;                    //!< MapScale to use given scales at
00368    };
00369 
00370 //! Structure for polygon drawing style.
00371 struct RVCPOLYGONSTYLE {
00372    RVC::OBJECTNAME name;               //!< Name
00373    UINT32 StyleFlags;                  //!< Flags
00374    INT32 FillPatternNum;               //!< Fill pattern number
00375    INT32 BorderPatternNum;             //!< Border pattern number
00376    UINT8 space[4];                     //!< Spacing
00377    DOUBLE BorderScale;                 //!< Actually line width in mm
00378    COLOR BorderColor;                  //!< Border color
00379    COLOR FillColor;                    //!< Fill color
00380    DOUBLE MapScale;                    //!< MapScale to use given scales at
00381    };
00382 typedef RVCPOLYGONSTYLE RVCPOLYSTYLE;
00383 
00384 //! Structure for text drawing style.
00385 struct RVCTEXTSTYLE {
00386    RVC::OBJECTNAME name;               //!< Name
00387    UINT32 StyleFlags;                  //!< Flags
00388    INT32 font;                         //!< Font
00389    COLOR fgcolor;                      //!< Foreground color
00390    COLOR bgcolor;                      //!< Background color
00391    FLOAT glyphrot;                     //!< Glyph rotation
00392    FLOAT glyphaspect;                  //!< Glyph aspect
00393    FLOAT shear;                        //!< Shear
00394    FLOAT height;                       //!< Height
00395    FLOAT linespace;                    //!< Line spacing
00396    UINT32 FontFlags;                   //!< Font flags
00397    DOUBLE MapScale;                    //!< MapScale to use given scales at
00398    UINT8 HeightUnits;                  //!< Defined in SCREENUNITS_...
00399    UINT8 LineSpaceUnits;               //!< Line spacing units
00400    UINT16 Predefined;                  //!< ???
00401    FLOAT width;                        //!< Only used for HTML layout
00402    FLOAT StrokeWidth;                  //!< Stroke width in % of glyph height (1.0 = 100%)
00403    FLOAT EnhanceWidth;                 //!< Enhanced width in % of glyph height (1.0 = 100%)
00404    FLOAT BoldnessWidth;                //!< Boldness width in % of glyph height (1.0 = 100%) Ignored unless FONTSTYLE_Bold is set
00405    FLOAT UnderlineWidth;               //!< Underline with in % of glyph height (1.0 = 100%)
00406    FLOAT UnderlineOffset;              //!< Underline Offset from baseline in % (1.0 = 100%)
00407    FLOAT ShadowOffset;                 //!< Drop shadow offset in % (1.0 = 100%) Ignored unless FONTSTYLE_Shadow is set
00408    FLOAT ShadowAngle;                  //!< Drop shadow angle in radians
00409    FLOAT ClipWidth;                    //!< Clip extended area around text in TextAddToClip()
00410    UINT8 ShadowRelative;               //!< true if shadow angle relative to baseline angle
00411    UINT8 WidthUnits;
00412    UINT8 space[6];
00413    };
00414 
00415 //! Enumeration for style types.
00416 enum STYLETYPE {
00417    STYLETYPE_Point =    0,
00418    STYLETYPE_Line =     1,
00419    STYLETYPE_Polygon =  2,
00420    STYLETYPE_Text =     3,
00421    STYLETYPE_COUNT =    4,
00422    STYLETYPE_Empty =    0xFFFF,
00423    };
00424 #define  STYLETYPE_Poly       STYLETYPE_Polygon
00425 #define  NUMSTYLETYPES        STYLETYPE_COUNT
00426 
00427 //! Enumeration for pattern types.
00428 enum PATTERNTYPE {
00429    PATTERNTYPE_Symbol = 0,
00430    PATTERNTYPE_Line =   1,
00431    PATTERNTYPE_Bitmap = 2,
00432    PATTERNTYPE_Hatch =  3,
00433    PATTERNTYPE_COUNT =  4,
00434    };
00435 #define  NUMPATTTYPES         PATTERNTYPE_COUNT
00436 
00437 /*
00438 ** "UserDefined" is ambiguious, but in this case, it means the "variable"
00439 ** color (which is what it's labeled on the symbol/pattern editor dialogs)
00440 ** Use PATTCOLOR_Variable.
00441 */
00442 #define  PATTCOLOR_Transparent         255
00443 #define  PATTCOLOR_UserDefined         254
00444 #define  PATTCOLOR_Variable            PATTCOLOR_UserDefined
00445 
00446 //! Information common to all patterns / symbols.
00447 struct RVCPATTHDR {
00448    RVC::OBJECTNAME name;               //!< Name
00449    INT16 numelements;                  //!< Number of elements used to define pattern
00450    INT16 numcolors;                    //!< Number of colors used in pattern
00451    };
00452    
00453 
00454 /*----------------------------------------------------------------------------*/
00455 /*    Definitions for bitmap pattern description structure                    */
00456 /*                                                                            */
00457 /*       Each pattern entry consists of a header (BITMAPPATTHDR), followed by */
00458 /*       the color map (array of COLORs with "numcolors" entries), followed   */
00459 /*       by the pattern (array of UBYTES with "xsize" * "ysize" elements.     */
00460 /*----------------------------------------------------------------------------*/
00461 
00462 //! Bitmap pattern header.
00463 struct BITMAPPATTHDR : public RVCPATTHDR {
00464    INT16 xsize;                        //!< X size
00465    INT16 ysize;                        //!< Y size
00466    INT16 xhot;                         //!< X hot              
00467    INT16 yhot;                         //!<  Y hot
00468    INT16 xspace;                       //!< X space
00469    INT16 yspace;                       //!< Y space
00470    };
00471 
00472 
00473 /*----------------------------------------------------------------------------*/
00474 /*    Definitions for line pattern description structure                      */
00475 /*                                                                            */
00476 /*       Each pattern entry consists of a header (LINEPATTHDR), followed by   */
00477 /*       the color map (array of COLORs with "numcolors" entries), followed   */
00478 /*       by the pattern elements.                                             */
00479 /*       All position and size values are in units of 1/100 millimeter.       */
00480 /*----------------------------------------------------------------------------*/
00481 
00482 //! Line pattern header.
00483 struct LINEPATTHDR : public RVCPATTHDR {
00484    INT16 extentsa;                     //!< Maximum extents of element "above" line (drawn left to right)
00485    INT16 extentsb;                     //!< Maximum extents of element "below" line (drawn left to right)
00486    };
00487 
00488 struct LINEPATTELEM {
00489    INT16 extrabytes;                   //!< Number of bytes in element not including header
00490    UINT8 type;                         //!< Pattern element type
00491    UINT8 colornum;                     //!< Color index in pattern-specific color map
00492    UINT16 flags;                       //!< Flags
00493    INT16 xoffset;                      //!< Offset along line from start
00494    INT16 xspacing;                     //!< Spacing between instances of element
00495    INT16 yoffset;                      //!< Offset above(-) or below(+) line
00496    INT16 xsize;                        //!< Size/Length of element
00497    INT16 thickness;                    //!< Thickness of element lines (if not filled)
00498    };
00499 
00500 #define  LINEPATTELEM_Line       0     //!< Line parallel to drawing direction, xsize=0 indicates continuous
00501 #define  LINEPATTELEM_CrossLine  1     //!< Line perpendicular to drawing direction
00502 #define  LINEPATTELEM_Circle     2     //!< Circle - xsize = radius
00503 #define  LINEPATTELEM_PolyLine   3     //!< PolyLine
00504 #define  LINEPATTELEM_Polygon    4     //!< Polygon
00505 
00506 #define  LINEPATTELEM_Last       4     //!< Last defined type
00507 
00508 #define  LINEPATTFLAG_Filled     0x0001//!< Fill (circle and polygon elements)
00509 #define  LINEPATTFLAG_JoinMiter  0x0002//!< Join "bent" segment mitered (extended)
00510 #define  LINEPATTFLAG_JoinBevel  0x0004//!< Join "bent" segment beveled
00511 #define  LINEPATTFLAG_CapRound   0x0008//!< Use rounded ends on line segments
00512 
00513 
00514 /*----------------------------------------------------------------------------*/
00515 /*    Definitions for hatch pattern description structure                     */
00516 /*                                                                            */
00517 /*       Each pattern entry consists of a header (HATCHPATTHDR), followed by  */
00518 /*       the color map (array of COLORs with "numcolors" entries), followed   */
00519 /*       by the pattern elements.                                             */
00520 /*       All position and size values are in units of 1/100 millimeter.       */
00521 /*----------------------------------------------------------------------------*/
00522 
00523 //! Hatch pattern header.
00524 struct HATCHPATTHDR : public RVCPATTHDR {
00525    UINT8 spare[4];                     //!< Double alignment
00526    };
00527 
00528 //! Hatch pattern element structure.
00529 struct HATCHPATTELEM {
00530    UINT8 type;                         //!< Pattern element type: simple or line pattern
00531    UINT8 colornum;                     //!< Color index in pattern-specific color map
00532    UINT8 isvisible;                    //!< Flag for turning element on/off
00533    UINT8 space;                        //!< Space
00534    UINT32 linedatasize;                //!< Size of the line pattern data attached
00535    UINT32 flags;                       //!< Flags
00536    UINT8 spare[4];                     //!< Double alignment
00537    DOUBLE xoffset;                     //!< Origin offset
00538    DOUBLE yoffset;                     //!< Origin offset
00539    DOUBLE spacing;                     //!< Spacing between instances of element
00540    DOUBLE angle;                       //!< Angle of element
00541    DOUBLE thickness;                   //!< Thickness of element lines
00542    };
00543 
00544 #define  HATCHPATTELEM_Simple       0  //!< Simple solid lines
00545 #define  HATCHPATTELEM_LinePattern  1  //!< Line pattern
00546 #define  HATCHPATTELEM_SolidFill    2  //!< Fill with solid color
00547 #define  HATCHPATTELEM_Last         2  //!< Last defined type
00548 
00549 /*----------------------------------------------------------------------------*/
00550 /*    Definitions for symbol description structure                            */
00551 /*                                                                            */
00552 /*       Each pattern entry consists of a header (SYMBOLHDR), followed by     */
00553 /*       the color map (array of COLORs with "numcolors" entries), followed   */
00554 /*       by the symbol elements.                                              */
00555 /*       All position and size values are in units of 1/100 millimeter.       */
00556 /*----------------------------------------------------------------------------*/
00557 
00558 //! Symbol header.
00559 struct SYMBOLHDR : public RVCPATTHDR {
00560    INT16 xsize;                        //!< X size
00561    INT16 ysize;                        //!< Y size
00562    INT16 xhot;                         //!< X hot
00563    INT16 yhot;                         //!< Y hot
00564    UINT16 flags;                       //!< Flags
00565    UINT8 spare[2];                     //!< Double alignment
00566    };
00567 
00568 #define SYMBOLHDRFLAG_OldSymbol     (0x8000)
00569 
00570 /* rotation and angles are in 1/64th of a degree */
00571 
00572 union SYMBOLDATA {
00573    struct { INT16 x, y, radius; } circle;
00574    struct { INT16 x, y, radius, sangle, eangle; } arc;
00575    struct { INT16 x, y, xsize, ysize, rotate; } ellipse;
00576    struct { INT16 x, y, xsize, ysize, sangle, eangle, rotate; } earc;
00577    struct { INT16 x, y; } point;
00578    struct { INT16 x1, y1, x2, y2; UINT16 capstyle; } segment;
00579    struct { INT16 x, y, xsize, ysize, rotate, shear; UINT16 joinstyle; } rectangle;
00580    struct { UINT16 numpoints, joinstyle, capstyle; } line;
00581    struct { UINT16 numpoints, joinstyle; } polygon;
00582    struct { UINT16 numchars, fontnum, fontstyle, flags;
00583             INT16 x, y, height, rotate, shear, textrot, xscale; } text;
00584    struct { UINT16 numpoints, joinstyle, capstyle; } spline;
00585    struct { UINT16 numpoints, joinstyle, capstyle; } ttfsymbol;
00586    struct { UINT16 numpoints, joinstyle, numpolys; } polygons;
00587    INT16 spare[12];
00588    };
00589 
00590 //! Symbol element structure.
00591 struct SYMBOLELEM {
00592    SYMBOLDATA data;                    //!< Union of element structures
00593    UINT32 numbytes;                    //!< Number of bytes
00594    INT16 thickness;                    //!< Thickness of element lines (if not filled)
00595    UINT16 flags;                       //!< Flags
00596    UINT8 type;                         //!< Type of element stored
00597    UINT8 colornum;                     //!< Color index in pattern-specific color map
00598    UINT8 spare[2];                     //!< Double alignment
00599    };
00600 
00601 /* Extra bytes for lines, text, and polygons */
00602 
00603 /* Defined types */
00604 #define PTSYM_NULL         0           //!< Empty element, maybe for deletes?
00605 #define PTSYM_Circle       1
00606 #define PTSYM_Arc          2  
00607 #define PTSYM_ArcWedge     3
00608 #define PTSYM_ArcChord     4
00609 #define PTSYM_Ellipse      5
00610 #define PTSYM_EArc         6
00611 #define PTSYM_EArcWedge    7
00612 #define PTSYM_EArcChord    8
00613 #define PTSYM_Line         9
00614 #define PTSYM_Polygon      10
00615 #define PTSYM_Point        11
00616 #define PTSYM_Text         12
00617 #define PTSYM_Segment      13
00618 #define PTSYM_Rectangle    14
00619 #define PTSYM_Polygons     15          //!< Multiple polygons with islands
00620 #define PTSYM_Splines      16          //!< Splines of the type used in TrueType
00621 
00622 #define PTSYM_Last         16          //!< Last element type defined
00623 
00624 #define  SYMBOLFLAG_Filled    0x0001   //!< Fill polygonal elements
00625 
00626 /*----------------------------------------------------------------------------*/
00627 /*    Function prototypes                                                     */
00628 /*----------------------------------------------------------------------------*/
00629 
00630 #if defined(__cplusplus)
00631 extern "C" {
00632 #endif
00633 
00634 #ifndef GENERATING_DOXYGEN_OUTPUT
00635 
00636 RVCAPPLIBEXPORT int _MfStyleClose (
00637    int,
00638    RVCSTYLEINFO*,
00639    int
00640    );
00641 
00642 RVCAPPLIBEXPORT int _MfStyleMake (
00643    int,
00644    RVCSTYLEINFO*,
00645    int,
00646    UINT32
00647    );
00648 
00649 RVCAPPLIBEXPORT int _MfStyleOpen (
00650    int,
00651    INT32,
00652    RVCSTYLEINFO*,
00653    int,
00654    UINT32
00655    );
00656 
00657 RVCAPPLIBEXPORT int _MfStyleRead (
00658    int,
00659    int type,
00660    INT32,
00661    void*,
00662    int
00663    );
00664 
00665 RVCAPPLIBEXPORT ERRVALUE _MfStyleWrite (
00666    int,
00667    int type,
00668    INT32,
00669    void*,
00670    int
00671    );
00672 
00673 #endif //!< GENERATING_DOXYGEN_OUTPUT
00674 
00675 #if !defined(NO_DEPRECATED) || defined(RVCAPPDLL)  // DEPRECATED
00676 //! Convert an RVC point style structure to a point style structure.
00677 //! \deprecated - Replaced by RVC::STYLE::Read()
00678 RVCAPPLIBEXPORT int MfConvertRVCPOINTSTYLEtoPOINTSTYLE (
00679    int id,                             //!< Style object
00680    RVCPOINTSTYLE *rvcstyle,            //!< RVC style structure
00681    POINTSTYLE *style,                  //!< Non-RVC style structure
00682    UINT32 flags                        //!< Flags (none defined)
00683    );
00684 
00685 //! Convert an RVC line style structure to a line style structure.
00686 //! \deprecated - Replaced by RVC::STYLE::Read()
00687 RVCAPPLIBEXPORT int MfConvertRVCLINESTYLEtoLINESTYLE (
00688    int id,                             //!< Style object
00689    RVCLINESTYLE *rvcstyle,             //!< RVC style structure
00690    LINESTYLE *style,                   //!< Non-RVC style structure
00691    UINT32 flags                        //!< Flags (none defined)
00692    );
00693 
00694 //! Convert an RVC polygon structure to a line style structure.
00695 //! \deprecated - Replaced by RVC::STYLE::Read()
00696 //!
00697 //! This function copys the border information from the RVCPOLYGONSTYLE
00698 //! into a LINESTYLE
00699 RVCAPPLIBEXPORT int MfConvertRVCPOLYSTYLEtoLINESTYLE (
00700    int id,                             //!< Style object
00701    RVCPOLYGONSTYLE *rvcstyle,             //!< RVC style structure
00702    LINESTYLE *style,                   //!< Non-RVC style structure
00703    UINT32 flags                        //!< Flags (none defined)
00704    );
00705 
00706 //! Convert an RVC polygon style structure to a polygon style structure.
00707 //! \deprecated - Replaced by RVC::STYLE::Read()
00708 RVCAPPLIBEXPORT int MfConvertRVCPOLYSTYLEtoPOLYSTYLE (
00709    int id,                             //!< Style object
00710    RVCPOLYGONSTYLE *rvcstyle,             //!< RVC style structure
00711    POLYSTYLE *style,                   //!< Non-RVC style structure
00712    UINT32 flags                        //!< Flags (none defined)
00713    );
00714 #endif
00715 
00716 //! Replace a opened style object with a new style object.
00717 RVCAPPLIBEXPORT int MfReplaceStyle (
00718    int sfindex,                        //!< Open RVC file handle of source style object
00719    INT32 sinode,                       //!< Inode of source style object (may be opened)
00720    int dfindex,                        //!< Open RVC file handle of destination style object
00721    INT32 dinode                        //!< Inode of destination style object (may be opened)
00722    );
00723 
00724 //! Delete a style entry from a style object.
00725 //!
00726 //! @returns error code if < 0 or the style swapped for the style to be deleted
00727 //! Permitted style types:
00728 //!   STYLETYPE_Point
00729 //!   STYLETYPE_Line
00730 //!   STYLETYPE_Polygon
00731 //!   STYLETYPE_Text
00732 //! This routine works by swapping the end style with the style to
00733 //! delete and then shrinking the object to number of original styles - 1
00734 //! This value is what is returned so that any references to that style
00735 //! can now be changed.
00736 RVCAPPLIBEXPORT INT32 MfDeleteStyle (
00737    int id,                             //!< Open style object handle
00738    int type,                           //!< Type of style to delete, see below
00739    INT32 num                           //!< The style entry to delete
00740    );
00741 
00742 //! Delete all of the styles of a specific type from a style object.
00743 //!
00744 //! Permitted style types:
00745 //!   STYLETYPE_Point
00746 //!   STYLETYPE_Line
00747 //!   STYLETYPE_Polygon
00748 //!   STYLETYPE_Text
00749 RVCAPPLIBEXPORT int MfDeleteStyleType (
00750    int id,                             //!< Open style object handle
00751    int type                            //!< Type of style to delete, see below
00752    );
00753 
00754 //! Return the number of a particular style.
00755 //!
00756 //! @return number of styles if >= 0 or error code if < 0.
00757 //! Types of styles:
00758 //!   STYLETYPE_Point      Point styles
00759 //!   STYLETYPE_Line    Line styles
00760 //!   STYLETYPE_Polygon    Polygon styles
00761 //!   STYLETYPE_Text    Text styles
00762 RVCAPPLIBEXPORT INT32 MfGetStyleCount (
00763    int id,                             //!< Handle to open style object
00764    int type                            //!< Type of style (STYLETYPE_...)
00765    );
00766 
00767 //! Search the style element for a specific name, checking specified position first.
00768 //!
00769 //! @return style entry number if >= 0, -1 if not found, < -1 error.
00770 //! Permitted style types:
00771 //!   STYLETYPE_Point
00772 //!   STYLETYPE_Line
00773 //!   STYLETYPE_Polygon
00774 //!   STYLETYPE_Text
00775 RVCAPPLIBEXPORT INT32 MfStyleLocate (
00776    int id,                             //!< Open style object handle
00777    int type,                           //!< Type of style to search, see below
00778    INT32 start,                        //!< Which style entry to start searching at
00779    const UNICODE* name                 //!< Name of style to find
00780    );
00781 
00782 
00783 //! Return a font handle from a given index.
00784 //!
00785 //! @return error code if < 0 or open font handle
00786 RVCAPPLIBEXPORT int MfFontTransIndexToHandle (
00787    int id,                             //!< Open style object handle
00788    INT32 num                           //!< Index of font name
00789    );
00790 
00791 
00792 //! Return number of font names.
00793 //!
00794 //! @return number of font names or < 0 if error
00795 RVCAPPLIBEXPORT INT32 MfGetFontNameCount (
00796    int id                              //!< Handle to open style object
00797    );
00798 
00799 //! Delete a pattern from a style object.
00800 //!
00801 //! @return error code if < 0 or the pattern swapped for the pattern to be deleted
00802 //!Permitted pattern types:
00803 //!   PATTERNTYPE_Symbol
00804 //!   PATTERNTYPE_Line
00805 //!   PATTERNTYPE_Bitmap
00806 //! This routine works by swapping the end pattern with the pattern to
00807 //! delete and then shrinking the object to number of original patterns - 1
00808 //! This value is what is returned so that any references to that pattern
00809 //! can now be changed.
00810 RVCAPPLIBEXPORT INT32 MfDeletePattern (
00811    int id,                             //!< Open style object handle
00812    int type,                           //!< Type of pattern to delete, see below
00813    INT32 num                           //!< The pattern entry to delete
00814    );
00815 
00816 //! Search for pattern by name, checking specified position first.
00817 //!
00818 //! @return pattern entry number if >= 0, -1 if not found, < -1 error
00819 //! Permitted pattern types:
00820 //!   PATTERNTYPE_Symbol
00821 //!   PATTERNTYPE_Line
00822 //!   PATTERNTYPE_Bitmap
00823 RVCAPPLIBEXPORT INT32 MfFindPattern (
00824    int id,                             //!< Open style object handle
00825    int type,                           //!< Type of pattern to search, see below
00826    INT32 start,                        //!< Which pattern entry to start searching at
00827    const UNICODE *name                 //!< Name of pattern to find
00828    );
00829 
00830 //! Return the number of patterns stored.
00831 //!
00832 //! @return number of patterns if >= 0, else error code
00833 //! Defined pattern types:
00834 //!   PATTERNTYPE_Symbol   Point symbol patterns
00835 //!   PATTERNTYPE_Line     Line patterns
00836 //!   PATTERNTYPE_Bitmap   Polygon fill patterns
00837 RVCAPPLIBEXPORT INT32 MfGetPatternCount (
00838    int id,                             //!< Handle to open style object
00839    int type                            //!< Type of pattern (PATTTYPE_...)
00840    );
00841 
00842 //! Return the maximum size of a pattern.
00843 //!
00844 //! @return size of largest pattern if >= 0, else error code
00845 //! Defined pattern types:
00846 //!   PATTERNTYPE_Symbol   Point symbol patterns
00847 //!   PATTERNTYPE_Line     Line patterns
00848 //!   PATTERNTYPE_Bitmap   Polygon fill patterns
00849 RVCAPPLIBEXPORT INT32 MfGetPatternMaxSize (
00850    int id,                             //!< Handle to open style object
00851    int type                            //!< Type of pattern (PATTTYPE_...)
00852    );
00853 
00854 //! Return the size of a particular pattern.
00855 //!
00856 //! @return size of pattern if >= 0, else error code
00857 //! Defined pattern types:
00858 //!   PATTERNTYPE_Symbol   Point symbol patterns
00859 //!   PATTERNTYPE_Line     Line patterns
00860 //!   PATTERNTYPE_Bitmap   Polygon fill patterns
00861 RVCAPPLIBEXPORT INT32 MfGetPatternSize (
00862    int id,                             //!< Handle to open style object
00863    int type,                           //!< Type of pattern (PATTTYPE_...)
00864    INT32 num                           //!< Number of pattern to get the size from
00865    );
00866 
00867 //! Read entire pattern into a buffer.
00868 //!
00869 //! Defined pattern types:
00870 //!   PATTERNTYPE_Symbol   Point symbol patterns
00871 //!   PATTERNTYPE_Line     Line patterns
00872 //!   PATTERNTYPE_Bitmap   Polygon fill patterns
00873 RVCAPPLIBEXPORT int MfReadPattern (
00874    int id,                             //!< Handle to open style object
00875    int type,                           //!< Type of pattern (PATTTYPE_...)
00876    INT32 num,                          //!< Number of pattern to read from
00877    void *data                          //!< Pattern returned (defined in rvcstyle.h)
00878    );
00879 
00880 //! Read a particular pattern header.
00881 //!
00882 //! Defined pattern types:
00883 //!   PATTERNTYPE_Symbol   Point symbol patterns
00884 //!   PATTERNTYPE_Line     Line patterns
00885 //!   PATTERNTYPE_Bitmap   Polygon fill patterns
00886 RVCAPPLIBEXPORT int MfReadPatternHdr (
00887    int id,                             //!< Handle to open style object
00888    int type,                           //!< Type of pattern (PATTTYPE_...)
00889    INT32 num,                          //!< Number of pattern to read header from
00890    void *hdr                           //!< Header of pattern returned (defined in rvcstyle.h)
00891    );
00892 
00893 //! Write a particular pattern.
00894 //!
00895 //! Defined pattern types:
00896 //!   PATTERNTYPE_Symbol   Point symbol patterns
00897 //!   PATTERNTYPE_Line     Line patterns
00898 //!   PATTERNTYPE_Bitmap   Polygon fill patterns
00899 RVCAPPLIBEXPORT int MfWritePattern (
00900    int id,                             //!< Handle to open style object
00901    int type,                           //!< Type of pattern (PATTTYPE_...)
00902    INT32 num,                          //!< Number of pattern to write to
00903    void *data                          //!< Pattern to write (defined in rvcstyle.h)
00904    );
00905 
00906 #define MfCloseStyle(_id,_info)                 _MfStyleClose((_id),(_info),sizeof(RVCSTYLEINFO))
00907 #define MfFindStyle(_id,_t,_s,_n,_buf)          MfStyleLocate((_id),(_t),(_s),(_n))
00908 #define MfOpenStyle(_fd,_oi,_info,_fl)          _MfStyleOpen((_fd),(_oi),(_info),sizeof(RVCSTYLEINFO),(_fl))
00909 #define MfMakeStyle(_fd,_info,_fl)              _MfStyleMake((_fd),(_info),sizeof(RVCSTYLEINFO),(_fl))
00910 
00911 #if defined(__cplusplus)
00912 }
00913 #endif
00914 
00915 //! Search the font trans table for a specific name, checking specified position first.
00916 //!
00917 //! @return -1 if not found, >= 0 (font index) if found, or error code.
00918 RVCAPPLIBEXPORT INT32 MfFindFontName (
00919    int id,                             //!< Handle to open style object
00920    INT32 start,                        //!< Place to start the search
00921    MISTRING& name                      //!< Name to font to search for
00922    );
00923    
00924 //! Add a font name to the list of used fonts.
00925 //!
00926 //! @return index to font name or < 0 if error.
00927 //! NOTE: If the font name already exists then the return value is the index of that font name, otherwise
00928 //! it creates a new entry and returns the new index.
00929 //! See also: MfFindFontName
00930 RVCAPPLIBEXPORT int MfFontTransAdd (
00931    int id,                             //!< Open style object handle
00932    const MISTRING& name                //!< Name of font to add to the list
00933    );
00934 
00935 //! Return a font name from a given index.
00936 RVCAPPLIBEXPORT int MfFontTransIndexToName (
00937    int id,                             //!< Open style object handle
00938    INT32 num,                          //!< Index of font name to read
00939    MISTRING& name                      //!< Name
00940    );
00941 
00942 //! Read a particular pattern name.
00943 //!
00944 //! Defined pattern types:
00945 //!   PATTERNTYPE_Symbol   Point symbol patterns
00946 //!   PATTERNTYPE_Line     Line patterns
00947 //!   PATTERNTYPE_Bitmap   Polygon fill patterns
00948 RVCAPPLIBEXPORT int MfReadPatternName (
00949    int id,                             //!< Handle to open style object
00950    int type,                           //!< Type of pattern (PATTTYPE_...)
00951    INT32 num,                          //!< Number of pattern to read name from
00952    RVC::OBJECTNAME& name               //!< Name of pattern returned
00953    );
00954 
00955 //! Read a particular style's name
00956 //!
00957 //! Defined style types:
00958 //!   STYLETYPE_Line       Line styles
00959 //!   STYLETYPE_Point      Point styles
00960 //!   STYLETYPE_Polygon    Polygon styles
00961 //!   STYLETYPE_Text       Text styles
00962 RVCAPPLIBEXPORT int MfReadStyleName (
00963    int id,                             //!< Handle to open style object
00964    int type,                           //!< Type of pattern (STYLETYPE_...)
00965    INT32 num,                          //!< Number of style to read name from
00966    RVC::OBJECTNAME& name               //!< Name of style returned
00967    );
00968    
00969 //! Write a particular pattern name.
00970 //!
00971 //! Defined pattern types:
00972 //!   PATTERNTYPE_Symbol   Point symbol patterns
00973 //!   PATTERNTYPE_Line     Line patterns
00974 //!   PATTERNTYPE_Bitmap   Polygon fill patterns
00975 RVCAPPLIBEXPORT int MfWritePatternName (
00976    int id,                             //!< Handle to open style object
00977    int type,                           //!< Type of pattern (PATTTYPE_...)
00978    INT32 num,                          //!< Number of pattern to write name to
00979    RVC::OBJECTNAME& name               //!< Name of pattern to write
00980    );
00981 
00982 //! Import point symbols from RVC CAD blocks.
00983 //! If the CAD object only has one block, it is converted to a symbol.
00984 //! If the CAD object has > 1 block, the first block is ignored and all the
00985 //! other blocks are imported using the block names for new symbol names.
00986 ERRVALUE MfImportPointSymbolsFromCAD (
00987    RVC::STYLE& StyleObj,               //!< Style object to import to
00988    const RVC::OBJITEM& ObjItemCAD      //!< CAD object to import from
00989    );
00990 
00991 //! Import point symbols from RVC CAD blocks.
00992 //! If the CAD object only has one block, it is converted to a symbol.
00993 //! If the CAD object has > 1 block, the first block is ignored and all the
00994 //! other blocks are imported using the block names for new symbol names.
00995 ERRVALUE MfImportPointSymbolsFromCAD (
00996    int id,                             //!< Handle to open style object (must be open for write)
00997    const UNICODE* filename,            //!< Name of RVC file to read from
00998    INT32 inode                         //!< Inode of CAD object 
00999    );
01000 
01001 //! Create a point symbol from a CGM (Computer Graphics Metafile) file
01002 ERRVALUE MfImportPointSymbolFromCGM (
01003    RVC::STYLE& StyleObj,               //!< Style object to import to
01004    const RVC::OBJECTNAME& SymbolName,  //!< Name to give the new symbol
01005    const FILEPATH& FilePathCGM         //!< Path to CGM file
01006    );
01007 
01008 //! Create a point symbol from a CGM (Computer Graphics Metafile) file
01009 ERRVALUE MfImportPointSymbolFromCGM (
01010    int id,                             //!< Handle to open style object (must be open for write)
01011    const RVC::OBJECTNAME& SymbolName,  //!< Name to give the new symbol
01012    const UNICODE* filename             //!< Name of CGM file to read from
01013    );
01014 
01015 //! Create a point symbol from a TrueType glyph
01016 ERRVALUE MfImportPointSymbolFromTTF (  
01017    RVC::STYLE& StyleObj,               //!< Style object to import to
01018    const RVC::OBJECTNAME& SymbolName,  //!< Name to give the new symbol
01019    const UNICODE* FontName,            //!< Name for TrueType font to read from
01020    int GlyphIndex                      //!< Glyph Index (not ASCII or Unicode value)
01021    );
01022 
01023 //! Create a point symbol from a TrueType glyph
01024 ERRVALUE MfImportPointSymbolFromTTF (  
01025    int id,                             //!< Handle to open style object (must be open for write)
01026    const RVC::OBJECTNAME& SymbolName,  //!< Name to give the new symbol
01027    const UNICODE* FontName,            //!< Name for TrueType font to read from
01028    int GlyphIndex                      //!< Glyph Index (not ASCII or Unicode value)
01029    );
01030 
01031 //! Read an RVCLINESTYLE structure.
01032 inline int MfStyleRead (
01033    int ohandle,                        //!< Open RVC style object handle
01034    INT32 idx,                          //!< Number of style to read
01035    RVCLINESTYLE& style                 //!< Structure to read style into
01036    ) {
01037    return (_MfStyleRead(ohandle,STYLETYPE_Line,idx,&style,sizeof(style)));
01038    }
01039 
01040 //! Read an RVCPOINTSTYLE structure.
01041 inline int MfStyleRead (
01042    int ohandle,                        //!< Open RVC style object handle
01043    INT32 idx,                          //!< Number of style to read
01044    RVCPOINTSTYLE& style                //!< Structure to read style into
01045    ) {
01046    return (_MfStyleRead(ohandle,STYLETYPE_Point,idx,&style,sizeof(style)));
01047    }
01048 
01049 //! Read an RVCPOLYGONSTYLE structure.
01050 inline int MfStyleRead (
01051    int ohandle,                        //!< Open RVC style object handle
01052    INT32 idx,                          //!< Number of style to read
01053    RVCPOLYGONSTYLE& style                 //!< Structure to read style into
01054    ) {
01055    return (_MfStyleRead(ohandle,STYLETYPE_Polygon,idx,&style,sizeof(style)));
01056    }
01057 
01058 //! Read an RVCTEXTSTYLE structure.
01059 inline int MfStyleRead (
01060    int ohandle,                        //!< Open RVC style object handle
01061    INT32 idx,                          //!< Number of style to read
01062    RVCTEXTSTYLE& style                 //!< Structure to read style into
01063    ) {
01064    return (_MfStyleRead(ohandle,STYLETYPE_Text,idx,&style,sizeof(style)));
01065    }
01066 
01067 //! Read an RVCLINESTYLE structure.
01068 inline int MfStyleReadLine (
01069    int ohandle,                        //!< Open RVC style object handle
01070    INT32 idx,                          //!< Number of style to read
01071    RVCLINESTYLE *style                 //!< Structure to read style into
01072    ) {
01073    return (MfStyleRead(ohandle,idx,*style));
01074    }
01075 
01076 //! Read an RVCPOINTSTYLE structure.
01077 inline int MfStyleReadPoint (
01078    int ohandle,                        //!< Open RVC style object handle
01079    INT32 idx,                          //!< Number of style to read
01080    RVCPOINTSTYLE *style                //!< Structure to read style into
01081    ) {
01082    return (MfStyleRead(ohandle,idx,*style));
01083    }
01084 
01085 //! Read an RVCPOLYGONSTYLE structure.
01086 inline int MfStyleReadPoly (
01087    int ohandle,                        //!< Open RVC style object handle
01088    INT32 idx,                          //!< Number of style to read
01089    RVCPOLYGONSTYLE *style                 //!< Structure to read style into
01090    ) {
01091    return (MfStyleRead(ohandle,idx,*style));
01092    }
01093 
01094 //! Read an RVCTEXTSTYLE structure.
01095 inline int MfStyleReadText (
01096    int ohandle,                        //!< Open RVC style object handle
01097    INT32 idx,                          //!< Number of style to read
01098    RVCTEXTSTYLE *style                 //!< Structure to read style into
01099    ) {
01100    return (MfStyleRead(ohandle,idx,*style));
01101    }
01102 
01103 //! Write an RVCLINESTYLE structure.
01104 inline int MfStyleWrite (
01105    int ohandle,                        //!< Open RVC style object handle
01106    INT32 idx,                          //!< Number of style to write
01107    RVCLINESTYLE& style                 //!< Structure to write style into
01108    ) {
01109    return (_MfStyleWrite(ohandle,STYLETYPE_Line,idx,&style,sizeof(style)));
01110    }
01111 
01112 //! Write an RVCPOINTSTYLE structure.
01113 inline int MfStyleWrite (
01114    int ohandle,                        //!< Open RVC style object handle
01115    INT32 idx,                          //!< Number of style to write
01116    RVCPOINTSTYLE& style                //!< Structure to write style into
01117    ) {
01118    return (_MfStyleWrite(ohandle,STYLETYPE_Point,idx,&style,sizeof(style)));
01119    }
01120 
01121 //! Write an RVCPOLYGONSTYLE structure.
01122 inline int MfStyleWrite (
01123    int ohandle,                        //!< Open RVC style object handle
01124    INT32 idx,                          //!< Number of style to write
01125    RVCPOLYGONSTYLE& style                 //!< Structure to write style into
01126    ) {
01127    return (_MfStyleWrite(ohandle,STYLETYPE_Polygon,idx,&style,sizeof(style)));
01128    }
01129 
01130 //! Write an RVCTEXTSTYLE structure.
01131 inline int MfStyleWrite (
01132    int ohandle,                        //!< Open RVC style object handle
01133    INT32 idx,                          //!< Number of style to write
01134    RVCTEXTSTYLE& style                 //!< Structure to write style into
01135    ) {
01136    return (_MfStyleWrite(ohandle,STYLETYPE_Text,idx,&style,sizeof(style)));
01137    }
01138 
01139 //! Write an RVCLINESTYLE structure.
01140 inline int MfStyleWriteLine (
01141    int ohandle,                        //!< Open RVC style object handle
01142    INT32 idx,                          //!< Number of style to write
01143    RVCLINESTYLE *style                 //!< Structure to write style into
01144    ) {
01145    return (MfStyleWrite(ohandle,idx,*style));
01146    }
01147 
01148 //! Write an RVCPOINTSTYLE structure.
01149 inline int MfStyleWritePoint (
01150    int ohandle,                        //!< Open RVC style object handle
01151    INT32 idx,                          //!< Number of style to write
01152    RVCPOINTSTYLE *style                //!< Structure to write style into
01153    ) {
01154    return (MfStyleWrite(ohandle,idx,*style));
01155    }
01156 
01157 //! Write an RVCPOLYGONSTYLE structure.
01158 inline int MfStyleWritePoly (
01159    int ohandle,                        //!< Open RVC style object handle
01160    INT32 idx,                          //!<