// ------------------------------ // 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(); } }
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); } } }
private void Start() { DirtManager.AddDirt(this); _health = MaxHealth; _r = GetComponent <Renderer>(); ProgressColor = _r.material.color; }
public virtual void Route() { if (_router != null && IsValidEdge) { using (DirtManager.BeginDirty()) { _router.Route(this); } } }
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(); } } } }
//------------------------------------------------------------------------------------------ // 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); }
protected virtual void OnNodeMaxSizeChanged() { if (_router != null && IsValidEdge) { if (_behaviorOptions.RouteOnNodeMaxSizeChanged) { using (DirtManager.BeginDirty()) { _router.Route(this); } } } }
// --- 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); } } } }
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); } } }
// ======================================== // method // ======================================== public void UpdateHandleLayer() { if (_suppressUpdateHandleLayer) { return; } using (DirtManager.BeginDirty()) { ShowOnPointHandleLayer.Children.Clear(); HandleLayer.Children.Clear(); _owner.RootEditor.Accept(_updateHandleLayerVisitor); } }
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(); } } }
// ======================================== // 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(); }
// === 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); } } }
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); } }
public void InvalidateLayout() { DirtManager.DirtyLayout(this); }
public virtual void InvalidatePaint(Rectangle rect) { DirtManager.DirtyPaint(rect); }