Skip to content

Commit 2107829

Browse files
committed
msSLDGenerateSLDLayer(): tidy-up. no functional change
1 parent 9bb3797 commit 2107829

1 file changed

Lines changed: 79 additions & 125 deletions

File tree

mapogcsld.c

Lines changed: 79 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -4134,116 +4134,47 @@ char *msSLDGenerateTextSLD(classObj *psClass, layerObj *psLayer, int nVersion)
41344134
#endif
41354135
}
41364136

4137+
#if (defined(USE_WMS_SVR) || defined (USE_WFS_SVR) || defined (USE_WCS_SVR) || defined(USE_SOS_SVR)) && defined(USE_OGR)
41374138

4138-
/************************************************************************/
4139-
/* msSLDGenerateSLDLayer */
4140-
/* */
4141-
/* Genrate an SLD XML string based on the layer's classes. */
4142-
/************************************************************************/
4143-
char *msSLDGenerateSLDLayer(layerObj *psLayer, int nVersion)
4139+
static void msSLDAppendName(msStringBuffer* sb, const char* pszName, int nVersion)
41444140
{
4145-
#if defined(USE_WMS_SVR) || defined (USE_WFS_SVR) || defined (USE_WCS_SVR) || defined(USE_SOS_SVR)
4146-
4147-
#ifdef USE_OGR
4148-
char szTmp[100];
4149-
char *pszTmpName = NULL;
4150-
int i, j;
4151-
styleObj *psStyle = NULL;
4152-
char *pszFilter = NULL;
4153-
char *pszFinalSLD = NULL;
4154-
char *pszSLD = NULL;
4155-
const char *pszTmp = NULL;
4156-
double dfMinScale =-1, dfMaxScale = -1;
4157-
const char *pszWfsFilter= NULL;
4158-
char *pszEncoded = NULL, *pszWfsFilterEncoded=NULL;
4159-
4160-
4161-
if (psLayer &&
4162-
(psLayer->status == MS_ON || psLayer->status == MS_DEFAULT) &&
4163-
(psLayer->type == MS_LAYER_POINT ||
4164-
psLayer->type == MS_LAYER_LINE ||
4165-
psLayer->type == MS_LAYER_POLYGON )) {
4166-
snprintf(szTmp, sizeof(szTmp), "%s\n", "<NamedLayer>");
4167-
pszFinalSLD = msStringConcatenate(pszFinalSLD, szTmp);
4168-
4169-
pszTmp = msOWSLookupMetadata(&(psLayer->metadata), "MO", "name");
4170-
if (pszTmp) {
4171-
pszEncoded = msEncodeHTMLEntities(pszTmp);
4172-
if (nVersion > OWS_1_0_0)
4173-
snprintf(szTmp, sizeof(szTmp), "<se:Name>%s</se:Name>\n", pszEncoded);
4174-
else
4175-
snprintf(szTmp, sizeof(szTmp), "<Name>%s</Name>\n", pszEncoded);
4176-
pszFinalSLD = msStringConcatenate(pszFinalSLD, szTmp);
4177-
msFree(pszEncoded);
4178-
} else if (psLayer->name) {
4179-
pszEncoded = msEncodeHTMLEntities(psLayer->name);
4180-
pszTmpName = (char *)malloc(sizeof(char)*(strlen(pszEncoded)+100));
4181-
if (nVersion > OWS_1_0_0)
4182-
sprintf(pszTmpName, "<se:Name>%s</se:Name>\n", pszEncoded);
4183-
else
4184-
sprintf(pszTmpName, "<Name>%s</Name>\n", pszEncoded);
4185-
4186-
4187-
msFree(pszEncoded);
4188-
pszFinalSLD = msStringConcatenate(pszFinalSLD, pszTmpName);
4189-
msFree(pszTmpName);
4190-
pszTmpName=NULL;
4191-
4192-
} else {
4193-
if (nVersion > OWS_1_0_0)
4194-
snprintf(szTmp, sizeof(szTmp), "<se:Name>%s</se:Name>\n", "NamedLayer");
4195-
else
4196-
snprintf(szTmp, sizeof(szTmp), "<Name>%s</Name>\n", "NamedLayer");
4197-
pszFinalSLD = msStringConcatenate(pszFinalSLD, szTmp);
4198-
}
4199-
4141+
char* pszEncoded = msEncodeHTMLEntities(pszName);
4142+
msStringBufferAppend(sb, (nVersion > OWS_1_0_0) ? "<se:Name>" : "<Name>");
4143+
msStringBufferAppend(sb, pszEncoded);
4144+
msStringBufferAppend(sb, (nVersion > OWS_1_0_0) ? "</se:Name>\n" : "</Name>\n");
4145+
msFree(pszEncoded);
4146+
}
42004147

4201-
snprintf(szTmp, sizeof(szTmp), "%s\n", "<UserStyle>");
4202-
pszFinalSLD = msStringConcatenate(pszFinalSLD, szTmp);
4148+
static void msSLDGenerateUserStyle(msStringBuffer* sb, layerObj *psLayer, int nVersion)
4149+
{
4150+
const char* pszWfsFilter;
42034151

4204-
if (nVersion > OWS_1_0_0)
4205-
snprintf(szTmp, sizeof(szTmp), "%s\n", "<se:FeatureTypeStyle>");
4206-
else
4207-
snprintf(szTmp, sizeof(szTmp), "%s\n", "<FeatureTypeStyle>");
4152+
msStringBufferAppend(sb, "<UserStyle>\n");
42084153

4209-
pszFinalSLD = msStringConcatenate(pszFinalSLD, szTmp);
4154+
msStringBufferAppend(sb, nVersion > OWS_1_0_0 ?
4155+
"<se:FeatureTypeStyle>\n" : "<FeatureTypeStyle>\n");
42104156

42114157
pszWfsFilter = msLookupHashTable(&(psLayer->metadata), "wfs_filter");
4212-
if (pszWfsFilter)
4213-
pszWfsFilterEncoded = msEncodeHTMLEntities(pszWfsFilter);
42144158
if (psLayer->numclasses > 0) {
4159+
int i;
42154160
for (i=0; i<psLayer->numclasses; i++) {
4216-
if (nVersion > OWS_1_0_0)
4217-
snprintf(szTmp, sizeof(szTmp), "%s\n", "<se:Rule>");
4218-
else
4219-
snprintf(szTmp, sizeof(szTmp), "%s\n", "<Rule>");
4161+
char* pszFilter;
4162+
double dfMinScale =-1, dfMaxScale = -1;
42204163

4221-
pszFinalSLD = msStringConcatenate(pszFinalSLD, szTmp);
4164+
msStringBufferAppend(sb, nVersion > OWS_1_0_0 ? "<se:Rule>\n" : "<Rule>\n" );
42224165

42234166
/* if class has a name, use it as the RULE name */
42244167
if (psLayer->class[i]->name) {
4225-
pszEncoded = msEncodeHTMLEntities(psLayer->class[i]->name);
4226-
pszTmpName = (char *)malloc(sizeof(char)*(strlen(pszEncoded)+100));
4227-
4228-
if (nVersion > OWS_1_0_0)
4229-
sprintf(pszTmpName, "<se:Name>%s</se:Name>\n", pszEncoded);
4230-
else
4231-
sprintf(pszTmpName, "<Name>%s</Name>\n", pszEncoded);
4232-
4233-
msFree(pszEncoded);
4234-
4235-
pszFinalSLD = msStringConcatenate(pszFinalSLD, pszTmpName);
4236-
msFree(pszTmpName);
4237-
pszTmpName=NULL;
4168+
msSLDAppendName(sb, psLayer->class[i]->name, nVersion);
42384169
}
42394170
/* -------------------------------------------------------------------- */
42404171
/* get the Filter if there is a class expression. */
42414172
/* -------------------------------------------------------------------- */
42424173
pszFilter = msSLDGetFilter(psLayer->class[i] ,
4243-
pszWfsFilter);/* pszWfsFilterEncoded); */
4174+
pszWfsFilter);
42444175

42454176
if (pszFilter) {
4246-
pszFinalSLD = msStringConcatenate(pszFinalSLD, pszFilter);
4177+
msStringBufferAppend(sb, pszFilter);
42474178
free(pszFilter);
42484179
}
42494180
/* -------------------------------------------------------------------- */
@@ -4257,14 +4188,15 @@ char *msSLDGenerateSLDLayer(layerObj *psLayer, int nVersion)
42574188
else if (psLayer->map && psLayer->map->web.minscaledenom > 0)
42584189
dfMinScale = psLayer->map->web.minscaledenom;
42594190
if (dfMinScale > 0) {
4191+
char szTmp[100];
42604192
if (nVersion > OWS_1_0_0)
42614193
snprintf(szTmp, sizeof(szTmp), "<se:MinScaleDenominator>%f</se:MinScaleDenominator>\n",
42624194
dfMinScale);
42634195
else
42644196
snprintf(szTmp, sizeof(szTmp), "<MinScaleDenominator>%f</MinScaleDenominator>\n",
42654197
dfMinScale);
42664198

4267-
pszFinalSLD = msStringConcatenate(pszFinalSLD, szTmp);
4199+
msStringBufferAppend(sb, szTmp);
42684200
}
42694201

42704202
dfMaxScale = -1.0;
@@ -4275,14 +4207,15 @@ char *msSLDGenerateSLDLayer(layerObj *psLayer, int nVersion)
42754207
else if (psLayer->map && psLayer->map->web.maxscaledenom > 0)
42764208
dfMaxScale = psLayer->map->web.maxscaledenom;
42774209
if (dfMaxScale > 0) {
4210+
char szTmp[100];
42784211
if (nVersion > OWS_1_0_0)
42794212
snprintf(szTmp, sizeof(szTmp), "<se:MaxScaleDenominator>%f</se:MaxScaleDenominator>\n",
42804213
dfMaxScale);
42814214
else
42824215
snprintf(szTmp, sizeof(szTmp), "<MaxScaleDenominator>%f</MaxScaleDenominator>\n",
42834216
dfMaxScale);
42844217

4285-
pszFinalSLD = msStringConcatenate(pszFinalSLD, szTmp);
4218+
msStringBufferAppend(sb, szTmp);
42864219
}
42874220

42884221

@@ -4295,69 +4228,90 @@ char *msSLDGenerateSLDLayer(layerObj *psLayer, int nVersion)
42954228
/* Lines using symbols TODO (specially for dash lines) */
42964229
/* -------------------------------------------------------------------- */
42974230
if (psLayer->type == MS_LAYER_LINE) {
4231+
int j;
42984232
for (j=0; j<psLayer->class[i]->numstyles; j++) {
4299-
psStyle = psLayer->class[i]->styles[j];
4300-
pszSLD = msSLDGenerateLineSLD(psStyle, psLayer, nVersion);
4233+
styleObj* psStyle = psLayer->class[i]->styles[j];
4234+
char* pszSLD = msSLDGenerateLineSLD(psStyle, psLayer, nVersion);
43014235
if (pszSLD) {
4302-
pszFinalSLD = msStringConcatenate(pszFinalSLD, pszSLD);
4236+
msStringBufferAppend(sb, pszSLD);
43034237
free(pszSLD);
43044238
}
43054239
}
43064240

43074241
} else if (psLayer->type == MS_LAYER_POLYGON) {
4242+
int j;
43084243
for (j=0; j<psLayer->class[i]->numstyles; j++) {
4309-
psStyle = psLayer->class[i]->styles[j];
4310-
pszSLD = msSLDGeneratePolygonSLD(psStyle, psLayer, nVersion);
4244+
styleObj* psStyle = psLayer->class[i]->styles[j];
4245+
char* pszSLD = msSLDGeneratePolygonSLD(psStyle, psLayer, nVersion);
43114246
if (pszSLD) {
4312-
pszFinalSLD = msStringConcatenate(pszFinalSLD, pszSLD);
4247+
msStringBufferAppend(sb, pszSLD);
43134248
free(pszSLD);
43144249
}
43154250
}
43164251

43174252
} else if (psLayer->type == MS_LAYER_POINT) {
4253+
int j;
43184254
for (j=0; j<psLayer->class[i]->numstyles; j++) {
4319-
psStyle = psLayer->class[i]->styles[j];
4320-
pszSLD = msSLDGeneratePointSLD(psStyle, psLayer, nVersion);
4255+
styleObj* psStyle = psLayer->class[i]->styles[j];
4256+
char* pszSLD = msSLDGeneratePointSLD(psStyle, psLayer, nVersion);
43214257
if (pszSLD) {
4322-
pszFinalSLD = msStringConcatenate(pszFinalSLD, pszSLD);
4258+
msStringBufferAppend(sb, pszSLD);
43234259
free(pszSLD);
43244260
}
43254261
}
43264262

43274263
}
4328-
/* label if it exists */
4329-
pszSLD = msSLDGenerateTextSLD(psLayer->class[i], psLayer, nVersion);
4330-
if (pszSLD) {
4331-
pszFinalSLD = msStringConcatenate(pszFinalSLD, pszSLD);
4332-
free(pszSLD);
4264+
{
4265+
/* label if it exists */
4266+
char* pszSLD = msSLDGenerateTextSLD(psLayer->class[i], psLayer, nVersion);
4267+
if (pszSLD) {
4268+
msStringBufferAppend(sb, pszSLD);
4269+
free(pszSLD);
4270+
}
43334271
}
4334-
if (nVersion > OWS_1_0_0)
4335-
snprintf(szTmp, sizeof(szTmp), "%s\n", "</se:Rule>");
4336-
else
4337-
snprintf(szTmp, sizeof(szTmp), "%s\n", "</Rule>");
4272+
msStringBufferAppend(sb, nVersion > OWS_1_0_0 ? "</se:Rule>\n" : "</Rule>\n");
4273+
}
4274+
}
43384275

4339-
pszFinalSLD = msStringConcatenate(pszFinalSLD, szTmp);
4276+
msStringBufferAppend(sb, nVersion > OWS_1_0_0 ? "</se:FeatureTypeStyle>\n" : "</FeatureTypeStyle>\n");
4277+
msStringBufferAppend(sb, "</UserStyle>\n");
4278+
}
43404279

4280+
#endif
43414281

4342-
}
4343-
}
4344-
if (pszWfsFilterEncoded)
4345-
msFree(pszWfsFilterEncoded);
4346-
if (nVersion > OWS_1_0_0)
4347-
snprintf(szTmp, sizeof(szTmp), "%s\n", "</se:FeatureTypeStyle>");
4348-
else
4349-
snprintf(szTmp, sizeof(szTmp), "%s\n", "</FeatureTypeStyle>");
4282+
/************************************************************************/
4283+
/* msSLDGenerateSLDLayer */
4284+
/* */
4285+
/* Genrate an SLD XML string based on the layer's classes. */
4286+
/************************************************************************/
4287+
char *msSLDGenerateSLDLayer(layerObj *psLayer, int nVersion)
4288+
{
4289+
#if defined(USE_WMS_SVR) || defined (USE_WFS_SVR) || defined (USE_WCS_SVR) || defined(USE_SOS_SVR)
4290+
4291+
#ifdef USE_OGR
4292+
const char *pszWMSLayerName = NULL;
4293+
msStringBuffer* sb = msStringBufferAlloc();
4294+
4295+
if (psLayer &&
4296+
(psLayer->status == MS_ON || psLayer->status == MS_DEFAULT) &&
4297+
(psLayer->type == MS_LAYER_POINT ||
4298+
psLayer->type == MS_LAYER_LINE ||
4299+
psLayer->type == MS_LAYER_POLYGON )) {
43504300

4351-
pszFinalSLD = msStringConcatenate(pszFinalSLD, szTmp);
4301+
msStringBufferAppend(sb, "<NamedLayer>\n");
43524302

4353-
snprintf(szTmp, sizeof(szTmp), "%s\n", "</UserStyle>");
4354-
pszFinalSLD = msStringConcatenate(pszFinalSLD, szTmp);
4303+
pszWMSLayerName = msOWSLookupMetadata(&(psLayer->metadata), "MO", "name");
4304+
msSLDAppendName(sb,
4305+
pszWMSLayerName ? pszWMSLayerName :
4306+
psLayer->name ? psLayer->name :
4307+
"NamedLayer",
4308+
nVersion);
43554309

4356-
snprintf(szTmp, sizeof(szTmp), "%s\n", "</NamedLayer>");
4357-
pszFinalSLD = msStringConcatenate(pszFinalSLD, szTmp);
4310+
msSLDGenerateUserStyle(sb, psLayer, nVersion);
43584311

4312+
msStringBufferAppend(sb, "</NamedLayer>\n");
43594313
}
4360-
return pszFinalSLD;
4314+
return msStringBufferReleaseStringAndFree(sb);
43614315

43624316

43634317
#else

0 commit comments

Comments
 (0)