Example #1
0
        /// <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;
        }
Example #2
0
        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");
        }
Example #4
0
 private void EndDrag()
 {
     trg.BorderThickness = new Thickness(0);
     trg.BorderBrush = null;
     from_temp = null;
     fromDropTo = DropTo.None;
 }
Example #5
0
        /// <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;
     }
 }
Example #7
0
        public override bool Set(IBCanvasControl canvas, IBProjectElement trg, IBCoord coord)
        {
            if (base.Set(canvas, trg, coord))
            {
                return(false);
            }

            return(true);
        }
Example #8
0
        public RUMoveProjectElement(IBProjectElement _trg, IBProjectElement _preParent, int _preIndex)
        {
            trg = _trg;
            preParent = _preParent;
            preIndex = _preIndex;
            newParent = trg.Parent;

            newIndex = newParent.Children.IndexOf(trg);
        }
Example #9
0
        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);
        }
Example #10
0
        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;
            }
        }
Example #12
0
        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;
            }
        }
Example #13
0
        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;
            }
        }
Example #14
0
        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);
        }
Example #16
0
        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();
        }
Example #17
0
        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;
            }
        }
Example #18
0
        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);
        }
Example #19
0
        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;
 }
Example #21
0
 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");
        }
Example #23
0
 private static void OnSelectedElementChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
 {
     if (e.NewValue != null)
         grobalSelectedElement = e.NewValue as IBProjectElement;
 }
Example #24
0
        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);
        }