コード例 #1
0
ファイル: Util.cs プロジェクト: snowdream1985/ImGui-1
        private static Size GetPrimitiveSize(PathPrimitive primitive, out Point min)
        {
            var minX = 0.0;
            var minY = 0.0;
            var maxX = 0.0;
            var maxY = 0.0;

            void updateMinMax(Point point)
            {
                minX = Math.Min(minX, point.x);
                minY = Math.Min(minY, point.y);
                maxX = Math.Max(maxX, point.x);
                maxY = Math.Max(maxY, point.y);
            }

            foreach (var command in primitive.Path)
            {
                switch (command.Type)
                {
                case PathCommandType.PathMoveTo:
                {
                    var cmd   = (MoveToCommand)command;
                    var point = cmd.Point;
                    updateMinMax(point);
                    break;
                }

                case PathCommandType.PathLineTo:
                {
                    var cmd   = (LineToCommand)command;
                    var point = cmd.Point;
                    updateMinMax(point);
                    break;
                }

                case PathCommandType.PathCurveTo:
                {
                    var cmd = (CurveToCommand)command;
                    var c0  = cmd.ControlPoint0;
                    var c1  = cmd.ControlPoint1;
                    var end = cmd.EndPoint;
                    updateMinMax(c0);
                    updateMinMax(c1);
                    updateMinMax(end);
                    break;
                }

                case PathCommandType.PathArc:
                {
                    var cmd      = (ArcCommand)command;
                    var c0       = cmd.Center;
                    var v        = new Vector(cmd.Radius, cmd.Radius);
                    var minPoint = c0 - v;
                    var maxPoint = c0 + v;
                    updateMinMax(minPoint);
                    updateMinMax(maxPoint);
                    break;
                }

                case PathCommandType.PathClosePath:
                case PathCommandType.Stroke:
                case PathCommandType.Fill:
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            min = new Point(minX, minY);
            return(new Size(maxX - minX, maxY - minY));
        }
コード例 #2
0
 public static PointD ToPointD(this ImGui.Common.Primitive.Point point)
 {
     return(new PointD(point.x, point.y));
 }