00001 
00055 #if !defined(_CIGI_BASE_ENV_RGN_CTRL_INCLUDED_)
00056 #define _CIGI_BASE_ENV_RGN_CTRL_INCLUDED_
00057 
00058 #include "CigiBasePacket.h"
00059 
00060 
00061 
00062 
00063 
00064 #define CIGI_ENV_RGN_CTRL_PACKET_ID_V3 11
00065 #define CIGI_ENV_RGN_CTRL_PACKET_SIZE_V3 48
00066 
00067 
00068 class CigiEnvRgnCtrlV3;
00069 
00070 
00071 class CIGI_SPEC CigiBaseEnvRgnCtrl : public CigiBasePacket
00072 {
00073 
00074 friend class CigiEnvRgnCtrlV3;
00075 
00076 public:
00077 
00078    
00081    enum RgnStateGrp
00082    {
00083       Inactive=0,
00084       Active=1,
00085       Destroyed=2
00086    };
00087 
00088    
00091    enum MergeCtrlGrp
00092    {
00093       UseLast=0,
00094       Merge=1
00095    };
00096 
00097 
00098 
00099 
00100    
00101 
00102    
00105    CigiBaseEnvRgnCtrl();
00106 
00107    
00110    virtual ~CigiBaseEnvRgnCtrl();
00111 
00112 
00113    
00114 
00115    
00126    virtual int Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const=0;
00127 
00128    
00138    virtual int Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec) =0;
00139 
00140    
00152         virtual int GetCnvt(CigiVersionID &CnvtVersion,
00153                        CigiCnvtInfoType::Type &CnvtInfo);
00154 
00155 
00156 
00157    
00158 
00159    
00160 
00161    
00168    int SetRegionID(const Cigi_uint16 RegionIDIn, bool bndchk=true)
00169    {
00170       RegionID = RegionIDIn;
00171       return(CIGI_SUCCESS);
00172    }
00173 
00174    
00177    Cigi_uint16 GetRegionID(void) const { return(RegionID); }
00178 
00179 
00180    
00181 
00182    
00192    int SetRgnState(const RgnStateGrp RgnStateIn, bool bndchk=true);
00193 
00194    
00197    RgnStateGrp GetRgnState(void) const { return(RgnState); }
00198 
00199 
00200    
00201 
00202    
00209    int SetWeatherProp(const MergeCtrlGrp WeatherPropIn, bool bndchk=true);
00210 
00211    
00214    MergeCtrlGrp GetWeatherProp(void) const { return(WeatherProp); }
00215 
00216 
00217    
00218 
00219    
00226    int SetAerosol(const MergeCtrlGrp AerosolIn, bool bndchk=true);
00227 
00228    
00231    MergeCtrlGrp GetAerosol(void) const { return(Aerosol); }
00232 
00233 
00234    
00235 
00236    
00243    int SetMaritimeSurface(const MergeCtrlGrp MaritimeSurfaceIn, bool bndchk=true);
00244 
00245    
00248    MergeCtrlGrp GetMaritimeSurface(void) const { return(MaritimeSurface); }
00249 
00250 
00251    
00252 
00253    
00260    int SetTerrestrialSurface(const MergeCtrlGrp TerrestrialSurfaceIn, bool bndchk=true);
00261 
00262    
00265    MergeCtrlGrp GetTerrestrialSurface(void) const { return(TerrestrialSurface); }
00266 
00267 
00268    
00269 
00270    
00277    int SetLat(const double LatIn, bool bndchk=true);
00278 
00279    
00282    double GetLat(void) const { return(Lat); }
00283 
00284 
00285    
00286 
00287    
00294    int SetLon(const double LonIn, bool bndchk=true);
00295 
00296    
00299    double GetLon(void) const { return(Lon); }
00300 
00301 
00302    
00303 
00304    
00311    int SetXSize(const float XSizeIn, bool bndchk=true)
00312    {
00313       XSize = XSizeIn;
00314       return(CIGI_SUCCESS);
00315    }
00316 
00317    
00320    float GetXSize(void) const { return(XSize); }
00321 
00322 
00323    
00324 
00325    
00332    int SetYSize(const float YSizeIn, bool bndchk=true)
00333    {
00334       YSize = YSizeIn;
00335       return(CIGI_SUCCESS);
00336    }
00337 
00338    
00341    float GetYSize(void) const { return(YSize); }
00342 
00343 
00344    
00345 
00346    
00353    int SetCornerRadius(const float CornerRadiusIn, bool bndchk=true)
00354    {
00355       CornerRadius = CornerRadiusIn;
00356       return(CIGI_SUCCESS);
00357    }
00358 
00359    
00362    float GetCornerRadius(void) const { return(CornerRadius); }
00363 
00364 
00365    
00366 
00367    
00374    int SetRotation(const float RotationIn, bool bndchk=true);
00375 
00376    
00379    float GetRotation(void) const { return(Rotation); }
00380 
00381 
00382    
00383 
00384    
00391    int SetTransition(const float TransitionIn, bool bndchk=true)
00392    {
00393       Transition = TransitionIn;
00394       return(CIGI_SUCCESS);
00395    }
00396 
00397    
00400    float GetTransition(void) const { return(Transition); }
00401 
00402 
00403 
00404 protected:
00405 
00406    
00407 
00408    
00412    Cigi_uint16 RegionID;
00413 
00414    
00421    RgnStateGrp RgnState;
00422 
00423    
00427    MergeCtrlGrp WeatherProp;
00428 
00429    
00433    MergeCtrlGrp Aerosol;
00434 
00435    
00439    MergeCtrlGrp MaritimeSurface;
00440 
00441    
00445    MergeCtrlGrp TerrestrialSurface;
00446 
00447    
00451    double Lat;
00452 
00453    
00457    double Lon;
00458 
00459    
00463    float XSize;
00464 
00465    
00469    float YSize;
00470 
00471    
00475    float CornerRadius;
00476 
00477    
00481    float Rotation;
00482 
00483    
00487    float Transition;
00488 
00489 
00490 };
00491 
00492 #endif // #if !defined(_CIGI_BASE_ENV_RGN_CTRL_INCLUDED_)