MCPcopy Index your code
hub / github.com/MapServer/MapServer / msSLDParseNamedLayer

Function msSLDParseNamedLayer

mapogcsld.c:712–920  ·  view source on GitHub ↗

/ msSLDParseNamedLayer */ / Parse NamedLayer root. */ /

Source from the content-addressed store, hash-verified

710/* Parse NamedLayer root. */
711/************************************************************************/
712int msSLDParseNamedLayer(CPLXMLNode *psRoot, layerObj *psLayer)
713{
714 CPLXMLNode *psFeatureTypeStyle, *psRule, *psUserStyle;
715 CPLXMLNode *psSLDName = NULL, *psNamedStyle=NULL;
716 CPLXMLNode *psElseFilter = NULL, *psFilter=NULL;
717 CPLXMLNode *psTmpNode = NULL;
718 FilterEncodingNode *psNode = NULL;
719 char *szExpression = NULL;
720 int i=0, nNewClasses=0, nClassBeforeFilter=0, nClassAfterFilter=0;
721 int nClassAfterRule=0, nClassBeforeRule=0;
722 char *pszTmpFilter = NULL;
723 layerObj *psCurrentLayer = NULL;
724 const char *pszWmsName=NULL;
725 int j=0;
726 const char *key=NULL;
727
728 if (!psRoot || !psLayer)
729 return MS_FAILURE;
730
731 psUserStyle = CPLGetXMLNode(psRoot, "UserStyle");
732 if (psUserStyle)
733 {
734 psFeatureTypeStyle = CPLGetXMLNode(psUserStyle, "FeatureTypeStyle");
735 if (psFeatureTypeStyle)
736 {
737 while (psFeatureTypeStyle && psFeatureTypeStyle->pszValue &&
738 strcasecmp(psFeatureTypeStyle->pszValue,
739 "FeatureTypeStyle") == 0)
740 {
741 if (!psFeatureTypeStyle->pszValue ||
742 strcasecmp(psFeatureTypeStyle->pszValue,
743 "FeatureTypeStyle") != 0)
744 {
745 psFeatureTypeStyle = psFeatureTypeStyle->psNext;
746 continue;
747 }
748
749/* -------------------------------------------------------------------- */
750/* Parse rules with no Else filter. */
751/* -------------------------------------------------------------------- */
752 psRule = CPLGetXMLNode(psFeatureTypeStyle, "Rule");
753 while (psRule)
754 {
755 if (!psRule->pszValue ||
756 strcasecmp(psRule->pszValue, "Rule") != 0)
757 {
758 psRule = psRule->psNext;
759 continue;
760 }
761 /* used for scale setting */
762 nClassBeforeRule = psLayer->numclasses;
763
764 psElseFilter = CPLGetXMLNode(psRule, "ElseFilter");
765 nClassBeforeFilter = psLayer->numclasses;
766 if (psElseFilter == NULL)
767 msSLDParseRule(psRule, psLayer);
768 nClassAfterFilter = psLayer->numclasses;
769

Callers 1

msSLDParseSLDFunction · 0.85

Calls 15

strcasecmpFunction · 0.85
msSLDParseRuleFunction · 0.85
FLTParseFilterEncodingFunction · 0.85
msOWSLookupMetadataFunction · 0.85
msNextKeyFromHashTableFunction · 0.85
msInsertHashTableFunction · 0.85
msLookupHashTableFunction · 0.85
FLTGetCommonExpressionFunction · 0.85
FLTHasSpatialFilterFunction · 0.85
msLoadExpressionStringFunction · 0.85

Tested by

no test coverage detected