Skip to content

Commit

Permalink
Sets outline and opacity defaults for polygon fill
Browse files Browse the repository at this point in the history
  • Loading branch information
mholthausen committed May 12, 2021
1 parent 76a2173 commit 20fe693
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 1 deletion.
19 changes: 19 additions & 0 deletions data/mapfiles/polygon_simple_polygon_outline.map
@@ -0,0 +1,19 @@
LAYER
NAME "polygon_simple_polygon_outline"
TYPE POLYGON
DATA "../shapes/polygons.shp"
EXTENT -180 -90 180 90
METADATA
"wms_title" "polygon_simple_polygon_outline.map"
"wms_srs" "EPSG:4326"
END
CLASS
STYLE
COLOR 0 255 0
END
STYLE
OUTLINECOLOR 85 85 85
OUTLINEWIDTH 0.1
END
END
END
20 changes: 20 additions & 0 deletions data/styles/polygon_simple_polygon_outline.ts
@@ -0,0 +1,20 @@
import { Style } from 'geostyler-style';

const polygonStyle: Style = {
name: 'polygon_simple_polygon_outline',
rules: [
{
name: '',
symbolizers: [
{ kind: 'Fill', outlineOpacity: 0, color: '#00FF00' },
{
kind: 'Fill',
outlineColor: '#555555',
fillOpacity: 0,
outlineWidth: 0.1
}
]
}
]
};
export default polygonStyle;
9 changes: 9 additions & 0 deletions src/MapfileStyleParser.spec.ts
Expand Up @@ -7,6 +7,7 @@ import { SldStyleParser } from 'geostyler-sld-parser';
import point_simple_point from '../data/styles/point_simple_point';
import line_simple_line from '../data/styles/line_simple_line';
import polygon_simple_polygon from '../data/styles/polygon_simple_polygon';
import polygon_simple_polygon_outline from '../data/styles/polygon_simple_polygon_outline';
import raster_simple_raster from '../data/styles/raster_simple_raster';

import point_simple_rgb_to_hex from '../data/styles/point_simple_rgb_to_hex';
Expand Down Expand Up @@ -69,6 +70,14 @@ describe('MapfileStyleParser implements StyleParser', () => {
expect(geoStylerStyle).toEqual(polygon_simple_polygon);
});

it('can read a simple MapFile PolygonSymbolizer with seperate outline', async () => {
expect.assertions(2);
const mapfile = fs.readFileSync( './data/mapfiles/polygon_simple_polygon_outline.map', 'utf8');
const geoStylerStyle = await styleParser.readStyle(mapfile);
expect(geoStylerStyle).toBeDefined();
expect(geoStylerStyle).toEqual(polygon_simple_polygon_outline);
});

it('can read a simple MapFile RasterSymbolizer', async () => {
expect.assertions(2);
const mapfile = fs.readFileSync( './data/mapfiles/raster_simple_raster.map', 'utf8');
Expand Down
13 changes: 12 additions & 1 deletion src/MapfileStyleParser.ts
Expand Up @@ -624,14 +624,25 @@ export class MapfileStyleParser implements StyleParser {
fillSymbolizer.graphicFill = this.getPointSymbolizerFromMapfileStyle(mapfileStyle);
}

if (mapfileStyle.color && !mapfileStyle.outlinecolor) {
fillSymbolizer.outlineOpacity = 0;
}

if (mapfileStyle.outlinecolor) {
fillSymbolizer.outlineColor = isHex(mapfileStyle.outlinecolor)
? mapfileStyle.outlinecolor
: rgbToHex(mapfileStyle.outlinecolor);

if (mapfileStyle.width) {
fillSymbolizer.outlineWidth = mapfileStyle.width;
}
if (!mapfileStyle.color) {
fillSymbolizer.fillOpacity = 0;
}
}

if (mapfileStyle.outlinewidth) {
fillSymbolizer.outlineWidth = mapfileStyle.outlinewidth;
fillSymbolizer.outlineWidth = parseFloat(mapfileStyle.outlinewidth as unknown as string);
}

if (mapfileStyle.opacity) {
Expand Down

0 comments on commit 20fe693

Please sign in to comment.