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 #ifndef INC_MI32_MG2CAD_H
00028 #define INC_MI32_MG2CAD_H
00029
00030 #ifndef INC_RVC_CAD_H
00031 #include <rvc/cad.h>
00032 #endif
00033
00034 #ifndef INC_RVC_STYLE_H
00035 #include <rvc/style.h>
00036 #endif
00037
00038 #ifndef INC_MI32_TRANS2DC_H
00039 #include <mi32/trans2dc.h>
00040 #endif
00041
00042 #ifndef INC_MI32_MGD2_H
00043 #include <mi32/mgd2.h>
00044 #endif
00045 namespace MGD {
00046
00047 class CONTEXT_CAD;
00048
00049 class DEVICE_CAD : public MGD::DEVICE {
00050
00051 public:
00052
00053 DEVICE_CAD (
00054 );
00055
00056 virtual ~DEVICE_CAD (
00057 );
00058
00059 ERRVALUE Create (
00060 RVC::OBJITEM& objitem,
00061 int height,
00062 int width
00063 );
00064
00065 ERRVALUE Close (
00066 );
00067
00068 #ifndef GENERATING_DOXYGEN_OUTPUT
00069 private:
00070
00071 RVC::CAD m_CAD;
00072 RVC::STYLE m_Style;
00073 COLOR m_CurColor;
00074 TRANS2D_AFFINE m_Trans;
00075 int m_NumElements;
00076
00077
00078 DEVICE_CAD (const DEVICE_CAD&);
00079
00080 virtual bool v_AvoidFillSpans (
00081 ) const { return true; }
00082
00083 virtual MGD::CAPABILITY v_GetCapabilities (
00084 ) const;
00085
00086 virtual MGD::CONTEXT* v_CreateContext (
00087 );
00088
00089 virtual COLORSPACE v_GetColorSpace (
00090 ) const;
00091
00092
00093 virtual ERRVALUE v_FillSpan (
00094 MGD::CONTEXT* gc,
00095 INT32 x1,
00096 INT32 x2,
00097 INT32 y
00098 );
00099
00100 void SetCurColor (
00101 const COLOR& color
00102 ) { m_CurColor = color; }
00103
00104
00105 friend class MGD::CONTEXT_CAD;
00106 #endif
00107
00108 };
00109
00110
00111 class CONTEXT_CAD : public MGD::CONTEXT {
00112 public:
00113
00114 ~CONTEXT_CAD (
00115 );
00116
00117
00118 #ifndef GENERATING_DOXYGEN_OUTPUT
00119 private:
00120 CONTEXT_CAD (
00121 MGD::DEVICE_CAD* dev
00122 );
00123
00124 virtual void v_UpdateColor (
00125 );
00126
00127 virtual void v_UpdateColor2 (
00128 const COLOR& color
00129 );
00130
00131 virtual ERRVALUE v_DrawArc (
00132 INT32 xcenter,
00133 INT32 ycenter,
00134 INT32 xradius,
00135 INT32 yradius,
00136 double sangle,
00137 double eangle,
00138 double rotangle,
00139 MGD::SHAPECLOSE closemode
00140 );
00141
00142 virtual ERRVALUE v_FillArc (
00143 INT32 xcenter,
00144 INT32 ycenter,
00145 INT32 xradius,
00146 INT32 yradius,
00147 double sangle,
00148 double eangle,
00149 double rotangle,
00150 MGD::SHAPECLOSE closemode
00151 );
00152
00153 virtual ERRVALUE v_DrawGlyph (
00154 MGD::FONT* font,
00155 double x,
00156 double y,
00157 double baseangle,
00158 const MGD::STRINGDATA& gidstr,
00159 int num
00160 );
00161
00162 virtual ERRVALUE v_DrawLinesLow (
00163 const LPOINT2D *lpoint,
00164 INT32 NumPoints
00165 );
00166
00167 virtual ERRVALUE v_DrawLinesLow (
00168 const POLYLINE& line
00169 );
00170
00171 virtual ERRVALUE v_DrawPoint (
00172 INT32 x,
00173 INT32 y
00174 );
00175
00176 virtual ERRVALUE v_DrawRectangle (
00177 INT32 x1,
00178 INT32 y1,
00179 INT32 x2,
00180 INT32 y2
00181 );
00182
00183 virtual ERRVALUE v_DrawStringStraight (
00184 const DPOINT2D& pt,
00185 double baseangle,
00186 const MGD::STRINGDATA& gidstr,
00187 int sindex,
00188 int eindex,
00189 double SpaceExtra,
00190 double GlyphExtra
00191 );
00192
00193 virtual ERRVALUE v_FillCircle (
00194 INT32 xcenter,
00195 INT32 ycenter,
00196 INT32 radius
00197 ) { return v_FillArc(xcenter, ycenter, radius, radius, 0.0, 2*PI, 0.0, MGD::SHAPECLOSE_Direct); }
00198
00199 virtual ERRVALUE v_FillPolygon (
00200 const LPOINT2D *lpoint,
00201 INT32 NumPoints,
00202 MGD::POLYSHAPE shape = MGD::POLYSHAPE_Complex,
00203 bool DrawBorder = false
00204 );
00205
00206 virtual ERRVALUE v_FillPolygons (
00207 const LPOLYGON *lpolygons,
00208 INT32 NumPolys,
00209 bool bDrawBorder
00210 );
00211
00212
00213 virtual ERRVALUE v_FillRectangle (
00214 INT32 x1,
00215 INT32 y1,
00216 INT32 x2,
00217 INT32 y2
00218 );
00219
00220 virtual ERRVALUE v_PutPixel (
00221 INT32 x,
00222 INT32 y,
00223 MGD::PIXEL pixel
00224 );
00225
00226 ERRVALUE AddConic (
00227 INT32 xcenter,
00228 INT32 ycenter,
00229 INT32 xradius,
00230 INT32 yradius,
00231 double sangle,
00232 double eangle,
00233 double rotangle,
00234 MGD::SHAPECLOSE closemode,
00235 bool bFill
00236 );
00237
00238 ERRVALUE AddElement (
00239 RVC::CAD::ELEMENT& elem,
00240 bool bFill = false
00241 );
00242
00243 MGD::DEVICE_CAD* m_DevCAD;
00244 friend class MGD::DEVICE_CAD;
00245 };
00246
00247 #endif // GENERATING_DOXYGEN_OUTPUT
00248 }
00249
00250
00251
00252 #endif //end define INC_MG2CAD_H