Example #1
0
        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();
 }
Example #3
0
        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);
        }
Example #4
0
        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);
 }