00001
00045 #ifndef INC_GRE_SCRIPTCONTEXT_H
00046 #define INC_GRE_SCRIPTCONTEXT_H
00047
00048 #ifndef INC_GRE_BASE
00049 #include <gre/base.h>
00050 #endif
00051
00052 #ifndef INC_MI32_SMLBASE_H
00053 #include <mi32/smlbase.h>
00054 #endif
00055
00056 #ifndef INC_MI32_LABLSTYL_H
00057 #include <mi32/lablstyl.h>
00058 #endif
00059
00060 #ifndef INC_MI32_ELEMTYPE_H
00061 #include <mi32/elemtype.h>
00062 #endif
00063
00064 #ifndef INC_MI32_RECT_H
00065 #include <mi32/rect.h>
00066 #endif
00067
00068 #ifndef INC_MI32_MG2BASE_H
00069 #include <mi32/mg2base.h>
00070 #endif
00071
00072 #ifndef GENERATING_DOXYGEN_OUTPUT
00073 namespace RVC {
00074 class GEOMETRIC;
00075 class CADELEMENT;
00076 class STYLE;
00077 class OBJITEM;
00078 }
00079 namespace MGD {
00080 class CONTEXT;
00081 }
00082 class TRANS2D_MAPGEN;
00083 #endif
00084
00085 namespace GRE {
00086
00087
00088 class SCRIPTCONTEXT_DRAW {
00089 public:
00090
00092 SCRIPTCONTEXT_DRAW (
00093 );
00094
00096 virtual ~SCRIPTCONTEXT_DRAW (
00097 );
00098
00103 void AttachContext (
00104 SMLCONTEXT *& context
00105 );
00106
00108 ERRVALUE CreateContext (
00109 RVC::GEOMETRIC& GeoObj
00110 );
00111
00113 void DestroyContext (
00114 );
00115
00118 SMLCONTEXT * GetContext (
00119 ) const { return (m_context); }
00120
00122 bool HasContext (
00123 ) const { return (m_context != 0); }
00124
00126 ERRVALUE InitDraw (
00127 GRE::LAYER *layer,
00128 MGD::CONTEXT *gc,
00129 const TRANS2D_MAPGEN& trans,
00130 bool Is3D = false
00131 );
00132
00134 ERRVALUE InitDraw (
00135 GRE::LAYERDC& layerdc
00136 );
00137
00139 void SetScaleValues (
00140 double DesignScale,
00141 double CurrentScale
00142 );
00143
00144 protected:
00145
00146 virtual void CreateSymbols (
00147 );
00148
00149 private:
00150 #ifndef GENERATING_DOXYGEN_OUTPUT
00151
00153 struct DRAWSYMS {
00154 SMLSYMBOL *CurMapScale;
00155 SMLSYMBOL *LayoutMapScale;
00156 SMLSYMBOL *DesignScale;
00157 };
00158
00159 SMLCONTEXT *m_context;
00160 DRAWSYMS m_drawsym;
00161
00162 SCRIPTCONTEXT_DRAW (const SCRIPTCONTEXT_DRAW&);
00163 SCRIPTCONTEXT_DRAW& operator= (const SCRIPTCONTEXT_DRAW&);
00164
00165 #endif // GENERATING_DOXYGEN_OUTPUT
00166 };
00167
00168
00169
00170 class SCRIPTCONTEXT_STYLE : public SCRIPTCONTEXT_DRAW {
00171 public:
00172
00174 SCRIPTCONTEXT_STYLE (
00175 );
00176
00178 virtual ~SCRIPTCONTEXT_STYLE (
00179 );
00180
00183 int CreateSegment (
00184 ELEMTYPE elemtype,
00185 const MIUNICODE *scriptstr
00186 );
00187
00188 ERRVALUE Evaluate (
00189 int segment,
00190 INT32 ElemNum,
00191 const RVC::STYLE& StyleObj,
00192 POINTSTYLE& style,
00193 const DPOINT2D* pt = 0,
00194 bool bDrawingLegendView = false
00195 ) const;
00196
00197 ERRVALUE Evaluate (
00198 int segment,
00199 INT32 ElemNum,
00200 const RVC::STYLE& StyleObj,
00201 LINESTYLE& style,
00202 const SIMPLE_ARRAY<DPOINT2D>* pt = 0,
00203 bool bDrawingLegendView = false
00204 ) const;
00205
00206 ERRVALUE Evaluate (
00207 int segment,
00208 INT32 ElemNum,
00209 const RVC::STYLE& StyleObj,
00210 POLYSTYLE& style,
00211 const SIMPLE_ARRAY<DPOINT2D>* pt = 0,
00212 bool bDrawingLegendView = false
00213 ) const;
00214
00215 ERRVALUE Evaluate (
00216 int segment,
00217 RVC::CADELEMENT& Element,
00218 const RVC::STYLE& StyleObj,
00219 const SIMPLE_ARRAY<DPOINT2D>* pt = 0,
00220 bool bDrawingLegendView = false
00221 ) const;
00222
00224 void SetSampleRect (
00225 const DRECT2D& rect
00226 ) { m_stylesym.rect = rect; }
00227
00228 protected:
00229
00230 virtual void CreateSymbols (
00231 );
00232
00233 private:
00234 #ifndef GENERATING_DOXYGEN_OUTPUT
00235
00237 struct STYLESYMS {
00238 SMLSYMBOL *Style;
00239 SMLSYMBOL *Symbol;
00240 SMLSYMBOL *DrawPatt;
00241 SMLSYMBOL *FillPatt;
00242 SMLSYMBOL *DrawColor;
00243 SMLSYMBOL *FillColor;
00244 SMLSYMBOL *LineScale;
00245 SMLSYMBOL *XScale;
00246 SMLSYMBOL *YScale;
00247 SMLSYMBOL *Angle;
00248 SMLSYMBOL *UseStyle;
00249 SMLSYMBOL *DrawSymbol;
00250 SMLSYMBOL *DrawLinePatt;
00251 SMLSYMBOL *DrawBitmapPatt;
00252 SMLSYMBOL *FillBitmapPatt;
00253 SMLSYMBOL *FillHatchPatt;
00254 SMLSYMBOL *FillInside;
00255 SMLSYMBOL *DrawBorder;
00256 SMLSYMBOL *MapScale;
00257 SMLSYMBOL *DrawDone;
00258 SMLSYMBOL *DrawTransPct;
00259 SMLSYMBOL *FillTransPct;
00260 SMLSYMBOL *DrawingSample;
00261 SMLSYMBOL *DrawingLegendView;
00262 SMLSYMBOL *SampleRect;
00263 DRECT2D rect;
00264 };
00265
00266 STYLESYMS m_stylesym;
00267
00268 void GetColor (
00269 SMLSYMBOL*,
00270 SMLSYMBOL*,
00271 COLOR& color
00272 ) const;
00273
00274 SCRIPTCONTEXT_STYLE (const SCRIPTCONTEXT_STYLE&);
00275 SCRIPTCONTEXT_STYLE& operator= (const SCRIPTCONTEXT_STYLE&);
00276
00277 #endif // GENERATING_DOXYGEN_OUTPUT
00278 };
00279
00280
00281
00282 class SCRIPTCONTEXT_LABEL : public SCRIPTCONTEXT_DRAW {
00283 public:
00284
00286 SCRIPTCONTEXT_LABEL (
00287 );
00288
00290 virtual ~SCRIPTCONTEXT_LABEL (
00291 );
00292
00293 void GetFrameParms (
00294 LABELFRAMEPARMS& parms
00295 ) const;
00296
00297 double GetPriority (
00298 ) const;
00299
00300 void SetFrameParms (
00301 const LABELFRAMEPARMS& parms
00302 );
00303
00304 void SetPriority (
00305 double priority
00306 );
00307
00308 protected:
00309
00310 virtual void CreateSymbols (
00311 );
00312
00313 private:
00314 #ifndef GENERATING_DOXYGEN_OUTPUT
00315
00317 struct LABELSYMS {
00318 SMLSYMBOL *Priority;
00319 SMLSYMBOL *Frame;
00320 };
00321
00322 LABELSYMS m_labelsym;
00323 LABELFRAMEPARMS* m_FrameParms;
00324
00325 SCRIPTCONTEXT_LABEL (const SCRIPTCONTEXT_LABEL&);
00326 SCRIPTCONTEXT_LABEL& operator= (const SCRIPTCONTEXT_LABEL&);
00327
00328 #endif // GENERATING_DOXYGEN_OUTPUT
00329 };
00330
00331
00332
00334 ERRVALUE GenerateStyleTableFromScript (
00335 MDLGPARENT dlgparent,
00336 const RVC::OBJITEM& ObjItemGeometric,
00337 const RVC::OBJITEM& ObjItemStyleSrc,
00338 const POINTSTYLE& BaseStyle,
00339 ELEMTYPE ElemType,
00340 const MISTRING& ScriptStr,
00341 RVC::OBJITEM& ObjItemTable
00342 );
00343
00345 ERRVALUE GenerateStyleTableFromScript (
00346 MDLGPARENT dlgparent,
00347 const RVC::OBJITEM& ObjItemGeometric,
00348 const RVC::OBJITEM& ObjItemStyleSrc,
00349 const LINESTYLE& BaseStyle,
00350 ELEMTYPE ElemType,
00351 const MISTRING& ScriptStr,
00352 RVC::OBJITEM& ObjItemTable
00353 );
00354
00356 ERRVALUE GenerateStyleTableFromScript (
00357 MDLGPARENT dlgparent,
00358 const RVC::OBJITEM& ObjItemGeometric,
00359 const RVC::OBJITEM& ObjItemStyleSrc,
00360 const POLYSTYLE& BaseStyle,
00361 ELEMTYPE ElemType,
00362 const MISTRING& ScriptStr,
00363 RVC::OBJITEM& ObjItemTable
00364 );
00365
00366
00367 }
00368
00369 #endif // INC_GRE_SCRIPTCONTEXT_H