Skip to content

Commit a02eb6a

Browse files
committed
msSLDParseNamedLayer(): move UserStyle parsing to a dedicated function. No functional change
1 parent f5509ac commit a02eb6a

File tree

1 file changed

+35
-16
lines changed

1 file changed

+35
-16
lines changed

mapogcsld.c

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -765,29 +765,23 @@ static char* msSLDGetCommonExpressionFromFilter(CPLXMLNode* psFilter,
765765
}
766766

767767
/************************************************************************/
768-
/* msSLDParseNamedLayer */
768+
/* msSLDParseUserStyle */
769769
/* */
770-
/* Parse NamedLayer root. */
770+
/* Parse UserStyle node. */
771771
/************************************************************************/
772-
int msSLDParseNamedLayer(CPLXMLNode *psRoot, layerObj *psLayer)
773-
{
774-
CPLXMLNode *psFeatureTypeStyle, *psRule, *psUserStyle;
775-
CPLXMLNode *psSLDName = NULL, *psNamedStyle=NULL;
776-
CPLXMLNode *psElseFilter = NULL, *psFilter=NULL;
777-
CPLXMLNode *psLayerFeatureConstraints = NULL;
778-
int nNewClasses=0, nClassBeforeFilter=0, nClassAfterFilter=0;
779-
int nClassAfterRule=0, nClassBeforeRule=0;
780772

781-
if (!psRoot || !psLayer)
782-
return MS_FAILURE;
773+
static void msSLDParseUserStyle(CPLXMLNode* psUserStyle, layerObj *psLayer)
774+
{
775+
CPLXMLNode *psFeatureTypeStyle;
783776

784-
psUserStyle = CPLGetXMLNode(psRoot, "UserStyle");
785-
if (psUserStyle) {
786777
psFeatureTypeStyle = CPLGetXMLNode(psUserStyle, "FeatureTypeStyle");
787778
if (psFeatureTypeStyle) {
788779
while (psFeatureTypeStyle && psFeatureTypeStyle->pszValue &&
789780
strcasecmp(psFeatureTypeStyle->pszValue,
790781
"FeatureTypeStyle") == 0) {
782+
783+
CPLXMLNode* psRule;
784+
791785
if (!psFeatureTypeStyle->pszValue ||
792786
strcasecmp(psFeatureTypeStyle->pszValue,
793787
"FeatureTypeStyle") != 0) {
@@ -800,6 +794,11 @@ int msSLDParseNamedLayer(CPLXMLNode *psRoot, layerObj *psLayer)
800794
/* -------------------------------------------------------------------- */
801795
psRule = CPLGetXMLNode(psFeatureTypeStyle, "Rule");
802796
while (psRule) {
797+
CPLXMLNode *psFilter = NULL;
798+
CPLXMLNode *psElseFilter = NULL;
799+
int nNewClasses=0, nClassBeforeFilter=0, nClassAfterFilter=0;
800+
int nClassAfterRule=0, nClassBeforeRule=0;
801+
803802
if (!psRule->pszValue ||
804803
strcasecmp(psRule->pszValue, "Rule") != 0) {
805804
psRule = psRule->psNext;
@@ -858,6 +857,7 @@ int msSLDParseNamedLayer(CPLXMLNode *psRoot, layerObj *psLayer)
858857
/* -------------------------------------------------------------------- */
859858
psRule = CPLGetXMLNode(psFeatureTypeStyle, "Rule");
860859
while (psRule) {
860+
CPLXMLNode* psElseFilter;
861861
if (!psRule->pszValue ||
862862
strcasecmp(psRule->pszValue, "Rule") != 0) {
863863
psRule = psRule->psNext;
@@ -876,12 +876,30 @@ int msSLDParseNamedLayer(CPLXMLNode *psRoot, layerObj *psLayer)
876876
psFeatureTypeStyle = psFeatureTypeStyle->psNext;
877877
}
878878
}
879+
}
880+
881+
/************************************************************************/
882+
/* msSLDParseNamedLayer */
883+
/* */
884+
/* Parse NamedLayer root. */
885+
/************************************************************************/
886+
int msSLDParseNamedLayer(CPLXMLNode *psRoot, layerObj *psLayer)
887+
{
888+
CPLXMLNode *psUserStyle;
889+
CPLXMLNode *psLayerFeatureConstraints = NULL;
890+
891+
if (!psRoot || !psLayer)
892+
return MS_FAILURE;
893+
894+
psUserStyle = CPLGetXMLNode(psRoot, "UserStyle");
895+
if (psUserStyle) {
896+
msSLDParseUserStyle(psUserStyle, psLayer);
879897
}
880898
/* check for Named styles*/
881899
else {
882-
psNamedStyle = CPLGetXMLNode(psRoot, "NamedStyle");
900+
CPLXMLNode* psNamedStyle = CPLGetXMLNode(psRoot, "NamedStyle");
883901
if (psNamedStyle) {
884-
psSLDName = CPLGetXMLNode(psNamedStyle, "Name");
902+
CPLXMLNode* psSLDName = CPLGetXMLNode(psNamedStyle, "Name");
885903
if (psSLDName && psSLDName->psChild && psSLDName->psChild->pszValue) {
886904
msFree(psLayer->classgroup);
887905
psLayer->classgroup = msStrdup(psSLDName->psChild->pszValue);
@@ -907,6 +925,7 @@ int msSLDParseNamedLayer(CPLXMLNode *psRoot, layerObj *psLayer)
907925
}
908926
}
909927
if( psFeatureTypeConstraint != NULL ) {
928+
CPLXMLNode* psFilter;
910929
if( CPLGetXMLNode(psFeatureTypeConstraint, "FeatureTypeName") != NULL ) {
911930
msSetError(MS_WMSERR, "FeatureTypeName element is not "
912931
"supported in FeatureTypeConstraint", "");

0 commit comments

Comments
 (0)