From 5293f067bea7ea61818ce607f8451ae5cef244dc Mon Sep 17 00:00:00 2001 From: gdkhd812 Date: Fri, 23 Oct 2015 17:31:37 +0530 Subject: [PATCH] =?utf8?q?=E3=82=B0=E3=83=AA=E3=83=83=E3=83=91=E3=83=BC?= =?utf8?q?=E3=81=AE=E3=83=93=E3=83=A5=E3=83=BC=E3=82=AF=E3=83=A9=E3=82=B9?= =?utf8?q?=E3=82=92Core=E3=81=AB=E7=A7=BB=E5=8B=95=E3=81=95=E3=81=9B?= =?utf8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Core/Core.projitems | 1 + .../GripperManager.cs => Core/GripperView.cs | 34 +++++++++------------- Core/ITextRender.cs | 7 +++++ Metro/FooEditEngine/FooEditEngine.csproj | 1 - Metro/FooEditEngine/FooTextBox.cs | 10 +++---- WPF/FooEditEngine/WPF/WPFRender.cs | 6 ++++ Windows/FooEditEngine/PrintableTextRender.cs | 6 ++++ 7 files changed, 38 insertions(+), 27 deletions(-) rename Metro/FooEditEngine/GripperManager.cs => Core/GripperView.cs (68%) diff --git a/Core/Core.projitems b/Core/Core.projitems index a0ef5a2..d299725 100644 --- a/Core/Core.projitems +++ b/Core/Core.projitems @@ -25,6 +25,7 @@ + diff --git a/Metro/FooEditEngine/GripperManager.cs b/Core/GripperView.cs similarity index 68% rename from Metro/FooEditEngine/GripperManager.cs rename to Core/GripperView.cs index ca5440c..1e26ed6 100644 --- a/Metro/FooEditEngine/GripperManager.cs +++ b/Core/GripperView.cs @@ -1,14 +1,6 @@ -/* - * Copyright (C) 2013 FooProject - * * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at your option) any later version. - - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with this program. If not, see . - */ -using System; +using System; +using System.Collections.Generic; +using System.Text; namespace FooEditEngine { @@ -17,20 +9,20 @@ namespace FooEditEngine BottomLeft, BottomRight, } - class Gripper : IEquatable + class GripperView { public const int GripperWidth = 10; public const int HitAreaWidth = 48; Controller Controller; EditView View; - D2DRender Render; + ITextRender Render; GripperPostion type; - public Gripper(Controller controller, EditView view,D2DRender render,GripperPostion type) + public GripperView(Controller controller, EditView view, GripperPostion type) { this.Controller = controller; this.View = view; - this.Render = render; + this.Render = view.render; this.Enabled = false; this.type = type; } @@ -55,7 +47,7 @@ namespace FooEditEngine public Point AdjustPoint(Point p) { Rectangle gripperRect = this.GetGripperRect(type, HitAreaWidth, HitAreaWidth); - + if (gripperRect.IsHit(p)) p.Y = gripperRect.Y - 1; else @@ -68,20 +60,20 @@ namespace FooEditEngine public void Draw() { - if(this.Enabled) + if (this.Enabled) this.DrawGripper(this.type); } void DrawGripper(GripperPostion type) { - Rectangle gripperRect = GetGripperRect(type,GripperWidth,GripperWidth); + Rectangle gripperRect = GetGripperRect(type, GripperWidth, GripperWidth); double radius = gripperRect.Width / 2; Point point; point = new Point(gripperRect.X + radius, gripperRect.Y + radius); this.Render.DrawGripper(point, radius); } - Rectangle GetGripperRect(GripperPostion type,int width,int height) + Rectangle GetGripperRect(GripperPostion type, int width, int height) { TextPoint tp; Point point; @@ -95,11 +87,11 @@ namespace FooEditEngine point = this.View.GetPostionFromTextPoint(tp); double lineHeight = this.View.LayoutLines.GetLayout(tp.row).Height; - + return new Rectangle(point.X - radius, point.Y + lineHeight, width, height); } - public bool Equals(Gripper other) + public bool Equals(GripperView other) { return this.Rectangle == other.Rectangle; } diff --git a/Core/ITextRender.cs b/Core/ITextRender.cs index 2c48f5c..78754d4 100644 --- a/Core/ITextRender.cs +++ b/Core/ITextRender.cs @@ -550,6 +550,13 @@ namespace FooEditEngine /// ハイライト関連の情報を保持しているコレクション /// マーカーを保持しているコレクション。マーカーの開始位置は行の先頭を0とする相対位置としてください(位置が-1の場合表示しないこと) ITextLayout CreateLaytout(string str, SyntaxInfo[] syntaxCollection, IEnumerable MarkerRanges); + + /// + /// グリッパーを描く + /// + /// 中心点 + /// 半径 + void DrawGripper(Point p, double radius); } interface IEditorRender : ITextRender { diff --git a/Metro/FooEditEngine/FooEditEngine.csproj b/Metro/FooEditEngine/FooEditEngine.csproj index 56ce474..de179eb 100644 --- a/Metro/FooEditEngine/FooEditEngine.csproj +++ b/Metro/FooEditEngine/FooEditEngine.csproj @@ -115,7 +115,6 @@ - diff --git a/Metro/FooEditEngine/FooTextBox.cs b/Metro/FooEditEngine/FooTextBox.cs index 96a2a29..5d506a1 100644 --- a/Metro/FooEditEngine/FooTextBox.cs +++ b/Metro/FooEditEngine/FooTextBox.cs @@ -79,7 +79,7 @@ namespace FooEditEngine.Metro this.Document = new Document(); this.Document.LayoutLines.Render = this.Render; - this.View = new EditView(this.Document, this.Render, new Padding(5, Gripper.HitAreaWidth, Gripper.HitAreaWidth / 2, Gripper.HitAreaWidth)); + this.View = new EditView(this.Document, this.Render, new Padding(5, GripperView.HitAreaWidth, GripperView.HitAreaWidth / 2, GripperView.HitAreaWidth)); this.View.SrcChanged += View_SrcChanged; this.View.InsertMode = this.InsertMode; this.View.DrawLineNumber = this.DrawLineNumber; @@ -92,8 +92,8 @@ namespace FooEditEngine.Metro this._Controller = new Controller(this.Document, this.View); this._Controller.SelectionChanged += Controller_SelectionChanged; - this.FirstGripper = new Gripper(this._Controller, this.View, this.Render, GripperPostion.BottomLeft); - this.SecondGripper = new Gripper(this._Controller, this.View, this.Render, GripperPostion.BottomRight); + this.FirstGripper = new GripperView(this._Controller, this.View, GripperPostion.BottomLeft); + this.SecondGripper = new GripperView(this._Controller, this.View, GripperPostion.BottomRight); this.gestureRecongnizer.GestureSettings = GestureSettings.Drag | GestureSettings.RightTap | @@ -781,9 +781,9 @@ namespace FooEditEngine.Metro this.textStore.NotifySelectionChanged(); } - Gripper FirstGripper, SecondGripper; + GripperView FirstGripper, SecondGripper; bool HittedCaret; - Gripper hittedGripper; + GripperView hittedGripper; private void gestureRecongnizer_ManipulationInertiaStarting(GestureRecognizer sender, ManipulationInertiaStartingEventArgs e) { //sender.InertiaTranslationDeceleration = 0.001f; diff --git a/WPF/FooEditEngine/WPF/WPFRender.cs b/WPF/FooEditEngine/WPF/WPFRender.cs index 04f417a..c2ddbb7 100644 --- a/WPF/FooEditEngine/WPF/WPFRender.cs +++ b/WPF/FooEditEngine/WPF/WPFRender.cs @@ -590,6 +590,12 @@ namespace FooEditEngine.WPF return layout; } + public void DrawGripper(Point p, double radius) + { + //タッチには対応していないので実装する必要はない + throw new NotImplementedException(); + } + public void Dispose() { this.Pens = null; diff --git a/Windows/FooEditEngine/PrintableTextRender.cs b/Windows/FooEditEngine/PrintableTextRender.cs index 0acd1a4..f2d58ec 100644 --- a/Windows/FooEditEngine/PrintableTextRender.cs +++ b/Windows/FooEditEngine/PrintableTextRender.cs @@ -238,6 +238,12 @@ namespace FooEditEngine.Windows return output; } + public void DrawGripper(Point p, double radius) + { + //タッチには対応していないので実装する必要はない + throw new NotImplementedException(); + } + public System.Drawing.Color Foreground { get; -- 2.11.0