-
-
Notifications
You must be signed in to change notification settings - Fork 369
/
maptemplate.h
145 lines (100 loc) · 3.81 KB
/
maptemplate.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#ifndef MAPTEMPLATE_H
#define MAPTEMPLATE_H
/*!
* $Id$
*/
#include "map.h"
#include "maphash.h"
#define IDSIZE 128
#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
enum coordSources {NONE, FROMIMGPNT, FROMIMGBOX, FROMIMGSHAPE, FROMREFPNT, FROMUSERPNT, FROMUSERBOX, FROMUSERSHAPE, FROMBUF, FROMSCALE};
enum modes {BROWSE, ZOOMIN, ZOOMOUT, MAP, LEGEND, REFERENCE, SCALEBAR, COORDINATE,
QUERY, QUERYMAP, NQUERY, NQUERYMAP,
ITEMQUERY, ITEMQUERYMAP, ITEMNQUERY, ITEMNQUERYMAP,
FEATUREQUERY, FEATUREQUERYMAP, FEATURENQUERY, FEATURENQUERYMAP,
ITEMFEATUREQUERY, ITEMFEATUREQUERYMAP,ITEMFEATURENQUERY,ITEMFEATURENQUERYMAP,
INDEXQUERY,INDEXQUERYMAP};
/*! \srtuct mapservObj
* \brief Global structur used by template and mapserv
*
* 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;
char **ParamNames;
char **ParamValues;
int NumParams;
mapObj *Map;
char *Layers[MS_MAXLAYERS];
/// number of layers specfied by a use
int NumLayers;
layerObj *ResultLayer;
int UseShapes; // are results of a query to be used in calculating an extent of some sort
shapeObj SelectShape, ResultShape;
rectObj RawExt;
pointObj MapPnt;
/// default for browsing
double fZoom, Zoom;
/// whether zooming in or out, default is pan or 0
int ZoomDirection;
/// can be BROWSE, QUERY, etc.
int Mode;
/// big enough for time + pid
char Id[IDSIZE];
int CoordSource;
double Scale; /* 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
*/
mapservObj* msAllocMapServObj(void);
/*! \fn msFreeMapServObj
* free all variables in structure
*/
void msFreeMapServObj(mapservObj* msObj);
// For Mapserv.c
int isOn(mapservObj* msObj, char *name, char *group);
int checkWebScale(mapservObj *msObj);
int setExtent(mapservObj *msObj);
int msReturnPage(mapservObj* msObj, char* , int, char **);
int msReturnURL(mapservObj* msObj, char*, int);
int msReturnQuery(mapservObj* msObj, char* pszMimeType, char **papszBuffer);
int msReturnTemplateQuery(mapservObj *msObj, char* pszMimeType,
char **papszBuffer);
int msRedirect(char* url);
char *generateLegendTemplate(mapservObj *msObj);
int msGenerateImages(mapservObj *msObj, char *szQuery, int bReturnOnError);
char *msProcessTemplate(mapObj *map, int bGenerateImages,
char **names, char **values,
int numentries);
char *msProcessLegendTemplate(mapObj *map,
char **names, char **values,
int numentries);
char *msProcessQueryTemplate(mapObj *map,
int bGenerateImages,
char **names, char **values,
int numentries);
#endif