00001 /*
00002 * Copyright (C) 2004-2007 Autodesk, Inc.
00003 *
00004 * This library is free software; you can redistribute it and/or
00005 * modify it under the terms of version 2.1 of the GNU Lesser
00006 * General Public License as published by the Free Software Foundation.
00007 *
00008 * This library is distributed in the hope that it will be useful,
00009 * but WITHOUT ANY WARRANTY; without even the implied warranty of
00010 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00011 * Lesser General Public License for more details.
00012 *
00013 * You should have received a copy of the GNU Lesser General Public
00014 * License along with this library; if not, write to the Free Software
00015 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
00016 *
00017 */
00018 #ifndef FDOWMSRASTERDEFINITION_H
00019 #define FDOWMSRASTERDEFINITION_H
00020
00021 #ifdef _WIN32
00022 #pragma once
00023 #endif //_WIN32
00024
00025 #include <WMS/FdoWmsOvProvider.h>
00026 #include <WMS/Override/FdoWmsOvLayerCollection.h>
00027
00028 /// \brief
00029 ///
00030 /// The FdoWmsOvRasterDefinition class defines the physical overrides for a raster property in a WMS FDO schema.
00031 class FdoWmsOvRasterDefinition : public FdoPhysicalElementMapping
00032 {
00033 typedef FdoPhysicalElementMapping BaseType;
00034 friend class FdoWmsOvClassDefinition;
00035
00036 public:
00037 /// \brief
00038 /// Constructs a new Raster Definition.
00039 ///
00040 /// \return
00041 /// Returns the newly created FdoWmsOvRasterDefinition instance.
00042 ///
00043 FDOWMS_API static FdoWmsOvRasterDefinition* Create();
00044
00045 /// \brief
00046 /// Gets the format type in which the WMS image will be generated.
00047 ///
00048 /// \remarks
00049 /// Allowed map formats are "picture" formats . Picture formats constitute
00050 /// a rectangular pixel array of fixed size. Picture formats include file types such
00051 /// as Portable Network Graphics (PNG), Joint Photographics Expert Group (JPEG)
00052 /// and file types such as Tagged Image File Format (TIFF).
00053 ///
00054 /// \return
00055 /// Returns the WMS image format.
00056 ///
00057 FDOWMS_API FdoString* GetImageFormat(void);
00058
00059 /// \brief
00060 /// Sets the format type in which the WMS image will be generated.
00061 ///
00062 /// \remarks
00063 /// Allowed map formats are "picture" formats . Picture formats constitute
00064 /// a rectangular pixel array of fixed size. Picture formats include file types such
00065 /// as Portable Network Graphics (PNG), Joint Photographics Expert Group (JPEG)
00066 /// and file types such as Tagged Image File Format (TIFF).
00067 ///
00068 /// \return
00069 /// Returns nothing.
00070 ///
00071 FDOWMS_API void SetImageFormat(FdoString* value);
00072
00073
00074 /// \brief
00075 /// Gets the transparency state.
00076 ///
00077 /// \remarks
00078 /// The transparency state specifies whether the WMS map background is to
00079 /// be made transparent or not. The default value is false. The ability to return
00080 /// an image drawn with transparent pixels allows results of different Map requests
00081 /// to be overlaid, producing a composite map.
00082 ///
00083 /// \return
00084 /// Returns an FdoBoolean indicating the state of the transparency flag.
00085 ///
00086 FDOWMS_API FdoBoolean GetTransparent(void) const;
00087
00088 /// \brief
00089 /// Sets the transparency state.
00090 ///
00091 /// \remarks
00092 /// The transparency state specifies whether the WMS map background is to
00093 /// be made transparent or not. The default value is false. The ability to return
00094 /// an image drawn with transparent pixels allows results of different Map requests
00095 /// to be overlaid, producing a composite map.
00096 ///
00097 /// \return
00098 /// Returns nothing.
00099 ///
00100 FDOWMS_API void SetTransparent(FdoBoolean transparent);
00101
00102 /// \brief
00103 /// Gets the background color.
00104 ///
00105 /// \remarks
00106 /// The background color is a string that specifies the color to be used
00107 /// as the background pixels of the map. The general format of the background color
00108 /// is a hexadecimal encoding of an RGB value where two hexadecimal characters
00109 /// are used for each of Red, Green, and Blue colour values. The values can range
00110 /// between 00 and FF for each (0 and 255, base 10). The format is 0xRRGGBB; either
00111 /// upper or lower case characters are allowed for RR, GG, and BB values.
00112 /// The "0x" prefix shall have a lower case x? The default value is 0xFFFFFF
00113 /// (corresponding to the colour white).
00114 ///
00115 /// \return
00116 /// Returns a FdoString indicating the background color
00117 /// to be used when rendering the WMS image.
00118 ///
00119 FDOWMS_API FdoString* GetBackgroundColor(void) const;
00120
00121 /// \brief
00122 /// Sets the background color.
00123 ///
00124 /// \remarks
00125 /// The background color is a string that specifies the color to be used
00126 /// as the background pixels of the map. The general format of the background color
00127 /// is a hexadecimal encoding of an RGB value where two hexadecimal characters
00128 /// are used for each of Red, Green, and Blue colour values. The values can range
00129 /// between 00 and FF for each (0 and 255, base 10). The format is 0xRRGGBB; either
00130 /// upper or lower case characters are allowed for RR, GG, and BB values.
00131 /// The "0x" prefix shall have a lower case x? The default value is 0xFFFFFF
00132 /// (corresponding to the colour white).
00133 ///
00134 /// \return
00135 /// Returns nothing.
00136 ///
00137 FDOWMS_API void SetBackgroundColor(FdoString* bgColor);
00138
00139 /// \brief
00140 /// Gets the tile caching option value.
00141 ///
00142 /// \remarks
00143 /// This option specifies whether using the tile caching method to query the raster data.
00144 /// The default value is true.
00145 ///
00146 /// \return
00147 /// Returns a FdoBoolean indicating whether using tile cache or not.
00148 ///
00149 FDOWMS_API FdoBoolean GetUseTileCache(void) const;
00150
00151 /// \brief
00152 /// Sets the tile caching option value.
00153 ///
00154 /// \remarks
00155 /// This option specifies whether using the tile caching method to query the raster data.
00156 /// The default value is true.
00157 ///
00158 /// \return
00159 /// Returns nothing.
00160 ///
00161 FDOWMS_API void SetUseTileCache(FdoBoolean value);
00162
00163 /// \brief
00164 /// Gets the time dimension of the requested WMS map.
00165 ///
00166 /// \remarks
00167 /// If a WMS map has a Time dimension defined, then requests may
00168 /// include the parameter TIME=value. For the TIME parameter, the special keyword
00169 /// 'current' may be used if the WMS Dimension:Name="time" service metadata
00170 /// element includes a nonzero value for the 'current' attribute. The expression
00171 /// "TIME=current" means send the most current data available. The expression
00172 /// "TIME=start_time/current" means send data from start_time up to the most
00173 /// current data available.
00174 ///
00175 /// \return
00176 /// Returns a FdoString indicating the time dimension of the
00177 /// requested WMS image.
00178 ///
00179 FDOWMS_API FdoString* GetTimeDimension(void) const;
00180
00181 /// \brief
00182 /// Sets the time dimension of the requested WMS map.
00183 ///
00184 /// \remarks
00185 /// If a WMS map has a Time dimension defined, then requests may
00186 /// include the parameter TIME=value. For the TIME parameter, the special keyword
00187 /// 'current' may be used if the WMS Dimension:Name="time" service metadata
00188 /// element includes a nonzero value for the 'current' attribute. The expression
00189 /// "TIME=current" means send the most current data available. The expression
00190 /// "TIME=start_time/current" means send data from start_time up to the most
00191 /// current data available.
00192 ///
00193 /// \return
00194 /// Returns nothing .
00195 ///
00196 FDOWMS_API void SetTimeDimension(FdoString* time);
00197
00198 /// \brief
00199 /// Gets the elevation dimension of the requested WMS map.
00200 ///
00201 /// \remarks
00202 /// If a WMS Map has a Elevation dimension defined, then in
00203 /// order to retrieve the map in the required dimension,
00204 /// the dimension property may set to 'ELEVATION=value'.
00205 ///
00206 /// \return
00207 /// Returns a FdoString indicating the elevation dimension
00208 /// of the requested WMS image.
00209 ///
00210 FDOWMS_API FdoString* GetElevationDimension(void) const;
00211
00212 /// \brief
00213 /// Sets the time dimension of the requested WMS map.
00214 ///
00215 /// \remarks
00216 /// If a WMS Map has a Elevation dimension defined, then in
00217 /// order to retrieve the map in the required dimension,
00218 /// the dimension property may set to 'ELEVATION=value'.
00219 ///
00220 /// \return
00221 /// Returns nothing.
00222 /// \return
00223 /// /// Returns a FdoString indicating the elevation dimension
00224 /// of the requested WMS image.
00225 ///
00226 ///
00227 FDOWMS_API void SetElevationDimension(FdoString* dimension);
00228
00229 /// \brief
00230 /// Gets the spatial context in which the requested
00231 /// WMS map will be returned.
00232 ///
00233 /// \remarks
00234 /// The same spatial context name applies to all layers
00235 /// in a single WMS class definition.
00236 ///
00237 /// \return
00238 /// Returns the WMS Provider's spatial context name.
00239 ///
00240 FDOWMS_API FdoString* GetSpatialContextName(void) const;
00241
00242 /// \brief
00243 /// Sets the spatial context in which the requested
00244 /// WMS map will be returned.
00245 ///
00246 /// \remarks
00247 /// The same spatial context name applies to all layers
00248 /// in a single WMS class definition.
00249 ///
00250 /// \return
00251 /// Returns nothing.
00252 ///
00253 FDOWMS_API void SetSpatialContextName(FdoString* value);
00254
00255 /// \brief
00256 /// Gets the WMS layers that will be used to construct
00257 /// the composite WMS image.
00258 ///
00259 /// \remarks
00260 /// A WMS shall render the requested layers by drawing
00261 /// the first map in the list bottommost, the next one over that,
00262 /// and so on.
00263 ///
00264 /// \return
00265 /// Returns the collection of WMS layers associated to the logical
00266 /// FDO class definition.
00267 ///
00268 FDOWMS_API FdoWmsOvLayerCollection* GetLayers(void) const;
00269
00270 /// \brief
00271 /// Gets the fully qualified name of this element
00272 ///
00273 /// \return
00274 /// Returns the qualified element name
00275 ///
00276 FDOWMS_API virtual FdoStringP GetQualifiedName();
00277
00278 /// \cond DOXYGEN-IGNORE
00279
00280 /// XML Serialization functions, not part of supported API.
00281 FDOWMS_API virtual void InitFromXml(FdoXmlSaxContext* pContext, FdoXmlAttributeCollection* attrs);
00282 FDOWMS_API virtual FdoXmlSaxHandler* XmlStartElement(
00283 FdoXmlSaxContext* context,
00284 FdoString* uri,
00285 FdoString* name,
00286 FdoString* qname,
00287 FdoXmlAttributeCollection* atts
00288 );
00289 FDOWMS_API virtual FdoBoolean XmlEndElement(FdoXmlSaxContext* context, FdoString* uri, FdoString* name, FdoString* qname);
00290 FDOWMS_API void _writeXml( FdoXmlWriter* xmlWriter, const FdoXmlFlags* flags );
00291
00292 protected:
00293 FDOWMS_API FdoWmsOvRasterDefinition(void);
00294 FDOWMS_API virtual ~FdoWmsOvRasterDefinition(void);
00295
00296 protected:
00297 void _SetFullFormatType(FdoString* value);
00298
00299 void _SetFormatAbbr(FdoString* value);
00300 FdoStringP _GetFormatAbbr() const;
00301
00302 void _SetTransparent(FdoString* value);
00303 FdoStringP _GetTransparent(void) const;
00304 void _SetUseTileCache(FdoString* value);
00305 FdoStringP _GetUseTileCache(void) const;
00306 void Dispose(void);
00307
00308 FdoStringP MIMEFormatTypeToAbbr(FdoString* fullFormat);
00309 FdoStringP AbbrToMIMEFormatType(FdoString* abbrFormat);
00310 private:
00311 FdoStringP m_backgroundColor;
00312 FdoStringP m_timeDimension;
00313 FdoStringP m_elevationDimension;
00314 FdoStringP m_spatialContext;
00315 FdoBoolean m_transparent;
00316 FdoBoolean m_useTileCache;
00317 FdoStringP m_formatType;
00318 FdoStringP m_formatDesc;
00319 FdoWmsOvLayersP m_layers;
00320 FdoXmlCharDataHandler *m_pXmlContentHandler;
00321 bool m_hasFormat;
00322 bool m_hasFormatType;
00323
00324 /// \endcond
00325
00326 };
00327
00328 /// \brief
00329 /// FdoWmsOvRasterDefinitionP is a FdoPtr on FdoWmsOvRasterDefinition, provided for convenience.
00330 typedef FdoPtr<FdoWmsOvRasterDefinition> FdoWmsOvRasterDefinitionP;
00331
00332 #endif // FDOWMSRASTERDEFINITION_H
00333
00334