00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071 #ifndef INC_MI32_MG2PDF_H
00072 #define INC_MI32_MG2PDF_H
00073
00074 #ifndef INC_MI32_MGD2_H
00075 #include <mi32/mgd2.h>
00076 #endif
00077
00078 #ifndef INC_MI32_FILERAW_H
00079 #include <mi32/fileraw.h>
00080 #endif
00081
00082 #ifndef INC_REGION2D_H
00083 #include <mi32/region2d.h>
00084 #endif
00085
00086 #ifndef INC_MI32_RVCSTYLE_H
00087 #include <mi32/rvcstyle.h>
00088 #endif
00089
00090 #ifndef INC_MI32_MISTRINGLIST_H
00091 #include <mi32/mistringlist.h>
00092 #endif
00093
00094 #ifndef NOLIBZ
00095 #include <zlib.h>
00096 #endif
00097
00098
00099 #ifndef GENERATING_DOXYGEN_OUTPUT
00100
00101 namespace GRE {
00102 class LAYER;
00103 class GROUP;
00104 }
00105 namespace RVC {
00106 class ELEMENT;
00107 }
00108 #endif
00109
00110
00111 #define MAXLINELEN 79
00112
00113 #define FLAG_NoSpace 1
00114 #define FLAG_EOL 2
00115 #define FLAG_OptEOL 4
00116 #define FLAG_SJIS 8
00117 #define FLAG_NoEOL 16 // force append
00118
00119 #define STREAM_ForImage 0x00000001
00120 #define FILTER_ASCIIHEX 0x00000002
00121 #define FILTER_FLATE 0x00000004
00122 #define STREAM_ForLayer 0x00000008
00123
00124
00125 #define PROCSET_PDF 0x00000001
00126 #define PROCSET_ImageC 0x00000002
00127 #define PROCSET_ImageB 0x00000004
00128 #define PROCSET_ImageI 0x00000008
00129 #define PROCSET_Text 0x00000010
00130
00131 #define HexStr "0123456789ABCDEF"
00132
00133 #define GlyphPrecision 3
00134
00135 #define NUMBER_OF_STD_FONTS 26 //Treated as standard adobe fonts to reduce file size even though
00136
00137
00138 static char StandardFonts[26][32] = {
00139 "Courier",
00140 "CourierBold",
00141 "CourierBoldOblique",
00142 "CourierOblique",
00143 "CourierNew",
00144 "CourierNew-Bold",
00145 "CourierNew-Italic",
00146 "CourierNew-BoldItalic",
00147 "Helvetica",
00148 "Helvetica-Bold",
00149 "Helvetica-BoldItalic",
00150 "Helvetica-Italic",
00151 "TimesRoman-BoldItalic",
00152 "TimesRoman-Bold",
00153 "TimesRoman-Italic",
00154 "TimesRoman",
00155 "TimesNewRoman" ,
00156 "TimesNewRoman-BoldItalic" ,
00157 "TimesNewRoman-Bold" ,
00158 "TimesNewRoman-Italic" ,
00159 "Arial",
00160 "ArialMT",
00161 "Arial-Bold",
00162 "Arial-BoldItalic",
00163 "Symbol",
00164 "ZaphDingbats"
00165 };
00166
00167 #define PATSCALE 2
00168 #define PATAND (PATSCALE-1)
00169 #define PATSHIFT 1
00170
00171 #define BEZIER (4.0*(sqrt(2.0)-1.0)/3.0) // used to convert circles to bezier curves
00172
00173 struct PDFPRIVDISP;
00174
00175
00176 namespace MGD {
00177
00178 class CONTEXT_PDF2;
00179
00180 class DEVICE_PDF2 : public MGD::DEVICE {
00181
00182 public:
00183
00184 DEVICE_PDF2 ();
00185
00186 DEVICE_PDF2 (
00187 const DPOINT2D& size,
00188 const DPOINT2D& margin,
00189 const DOUBLE res
00190 );
00191
00192 virtual ~DEVICE_PDF2();
00193
00194 ERRVALUE AddPage (
00195 DPOINT2D& FullPageSize,
00196 DPOINT2D& TopLeftMargin,
00197 const MIUNICODE* title,
00198 double dpi
00199 );
00200
00201 ERRVALUE Create (
00202 const FILEPATH& filepath,
00203 DPOINT2D& FullPageSize,
00204 DPOINT2D& TopLeftMargin,
00205 const MIUNICODE* title = NULL
00206 );
00207
00208 ERRVALUE Close();
00209
00210 ERRVALUE StartElement (
00211 GRE::LAYER *layer,
00212 const RVC::ELEMENT &element
00213 );
00214
00215 ERRVALUE EndElement (
00216 );
00217
00218 ERRVALUE EndLayer ();
00219
00220 void EndPage ()
00221 { m_Pages.PushBack(m_CurrentPage); }
00222
00223 ERRVALUE StartLayer (
00224 const MISTRING& layername,
00225 bool bIsRaster
00226 );
00227
00228 ERRVALUE StartLayerStream (
00229 );
00230
00231 void SetLayer (
00232 GRE::LAYER* layer
00233 ) { m_Layer = layer; }
00234
00235 void SetIncludeLayerVisibility(
00236 bool vis
00237 ){ m_bIncludeLayerVisibility = vis; }
00238
00239 ERRVALUE EndGroup (
00240 GRE::GROUP* gp,
00241 const TRANS2D_AFFINE& DispToGroup
00242 );
00243
00244 ERRVALUE BeginGroup (
00245 GRE::GROUP* gp
00246 );
00247
00248 int DumpFillPatternLayer (
00249 BITMAPPATTHDR *hdr,
00250 UINT8 *bitmap,
00251 int c,
00252 COLOR *color
00253 );
00254
00255 void RenderFonts (
00256 bool render = true
00257 ) {
00258 m_bVersion10 = render;
00259 }
00260
00261 void EmbedFonts (
00262 bool embed
00263 ) {
00264 m_bEmbedFonts = embed;
00265 }
00266
00267 void SubstitueCourier (
00268 bool subcourier
00269 ) {
00270 m_bSubstituteCourier = subcourier;
00271 }
00272
00273 void SetScaleZeroWidth (
00274 bool scaleit
00275 ) {
00276 m_ScaleZeroWidth = scaleit;
00277 }
00278
00279 void SetReferenceIndex (
00280 int ref
00281 ) {
00282 m_reference = ref;
00283 }
00284
00285 private:
00286 #ifndef GENERATING_DOXYGEN_OUTPUT
00287
00288 struct PATTERN {
00289 void GetName (
00290 const COLOR *var,
00291 char *name
00292 ) const;
00293
00294 char m_name[32];
00295 unsigned defined:1,
00296 redundant:1,
00297 HasVarColor:1,
00298 HasTransparent:1,
00299 SpareBits:28;
00300 int PaintType;
00301 int OtherColorsUsed;
00302 int PatternNum;
00303 int Version;
00304 UINT8 ColorUsage[256/8];
00305 int NumVarColorsUsed;
00306 UINT8 *pattbuf;
00307 int size;
00308 int id;
00309 int *ids;
00310 BITMAPPATTHDR *hdr;
00311 COLOR *colors;
00312 UINT8 *bitmap;
00313 COLOR *VarColor;
00314 struct PATTERN *alias;
00315 };
00316
00317 struct PDF_FONT {
00318 MISTRING name,file;
00319 TEXTSTYLE textstyle;
00320 FONTINFO fontinfo;
00321 UINT16 widths[512];
00322 int avgwidth;
00323 int maxwidth;
00324 bool embed;
00325 MISTRING type;
00326 UINT32 flags;
00327 int ID;
00328 };
00329
00330 struct PAGE {
00331 INT32 pagey;
00332 INT32 pagex;
00333 INT32 lm;
00334 INT32 tm;
00335 INT64 id;
00336 MISTRINGLIST viewports;
00337 MILIST<PDF_FONT> fonts;
00338 MISTRINGLIST LayerNames;
00339 MISTRINGLIST GroupNames;
00340 SIMPLE_ARRAY<UINT32> LayerIndexes;
00341 SIMPLE_ARRAY<bool> LayerIsGroup;
00342 SIMPLE_ARRAY<bool> LayerVisibilities;
00343 SIMPLE_ARRAY<double> TranspStates;
00344 SIMPLE_ARRAY<UINT32> StreamIDs;
00345 SIMPLE_ARRAY<UINT32> ImageIDs;
00346
00347 };
00348
00349 struct UNDERLINE {
00350 POLYLINE path;
00351 int width;
00352 COLOR color;
00353 int outlineWidth;
00354 COLOR outlineColor;
00355 bool stroke;
00356 bool fill;
00357 };
00358
00359 PAGE *m_CurrentPage;
00360 MILIST<PAGE*> m_Pages;
00361
00362 GRE::LAYER *m_Layer;
00363 GRE::GROUP *m_Group;
00364 int m_len;
00365 double m_hres, m_vres;
00366 double m_scale, m_yshift;
00367 double m_LineWidth;
00368 MGD::LINECAP m_LineCapStyle;
00369 MGD::LINEJOIN m_LineJoinStyle;
00370 int m_LayerNum;
00371 MISTRING m_LayerName;
00372 LRECTXY m_ClipRect;
00373
00374 PATTERN *m_Patterns;
00375 int m_NumPatterns;
00376 PATTERN *m_AllPatterns;
00377 int m_TotalPatterns;
00378 bool m_bDumpPattern;
00379
00380 bool m_bVersion10;
00381 bool m_bForceUpdateGC;
00382 bool m_bInLayer;
00383 bool m_bInGroup;
00384 bool m_bInImage;
00385 bool m_bEmbedFonts;
00386 bool m_bClippingOn;
00387 bool m_bCurLayerIsRaster;
00388 bool m_ScaleZeroWidth;
00389 COLOR m_DrawColor;
00390 COLOR m_FillColor;
00391 int m_CurFillPattern;
00392 int m_ImageX, m_ImageY, m_ImageLins, m_ImageCols;
00393 int m_ImageLinsSeen;
00394 FILE_RAW m_MaskFile, m_OutputFile, m_ImageFile;
00395 FILEPATH m_MaskFilename, m_ImageFilename;
00396 INT32 m_PatternStartOffset;
00397 int m_reference;
00398
00399
00400 MISTRING m_FontManagement;
00401 bool m_bSubstituteCourier;
00402 bool m_bDoFill;
00403 bool m_bDoBorder;
00404
00405 bool m_bWasInLayer;
00406 UINT32 m_ProcsetsNeeded;
00407 int m_IDsAllocated;
00408 int m_InfoID;
00409 MISTRING m_TextBegining,m_FontName;
00410
00411 SIMPLE_ARRAY<UINT32> m_offsets;
00412
00413
00414
00415 int m_CurrentFont;
00416 MILIST<PDF_FONT> m_Fonts;
00417 PDF_FONT m_DefaultFont;
00418 bool m_bFontStream;
00419
00420 INT32 m_StreamStart;
00421 int m_CurStreamID, m_EndStreamID, m_FontLength;
00422 DPOINT2D m_PrintableSize;
00423 DPOINT2D m_FullPageSize;
00424 DPOINT2D m_TopLeftMargin;
00425
00426
00427 bool m_bInTextBlock;
00428 bool m_bNeedFontSet;
00429 MISTRING m_LastFont;
00430 double m_TextHeight;
00431 MISTRING m_TextStyle;
00432 double m_BaseAngle;
00433 DPOINT2D m_BasePoint;
00434 MILIST<UNDERLINE> m_UnderlineList;
00435
00436
00437
00438 INT32 m_ActiveGroup;
00439 SIMPLE_ARRAY<UINT32> m_FontIDs;
00440
00441
00442
00443
00444 double m_CurrentOpacity;
00445
00446 SIMPLE_ARRAY<UINT8> m_Mask;
00447 bool m_bImageHasTransparency,m_bImageHasNullCells,m_bLayoutHasTransparency;
00448 bool m_LayerHasContent;
00449 bool m_bIncludeLayerVisibility;
00450 UINT32 m_crc;
00451
00452
00453 #ifndef NOLIBZ
00454 z_stream m_zstream;
00455 #endif
00456 char m_ahbuf[80];
00457 int m_ahbufpos;
00458
00459 UINT8 m_zbuf[32768];
00460
00461 UINT32 m_filter;
00462
00463
00464 int AllocID (
00465 );
00466
00467 int CompressBegin (
00468 );
00469
00470 int CompressEnd (
00471 );
00472
00473 int BeginStream (
00474 const char *comment,
00475 UINT32 flags,
00476 int length1 = 0
00477 );
00478
00479 int EndStream (
00480 int forLayer = 0
00481 );
00482
00483 void TestClipRegion (
00484 MGD::CONTEXT_PDF2* gc
00485 );
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496 ERRVALUE ActivateGC (
00497 CONTEXT_PDF2* gc
00498 );
00499
00500 ERRVALUE ActivateTC (
00501 CONTEXT_PDF2* gc
00502 );
00503
00504 int DumpFillPattern (
00505 PATTERN *pat,
00506 COLOR *var
00507 );
00508
00509 void FreePrivateData();
00510
00511 int FontInList(
00512 MISTRING name
00513 );
00514
00515 ERRVALUE AppendFile (
00516 const FILEPATH& filename
00517 );
00518
00519 ERRVALUE SetFillPattern (
00520 CONTEXT_PDF2* gc
00521 );
00522
00523 int PortWrite (
00524 const char *buf,
00525 int len
00526 ) { return (PortWrite(reinterpret_cast<const UINT8*>(buf), len)); }
00527
00528 int PortWrite (
00529 const UINT8 *buf,
00530 int len
00531 );
00532
00533 int PortWrite (
00534 const char *buf,
00535 int len,
00536 FILE_RAW& file
00537 ) { return (PortWrite(reinterpret_cast<const UINT8*>(buf), len, file)); }
00538
00539 int PortWrite (
00540 const UINT8 *buf,
00541 int len,
00542 FILE_RAW& file
00543 );
00544
00545 int SendEOL (
00546 );
00547
00548 int SendString (
00549 const char *str,
00550 UINT32 flags
00551 );
00552
00553 int SendString (
00554 const MISTRING& str,
00555 UINT32 flags
00556 );
00557
00558 int SendLong (
00559 INT32 num
00560 );
00561
00562
00563 int z_putLong (
00564 UINT32 x
00565 );
00566
00567 int SendDouble (
00568 DOUBLE num
00569 );
00570
00571 int SendXYCmdDouble (
00572 double x,
00573 double y,
00574 const char *cmd,
00575 UINT32 flags
00576 );
00577
00578 int SendXYCmdDoubleUnscaled (
00579 double x,
00580 double y,
00581 const char *cmd,
00582 UINT32 flags
00583 );
00584
00585 int SendXYCmdUnscaledLong (
00586 INT32 x,
00587 INT32 y,
00588 const char *cmd,
00589 UINT32 flags
00590 );
00591
00592 void TransCoord (
00593 INT32 x,
00594 INT32 y,
00595 double *dx,
00596 double *dy
00597 ) {
00598 *dx = (double)x * m_scale;
00599 *dy = m_yshift - (double)y * m_scale;
00600 return;
00601 }
00602
00603 void TransCoord (
00604 double x,
00605 double y,
00606 double *dx,
00607 double *dy
00608 ) {
00609 *dx = x * m_scale;
00610 *dy = m_yshift - y * m_scale;
00611 return;
00612 }
00613
00614 void TransCoord (
00615 const DRECT2D& in,
00616 DRECT2D& out
00617 ) {
00618 out.xinit = in.xinit * m_scale;
00619 out.xlast = in.xlast * m_scale;
00620 out.ylast = m_yshift - in.ylast * m_scale;
00621 out.yinit = m_yshift - in.yinit * m_scale;
00622 return;
00623 }
00624
00625 MISTRING Escape (
00626 MISTRING str
00627 ) {
00628 int len = str.GetLength();
00629 MISTRING temp,p1("("),p2(")"),ch;
00630 for(int i=0;i<len;i++){
00631 ch = str.GetSubString(i,i);
00632 if(ch.Compare(p1)==0){temp<<"\\(";}
00633 else if(ch.Compare(p2)==0){temp<<"\\)";}
00634 else{ temp<<ch; }
00635 }
00636 return(temp);
00637 }
00638
00639
00640
00641 virtual bool v_AvoidFillSpans () const
00642 { return (true); }
00643
00644 ERRVALUE v_FillSpan (MGD::CONTEXT* gc, INT32 x1, INT32 x2, INT32 y);
00645
00646 MGD::CAPABILITY v_GetCapabilities () const
00647 { return (DEVICE::v_GetCapabilities() | MGD::CAPABILITY_MaskInImageSpan | MGD::CAPABILITY_Transparency | MGD::CAPABILITY_BitmapFill | MGD::CAPABILITY_ComplexClip | MGD::CAPABILITY_FloatingPointCoordinates ); }
00648
00649 virtual MGD::CONTEXT* v_CreateContext ();
00650
00651 virtual MGD::PIXEL v_GetColorPixel (const COLOR& color)
00652 { return (static_cast<MGD::PIXEL>(color.GetColor0RGB32())); }
00653
00654 virtual COLORSPACE v_GetColorSpace () const
00655 { return (COLORSPACE_R8_G8_B8); }
00656
00657 virtual bool v_GetNeedFullImageLine () const
00658 { return (true); }
00659
00660 virtual void v_GetPixelColor (MGD::PIXEL pixel, COLOR& color ) const
00661 { color.SetRGB(static_cast<UINT16>((pixel & 0x00FF0000) >> 8), static_cast<UINT16>(pixel & 0x0000FF00), static_cast<UINT16>((pixel & 0x000000FF) << 8)); }
00662
00663 friend class CONTEXT_PDF2;
00664
00665 #endif // GENERATING_DOXYGEN_OUTPUT
00666
00667 };
00668
00669
00670
00671 class CONTEXT_PDF2 : public MGD::CONTEXT {
00672 public:
00673
00674 CONTEXT_PDF2 (
00675 DEVICE_PDF2* dev
00676 ) :
00677 MGD::CONTEXT(dev),
00678 m_DevPDF(dev),
00679 m_bHasClip(false),
00680 m_bNewClipRegion(false),
00681 m_bDrawingGlyph(false)
00682 {
00683 }
00684
00685 ~CONTEXT_PDF2 (
00686 ) {}
00687
00688 virtual void v_UpdateColor (
00689 ) {
00690 GetPixelColor(m_DrawColorPixel, m_DrawColor);
00691 return;
00692 }
00693
00694 virtual void v_UpdateColor2 (
00695 const COLOR& color
00696 ) {
00697 m_DrawColor = color;
00698 return;
00699 }
00700
00701 virtual void v_UpdateClipRegion (
00702 ) {
00703 m_bNewClipRegion = m_bHasClip = true;
00704 }
00705
00706 virtual void v_UpdateClipNone (
00707 ) {
00708 m_bNewClipRegion = m_bHasClip = false;
00709 }
00710
00711
00712 virtual void v_UpdateClipRect (
00713 ) {
00714 m_bHasClip = m_bNewClipRegion = true;
00715 }
00716
00717 virtual ERRVALUE v_FillCircle (
00718 double xcenter,
00719 double ycenter,
00720 double radius
00721 );
00722
00723 virtual ERRVALUE v_FillCircle (
00724 INT32 xcenter,
00725 INT32 ycenter,
00726 INT32 radius
00727 );
00728
00729 virtual ERRVALUE v_DrawCircle (
00730 double xcenter,
00731 double ycenter,
00732 double radius
00733 );
00734
00735 virtual ERRVALUE v_DrawArc (
00736 double xcenter,
00737 double ycenter,
00738 double xradius,
00739 double yradius,
00740 double startangle,
00741 double sweepangle,
00742 double rotangle,
00743 MGD::SHAPECLOSE closemode
00744 );
00745
00746 virtual ERRVALUE v_FillArc (
00747 double xcenter,
00748 double ycenter,
00749 double xradius,
00750 double yradius,
00751 double startangle,
00752 double sweepangle,
00753 double rotangle,
00754 MGD::SHAPECLOSE closemode
00755 );
00756
00757 virtual ERRVALUE v_DrawLine (
00758 INT32 x1,
00759 INT32 y1,
00760 INT32 x2,
00761 INT32 y2
00762 );
00763
00764 virtual ERRVALUE v_DrawLine (
00765 double x1,
00766 double y1,
00767 double x2,
00768 double y2
00769 );
00770
00771 virtual ERRVALUE v_DrawLinesDashed (
00772 const LPOINT2D* points,
00773 INT32 numpoints,
00774 const double *DashArray,
00775 INT32 DashCount,
00776 double DashOffset,
00777 bool close
00778 );
00779
00780 virtual ERRVALUE v_DrawLinesLow (
00781 const LPOINT2D *lpoint,
00782 INT32 NumPoints
00783 );
00784
00785 virtual ERRVALUE v_DrawLinesLow (
00786 const POLYLINE& line
00787 );
00788
00789 virtual ERRVALUE v_DrawPoint (
00790 INT32 x,
00791 INT32 y
00792 );
00793
00794 virtual ERRVALUE v_DrawPoint (
00795 const DPOINT2D& pt
00796 );
00797
00798 virtual ERRVALUE v_FillRegion (
00799 const REGION2D& region,
00800 bool DrawOutline
00801 );
00802
00803
00804 virtual ERRVALUE v_FillSubRegion (
00805 const SUBREGION2D& polygons,
00806 bool DrawOutline
00807 );
00808
00809 virtual ERRVALUE v_FillPolygon (
00810 const LPOINT2D *lpoint,
00811 INT32 NumPoints,
00812 MGD::POLYSHAPE shape = MGD::POLYSHAPE_Complex,
00813 bool bDrawBorder = false
00814 );
00815
00816 virtual ERRVALUE v_FillPolygons (
00817 const LPOLYGON *lpolygons,
00818 INT32 NumPolys,
00819 bool bDrawBorder
00820 );
00821
00822 virtual ERRVALUE v_DrawRectangle (
00823 INT32 x1,
00824 INT32 y1,
00825 INT32 x2,
00826 INT32 y2
00827 );
00828
00829 virtual ERRVALUE v_FillRectangle (
00830 const DRECT2D& rect
00831 );
00832
00833
00834 virtual ERRVALUE v_FillRectangle (
00835 INT32 x1,
00836 INT32 y1,
00837 INT32 x2,
00838 INT32 y2
00839 );
00840
00841 virtual ERRVALUE v_DrawGlyph (
00842 MGD::FONT* font,
00843 double x,
00844 double y,
00845 double baseangle,
00846 const MGD::STRINGDATA& gidstr,
00847 int num
00848 );
00849
00850 virtual ERRVALUE v_DrawStringStraight (
00851 const DPOINT2D& pt,
00852 double baseangle,
00853 const MGD::STRINGDATA& gidstr,
00854 int sindex,
00855 int eindex,
00856 double SpaceExtra,
00857 double GlyphExtra
00858 );
00859
00860
00861 virtual ERRVALUE v_ImageBegin (
00862 INT32 x,
00863 INT32 y,
00864 INT32 cols,
00865 INT32 lins,
00866 COLORSPACE ColorSpace,
00867 const COLOR_ARRAY *colmap,
00868 UINT32 flags
00869 );
00870
00871 virtual ERRVALUE v_PutImageSpanDirect (
00872 INT32 x,
00873 INT32 y,
00874 INT32 len,
00875 const void *data,
00876 const UINT8 *mask
00877 );
00878
00879 virtual ERRVALUE v_ImageEnd (
00880 UINT32 flags
00881 );
00882
00883 virtual ERRVALUE v_PutPixel (
00884 INT32 x,
00885 INT32 y,
00886 MGD::PIXEL pixel
00887 );
00888
00889 virtual void v_TextSpanBegin ();
00890
00891
00892 virtual void v_TextSpanEnd ();
00893
00894
00895 virtual void v_TextBlockBegin (
00896 const MGD::TEXTBLOCK& block
00897 );
00898
00899 virtual void v_TextBlockEnd (
00900 const MGD::TEXTBLOCK& block
00901 );
00902
00903 private:
00904 #ifndef GENERATING_DOXYGEN_OUTPUT
00905
00906 bool m_bHasClip;
00907 bool m_bNewClipRegion;
00908 bool m_bDrawingGlyph;
00909 COLOR m_DrawColor;
00910 COLOR m_FillColor;
00911 DEVICE_PDF2 *m_DevPDF;
00912
00913 friend class DEVICE_PDF2;
00914
00915 ERRVALUE ComposeArc (
00916 double xcenter,
00917 double ycenter,
00918 double xradius,
00919 double yradius,
00920 double sangle,
00921 double eangle,
00922 double rotangle,
00923 MGD::SHAPECLOSE closemode
00924 );
00925
00926 ERRVALUE DrawClipRegion (
00927 const LPOLYGON *lpolygons,
00928 INT32 NumPolys
00929 );
00930
00931 ERRVALUE DrawClipRectangle (
00932 const DRECT2D& rect
00933 );
00934
00935 ERRVALUE DrawUnderlines ();
00936
00937 ERRVALUE FillClipSubRegion (
00938 const SUBREGION2D& subregion
00939 );
00940
00941 ERRVALUE FillClipRegion (
00942 const REGION2D& region
00943 );
00944
00945 bool InRange (
00946 const MGD::STRINGDATA& gidstr,
00947 int sindex,
00948 int eindex
00949 );
00950
00951 void TransCoord (
00952 INT32 x,
00953 INT32 y,
00954 double *dx,
00955 double *dy
00956 ) {
00957 m_DevPDF->TransCoord(x,y,dx,dy);
00958 return;
00959 }
00960
00961 void TransCoord (
00962 double x,
00963 double y,
00964 double *dx,
00965 double *dy
00966 ) {
00967 m_DevPDF->TransCoord(x,y,dx,dy);
00968 return;
00969 }
00970
00971 ERRVALUE ComposeLines (
00972 const LPOINT2D *lpoint,
00973 INT32 NumPoints,
00974 bool bClose
00975 );
00976
00977 ERRVALUE ComposeLinesFloat (
00978 const POLYLINE& line
00979 );
00980
00981 #endif // GENERATING_DOXYGEN_OUTPUT
00982 };
00983
00984 }
00985
00986 #endif // INC_MI32_MG2PDF_H