private void RenderFeature(SKCanvas canvas, IViewport viewport, IStyle style, IFeature feature) { if (feature.Geometry is Point) { PointRenderer.Draw(canvas, viewport, style, feature, feature.Geometry, _symbolTextureCache); } else if (feature.Geometry is MultiPoint) { MultiPointRenderer.Draw(canvas, viewport, style, feature, feature.Geometry, _symbolTextureCache); } else if (feature.Geometry is LineString) { LineStringRenderer.Draw(canvas, viewport, style, feature.Geometry); } else if (feature.Geometry is MultiLineString) { MultiLineStringRenderer.Draw(canvas, viewport, style, feature.Geometry); } else if (feature.Geometry is Polygon) { PolygonRenderer.Draw(canvas, viewport, style, feature.Geometry); } else if (feature.Geometry is MultiPolygon) { MultiPolygonRenderer.Draw(canvas, viewport, style, feature.Geometry); } else if (feature.Geometry is IRaster) { RasterRenderer.Draw(canvas, viewport, style, feature, _tileTextureCache, _currentIteration); } }
private void RenderFeature(SKCanvas canvas, IReadOnlyViewport viewport, IStyle style, IFeature feature, float layerOpacity) { if (feature.Geometry is Point) { PointRenderer.Draw(canvas, viewport, style, feature, feature.Geometry, _symbolCache, layerOpacity * style.Opacity); } else if (feature.Geometry is MultiPoint) { MultiPointRenderer.Draw(canvas, viewport, style, feature, feature.Geometry, _symbolCache, layerOpacity * style.Opacity); } else if (feature.Geometry is LineString) { LineStringRenderer.Draw(canvas, viewport, style, feature, feature.Geometry, layerOpacity * style.Opacity); } else if (feature.Geometry is MultiLineString) { MultiLineStringRenderer.Draw(canvas, viewport, style, feature, feature.Geometry, layerOpacity * style.Opacity); } else if (feature.Geometry is Polygon) { PolygonRenderer.Draw(canvas, viewport, style, feature, feature.Geometry, layerOpacity * style.Opacity, _symbolCache); } else if (feature.Geometry is MultiPolygon) { MultiPolygonRenderer.Draw(canvas, viewport, style, feature, feature.Geometry, layerOpacity * style.Opacity, _symbolCache); } else if (feature.Geometry is IRaster) { RasterRenderer.Draw(canvas, viewport, style, feature, layerOpacity * style.Opacity, _tileCache, _currentIteration); } }
private void RenderFeature(SKCanvas canvas, IReadOnlyViewport viewport, ILayer layer, IStyle style, IFeature feature, float layerOpacity) { // Check, if we have a special renderer for this style if (StyleRenderers.ContainsKey(style.GetType())) { // Save canvas canvas.Save(); // We have a special renderer, so try, if it could draw this var result = ((ISkiaStyleRenderer)StyleRenderers[style.GetType()]).Draw(canvas, viewport, layer, feature, style, _symbolCache); // Restore old canvas canvas.Restore(); // Was it drawn? if (result) { // Yes, special style renderer drawn correct return; } } // No special style renderer handled this up to now, than try standard renderers if (feature.Geometry is Point) { PointRenderer.Draw(canvas, viewport, style, feature, feature.Geometry, _symbolCache, layerOpacity * style.Opacity); } else if (feature.Geometry is MultiPoint) { MultiPointRenderer.Draw(canvas, viewport, style, feature, feature.Geometry, _symbolCache, layerOpacity * style.Opacity); } else if (feature.Geometry is LineString) { LineStringRenderer.Draw(canvas, viewport, style, feature, feature.Geometry, layerOpacity * style.Opacity); } else if (feature.Geometry is MultiLineString) { MultiLineStringRenderer.Draw(canvas, viewport, style, feature, feature.Geometry, layerOpacity * style.Opacity); } else if (feature.Geometry is Polygon) { PolygonRenderer.Draw(canvas, viewport, style, feature, feature.Geometry, layerOpacity * style.Opacity, _symbolCache); } else if (feature.Geometry is MultiPolygon) { MultiPolygonRenderer.Draw(canvas, viewport, style, feature, feature.Geometry, layerOpacity * style.Opacity, _symbolCache); } else if (feature.Geometry is IRaster) { RasterRenderer.Draw(canvas, viewport, style, feature, layerOpacity * style.Opacity, _tileCache, _currentIteration); } }
private static void Draw(SKCanvas canvas, IReadOnlyViewport viewport, IStyle style, float layerOpacity, IFeature feature, Geometry?geometry, SymbolCache symbolCache) { if (geometry is Point point) { PointRenderer.Draw(canvas, viewport, style, feature, point.X, point.Y, symbolCache, layerOpacity * style.Opacity); } else if (geometry is MultiPoint multiPoint) { MultiPointRenderer.Draw(canvas, viewport, style, feature, multiPoint, symbolCache, layerOpacity * style.Opacity); } else if (geometry is LineString lineString) { LineStringRenderer.Draw(canvas, viewport, style, feature, lineString, layerOpacity * style.Opacity); } else if (geometry is MultiLineString multiLineString) { MultiLineStringRenderer.Draw(canvas, viewport, style, feature, multiLineString, layerOpacity * style.Opacity); } else if (geometry is Polygon polygon) { PolygonRenderer.Draw(canvas, viewport, style, feature, polygon, layerOpacity * style.Opacity, symbolCache); } else if (geometry is MultiPolygon multiPolygon) { MultiPolygonRenderer.Draw(canvas, viewport, style, feature, multiPolygon, layerOpacity * style.Opacity, symbolCache); } else if (geometry is GeometryCollection collection) { for (var i = 0; i < collection.NumGeometries; i++) { Draw(canvas, viewport, style, layerOpacity, feature, collection.GetGeometryN(i), symbolCache); } } else { Logger.Log(LogLevel.Warning, $"Failed to find renderer for geometry feature of type {geometry?.GetType()}"); } }