Ejemplo n.º 1
0
 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);
     }
 }
Ejemplo n.º 2
0
 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);
     }
 }
Ejemplo n.º 3
0
 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);
     }
 }
Ejemplo n.º 4
0
 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()}");
     }
 }