/ msSLDGetGraphicSLD */ / Get an SLD for a style containg a symbol (Mark or external). */ /
| 3322 | /* Get an SLD for a style containg a symbol (Mark or external). */ |
| 3323 | /************************************************************************/ |
| 3324 | char *msSLDGetGraphicSLD(styleObj *psStyle, layerObj *psLayer, |
| 3325 | int bNeedMarkSybol, int nVersion) |
| 3326 | { |
| 3327 | #if defined(USE_WMS_SVR) || defined (USE_WFS_SVR) || defined (USE_WCS_SVR) || defined(USE_SOS_SVR) |
| 3328 | |
| 3329 | char *pszSLD = NULL; |
| 3330 | int nSymbol = -1; |
| 3331 | symbolObj *psSymbol = NULL; |
| 3332 | char szTmp[512]; |
| 3333 | char *pszURL = NULL; |
| 3334 | char szFormat[4]; |
| 3335 | int i = 0, nLength = 0; |
| 3336 | int bFillColor = 0, bColorAvailable=0; |
| 3337 | int bGenerateDefaultSymbol = 0; |
| 3338 | char *pszSymbolName= NULL; |
| 3339 | char sNameSpace[10]; |
| 3340 | char sCssParam[30]; |
| 3341 | |
| 3342 | sCssParam[0] = '\0'; |
| 3343 | if (nVersion > OWS_1_0_0) |
| 3344 | strcpy(sCssParam, "se:SvgParameter"); |
| 3345 | else |
| 3346 | strcpy(sCssParam, "CssParameter"); |
| 3347 | |
| 3348 | sNameSpace[0] = '\0'; |
| 3349 | if (nVersion > OWS_1_0_0) |
| 3350 | strcpy(sNameSpace, "se:"); |
| 3351 | |
| 3352 | if (psStyle && psLayer && psLayer->map) |
| 3353 | { |
| 3354 | nSymbol = -1; |
| 3355 | if (psStyle->symbol > 0) |
| 3356 | nSymbol = psStyle->symbol; |
| 3357 | else if (psStyle->symbolname) |
| 3358 | nSymbol = msGetSymbolIndex(&psLayer->map->symbolset, |
| 3359 | psStyle->symbolname, MS_FALSE); |
| 3360 | |
| 3361 | bGenerateDefaultSymbol = 0; |
| 3362 | |
| 3363 | if (bNeedMarkSybol && |
| 3364 | (nSymbol <=0 || nSymbol >= psLayer->map->symbolset.numsymbols)) |
| 3365 | bGenerateDefaultSymbol = 1; |
| 3366 | |
| 3367 | if (nSymbol > 0 && nSymbol < psLayer->map->symbolset.numsymbols) |
| 3368 | { |
| 3369 | psSymbol = psLayer->map->symbolset.symbol[nSymbol]; |
| 3370 | if (psSymbol->type == MS_SYMBOL_VECTOR || |
| 3371 | psSymbol->type == MS_SYMBOL_ELLIPSE) |
| 3372 | { |
| 3373 | /* Mark symbol */ |
| 3374 | if (psSymbol->name) |
| 3375 | |
| 3376 | { |
| 3377 | if (strcasecmp(psSymbol->name, "square") == 0 || |
| 3378 | strcasecmp(psSymbol->name, "circle") == 0 || |
| 3379 | strcasecmp(psSymbol->name, "triangle") == 0 || |
| 3380 | strcasecmp(psSymbol->name, "star") == 0 || |
| 3381 | strcasecmp(psSymbol->name, "cross") == 0 || |
no test coverage detected