コード例 #1
0
ファイル: TableFigure.cs プロジェクト: rajeshwarn/MochaNote
        // ------------------------------
        // private
        // ------------------------------
        private void HandleTableDataRowAndColumnChanged(object sender, EventArgs e)
        {
            if (_isInBoundsChange)
            {
                return;
            }
            if (_suppressInvalidation)
            {
                return;
            }
            using (DirtManager.BeginDirty()) {
                if (_tableData.Size != Size)
                {
                    Size = _tableData.Size;
                }

                if (_tableData.MinSize != MinSize)
                {
                    MinSize = _tableData.MinSize;
                }

                InvalidateLayout();
                InvalidatePaint();
            }
        }
コード例 #2
0
            public void OnOwnerSelectionChanged()
            {
                if (StyledText == null)
                {
                    return;
                }

                /// OnOwnerCaretMoved()のタイミングだけでは
                /// ・範囲選択なしの状態から
                ///   カーソルが行頭ちょうどでSelection.Range.Endも行頭ちょうどになったときに
                ///   カーソル行がInvalidatePaint()されない
                /// ・カーソルが行頭ちょうどでSelection.Range.Endも行頭ちょうどを範囲選択している状態から
                ///   カーソルを右に移動したときにカーソル行がInvalidatePaint()されない
                /// のでこのタイミングでもInvalidatePaint()する

                if (!InUpdatingStyledText)
                {
                    /// CutRegion()のBeginUpdateStyledText()中に呼ばれると
                    /// GetVisualLineBounds()の呼び出しでキャッシュがおかしくなる
                    using (DirtManager.BeginDirty()) {
                        var newVisLineBounds = GetVisualLineBounds(_owner.Referer.CaretIndex);
                        var r = newVisLineBounds;
                        r = new Rectangle(Left, r.Top, Width, r.Height);
                        InvalidatePaint(r);
                    }
                }
            }
コード例 #3
0
    private void Start()
    {
        DirtManager.AddDirt(this);
        _health = MaxHealth;
        _r      = GetComponent <Renderer>();

        ProgressColor = _r.material.color;
    }
コード例 #4
0
 public virtual void Route()
 {
     if (_router != null && IsValidEdge)
     {
         using (DirtManager.BeginDirty()) {
             _router.Route(this);
         }
     }
 }
コード例 #5
0
            public void OnOwnerCaretMoved(CaretMovedEventArgs e)
            {
                if (StyledText == null)
                {
                    return;
                }

                /// 現在行色付けのためのInvalidatePaint()処理
                using (DirtManager.BeginDirty()) {
                    var len = _owner.Referer.Target.Length;
                    if (e.OldIndex < len)
                    {
                        if (e.NewIndex < len)
                        {
                            var oldVisLineBounds = GetVisualLineBounds(e.OldIndex);
                            var newVisLineBounds = GetVisualLineBounds(e.NewIndex);
                            if (newVisLineBounds != oldVisLineBounds)
                            {
                                var r = oldVisLineBounds;
                                r = new Rectangle(Left, r.Top, Width, r.Height);
                                InvalidatePaint(r);
                                r = newVisLineBounds;
                                r = new Rectangle(Left, r.Top, Width, r.Height);
                                InvalidatePaint(r);
                            }
                        }
                        else
                        {
                            Logger.Warn(
                                "Illegal caret move: StyledTextLength=" + len +
                                ",NewIndex=" + e.NewIndex + ",OldIndex=" + e.OldIndex
                                );
                            InvalidatePaint();
                        }
                    }
                    else
                    {
                        if (e.NewIndex < len)
                        {
                            var newVisLineBounds = GetVisualLineBounds(e.NewIndex);
                            var r = new Rectangle(Left, newVisLineBounds.Top, Width, Bottom);
                            InvalidatePaint(r);
                        }
                        else
                        {
                            Logger.Warn(
                                "Illegal caret move: StyledTextLength=" + len +
                                ",NewIndex=" + e.NewIndex + ",OldIndex=" + e.OldIndex
                                );
                            InvalidatePaint();
                        }
                    }
                }
            }
コード例 #6
0
 //------------------------------------------------------------------------------------------
 // Start
 //------------------------------------------------------------------------------------------
 private void Start()
 {
     if (useScale)
     {
         float scale = Mathf.Max(transform.lossyScale.x, transform.lossyScale.y);
         amount     = Mathf.FloorToInt(amount * scale);
         sweepLevel = Mathf.FloorToInt(sweepLevel * scale);
     }
     dirtManager = GameObject.Find(Dirt.MANAGER).GetComponent <DirtManager>();
     dirtManager.RegisterDirt(amount);
 }
コード例 #7
0
 protected virtual void OnNodeMaxSizeChanged()
 {
     if (_router != null && IsValidEdge)
     {
         if (_behaviorOptions.RouteOnNodeMaxSizeChanged)
         {
             using (DirtManager.BeginDirty()) {
                 _router.Route(this);
             }
         }
     }
 }
コード例 #8
0
 // --- event ---
 protected virtual void OnConnectableBoundsChanged(BoundsChangedEventArgs e)
 {
     if (_router != null && IsValidEdge)
     {
         if (e.MovingFigures == null || !e.MovingFigures.Contains(this))
         {
             using (DirtManager.BeginDirty()) {
                 _router.Route(this);
             }
         }
     }
 }
コード例 #9
0
 public void UpdateFocusLayer()
 {
     using (DirtManager.BeginDirty()) {
         FocusLayer.Children.Clear();
         if (
             FocusManager.FocusedEditor != null &&
             FocusManager.FocusedEditor.Focus != null &&
             FocusManager.FocusedEditor.Focus.Figure != null
             )
         {
             FocusLayer.Children.Add(FocusManager.FocusedEditor.Focus.Figure);
         }
     }
 }
コード例 #10
0
        // ========================================
        // method
        // ========================================
        public void UpdateHandleLayer()
        {
            if (_suppressUpdateHandleLayer)
            {
                return;
            }

            using (DirtManager.BeginDirty()) {
                ShowOnPointHandleLayer.Children.Clear();
                HandleLayer.Children.Clear();

                _owner.RootEditor.Accept(_updateHandleLayerVisitor);
            }
        }
コード例 #11
0
 public void ReduceHealth(float amount)
 {
     _health -= amount;
     if (_health <= 0)
     {
         AudioManager.PlaySound(CleanSound);
         DirtManager.ClearDirt(this);
         DirtManager.Status s = DirtManager.GetTotalDirt();
         if (s.Progress == 0)
         {
             MissionPlayerControl plr = GameObject.FindWithTag("Player").GetComponent <MissionPlayerControl>();
             plr.Win();
         }
     }
 }
コード例 #12
0
        // ========================================
        // constructor
        // ========================================
        public Canvas() : base()
        {
            //BackgroundImage = Image.FromFile(@"D:\share\img\WarrenLouw\43a19614516e6315cd8804e3604d84f8.jpg");
            DoubleBuffered = true;
            AutoScroll     = true;
            AllowDrop      = true;
            Size           = new Size(10, 10);

            BackColor = Color.White;
            ForeColor = Color.Black;

            _useGdiPlusText = false;

            //_canvasPadding = new Insets(2);
            _enableAutoAdjustRootFigureSize = true;

            _enableAutoScroller          = true;
            _autoScroller                = new AutoScroller(this);
            _autoScroller.AutoScrolling += HandleAutoScrollerAutoScrolling;
            _autoScroller.AutoScrolled  += HandleAutoScrollerAutoScrolled;

            _dndEventProducer = new MouseDnDEventRaiser(this);

            _highlightRegistry = new HighlightRegistry();

            _rootFigure        = new RootFigure();
            _rootFigure.Canvas = this;
            //_rootFigure.Size = ClientSize - _canvasPadding.Size;
            _rootFigure.Size = ClientSize;
            //_rootFigure.DescendantChanged += HandleDescendantChanged;
            _rootFigure.BoundsChanged += HandleRootFigureBoundsChanged;
            _rootFigure.Layout         = new StackLayout();

            /// 初期設定.サブクラスでoverrideされることを想定.
            Configure();

            /// DirtManagerやEventDispatcherがConfigureされていなければデフォルト実装を使う.
            if (_dirtManager == null)
            {
                _DirtManager = new DirtManager(this);
            }
            if (_dispatcher == null)
            {
                _EventDispatcher = new EventDispatcher(this);
            }

            InitDndEventProducer();
        }
コード例 #13
0
        // === AbstractConnection ==========
        protected override void OnConnectableChanged(ConnectableChangedEventArgs e)
        {
            base.OnConnectableChanged(e);

            if (e.OldValue != null)
            {
                e.OldValue.BoundsChanged -= HandleConnectableBoundsChanged;

                var oldNode = e.OldValue as INode;
                if (oldNode != null)
                {
                    oldNode.MaxSizeChanged -= HandleNodeMaxSizeChanged;
                }
            }
            if (e.NewValue != null)
            {
                e.NewValue.BoundsChanged += HandleConnectableBoundsChanged;

                var newNode = e.NewValue as INode;
                if (newNode != null)
                {
                    newNode.MaxSizeChanged += HandleNodeMaxSizeChanged;
                }
            }

            if (
                _router == null &&
                e.NewValue != null &&
                (
                    (e.Kind == ConnectionAnchorKind.Source && e.NewValue == Target) ||
                    (e.Kind == ConnectionAnchorKind.Target && e.NewValue == Source)
                )
                )
            {
                SetEdgePoints(EdgeUtil.GetLoopPoints(Source.Bounds));
            }

            if (_router != null && IsValidEdge)
            {
                using (DirtManager.BeginDirty()) {
                    _router.Route(this);
                }
            }
        }
コード例 #14
0
        protected virtual void OnChildrenChanged(DetailedPropertyChangedEventArgs e)
        {
            using (DirtManager.BeginDirty()) {
                switch (e.Kind)
                {
                case PropertyChangeKind.Add: {
                    var child = e.NewValue as IFigure;
                    child.DescendantChanged += HandleChildrenDescendantChanged;
                    child.InvalidatePaint();
                    child.InvalidateLayout();
                    break;
                }

                case PropertyChangeKind.Remove: {
                    var child = e.OldValue as IFigure;
                    if (_layoutConstraints != null && _layoutConstraints.ContainsKey(child))
                    {
                        _layoutConstraints.Remove(child);
                    }
                    child.DescendantChanged -= HandleChildrenDescendantChanged;
                    InvalidatePaint();
                    break;
                }

                case PropertyChangeKind.Clear: {
                    var children = e.OldValue as IFigure[];
                    if (_layoutConstraints != null)
                    {
                        _layoutConstraints.Clear();
                    }
                    foreach (var child in children)
                    {
                        child.DescendantChanged -= HandleChildrenDescendantChanged;
                    }
                    InvalidatePaint();
                    break;
                }

                case PropertyChangeKind.Set: {
                    var oldChild = e.OldValue as IFigure;
                    var newChild = e.NewValue as IFigure;
                    if (_layoutConstraints != null && _layoutConstraints.ContainsKey(oldChild))
                    {
                        _layoutConstraints.Remove(oldChild);
                    }
                    oldChild.DescendantChanged -= HandleChildrenDescendantChanged;
                    newChild.DescendantChanged += HandleChildrenDescendantChanged;
                    oldChild.InvalidatePaint();
                    newChild.InvalidatePaint();
                    newChild.InvalidateLayout();
                    break;
                }

                default: {
                    throw new ArgumentException("kind");
                }
                }

                InvalidateLayout();

                var handler = ChildrenChanged;
                if (handler != null)
                {
                    handler(this, e);
                }

                OnDescendantChanged(e);
            }
        }
コード例 #15
0
 public void InvalidateLayout()
 {
     DirtManager.DirtyLayout(this);
 }
コード例 #16
0
 public virtual void InvalidatePaint(Rectangle rect)
 {
     DirtManager.DirtyPaint(rect);
 }