Наследование: IResource, IPropertyProvider, ICloneable, ISerializable
Пример #1
0
 public void QueueRotate(ObjectInstance inst, Point oldLocation, Point newLocation, float oldRotation, float newRotation)
 {
     _objects.Add(new ObjectRecord() {
         Instance = inst,
         OldLocation = oldLocation,
         NewLocation = newLocation,
         OldRotation = oldRotation,
         NewRotation = newRotation,
     });
 }
Пример #2
0
 public void QueueMove(ObjectInstance inst, int diffX, int diffY)
 {
     _objects.Add(new ObjectRecord() {
         Instance = inst,
         OldLocation = new Point(inst.X, inst.Y),
         NewLocation = new Point(inst.X + diffX, inst.Y + diffY),
         OldRotation = inst.Rotation,
         NewRotation = inst.Rotation,
     });
 }
Пример #3
0
        public ObjectInstance(ObjectInstance inst)
            : this(inst._class, inst._posX, inst._posY)
        {
            _rotation = inst._rotation;
            _scaleX = inst._scaleX;
            _scaleY = inst._scaleY;

            foreach (Property prop in inst.PropertyManager.CustomProperties) {
                PropertyManager.CustomProperties.Add(prop.Clone() as Property);
            }

            UpdateBounds();
        }
Пример #4
0
 public ObjectAddCommand(ObjectLayer source, ObjectInstance inst, ObjectSelectionManager selectionManager)
     : this(source, selectionManager)
 {
     _objects.Add(inst);
 }
Пример #5
0
 private bool TestOrigin(Rectangle region, ObjectInstance instance)
 {
     return instance.X >= region.Left
         && instance.X <= region.Right
         && instance.Y >= region.Top
         && instance.Y <= region.Bottom;
 }
Пример #6
0
 private bool TestMaskBounds(Rectangle region, ObjectInstance instance)
 {
     Rectangle bounds = instance.MaskBounds;
     return bounds.Left >= region.Left
         && bounds.Right <= region.Right
         && bounds.Top >= region.Top
         && bounds.Bottom <= region.Bottom;
 }
Пример #7
0
 public ObjectInstanceEventArgs(ObjectInstance inst)
 {
     Instance = inst;
 }
Пример #8
0
 public int ObjectIndex(ObjectInstance inst)
 {
     return _objects.IndexOf(inst);
 }
Пример #9
0
 public void MoveObjectToFront(ObjectInstance instance)
 {
     if (_objects.MoveItem(instance, _objects.Count - 1))
         OnObjectReordered(new ObjectInstanceEventArgs(instance));
 }
Пример #10
0
 private ToolState StartClickNew(PointerEventInfo info, ILevelGeometry viewport, ObjectInstance obj)
 {
     Tool._selectionManager.ClearSelection();
     return StartClickAdd(info, viewport, obj);
 }
Пример #11
0
            private ToolState StartClickAdd(PointerEventInfo info, ILevelGeometry viewport, ObjectInstance obj)
            {
                Tool._selectionManager.AddObjectToSelection(obj);

                Tool.StartAutoScroll(info, viewport);
                Tool.UpdatePropertyProvider();

                return new SelectionMovingToolState(Tool) {
                    InitialLocation = new Point((int)info.X, (int)info.Y),
                    InitialSnapLocation = new Point(obj.X, obj.Y),
                    SnapManager = Tool.GetSnappingManager(obj.ObjectClass),

                }.StartPointerSequence(info, viewport);
            }
Пример #12
0
            public SelectionRotatingToolState(ObjectSelectTool tool, ObjectInstance hitObject)
                : base(tool)
            {
                HitObject = hitObject;
                InitialPosition = hitObject.Position;
                InitialCenter = hitObject.ImageBounds.Center;
                InitialAngle = hitObject.Rotation;

                float radius = Tool.MaxBoundingDiagonal(HitObject) / 2 + 5;
                Annot = new CircleAnnot(HitObject.ImageBounds.Center, radius);
                Annot.Outline = Outline;
                Annot.OutlineGlow = OutlineGlow;
                Tool._annots.Add(Annot);
            }
Пример #13
0
        private float MaxBoundingDiagonal(ObjectInstance inst)
        {
            int maxDim = Math.Max(inst.ObjectClass.ImageBounds.Width, inst.ObjectClass.ImageBounds.Height);
            float diag1 = (float)Math.Sqrt(maxDim * maxDim * 2);
            float diag2 = (float)Math.Sqrt(diag1 * diag1 * 2);

            return diag2;
        }
Пример #14
0
        public static LevelX.ObjectInstanceX ToXProxy(ObjectInstance inst)
        {
            if (inst == null)
                return null;

            List<CommonX.PropertyX> props = new List<CommonX.PropertyX>();
            foreach (Property prop in inst.PropertyManager.CustomProperties)
                props.Add(Property.ToXmlProxyX(prop));

            return new LevelX.ObjectInstanceX() {
                Uid = inst.Uid,
                Class = inst.ObjectClass.Uid,
                X = inst.X,
                Y = inst.Y,
                Rotation = MathEx.RadToDeg(inst.Rotation),
                Properties = (props.Count > 0) ? props : null,
            };
        }
Пример #15
0
 public void QueueAdd(ObjectInstance inst)
 {
     _objects.Add(inst);
 }
Пример #16
0
 public void MoveObjectForward(ObjectInstance instance)
 {
     if (_objects.IndexOf(instance) < _objects.Count - 1) {
         _objects.MoveItemBy(instance, 1);
         OnObjectReordered(new ObjectInstanceEventArgs(instance));
     }
 }
Пример #17
0
 public void MoveObjectToBack(ObjectInstance instance)
 {
     if (_objects.MoveItem(instance, 0))
         OnObjectReordered(new ObjectInstanceEventArgs(instance));
 }
Пример #18
0
            private ToolState StartClickRemove(PointerEventInfo info, ILevelGeometry viewport, ObjectInstance obj)
            {
                Tool._selectionManager.RemoveObjectFromSelection(obj);

                Tool.StartAutoScroll(info, viewport);
                Tool.UpdatePropertyProvider();

                return new SelectionStandbyToolState(Tool).StartPointerSequence(info, viewport);
            }
Пример #19
0
 public void MoveToIndex(ObjectInstance inst, int index)
 {
     _objects.MoveItem(inst, index);
 }
Пример #20
0
 private ToolState StartTimeoutSequence(PointerEventInfo info, ILevelGeometry viewport, ObjectInstance obj)
 {
     return new SelectionTimeoutToolState(Tool) {
         HitObject = obj
     }.StartPointerSequence(info, viewport);
 }
Пример #21
0
 public void RemoveObject(ObjectInstance instance)
 {
     if (_objects.Remove(instance)) {
         instance.Modified -= ObjectInst_Modified;
         OnObjectRemoved(new ObjectInstanceEventArgs(instance));
     }
 }
Пример #22
0
        public bool IsObjectSelected(ObjectInstance obj)
        {
            foreach (SelectedObjectRecord record in _selectedObjects) {
                if (record.Instance == obj)
                    return true;
            }

            return false;
        }
Пример #23
0
 private bool TestMaskAtPoint(Point point, ObjectInstance instance)
 {
     Rectangle bounds = instance.MaskBounds;
     return bounds.Left <= point.X
         && bounds.Right > point.X
         && bounds.Top <= point.Y
         && bounds.Bottom > point.Y;
 }
Пример #24
0
        public void RemoveObjectFromSelection(ObjectInstance obj)
        {
            foreach (SelectedObjectRecord record in _selectedObjects) {
                if (record.Instance == obj) {
                    RemoveAnnotation(record.Annot);
                    RemoveAnnotation(record.OriginAnnot);

                    _selectedObjects.Remove(record);

                    obj.PositionChanged -= InstancePositionChanged;
                    obj.RotationChanged -= InstanceRotationChanged;
                    break;
                }
            }

            OnSelectionChanged(EventArgs.Empty);
            //if (_selectedObjects.Count == 0) {
            //    CommandManager.Invalidate(CommandKey.Delete);
            //    CommandManager.Invalidate(CommandKey.SelectNone);
            //}
        }
Пример #25
0
 private bool TestMaskBoundsPartial(Rectangle region, ObjectInstance instance)
 {
     Rectangle bounds = instance.MaskBounds;
     return bounds.Right > region.Left
         && bounds.Left < region.Right
         && bounds.Bottom > region.Top
         && bounds.Top < region.Bottom;
 }
Пример #26
0
        public void AddObjectToSelection(ObjectInstance obj)
        {
            foreach (SelectedObjectRecord instRecord in _selectedObjects)
                if (instRecord.Instance == obj)
                    return;

            SelectedObjectRecord record = new SelectedObjectRecord() {
                Instance = obj,
                Annot = new SelectionAnnot(obj.ImageBounds.Location) {
                    End = new Point(obj.ImageBounds.Right, obj.ImageBounds.Bottom),
                    Fill = SelectedAnnotFill,
                    Outline = SelectedAnnotOutline,
                    OutlineGlow = SelectedAnnotOutlineGlow,
                },
                OriginAnnot = new GripAnnot(obj.Position, 3) {
                    Fill = SelectedAnnotOriginFill,
                    FillGlow = SelectedAnnotOriginFillGlow,
                },
                InitialLocation = new Point(obj.X, obj.Y),
            };

            obj.PositionChanged += InstancePositionChanged;
            obj.RotationChanged += InstanceRotationChanged;

            _selectedObjects.Add(record);

            AddAnnotation(record.Annot);
            AddAnnotation(record.OriginAnnot);

            OnSelectionChanged(EventArgs.Empty);
        }
Пример #27
0
 public ObjectMoveCommand(ObjectInstance inst, int diffX, int diffY)
     : this()
 {
     QueueMove(inst, diffX, diffY);
 }
Пример #28
0
 public void AddObject(ObjectInstance instance)
 {
     if (!_objects.Contains(instance)) {
         _objects.Add(instance);
         instance.Modified += ObjectInst_Modified;
         OnObjectAdded(new ObjectInstanceEventArgs(instance));
     }
 }
Пример #29
0
 public void MoveObjectBackward(ObjectInstance instance)
 {
     if (_objects.IndexOf(instance) > 1) {
         _objects.MoveItemBy(instance, -1);
         OnObjectReordered(new ObjectInstanceEventArgs(instance));
     }
 }
Пример #30
0
 public ObjectAddCommand(ObjectLayer source, ObjectInstance inst)
     : this(source)
 {
     _objects.Add(inst);
 }