Пример #1
0
        /// <summary>
        /// Invalidates the geometry of this shape.
        /// </summary>
        protected void InvalidateGeometry()
        {
            _renderedGeometry = null;
            _definingGeometry = null;

            InvalidateMeasure();
        }
Пример #2
0
 public WorkTask(Guid mRID, Project project, string name, Geometry?location = null)
 {
     MRID     = mRID;
     Project  = project;
     Name     = name;
     Location = location;
 }
Пример #3
0
        internal Visual(XmlNode node)
        {
            Name = node.Attributes?["name"]?.Value;

            Geometry?geometry = null;

            foreach (XmlNode child in node.ChildNodes)
            {
                switch (child.Name)
                {
                case "cast_shadows":
                    CastShadows = BoolElement.ValueOf(child);
                    break;

                case "transparency":
                    Transparency = DoubleElement.ValueOf(child);
                    break;

                case "pose":
                    Pose = new Pose(child);
                    break;

                case "material":
                    Material = new Material(child);
                    break;

                case "geometry":
                    geometry = new Geometry(child);
                    break;
                }
            }

            Geometry = geometry ?? throw new MalformedSdfException(node, "Expected geometry!");
            HasUri   = Geometry.HasUri;
        }
Пример #4
0
        internal Visual(XmlNode node)
        {
            Name = node.Attributes?["name"]?.Value;

            Geometry?geometry = null;
            Origin?  origin   = null;

            foreach (XmlNode child in node.ChildNodes)
            {
                switch (child.Name)
                {
                case "origin":
                    origin = new Origin(child);
                    break;

                case "geometry":
                    geometry = new Geometry(child);
                    break;

                case "material":
                    Material = new Material(child);
                    break;
                }
            }

            Geometry = geometry ?? throw new MalformedUrdfException(node);
            Origin   = origin ?? Origin.Identity;
        }
    private static LogEventProperty?WriteBBox(Envelope?value, Geometry?geometry)
    {
        // if we don't want to write "null" bounding boxes, bail out.
        if (value == null || value.IsNull)
        {
            return(null);
        }

        // Don't clutter export with bounding box if geometry is a point!
        if (geometry is Point)
        {
            return(null);
        }

        return(new LogEventProperty(
                   "bbox",
                   value.IsNull
                ? new ScalarValue(null)
                : new SequenceValue(
                       new[]
        {
            new ScalarValue(value.MinX),
            new ScalarValue(value.MinY),
            new ScalarValue(value.MaxX),
            new ScalarValue(value.MaxY),
        }
                       )
                   ));
    }
Пример #6
0
 public CombinedGeometry(
     GeometryCombineMode combineMode,
     Geometry?geometry1,
     Geometry?geometry2,
     Transform?transform)
 {
     Geometry1           = geometry1;
     Geometry2           = geometry2;
     GeometryCombineMode = combineMode;
     Transform           = transform;
 }
Пример #7
0
        protected override Size ArrangeOverride(Size finalSize)
        {
            EnsureFormattedText();

            // update the formatted text with the final size
            _FormattedText !.MaxTextWidth = finalSize.Width;
            _FormattedText.MaxTextHeight  = Math.Max(0.0001d, finalSize.Height);

            // need to re-generate the geometry now that the dimensions have changed
            _TextGeometry = null;
            UpdatePen();

            return(finalSize);
        }
Пример #8
0
        private void UpdateCropGeometry(Geometry?geo = null)
        {
            Geometry newGeo = geo ?? Geometry.Blank;

            if (geo == null)
            {
                newGeo.X      = (double)NumX.Value;
                newGeo.Y      = (double)NumY.Value;
                newGeo.Width  = (double)NumWidth.Value;
                newGeo.Height = (double)NumHeight.Value;
            }
            Scanner.CropGeometry = newGeo.Min(maxGeometry).Max(minGeometry);
            Scanner.UpdateCropGeometry();
            RefreshThumbnail();
        }
Пример #9
0
        private void EnsureGeometry()
        {
            if (_TextGeometry != null)
            {
                return;
            }

            EnsureFormattedText();
            _TextGeometry = _FormattedText !.BuildGeometry(new Point(0, 0));

            if (StrokePosition == StrokePosition.Outside)
            {
                var boundsGeo = new RectangleGeometry(new Rect(0, 0, ActualWidth, ActualHeight));
                _clipGeometry = Geometry.Combine(boundsGeo, _TextGeometry, GeometryCombineMode.Exclude, null);
            }
        }
Пример #10
0
        private static GeometryBase?Transform(Geometry?geometry)
        {
            if (geometry == null)
            {
                return(null);
            }

            return(geometry.Type switch
            {
                "Point" => ToPointGeometry((JArray)geometry.Coordinates),
                "MultiPoint" => ToMultiPointGeometry((JArray)geometry.Coordinates),
                "LineString" => ToLineStringGeometry((JArray)geometry.Coordinates),
                "MultiLineString" => ToMultiLineStringGeometry((JArray)geometry.Coordinates),
                "Polygon" => ToPolygonGeometry((JArray)geometry.Coordinates),
                "MultiPolygon" => ToMultiPolygonGeometry((JArray)geometry.Coordinates),
                _ => null,
            });
Пример #11
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()}");
     }
 }
Пример #12
0
        private void CreateCustomGeometry(double deflateAmount)
        {
            try
            {
                double width  = Led.RgbLed.Size.Width - deflateAmount;
                double height = Led.RgbLed.Size.Height - deflateAmount;
                // DisplayGeometry = Geometry.Parse(Led.RgbLed.ShapeData);
                DisplayGeometry = Geometry.Combine(
                    Geometry.Empty,
                    Geometry.Parse(Led.RgbLed.ShapeData),
                    GeometryCombineMode.Union,
                    new TransformGroup
                {
                    Children = new TransformCollection
                    {
                        new ScaleTransform(width, height),
                        new TranslateTransform(deflateAmount / 2, deflateAmount / 2)
                    }
                }
                    );

                if (DisplayGeometry.Bounds.Width > width)
                {
                    DisplayGeometry = Geometry.Combine(Geometry.Empty, DisplayGeometry, GeometryCombineMode.Union, new TransformGroup
                    {
                        Children = new TransformCollection {
                            new ScaleTransform(width / DisplayGeometry.Bounds.Width, 1)
                        }
                    });
                }

                if (DisplayGeometry.Bounds.Height > height)
                {
                    DisplayGeometry = Geometry.Combine(Geometry.Empty, DisplayGeometry, GeometryCombineMode.Union, new TransformGroup
                    {
                        Children = new TransformCollection {
                            new ScaleTransform(1, height / DisplayGeometry.Bounds.Height)
                        }
                    });
                }
            }
            catch (Exception)
            {
                CreateRectangleGeometry();
            }
        }
Пример #13
0
            public bool SetProperties(Rect rect, bool visible, bool overwriteMode)
            {
                var samePos = this.rect == rect && this.visible == visible;

                if (samePos && IsOverwriteMode == overwriteMode)
                {
                    return(false);
                }

                if (!samePos)
                {
                    geometry = null;
                }
                this.rect       = rect;
                this.visible    = visible;
                IsOverwriteMode = overwriteMode;
                return(true);
            }
Пример #14
0
        private Size CalculateShapeSizeAndSetTransform(Size availableSize)
        {
            if (DefiningGeometry != null)
            {
                // This should probably use GetRenderBounds(strokeThickness) but then the calculations
                // will multiply the stroke thickness as well, which isn't correct.
                var(size, transform) = CalculateSizeAndTransform(availableSize, DefiningGeometry.Bounds, Stretch);

                if (_transform != transform)
                {
                    _transform        = transform;
                    _renderedGeometry = null;
                }

                return(size);
            }

            return(Size.Empty);
        }
Пример #15
0
        internal Collision(XmlNode node)
        {
            Name = node.Attributes?["name"]?.Value;

            Origin?origin = null;

            foreach (XmlNode child in node.ChildNodes)
            {
                switch (child.Name)
                {
                case "origin":
                    origin = new Origin(child);
                    break;

                case "geometry":
                    Geometry = new Geometry(child);
                    break;
                }
            }

            Origin = origin ?? Origin.Identity;
        }
Пример #16
0
        public static Geometry?DeleteCoordinate(this Geometry?geometry, int index)
        {
            if (geometry is null)
            {
                return(null);
            }

            var vertices = geometry.MainCoordinates();

            vertices.RemoveAt(index);

            if (geometry is Polygon)
            {
                return(vertices.ToPolygon());
            }
            else if (geometry is LineString)
            {
                return(vertices.ToLineString());
            }
            else
            {
                throw new NotSupportedException();
            }
        }
Пример #17
0
        public static Geometry?InsertCoordinate(this Geometry?geometry, Coordinate coordinate, int segment)
        {
            if (geometry is null)
            {
                return(null);
            }

            var vertices = geometry.MainCoordinates();

            vertices.Insert(segment + 1, coordinate);

            if (geometry is Polygon)
            {
                return(vertices.ToPolygon());
            }
            else if (geometry is LineString)
            {
                return(vertices.ToLineString());
            }
            else
            {
                throw new NotSupportedException();
            }
        }
Пример #18
0
 /// <summary>Helper for setting <see cref="GeometryProperty"/> on <paramref name="element"/>.</summary>
 /// <param name="element"><see cref="FrameworkElement"/> to set <see cref="GeometryProperty"/> on.</param>
 /// <param name="value">Geometry property value.</param>
 public static void SetGeometry(this FrameworkElement element, Geometry?value)
 {
     element.SetValue(GeometryProperty, value);
 }
Пример #19
0
 public GeometryFeature(Geometry?geometry)
 {
     Geometry = geometry;
 }
Пример #20
0
 private void CreateKeyCapGeometry()
 {
     DisplayGeometry = new RectangleGeometry(new Rect(1, 1, Led.RgbLed.Size.Width - 2, Led.RgbLed.Size.Height - 2), 1.6, 1.6);
 }
Пример #21
0
 private void CreateCircleGeometry()
 {
     DisplayGeometry = new EllipseGeometry(new Rect(0.5, 0.5, Led.RgbLed.Size.Width - 1, Led.RgbLed.Size.Height - 1));
 }
Пример #22
0
 public CombinedGeometry(GeometryCombineMode combineMode, Geometry?geometry1, Geometry?geometry2)
 {
     Geometry1           = geometry1;
     Geometry2           = geometry2;
     GeometryCombineMode = combineMode;
 }