@@ -56,7 +56,9 @@ static inline void IGUR_sizet(size_t ignored) {
5656#define SLD_MARK_SYMBOL_X " sld_mark_symbol_x"
5757#define SLD_MARK_SYMBOL_X_FILLED " sld_mark_symbol_x_filled"
5858
59- // extended WellKnownNames
59+ // extended WellKnownNames not part of SLD 1.1.0
60+ #define SLD_MARK_SYMBOL_PENTAGON " sld_mark_symbol_pentagon"
61+ #define SLD_MARK_SYMBOL_PENTAGON_FILLED " sld_mark_symbol_pentagon_filled"
6062
6163/* ***********************************************************************/
6264/* msSLDApplySLDURL */
@@ -2141,6 +2143,13 @@ int msSLDGetMarkSymbol(mapObj *map, char *pszSymbolName, int bFilled) {
21412143 else
21422144 nSymbolId =
21432145 msGetSymbolIndex (&map->symbolset , SLD_MARK_SYMBOL_X , MS_FALSE );
2146+ } else if (strcasecmp (pszSymbolName, " pentagon" ) == 0 ) {
2147+ if (bFilled)
2148+ nSymbolId = msGetSymbolIndex (&map->symbolset ,
2149+ SLD_MARK_SYMBOL_PENTAGON_FILLED , MS_FALSE );
2150+ else
2151+ nSymbolId =
2152+ msGetSymbolIndex (&map->symbolset , SLD_MARK_SYMBOL_PENTAGON , MS_FALSE );
21442153 } else {
21452154 nSymbolId = msGetSymbolIndex (&map->symbolset , pszSymbolName, MS_FALSE );
21462155 }
@@ -2312,6 +2321,34 @@ int msSLDGetMarkSymbol(mapObj *map, char *pszSymbolName, int bFilled) {
23122321 psSymbol->points [psSymbol->numpoints ].y = 0 ;
23132322 psSymbol->numpoints ++;
23142323 }
2324+ // extended WellKnownNames
2325+ else if (strcasecmp (pszSymbolName, " pentagon" ) == 0 ) {
2326+ if (bFilled)
2327+ psSymbol->name = msStrdup (SLD_MARK_SYMBOL_PENTAGON_FILLED );
2328+ else
2329+ psSymbol->name = msStrdup (SLD_MARK_SYMBOL_PENTAGON );
2330+ psSymbol->type = MS_SYMBOL_VECTOR ;
2331+ if (bFilled)
2332+ psSymbol->filled = MS_TRUE ;
2333+ psSymbol->points [psSymbol->numpoints ].x = 0.5 ;
2334+ psSymbol->points [psSymbol->numpoints ].y = 0 ;
2335+ psSymbol->numpoints ++;
2336+ psSymbol->points [psSymbol->numpoints ].x = 1 ;
2337+ psSymbol->points [psSymbol->numpoints ].y = 0.38 ;
2338+ psSymbol->numpoints ++;
2339+ psSymbol->points [psSymbol->numpoints ].x = 0.81 ;
2340+ psSymbol->points [psSymbol->numpoints ].y = 1 ;
2341+ psSymbol->numpoints ++;
2342+ psSymbol->points [psSymbol->numpoints ].x = 0.19 ;
2343+ psSymbol->points [psSymbol->numpoints ].y = 1 ;
2344+ psSymbol->numpoints ++;
2345+ psSymbol->points [psSymbol->numpoints ].x = 0 ;
2346+ psSymbol->points [psSymbol->numpoints ].y = 0.38 ;
2347+ psSymbol->numpoints ++;
2348+ psSymbol->points [psSymbol->numpoints ].x = 0.5 ;
2349+ psSymbol->points [psSymbol->numpoints ].y = 0 ;
2350+ psSymbol->numpoints ++;
2351+ }
23152352 }
23162353
23172354 return nSymbolId;
@@ -3545,7 +3582,8 @@ char *msSLDGetGraphicSLD(styleObj *psStyle, layerObj *psLayer,
35453582 strcasecmp (psSymbol->name , " triangle" ) == 0 ||
35463583 strcasecmp (psSymbol->name , " star" ) == 0 ||
35473584 strcasecmp (psSymbol->name , " cross" ) == 0 ||
3548- strcasecmp (psSymbol->name , " x" ) == 0 )
3585+ strcasecmp (psSymbol->name , " x" ) == 0 ||
3586+ strcasecmp (psSymbol->name , " pentagon" ) == 0 )
35493587 pszSymbolName = msStrdup (psSymbol->name );
35503588 else if (strncasecmp (psSymbol->name , " sld_mark_symbol_square" , 22 ) ==
35513589 0 )
@@ -3562,7 +3600,10 @@ char *msSLDGetGraphicSLD(styleObj *psStyle, layerObj *psLayer,
35623600 0 )
35633601 pszSymbolName = msStrdup (" cross" );
35643602 else if (strncasecmp (psSymbol->name , " sld_mark_symbol_x" , 17 ) == 0 )
3565- pszSymbolName = msStrdup (" X" );
3603+ pszSymbolName = msStrdup (" x" );
3604+ else if (strncasecmp (psSymbol->name , " sld_mark_symbol_pentagon" ,
3605+ 24 ) == 0 )
3606+ pszSymbolName = msStrdup (" pentagon" );
35663607
35673608 if (pszSymbolName) {
35683609 colorObj sTmpFillColor = {128 , 128 , 128 , 255 };
0 commit comments