public EditorControl(EditorSettings settings) { SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.Selectable, true); Cursor = Cursors.IBeam; TabStop = true; AllowDrop = true; EditorSettings = settings; TopMargins = new MarginList(this); LeftMargins = new MarginList(this); RightMargins = new MarginList(this); BottomMargins = new MarginList(this); Info = new EditorInfo(this); CaretRenderer = new CaretRenderer(this); Renderer = new Renderer(this); Scroll = new ScrollingManager(this); Locations = new LocationManager(this);//+ Folding = new FoldingManager(this); CallTips = new CallTipManager(this); MatchBrackets = new MatchBracketManager(this); MatchWords = new MatchWordManager(this); Autocomplete = new AutocompleteManager(this); AffinityManager = new AffinityManager(this); Search = new SearchManager(this); Styles = new StyleManager(this); timer.Tick += Tick; }
private void Start() { GetComponent <LayoutElement>().ignoreLayout = true; AlignPosition(transform.parent.GetChild(0).GetComponent <RectTransform>(), GetComponent <RectTransform>()); CaretRenderer.SetMaterial(Graphic.defaultGraphicMaterial, Texture2D.whiteTexture); gameObject.layer = transform.parent.gameObject.layer; transform.SetAsFirstSibling(); }
protected override void OnPaint(PaintEventArgs e) { if (Buffer == null) { return; } var dt = DateTime.Now; CaretRenderer.Suspend(); e.Graphics.FillRectangle(Theme.GetStyle(StandardStyle.Default).BackColor.Brush(), new Rectangle(Info.TextLeft, Info.TextTop, Info.TextWidth, Info.TextHeight)); e.Graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; Renderer.DrawMargins(0, e.Graphics, TopMargins); Renderer.DrawMargins(0, e.Graphics, LeftMargins); e.Graphics.TranslateTransform(Scroll.ScrollPosition.X, Scroll.ScrollPosition.Y); var carets = new List <CaretData>(); Renderer.DrawLines(e.Graphics, carets); e.Graphics.ResetTransform(); Renderer.DrawLongLineIndicators(e.Graphics); Renderer.DrawWordWrapColumn(e.Graphics); Renderer.DrawMargins(Info.TextBottom, e.Graphics, BottomMargins); if (RightMargins.Count > 0) { Renderer.DrawMargins(ClientSize.Width - RightMargins.First().CalculateSize(), e.Graphics, RightMargins); } e.Graphics.TranslateTransform(Scroll.ScrollPosition.X, Scroll.ScrollPosition.Y); if (!LimitedMode || Focused) { foreach (var c in carets) { CaretRenderer.DrawCaret(e.Graphics, c.X, c.Y, c.Blink); } } if (Scroll.ScrollPosition.X != 0) { var cs = Theme.GetStyle(StandardStyle.Default); e.Graphics.FillRectangle(ControlPaint.Dark(cs.BackColor, .05f).Brush(), new Rectangle(Info.TextLeft - Scroll.ScrollPosition.X, Info.TextTop - Scroll.ScrollPosition.Y, Dpi.GetWidth(2), Info.TextHeight + BottomMargins.TotalWidth)); } Console.WriteLine("OnPaint time: " + (DateTime.Now - dt).TotalMilliseconds); base.OnPaint(e); }
protected override void Dispose(bool disposing) { if (disposed) { return; } if (disposing) { CaretRenderer.Dispose(); } disposed = true; }
private void OnEnable() { _mesh = new Mesh(); CaretRenderer.SetMaterial(Graphic.defaultGraphicMaterial, Texture2D.whiteTexture); }