Skip to content

Commit

Permalink
Merge pull request #245 from KaiVolland/style-2
Browse files Browse the repository at this point in the history
Adapts parser to geostyler-style v2
  • Loading branch information
KaiVolland committed Sep 5, 2019
2 parents 42d20a2 + 1270722 commit 694bc30
Show file tree
Hide file tree
Showing 7 changed files with 48 additions and 11 deletions.
5 changes: 5 additions & 0 deletions data/slds/point_simplepoint.sld
Expand Up @@ -17,7 +17,12 @@
<WellKnownName>circle</WellKnownName>
<Fill>
<CssParameter name="fill">#FF0000</CssParameter>
<CssParameter name="fill-opacity">0.5</CssParameter>
</Fill>
<Stroke>
<CssParameter name="stroke">#0000FF</CssParameter>
<CssParameter name="stroke-opacity">0.7</CssParameter>
</Stroke>
</Mark>
<Size>6</Size>
</Graphic>
Expand Down
2 changes: 1 addition & 1 deletion data/slds/point_simplepoint_oneline.sld
@@ -1 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><StyledLayerDescriptor version="1.0.0" xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><NamedLayer><Name>Simple Point</Name><UserStyle><Name>Simple Point</Name><Title>Simple Point</Title><FeatureTypeStyle><Rule><Name/><PointSymbolizer><Graphic><Mark><WellKnownName>circle</WellKnownName><Fill><CssParameter name="fill">#FF0000</CssParameter></Fill></Mark><Size>6</Size></Graphic></PointSymbolizer></Rule></FeatureTypeStyle></UserStyle></NamedLayer></StyledLayerDescriptor>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><StyledLayerDescriptor version="1.0.0" xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><NamedLayer><Name>Simple Point</Name><UserStyle><Name>Simple Point</Name><Title>Simple Point</Title><FeatureTypeStyle><Rule><Name/><PointSymbolizer><Graphic><Mark><WellKnownName>circle</WellKnownName><Fill><CssParameter name="fill">#FF0000</CssParameter><CssParameter name="fill-opacity">0.5</CssParameter></Fill><Stroke><CssParameter name="stroke">#0000FF</CssParameter><CssParameter name="stroke-opacity">0.7</CssParameter></Stroke></Mark><Size>6</Size></Graphic></PointSymbolizer></Rule></FeatureTypeStyle></UserStyle></NamedLayer></StyledLayerDescriptor>
1 change: 1 addition & 0 deletions data/slds/polygon_transparentpolygon.sld
Expand Up @@ -20,6 +20,7 @@
<CssParameter name="stroke">#FFFFFF</CssParameter>
<CssParameter name="stroke-width">2</CssParameter>
<CssParameter name="stroke-dasharray">1 0</CssParameter>
<CssParameter name="stroke-opacity">0.9</CssParameter>
</Stroke>
</PolygonSymbolizer>
</Rule>
Expand Down
5 changes: 4 additions & 1 deletion data/styles/point_simplepoint.ts
Expand Up @@ -8,7 +8,10 @@ const pointSimplePoint: Style = {
kind: 'Mark',
wellKnownName: 'Circle',
color: '#FF0000',
radius: 3
radius: 3,
fillOpacity: 0.5,
strokeColor: '#0000FF',
strokeOpacity: 0.7
}]
}]
};
Expand Down
3 changes: 2 additions & 1 deletion data/styles/polygon_transparentpolygon.ts
Expand Up @@ -7,9 +7,10 @@ const polygonTransparentPolygon: Style = {
symbolizers: [{
kind: 'Fill',
color: '#000080',
opacity: 0.5,
fillOpacity: 0.5,
outlineColor: '#FFFFFF',
outlineWidth: 2,
outlineOpacity: 0.9,
outlineDasharray: [1, 0]
}]
}]
Expand Down
4 changes: 2 additions & 2 deletions src/SldStyleParser.spec.ts
Expand Up @@ -781,8 +781,8 @@ describe('SldStyleParser implements StyleParser', () => {

it('can write a non-prettified SLD by setting flag "prettyOutput" to false', () => {
expect.assertions(2);
const styleParser = new SldStyleParser({prettyOutput: false});
return styleParser.writeStyle(point_simplepoint)
const styleParserPrettyFalse = new SldStyleParser({prettyOutput: false});
return styleParserPrettyFalse.writeStyle(point_simplepoint)
.then((sldString: string) => {
expect(sldString).toBeDefined();
const sld = fs.readFileSync( './data/slds/point_simplepoint_oneline.sld', 'utf8');
Expand Down
39 changes: 33 additions & 6 deletions src/SldStyleParser.ts
Expand Up @@ -392,13 +392,21 @@ export class SldStyleParser implements StyleParser {
}
}

const fillOpacityIdx: number = fillParams.findIndex((cssParam: any) => {
return cssParam.$.name === 'fill-opacity';
});
let fillOpacity: string = _get(sldSymbolizer, 'Graphic[0].Mark[0].Fill[0].CssParameter[' + fillOpacityIdx + ']._');

let markSymbolizer: MarkSymbolizer = {
kind: 'Mark',
} as MarkSymbolizer;

if (opacity) {
markSymbolizer.opacity = parseFloat(opacity);
}
if (fillOpacity) {
markSymbolizer.fillOpacity = parseFloat(fillOpacity);
}
if (color) {
markSymbolizer.color = color;
}
Expand Down Expand Up @@ -636,7 +644,7 @@ export class SldStyleParser implements StyleParser {
fillSymbolizer.color = value;
break;
case 'fill-opacity':
fillSymbolizer.opacity = parseFloat(value);
fillSymbolizer.fillOpacity = parseFloat(value);
break;
default:
break;
Expand All @@ -656,6 +664,8 @@ export class SldStyleParser implements StyleParser {
fillSymbolizer.outlineColor = value;
} else if (name === 'stroke-width') {
fillSymbolizer.outlineWidth = parseFloat(value);
} else if (name === 'stroke-opacity') {
fillSymbolizer.outlineOpacity = parseFloat(value);
} else if (name === 'stroke-dasharray') {
const outlineDasharrayStr = value.split(' ');
const outlineDasharray: number[] = [];
Expand Down Expand Up @@ -1508,11 +1518,12 @@ export class SldStyleParser implements StyleParser {
const strokePropertyMap = {
outlineColor: 'stroke',
outlineWidth: 'stroke-width',
outlineOpacity: 'stroke-opacity',
outlineDasharray: 'stroke-dasharray'
};
const fillPropertyMap = {
color: 'fill',
opacity: 'fill-opacity'
fillOpacity: 'fill-opacity'
};
let strokeCssParameters: any[] = [];
let fillCssParameters: any[] = [];
Expand Down Expand Up @@ -1556,6 +1567,8 @@ export class SldStyleParser implements StyleParser {
});
} else if (property === 'outlineWidth') {
transformedValue = fillSymbolizer[property] + '';
} else if (property === 'outlineOpacity') {
transformedValue = fillSymbolizer[property] + '';
} else {
transformedValue = fillSymbolizer[property];
}
Expand Down Expand Up @@ -1687,16 +1700,30 @@ export class SldStyleParser implements StyleParser {
markSymbolizer.wellKnownName.toLowerCase()
]
}];
if (markSymbolizer.color) {
mark[0].Fill = [{
'CssParameter': [{

if (markSymbolizer.color || markSymbolizer.fillOpacity) {
const cssParameters = [];
if (markSymbolizer.color) {
cssParameters.push({
'_': markSymbolizer.color,
'$': {
'name': 'fill'
}
}]
});
}
if (markSymbolizer.fillOpacity) {
cssParameters.push({
'_': markSymbolizer.fillOpacity,
'$': {
'name': 'fill-opacity'
}
});
}
mark[0].Fill = [{
'CssParameter': cssParameters
}];
}

if (markSymbolizer.strokeColor || markSymbolizer.strokeWidth || markSymbolizer.strokeOpacity) {
mark[0].Stroke = [{}];
const strokeCssParameters = [];
Expand Down

0 comments on commit 694bc30

Please sign in to comment.