00001
00042 #ifndef INC_GRE_LRARCIMS_H
00043 #define INC_GRE_LRARCIMS_H
00044
00045 #ifndef INC_GRE_LRIMAGE_H
00046 #include <gre/lrimage.h>
00047 #endif
00048
00049 #ifndef INC_MI32_MISTRINGLIST_H
00050 #include <mi32/mistringlist.h>
00051 #endif
00052
00053
00054 #ifndef GENERATING_DOXYGEN_OUTPUT
00055 namespace SOA {
00056 namespace ARCIMS {
00057 class CONNECTION;
00058 }
00059 }
00060 namespace SPATMOD {
00061 namespace IMAGE {
00062 class PIXEL;
00063 class PIXELTABLE;
00064 class STAGE_AUTOPTR;
00065 }
00066 }
00067 class HTTPCLIENT;
00068 class HTTPMESSAGE;
00069 class XMLDOC;
00070 #endif
00071
00072 namespace GRE {
00073
00074
00076 class LAYER_ARCIMS : public GRE::LAYER_IMAGE {
00077 public:
00078
00079
00080 class DISPPARM : public LAYER::DISPPARM {
00081 public:
00082
00083 DISPPARM ();
00084
00085 DISPPARM (
00086 const DISPPARM& rhs
00087 );
00088
00089 virtual ~DISPPARM ();
00090
00091 DISPPARM& operator= (
00092 const DISPPARM& rhs
00093 ) { if (this != &rhs) { Copy(rhs); } return (*this); }
00094
00096 ERRVALUE BuildGetImageRequest (
00097 const LAYERDC& layerdc,
00098 HTTPMESSAGE& RequestHdrs,
00099 XMLDOC& RequestBody,
00100 LPOINT2D& TgtSize,
00101 TRANS2D_MAPGEN& TransToCRS
00102 ) const;
00103
00104 ERRVALUE BuildGetLegendRequest (
00105 HTTPMESSAGE& RequestHdrs,
00106 XMLDOC& RequestBody
00107 ) const;
00108
00110 ERRVALUE BuildPixelTableTransparent (
00111 const COLOR& ColorBG,
00112 SPATMOD::IMAGE::PIXELTABLE& PixelTable
00113 ) const;
00114
00117 static int ComputeFormatGetMapPreference (
00118 const MISTRING& Format
00119 );
00120
00122 ERRVALUE ComputeRegion (
00123 REGION2D& RegionUsed
00124 ) const;
00125
00127 const SOA::ARCIMS::CONNECTION& GetConnection (
00128 ) const { return (*m_pConnection); }
00129
00131 const SPATREF::COORDREFSYS& GetCoordRefSys (
00132 ) const { return (m_CoordRefSys); }
00133
00135 bool GetDetectBackground (
00136 ) const { return (m_DetectBackground); }
00137
00139 bool GetDetectBlack (
00140 ) const { return (m_DetectBlack); }
00141
00143 bool GetDetectWhite (
00144 ) const { return (m_DetectWhite); }
00145
00147 const MISTRING& GetFormatGetMap (
00148 ) const { return (m_FormatGetMap); }
00149
00151 const MISTRINGLIST& GetLayerNameList (
00152 ) const { return (m_LayerNameList); }
00153
00155 const MISTRING& GetServerURL (
00156 ) const;
00157
00159 UINT8 GetTransparency (
00160 ) const { return (m_Transparency); }
00161
00163 bool IsValidated (
00164 ) const { return (m_IsValidated); }
00165
00167 void SetConnection (
00168 const SOA::ARCIMS::CONNECTION& connection
00169 );
00170
00172 void SetCoordRefSys (
00173 const SPATREF::COORDREFSYS& CoordRefSys
00174 );
00175
00177 void SetDetectBackground (
00178 bool DetectBackground
00179 ) { m_DetectBackground = DetectBackground; }
00180
00182 void SetDetectBlack (
00183 bool DetectBlack
00184 ) { m_DetectBlack = DetectBlack; }
00185
00187 void SetDetectWhite (
00188 bool DetectWhite
00189 ) { m_DetectWhite = DetectWhite; }
00190
00192 void SetDftFormatGetMap (
00193 );
00194
00196 void SetDftLayer (
00197 );
00198
00200 void SetFormatGetMap (
00201 const MISTRING& Format
00202 );
00203
00205 ERRVALUE SetLayerList (
00206 const MISTRINGLIST& LayerNameList
00207 );
00208
00210 void SetTransparency (
00211 UINT8 Transparency
00212 ) { m_Transparency = Transparency; }
00213
00214 private:
00215 #ifndef GENERATING_DOXYGEN_OUTPUT
00216
00217 SOA::ARCIMS::CONNECTION *m_pConnection;
00218 MISTRINGLIST m_LayerNameList;
00219 SPATREF::COORDREFSYS m_CoordRefSys;
00220 MISTRING m_FormatGetMap;
00221 UINT8 m_Transparency;
00222 bool m_DetectBackground;
00223 bool m_DetectBlack;
00224 bool m_DetectWhite;
00225 bool m_IsValidated;
00226
00227
00228 void Copy (const DISPPARM&);
00229 static ERRVALUE SerializerCB_Connection (SERIALIZER& serializer, const SERIALIZERITEM *item, void *vDispParm, SERIALIZERITEM::ACTION action);
00230
00231
00232 virtual const SERIALIZERITEM* SerialGetItemDef (SERIALIZER& serializer) const;
00233 virtual ERRVALUE SerialRead (SERIALIZER& serializer);
00234 virtual ERRVALUE SerialWrite (SERIALIZER& serializer, const char *tagname = 0) const;
00235
00236
00237 virtual ERRVALUE v_Validate ();
00238
00239 #endif // GENERATING_DOXYGEN_OUTPUT
00240 };
00241
00243 static void RegisterType (
00244 );
00245
00247 static void SMLClassInstall (
00248 SMLCONTEXT *context
00249 );
00250
00252 explicit LAYER_ARCIMS (
00253 GRE::GROUP *group,
00254 CREATEFLAGS createflags = CREATEFLAG_None,
00255 GRE::LISTPOS listpos = GRE::LISTPOS_Last,
00256 LAYER *reflayer = 0
00257 );
00258
00259 virtual ~LAYER_ARCIMS ();
00260
00263 const DISPPARM& GetDispParm (
00264 ) const {
00265 return (m_dispparm);
00266 }
00267
00273 ERRVALUE SetDispParm (
00274 const DISPPARM& dispparm
00275 );
00276
00277 protected:
00278
00279 DISPPARM m_dispparm;
00280
00281 private:
00282 #ifndef GENERATING_DOXYGEN_OUTPUT
00283
00284 typedef LAYER_IMAGE BASECLASS;
00285 class DLG;
00286
00287 #ifdef USE_MGUI
00288 DLG *m_pDlgControlPanel;
00289 #endif
00290 LEGEND_IMAGESAMPLE m_ImageSampleLegend;
00291
00292 static void LegendMsgHandler (GRAPHICTREEITEM_MSG *msg);
00293
00294 #ifdef USE_MGUI
00295 void DestroyDlgControlPanel ();
00296 #endif
00297 ERRVALUE Draw2D (LAYERDC& layerdc);
00298 void SetupLegend ();
00299 ERRVALUE GetImageFromReply (
00300 const XMLDOC& xmldoc,
00301 HTTPCLIENT& Client,
00302 const char* element,
00303 SPATMOD::IMAGE::STAGE_AUTOPTR& StagePtr,
00304 TRANS2D_MAPGEN* Trans = 0
00305 );
00306
00307
00308 virtual ERRVALUE v_AssignObject (const RVC::OBJITEM& item, MDLGPARENT dlgparent);
00309 #ifdef USE_MGUI
00310 virtual int v_ControlPanel (MDLGPARENT dlgparent, UINT32 flags = 0);
00311 #endif
00312 virtual LAYER* v_Copy (GRE::GROUP *group) const;
00313 virtual ERRVALUE v_Draw (LAYERDC& layerdc);
00314 virtual bool v_HasNullImageCells () const;
00315 virtual const char* v_SerialGetTagName () const;
00316 virtual void v_SetDftName (bool ReplaceExisting);
00317 #ifdef USE_MGUI
00318 virtual MGUI::CTRL_TREE::ITEMHND v_TreeViewAddUpdateLegend (GRE::CTRL_TREEVIEW& TreeView, MGUI::CTRL_TREE::ITEMHND hndParent, MGUI::CTRL_TREE::ITEMHND hndInsertAfter);
00319 #endif
00320 virtual ERRVALUE v_UpdateExtents (bool forceupdate);
00321 virtual const GRE::LEGEND* v_GetLegend (ELEMTYPE);
00322 virtual bool v_HasLegend () const;
00323
00324 LAYER_ARCIMS (const LAYER_ARCIMS&);
00325 LAYER_ARCIMS& operator= (const LAYER_ARCIMS&);
00326
00327 #endif // GENERATING_DOXYGEN_OUTPUT
00328 };
00329
00330
00331
00332 }
00333
00334 #endif // INC_GRE_LRARCIMS_H