Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tag: rel-6-0-0-beta7
Fetching contributors…

Cannot retrieve contributors at this time

169 lines (124 sloc) 5.925 kb
/******************************************************************************
* $Id$
*
* Project: MapServer
* Purpose: Template processing related declarations.
* Author: Steve Lime and the MapServer team.
*
******************************************************************************
* Copyright (c) 1996-2005 Regents of the University of Minnesota.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies of this Software or works derived from this Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
****************************************************************************/
#ifndef MAPTEMPLATE_H
#define MAPTEMPLATE_H
#include "mapserver.h"
#include "maphash.h"
#define IDPATTERN "^[0-9A-Za-z]{1,63}$"
#define IDSIZE 64
#define TEMPLATE_TYPE(s) (((strncmp("http://", s, 7) == 0) || (strncmp("https://", s, 8) == 0) || (strncmp("ftp://", s, 6)) == 0) ? MS_URL : MS_FILE)
#define MAXZOOM 25
#define MINZOOM -25
#define DEFAULT_DATE_FORMAT "%d/%b/%Y:%H:%M:%S %z"
enum coordSources {NONE, FROMIMGPNT, FROMIMGBOX, FROMIMGSHAPE, FROMREFPNT, FROMUSERPNT, FROMUSERBOX, FROMUSERSHAPE, FROMBUF, FROMSCALE, FROMTILE};
enum modes {BROWSE, ZOOMIN, ZOOMOUT, MAP, LEGEND, LEGENDICON, REFERENCE, SCALEBAR, COORDINATE,
QUERY, NQUERY, ITEMQUERY, ITEMNQUERY,
FEATUREQUERY, FEATURENQUERY, ITEMFEATUREQUERY, ITEMFEATURENQUERY,
INDEXQUERY, TILE, OWS, WFS};
/* struct mapservObj
* Global structure used by templates and mapserver CGI interface.
*
* This structur was created to seperate template functionality
* from the main mapserv file. Instead of moving all template
* related functions in a new file (maptemplate.c) and change
* their signatures to pass all global variables, we created this
* structure with all global variables needed by template.
*/
typedef struct
{
/* should the query and/or map be saved */
int savemap, savequery;
cgiRequestObj *request;
int sendheaders; /* should mime-type header be output, default will be MS_TRUE */
mapObj *map;
char **Layers;
char *icon; /* layer:class combination that defines a legend icon */
int NumLayers; /* number of layers specfied by a use */
int MaxLayers; /* Allocated size of Layers[] array */
layerObj *resultlayer;
int UseShapes; /* are results of a query to be used in calculating an extent of some sort */
shapeObj resultshape;
rectObj RawExt;
pointObj mappnt;
double fZoom, Zoom;
int ZoomDirection; /* whether zooming in or out, default is pan or 0 */
int Mode; /* can be BROWSE, QUERY, etc. */
int TileMode; /* can be GMAP, VE */
char *TileCoords; /* for GMAP: 0 0 1; for VE: 013021023 */
char Id[IDSIZE]; /* big enough for time + pid */
int CoordSource;
double ScaleDenom; /* used to create a map extent around a point */
int ImgRows, ImgCols;
rectObj ImgExt; /* Existing image's mapextent */
rectObj ImgBox;
pointObj RefPnt;
pointObj ImgPnt;
double Buffer;
/*
** variables for multiple query results processing
*/
int RN; /* overall result number */
int LRN; /* result number within a layer */
int NL; /* total number of layers with results */
int NR; /* total number or results */
int NLR; /* number of results in a layer */
} mapservObj;
/*! \fn msAllocMapServObj
* Allocate memory for all variables in strusture
* and initiate default values
*/
MS_DLL_EXPORT mapservObj* msAllocMapServObj(void);
/*! \fn msFreeMapServObj
* free all variables in structure
*/
MS_DLL_EXPORT void msFreeMapServObj(mapservObj* msObj);
/* For Mapserv.c */
MS_DLL_EXPORT int isOn(mapservObj* msObj, char *name, char *group);
MS_DLL_EXPORT int checkWebScale(mapservObj *msObj);
MS_DLL_EXPORT int setExtent(mapservObj *msObj);
MS_DLL_EXPORT int msReturnPage(mapservObj* msObj, char* , int, char **);
MS_DLL_EXPORT int msReturnURL(mapservObj* msObj, char*, int);
MS_DLL_EXPORT int msReturnNestedTemplateQuery(mapservObj* msObj, char* pszMimeType, char **papszBuffer);
MS_DLL_EXPORT int msReturnTemplateQuery(mapservObj *msObj, char* pszMimeType, char **papszBuffer);
MS_DLL_EXPORT int msReturnOpenLayersPage(mapservObj *mapserv);
MS_DLL_EXPORT int msRedirect(char* url);
MS_DLL_EXPORT char *generateLegendTemplate(mapservObj *msObj);
MS_DLL_EXPORT int msGenerateImages(mapservObj *msObj, int bQueryMap, int bReturnOnError);
MS_DLL_EXPORT char *msProcessTemplate(mapObj *map, int bGenerateImages,
char **names, char **values,
int numentries);
MS_DLL_EXPORT char *msProcessLegendTemplate(mapObj *map,
char **names, char **values,
int numentries);
MS_DLL_EXPORT char *msProcessQueryTemplate(mapObj *map,
int bGenerateImages,
char **names, char **values,
int numentries);
MS_DLL_EXPORT int msGrowMapservLayers( mapservObj* msObj );
#endif
Jump to Line
Something went wrong with that request. Please try again.