/// <summary> /// OpenedElementsの変更をTabs.Itemsに反映 /// </summary> private void ResetTabs() { if (ResetTabs_LOCK) { return; } Tabs_ItemsChanged_LOCK = true; Tabs.Items.Clear(); // OpenedElementsからItemsに追加 for (int count = 0; count < OpenedElements.Count; count++) { IBProjectElement trgC = OpenedElements[count]; SubTabItem s = new SubTabItem(); s.Element = trgC; s.Header = trgC.Name; s.LockWidth = true; Tabs.Items.Add(s); } if (Tabs.Items.Count != 0) { ((SubTabItem)Tabs.Items[Tabs.Items.Count - 1]).IsSelected = true; } Tabs_ItemsChanged_LOCK = false; }
private RUMoveProjectElement DoMove(IBProjectElement from) { int trgIndex, fromIndex; IBProjectElement preParent = from.Parent; fromIndex = from.Parent.Children.IndexOf(from); from.Parent.RemoveChild(from); switch (fromDropTo) { case DropTo.Child: trgElement.AddChild(from); break; case DropTo.Top: trgIndex = trgElement.Parent.Children.IndexOf(trgElement); from.Parent = trgElement.Parent; trgElement.Parent.Children.Insert(trgElement.Parent.Children.IndexOf(trgElement), from); break; case DropTo.Bottom: trgIndex = trgElement.Parent.Children.IndexOf(trgElement); from.Parent = trgElement.Parent; trgElement.Parent.Children.Insert(trgElement.Parent.Children.IndexOf(trgElement) + 1, from); break; default: break; } from.IsSelected = true; return new RUMoveProjectElement(from, preParent, fromIndex); }
/// <summary> /// IBProjectModel.ActiveTargetElementの子に新規フォルダを追加 /// </summary> /// <param name="Parent">nullの場合、現在開かれているプロジェクトにフォルダを追加</param> public void AddNewFolder() { Folder newFolder = new Folder() { Name = "Folder", IsSelected = true }; if (ActiveTargetElement != null) { IBProjectElement parent = ActiveTargetElement; if (ActiveTargetElement.Type != IBProjectElementTypes.Folder && parent.Type != IBProjectElementTypes.Root) { return; } parent.AddChild(newFolder); RedoUndoManager.Current.Record(new RUAddNewElement(parent, newFolder)); } else { IBProject.Current.ElementsRoot.AddChild(newFolder); RedoUndoManager.Current.Record(new RUAddNewElement(IBProject.Current.ElementsRoot, newFolder)); } RaisePropertyChanged("IBProject_Elements"); }
private void EndDrag() { trg.BorderThickness = new Thickness(0); trg.BorderBrush = null; from_temp = null; fromDropTo = DropTo.None; }
/// <summary> /// Tabs.Itemsの変更をOpenedElementsに反映 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Tabs_ItemsChanged(object sender, IBGUI.ItemsChangedEventArgs e) { if (Tabs_ItemsChanged_LOCK) { return; } ResetTabs_LOCK = true; OpenedElements.Clear(); // ItemsからOpenedElementsに追加 foreach (SubTabItem s in Tabs.Items) { if (s.isDummyItem) { ResetTabs_LOCK = false; return; } IBProjectElement c = s.Element as IBProjectElement; if (c == null) { break; } OpenedElements.Add(c); } ResetTabs_LOCK = false; }
private void _ActiveShowingItem_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if (e.PropertyName == "DELETE") { ActiveTargetElement = null; ActiveShowingItem = null; SelectedPropertyItem = null; } }
public override bool Set(IBCanvasControl canvas, IBProjectElement trg, IBCoord coord) { if (base.Set(canvas, trg, coord)) { return(false); } return(true); }
public RUMoveProjectElement(IBProjectElement _trg, IBProjectElement _preParent, int _preIndex) { trg = _trg; preParent = _preParent; preIndex = _preIndex; newParent = trg.Parent; newIndex = newParent.Children.IndexOf(trg); }
public override bool Set(IBCanvasControl canvas, IBProjectElement trg, IBCoord coord) { if (!base.Set(canvas, trg, coord)) { return(false); } actionSummary = "Eraser Tool / " + trg.Name; return(true); }
private static RUMoveProjectElement DoMove(IBProjectElement from) { IBProjectElement preParent = from.Parent; int preIndex; preIndex = preParent.Children.IndexOf(from); from.Parent.RemoveChild(from); IBProject.Current.ElementsRoot.AddChild(from); return new RUMoveProjectElement(from, preParent, preIndex); }
public override void Activate(IBCanvasControl canvas, IBProjectElement trg) { base.Activate(canvas, trg); if (currentCanvas != null && trgLayer != null && trgLayer.LayerType == ImageTypes.SingleColor) { currentCanvas.canvas.Cursor = Cursors.No; } else if (currentCanvas != null && currentCanvas.canvas.Cursor != Cursors.Arrow) { currentCanvas.canvas.Cursor = Cursors.Arrow; } }
public override void Activate(IBCanvasControl canvas, IBProjectElement trg) { base.Activate(canvas, trg); if (currentCanvas != null && trgLayer != null && trgLayer.LayerType == ImageTypes.SingleColor) { currentCanvas.canvas.Cursor = Cursors.No; } else if (currentCanvas != null) { eraserCursor = IBCursor.GenCircleCursor(Size * 0.75 * currentCanvas.ZoomPerCent / 100.0); currentCanvas.canvas.Cursor = eraserCursor; } }
private void Trg_DragEnter(object sender, DragEventArgs e) { string[] formats = e.Data.GetFormats(); if (formats.Length == 0) return; from_temp = e.Data.GetData(formats[0]) as IBProjectElement; if (from_temp != null) { trg.IsSelected = true; if (trgElement == null) return; trg.BorderBrush = Application.Current.FindResource("IBFocusBorderBrush") as SolidColorBrush; } }
public virtual void Activate(IBCanvasControl canvas, IBProjectElement trg) { if (canvas != null) { currentCanvas = canvas; } ActiveBrush = this; if (trg == null) { return; } trgImage = trg; trgLayer = GetSelectedLayer(); }
public override bool Set(IBCanvasControl canvas, IBProjectElement trg, IBCoord coord) { if (!base.Set(canvas, trg, coord)) { return(false); } trgCell = trgImage as CellSource; if (trgCell == null) { return(false); } if (trgLayer == null) { return(false); } actionSummary = "Selection Tool / " + trg.Name; DynamicRender.OverrayColor[0] = 0; DynamicRender.OverrayColor[1] = 0; DynamicRender.OverrayColor[2] = 0; if (trgCell.PixcelSelectedArea != null) { if (trgCell.IsPixcelSelecting) { trgCell.IsPixcelSelecting = false; SelectersLayerMode = false; trgCell.PixcelSelectedArea.imageData = null; trgCell.PixcelSelectedArea = null; IBCanvasControl.RefreshAll(); } } trgCell.PixcelSelectedArea = new PixcelImage( (int)trgLayer.imageData.actualSize.Width, (int)trgLayer.imageData.actualSize.Height, (int)trgLayer.Rect.OffsetX, (int)trgLayer.Rect.OffsetY); trgCell.PixcelSelectedArea.IsNotSelectersLayer = false; trgCell.PixcelSelectedArea.imageData.SetDrawingMode(); start.x = histCoord[0].x; start.y = histCoord[0].y; return(true); }
private void Trg_Drop(object sender, DragEventArgs e) { e.Handled = true; if (fromDropTo == DropTo.None) { EndDrag(); return; } if (IBProjectElement.MultiSelectingList.Count == 0) { string[] formats = e.Data.GetFormats(); if (formats.Length == 0) return; IBProjectElement from = e.Data.GetData(formats[0]) as IBProjectElement; if (from == null) return; if (trgElement == null || from == trgElement) return; RUMoveProjectElement hist = DoMove(from); RedoUndoManager.Current.Record(hist); } else { RUMoveMultiProjectElements hists = new RUMoveMultiProjectElements(); if(fromDropTo == DropTo.Bottom) { foreach (IBProjectElement from in IBProjectElement.MultiSelectingList.Reverse()) { hists.RecordToThis(DoMove(from)); } } else { foreach (IBProjectElement from in IBProjectElement.MultiSelectingList) { hists.RecordToThis(DoMove(from)); } } RedoUndoManager.Current.Record(hists); } EndDrag(); }
public override void Activate(IBCanvasControl canvas, IBProjectElement trg) { base.Activate(canvas, trg); if (pencilCursor == null) { pencilCursor = IBCursor.BitmapImageToCursor(Application.Current.FindResource("PencilCursor") as BitmapImage, 0, 0); } if (currentCanvas != null && trgLayer != null && trgLayer.LayerType == ImageTypes.SingleColor) { currentCanvas.canvas.Cursor = Cursors.No; } else if (currentCanvas != null && currentCanvas.canvas.Cursor != pencilCursor) { currentCanvas.canvas.Cursor = pencilCursor; } }
public virtual bool Set(IBCanvasControl canvas, IBProjectElement trg, IBCoord coord) { currentCanvas = canvas; trgImage = trg; trgLayer = GetSelectedLayer(); if (trgImage == null || trgLayer == null || !trgLayer.imageData.CanDraw) { return(false); } if (!drawing) { beforeDataStride = (int)trgLayer.imageData.actualSize.Width * 4; RecordBeforeData(); } penUp = false; drawing = true; count = 0; for (int i = 0; i < histPressure.Length; i++) { histPressure[i] = currentCanvas.StylusPressure; if (WintabUtility.Pressure != 0) { histPressure[i] = WintabUtility.Pressure; } } foreach (IBCoord c in histCoord) { c.x = coord.x; c.y = coord.y; } return(true); }
private void Tv_Drop(object sender, DragEventArgs e) { if (IBProjectElement.MultiSelectingList.Count == 0) { string[] formats = e.Data.GetFormats(); if (formats.Length == 0) return; IBProjectElement from = e.Data.GetData(formats[0]) as IBProjectElement; if (from == null) return; RedoUndoManager.Current.Record(DoMove(from)); } else { RUMoveMultiProjectElements hists = new RUMoveMultiProjectElements(); foreach (IBProjectElement from in IBProjectElement.MultiSelectingList) { hists.RecordToThis(DoMove(from)); } RedoUndoManager.Current.Record(hists); } }
public RUAddNewElement(IBProjectElement parent, IBProjectElement newElement) { _parent = parent; _newElement = newElement; }
private void Tv_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) { SelectedElement = e.NewValue as IBProjectElement; }
/// <summary> /// IBProjectModel.ActiveTargetElementの子に新規セルソースを追加 /// </summary> /// <param name="Parent">nullの場合、現在開かれているプロジェクトにセルソースを追加</param> public void AddNewCellSource() { CellSource newCellSource = new CellSource() { Name = "CS1", IsSelected = true, Width = 1920, Height = 1080 }; //PixcelImage i2 = new PixcelImage(new Bitmap("test.png")); //i2.Rect.OffsetX = 0; //i2.Rect.OffsetY = 0; //i2.LayerName = "layer2"; //newCellSource.Layers.Add(i2); //SingleColorImage BG = new SingleColorImage(255, 255, 255, 255); //BG.Rect = new IBRectangle(1920 + 300, 1080 + 300, -150, -150); //BG.LayerName = "BG"; //newCellSource.Layers.Add(BG); newCellSource.AddNewLayer("BG", false, ImageTypes.SingleColor); newCellSource.AddNewLayer("下書き", false); newCellSource.AddNewLayer("線画", false); if (ActiveTargetElement != null) { if (ActiveTargetElement.Type == IBProjectElementTypes.CellSource) { SetName(newCellSource); if (ActiveTargetElement.Parent != null) { IBProjectElement parent = ActiveTargetElement.Parent; if (parent.Type != IBProjectElementTypes.Folder && parent.Type != IBProjectElementTypes.Root) { return; } parent.AddChild(newCellSource); RedoUndoManager.Current.Record(new RUAddNewElement(parent, newCellSource)); } else { IBProject.Current.ElementsRoot.AddChild(newCellSource); RedoUndoManager.Current.Record(new RUAddNewElement(IBProject.Current.ElementsRoot, newCellSource)); } } else { IBProjectElement parent = ActiveTargetElement; parent.AddChild(newCellSource); RedoUndoManager.Current.Record(new RUAddNewElement(parent, newCellSource)); } } else { IBProject.Current.ElementsRoot.AddChild(newCellSource); RedoUndoManager.Current.Record(new RUAddNewElement(IBProject.Current.ElementsRoot, newCellSource)); } //Cell newc = new Cell(newCellSource, 1920, 1080); //newc.Name = "new Cell"; //IBProject.Current.ElementsRoot.Children.Add(newc); RaisePropertyChanged("IBProject_Elements"); }
private static void OnSelectedElementChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (e.NewValue != null) grobalSelectedElement = e.NewValue as IBProjectElement; }
public override void Activate(IBCanvasControl canvas, IBProjectElement trg) { if (isActive) { return; } base.Activate(canvas, trg); if (currentCanvas != null && trgLayer != null && trgLayer.LayerType == ImageTypes.SingleColor) { currentCanvas.canvas.Cursor = Cursors.No; } else if (currentCanvas != null && currentCanvas.canvas.Cursor != Cursors.Arrow) { currentCanvas.canvas.Cursor = Cursors.Arrow; } trgCell = trgImage as CellSource; if (trgCell == null || currentCanvas == null || !trgCell.IsPixcelSelecting || trgCell.PixcelSelectedArea == null || !trgLayer.imageData.CanDraw) { Deacive(); return; } action = new RUDeformImage(trgCell, trgLayer as PixcelImage); action.SetBefore(trgLayer as PixcelImage); trgCell.PixcelSelectedArea.imageData.EndDrawingMode(); int xs = (int)trgCell.PixcelSelectedArea.imageData.drawingAreaSize.OffsetX; int ys = (int)trgCell.PixcelSelectedArea.imageData.drawingAreaSize.OffsetY; int w = (int)trgCell.PixcelSelectedArea.imageData.drawingAreaSize.Width; int h = (int)trgCell.PixcelSelectedArea.imageData.drawingAreaSize.Height; trgCell.TempLayer = new PixcelImage(w, h, xs + (int)trgLayer.Rect.OffsetX, ((int)trgLayer.Rect.Height - ys - h) + (int)trgLayer.Rect.OffsetY); trgCell.TempLayer.imageData.SetDrawingMode(); for (int y = 0; y < h; y++) { int offset = y * w * 4; int sourceOffset = (ys + y) * (int)trgLayer.imageData.actualSize.Width * 4 + xs * 4; for (int x = 0; x < w * 4 - 3; x++) { if (trgCell.PixcelSelectedArea.imageData.data[offset + x + 3] == 255) { trgCell.TempLayer.imageData.data[offset + x] = trgLayer.imageData.data[sourceOffset + x]; trgLayer.imageData.data[sourceOffset + x] = 0; x++; trgCell.TempLayer.imageData.data[offset + x] = trgLayer.imageData.data[sourceOffset + x]; trgLayer.imageData.data[sourceOffset + x] = 0; x++; trgCell.TempLayer.imageData.data[offset + x] = trgLayer.imageData.data[sourceOffset + x]; trgLayer.imageData.data[sourceOffset + x] = 0; x++; trgCell.TempLayer.imageData.data[offset + x] = trgLayer.imageData.data[sourceOffset + x]; trgLayer.imageData.data[sourceOffset + x] = 0; } else { x += 3; } } } isActive = true; trgCell.TempLayer.imageData.TextureUpdate(); trgLayer.imageData.TextureUpdate(); selectingAreaRect.OverlayWidth = trgCell.PixcelSelectedArea.imageData.drawingAreaSize.Width; selectingAreaRect.OverlayHeight = trgCell.PixcelSelectedArea.imageData.drawingAreaSize.Height; selectingAreaRect.OverlayOffsetX = trgCell.PixcelSelectedArea.Rect.OffsetX + trgCell.PixcelSelectedArea.imageData.drawingAreaSize.OffsetX; selectingAreaRect.OverlayOffsetY = trgCell.PixcelSelectedArea.imageData.drawingAreaSize.OffsetY - trgCell.PixcelSelectedArea.Rect.OffsetY - trgCell.PixcelSelectedArea.Rect.Height; selectingAreaRect.BorderBrush = new SolidColorBrush(System.Windows.Media.Color.FromArgb(100, 255, 0, 0)); selectingAreaRect.BorderThickness = new System.Windows.Thickness(1); currentCanvas.AddOverlayItem(selectingAreaRect); move.OverlayWidth = selectingAreaRect.OverlayWidth; move.OverlayHeight = selectingAreaRect.OverlayHeight; move.OverlayOffsetX = selectingAreaRect.OverlayOffsetX; move.OverlayOffsetY = selectingAreaRect.OverlayOffsetY; move.Cursor = Cursors.SizeAll; currentCanvas.AddOverlayItem(move); topLeft.OverlayOffsetX = selectingAreaRect.OverlayOffsetX; topLeft.OverlayOffsetY = selectingAreaRect.OverlayOffsetY; topLeft.Cursor = Cursors.SizeNWSE; currentCanvas.AddOverlayItem(topLeft); topRight.OverlayOffsetX = selectingAreaRect.OverlayOffsetX + selectingAreaRect.OverlayWidth; topRight.OverlayOffsetY = selectingAreaRect.OverlayOffsetY; topRight.Cursor = Cursors.SizeNESW; currentCanvas.AddOverlayItem(topRight); bottomLeft.OverlayOffsetX = selectingAreaRect.OverlayOffsetX; bottomLeft.OverlayOffsetY = selectingAreaRect.OverlayOffsetY + selectingAreaRect.OverlayHeight; bottomLeft.Cursor = Cursors.SizeNESW; currentCanvas.AddOverlayItem(bottomLeft); bottomRight.OverlayOffsetX = selectingAreaRect.OverlayOffsetX + selectingAreaRect.OverlayWidth; bottomRight.OverlayOffsetY = selectingAreaRect.OverlayOffsetY + selectingAreaRect.OverlayHeight; bottomRight.Cursor = Cursors.SizeNWSE; currentCanvas.AddOverlayItem(bottomRight); left.OverlayOffsetX = selectingAreaRect.OverlayOffsetX; left.OverlayOffsetY = selectingAreaRect.OverlayOffsetY + selectingAreaRect.OverlayHeight / 2.0; left.Cursor = Cursors.SizeWE; currentCanvas.AddOverlayItem(left); right.OverlayOffsetX = selectingAreaRect.OverlayOffsetX + selectingAreaRect.OverlayWidth; right.OverlayOffsetY = selectingAreaRect.OverlayOffsetY + selectingAreaRect.OverlayHeight / 2.0; right.Cursor = Cursors.SizeWE; currentCanvas.AddOverlayItem(right); top.OverlayOffsetX = selectingAreaRect.OverlayOffsetX + selectingAreaRect.OverlayWidth / 2.0; top.OverlayOffsetY = selectingAreaRect.OverlayOffsetY; top.Cursor = Cursors.SizeNS; currentCanvas.AddOverlayItem(top); bottom.OverlayOffsetX = selectingAreaRect.OverlayOffsetX + selectingAreaRect.OverlayWidth / 2.0; bottom.OverlayOffsetY = selectingAreaRect.OverlayOffsetY + selectingAreaRect.OverlayHeight; bottom.Cursor = Cursors.SizeNS; currentCanvas.AddOverlayItem(bottom); }