コード例 #1
0
        /// <summary>
        /// Render the caret.
        /// </summary>
        /// <param name="textArea"></param>
        protected void CacheCaretImagery(Rectf textArea)
        {
            var w   = (MultiLineEditbox)Window;
            var fnt = w.GetFont();

            // require a font so that we can calculate caret position.
            if (fnt != null)
            {
                // get line that caret is in
                var caretLine = w.GetLineNumberFromIndex(w.GetCaretIndex());

                var lines = w.GetFormattedLines();

                // if caret line is valid.
                if (caretLine < lines.Count)
                {
                    // calculate pixel offsets to where caret should be drawn
                    var caretLineIdx = w.GetCaretIndex() - lines[caretLine].d_startIdx;
                    var ypos         = caretLine * fnt.GetLineSpacing();
                    var xpos         = fnt.GetTextAdvance(w.GetText().CEGuiSubstring(lines[caretLine].d_startIdx, caretLineIdx));

                    //// get base offset to target layer for cursor.
                    //Renderer* renderer = System::getSingleton().getRenderer();
                    //float baseZ = renderer->getZLayer(7) - renderer->getCurrentZ();

                    // get WidgetLookFeel for the assigned look.
                    var wlf = GetLookNFeel();
                    // get caret imagery
                    var caretImagery = wlf.GetImagerySection("Caret");

                    // calculate finat destination area for caret
                    var caretArea = new Rectf
                    {
                        Left   = textArea.Left + xpos,
                        Top    = textArea.Top + ypos,
                        Width  = caretImagery.GetBoundingRect(w).Size.Width,
                        Height = fnt.GetLineSpacing()
                    };
                    caretArea.Offset(new Lunatics.Mathematics.Vector2(-w.GetHorzScrollbar().GetScrollPosition(),
                                                                      -w.GetVertScrollbar().GetScrollPosition()));

                    // Create the render geometry for the caret image
                    caretImagery.Render(w, caretArea, null, textArea);
                }
            }
        }
コード例 #2
0
        public override void CreateRenderGeometry()
        {
            var w = (ListHeaderSegment)Window;

            // get WidgetLookFeel for the assigned look.
            var wlf = GetLookNFeel();

            StateImagery imagery;

            // get imagery for main state.
            if (w.IsEffectiveDisabled())
            {
                imagery = wlf.GetStateImagery("Disabled");
            }
            else if ((w.IsSegmentHovering() != w.IsSegmentPushed()) && !w.IsSplitterHovering() && w.IsClickable())
            {
                imagery = wlf.GetStateImagery("Hover");
            }
            else if (w.IsSplitterHovering())
            {
                imagery = wlf.GetStateImagery("SplitterHover");
            }
            else
            {
                imagery = wlf.GetStateImagery("Normal");
            }

            // do main rendering
            imagery.Render(w);

            // Render sorting icon as needed
            var sortDir = w.GetSortDirection();

            if (sortDir == ListHeaderSegment.SortDirection.Ascending)
            {
                imagery = wlf.GetStateImagery("AscendingSortIcon");
                imagery.Render(w);
            }
            else if (sortDir == ListHeaderSegment.SortDirection.Descending)
            {
                imagery = wlf.GetStateImagery("DescendingSortIcon");
                imagery.Render(w);
            }

            // draw ghost copy if the segment is being dragged.
            if (w.IsBeingDragMoved())
            {
                var pixelSize  = w.GetPixelSize();
                var targetArea = new Rectf(0, 0, pixelSize.Width, pixelSize.Height);
                targetArea.Offset(w.GetDragMoveOffset());
                imagery = wlf.GetStateImagery("DragGhost");
                imagery.Render(w, targetArea);

                // Render sorting icon as needed
                if (sortDir == ListHeaderSegment.SortDirection.Ascending)
                {
                    imagery = wlf.GetStateImagery("GhostAscendingSortIcon");
                    imagery.Render(w, targetArea);
                }
                else if (sortDir == ListHeaderSegment.SortDirection.Descending)
                {
                    imagery = wlf.GetStateImagery("GhostDescendingSortIcon");
                    imagery.Render(w, targetArea);
                }
            }
        }