Example #1
0
        public static bool button(Texture t, Vector2 size)
        {
            Window win = currentWindow;

            if (win.skipItems)
            {
                return(false);
            }


            win.addItem(style.button.padding);

            UInt32  id  = win.getChildId(t.ToString());
            Vector2 pos = win.cursorScreenPosition;
            Rect    r   = Rect.fromPosSize(pos, size);

            bool hovered;
            bool held;
            bool pressed = buttonBehavior(r, id, out hovered, out held);

            drawButtonBackground(r, win, hovered, held);

            Rect ir = r;

            ir.shrink(style.button.imagePadding);
            win.canvas.addImage(t, ir, Canvas.uv_zero, Canvas.uv_one, Canvas.col_white);

            //update the window cursor
            win.addItem(size);

            return(pressed);
        }
Example #2
0
        public static bool button(ArrayTexture t, int idx, Vector2 size)
        {
            Window win = currentWindow;

            if (win.skipItems)
            {
                return(false);
            }

            win.addItem(style.button.padding);

            string  name = t.ToString() + "-" + idx.ToString();
            UInt32  id   = win.getChildId(name);
            Vector2 pos  = win.cursorScreenPosition;
            Rect    r    = Rect.fromPosSize(pos, size);

            bool hovered;
            bool held;
            bool pressed = buttonBehavior(r, id, out hovered, out held);

            drawButtonBackground(r, win, hovered, held);

            //draw the thing (need to convert to screen space)
            Vector2 min = new Vector2(r.left, displaySize.Y - r.top);
            Vector2 max = new Vector2(r.right, displaySize.Y - r.bottom);
            RenderTexture2dCommand cmd = new RenderTexture2dCommand(min, max, t, idx, pressed ? .25f : 1.0f);

            win.canvas.addCustomRenderCommand(cmd);

            //update the window cursor
            win.addItem(size);

            return(pressed);
        }
Example #3
0
        public static bool button(String s, Vector2 size)
        {
            Window win = currentWindow;

            if (win.skipItems)
            {
                return(false);
            }

            win.addItem(style.button.padding);

            UInt32  id  = win.getChildId(s);
            Vector2 pos = win.cursorScreenPosition;
            Rect    r   = Rect.fromPosSize(pos, size);

            bool hovered;
            bool held;
            bool pressed = buttonBehavior(r, id, out hovered, out held);

            drawButtonBackground(r, win, hovered, held);
            drawButtonText(s, r, win, hovered, held);

            //update the window cursor
            win.addItem(size);

            return(pressed);
        }
Example #4
0
        public static bool selectable(String label, ref bool selected, Vector2 sizeArg, SelectableFlags flags = 0)
        {
            Window win = currentWindow;

            if (win.skipItems == true)
            {
                return(false);
            }

            win.addItem(style.selectable.padding);

            UInt32  id        = win.getChildId(label);
            Vector2 labelSize = style.font.size(label);
            Vector2 size      = new Vector2(sizeArg.X != 0 ? sizeArg.X : labelSize.X, sizeArg.Y != 0 ? sizeArg.Y : labelSize.Y);
            Rect    r         = Rect.fromPosSize(win.cursorScreenPosition, size);

            bool        hovered;
            bool        held;
            ButtonFlags buttonFlags = 0;

            if (flags.HasFlag(SelectableFlags.Menu))
            {
                buttonFlags |= ButtonFlags.PressedOnClick;
            }
            if (flags.HasFlag(SelectableFlags.MenuItem))
            {
                buttonFlags |= ButtonFlags.PressedOnClick | ButtonFlags.PressedOnRelease;
            }
            if (flags.HasFlag(SelectableFlags.Disabled))
            {
                buttonFlags |= ButtonFlags.Disabled;
            }

            bool pressed = buttonBehavior(r, id, out hovered, out held, buttonFlags);

            if (hovered)
            {
                Color4 col = style.selectable.textHoverActive;
                win.canvas.addRectFilled(r, col);
            }

            win.canvas.addText(r, style.selectable.textNormal, label, style.selectable.textAlignment);

            //close popups
            if (pressed && flags.HasFlag(SelectableFlags.DontClosePopups) == false && win.flags.HasFlag(Window.Flags.Popup))
            {
                closeCurrentPopup();
            }

            if (pressed)
            {
                selected = !selected;
            }


            win.addItem(size);

            return(pressed);
        }
Example #5
0
        public static bool slider(String s, ref float val, float min, float max, String displayFormat = "")
        {
            Window win = currentWindow;

            if (win.skipItems)
            {
                return(false);
            }

            UInt32 id = win.getChildId(s);

            win.addItem(style.slider.padding);

            float   width     = win.size.X * 0.65f;
            Vector2 labelSize = style.font.size(s);

            //move cursor down for the size of the text accounting for the padding
            Vector2 pos        = win.cursorScreenPosition;
            Rect    sliderRect = Rect.fromPosSize(pos, new Vector2(width, labelSize.Y) + style.slider.padding);
            Rect    totalRect  = Rect.fromPosSize(pos, sliderRect.size + new Vector2(labelSize.X, 0));

            win.addItem(totalRect.size);

            bool hovered      = false;
            bool isHorizontal = true;

            bool valChanged = sliderBehavior(sliderRect, id, ref val, min, max, ref hovered);

            string valString = "";

            if (displayFormat != "")
            {
                valString = String.Format(displayFormat, val);
            }
            else
            {
                valString = String.Format("{0:0.00}", val);
            }

            float grab_t = (MathExt.clamp <float>(val, min, max) - min) / (max - min);

            if (!isHorizontal)
            {
                grab_t = 1.0f - grab_t;
            }

            //drawing
            drawSliderBackground(sliderRect, win, hovered);
            drawSliderGrabber(sliderRect, win, isHorizontal, grab_t, activeId == id);
            drawSliderValueText(sliderRect, win, valString);
            drawSliderLabelText(totalRect, win, s);

            return(valChanged);
        }
Example #6
0
        //to be used for enumerations
        public static bool slider <T>(String s, ref T enumVal)
        {
            Window win = currentWindow;

            if (win.skipItems)
            {
                return(false);
            }

            UInt32 id = win.getChildId(s);

            win.addItem(style.slider.padding);

            float   width     = win.size.X * 0.65f;
            Vector2 labelSize = style.font.size(s);

            //move cursor down for the size of the text accounting for the padding
            Vector2 pos        = win.cursorScreenPosition;
            Rect    sliderRect = Rect.fromPosSize(pos, new Vector2(width, labelSize.Y) + style.slider.padding);
            Rect    totalRect  = Rect.fromPosSize(pos, sliderRect.size + new Vector2(labelSize.X, 0));

            win.addItem(totalRect.size);

            bool isHorizontal = true;
            bool hovered      = false;

            int   min = Enum.GetValues(typeof(T)).GetLowerBound(0);
            int   max = Enum.GetValues(typeof(T)).GetUpperBound(0);
            float val = (float)Convert.ToInt32(enumVal);

            bool valChanged = sliderBehavior(sliderRect, id, ref val, min, max, ref hovered);

            enumVal = (T)(Object)((int)val);
            string valString = Enum.GetName(typeof(T), enumVal);


            float grab_t = (MathExt.clamp <float>(val, min, max) - min) / (max - min);

            if (!isHorizontal)
            {
                grab_t = 1.0f - grab_t;
            }

            //drawing
            drawSliderBackground(sliderRect, win, hovered);
            drawSliderGrabber(sliderRect, win, isHorizontal, grab_t, activeId == id);
            drawSliderValueText(sliderRect, win, valString);
            drawSliderLabelText(totalRect, win, s);

            return(valChanged);
        }
Example #7
0
        public static bool menuItem(String label, ref bool selected, bool enabled = true)
        {
            Window win = currentWindow;

            if (win.skipItems == true)
            {
                return(false);
            }

            Vector2 labelSize = style.font.size(label);

            win.beginLayout(Layout.Direction.Horizontal);
            bool pressed = selectable(label, ref selected, new Vector2(labelSize.X, 0), SelectableFlags.MenuItem);

            //spacer to push checkbox up on right side of menu box reguardless of size
            float s = win.size.X - (style.selectable.padding.X + labelSize.X + style.selectable.padding.X + style.font.fontSize + style.window.padding.X);

            if (s < 0.0f)
            {
                s = 0.0f;
            }
            Vector2 spacer = new Vector2(s, labelSize.Y);

            win.addItem(spacer);

            icon(selected ? Icons.CHECKBOX_CHECKED : Icons.CHECKBOX_UNCHECKED);

            win.endLayout();
            return(pressed);
        }
Example #8
0
        public static void image(Texture t, Vector2 size)
        {
            Window win = currentWindow;

            if (win.skipItems)
            {
                return;
            }

            win.addItem(style.text.padding);

            Vector2 pos = win.cursorScreenPosition;

            Rect r = Rect.fromPosSize(pos, size);

            win.canvas.addImage(t, r, Vector2.Zero, Vector2.One, Color4.White);
            win.addItem(size);
        }
Example #9
0
        public static void icon(int iconId, Color4 col)
        {
            Window win = currentWindow;

            if (win.skipItems)
            {
                return;
            }

            win.addItem(style.selectable.padding);

            Vector2 pos  = win.cursorScreenPosition;
            Vector2 size = new Vector2(style.font.fontSize);
            Rect    r    = Rect.fromPosSize(pos, size);

            win.canvas.addIcon(iconId, r);

            win.addItem(r.size);
        }
Example #10
0
        public static void label(String s, params Object[] objs)
        {
            Window win = currentWindow;

            if (win.skipItems)
            {
                return;
            }

            win.addItem(style.text.padding);

            String  txt       = String.Format(s, objs);
            Vector2 labelSize = style.font.size(txt);// + style.

            //add in padding
            Vector2 pos = win.cursorScreenPosition;

            Rect r = Rect.fromPosSize(pos, labelSize);

            win.canvas.addText(r, style.text.color, txt, Alignment.Default);

            win.addItem(labelSize);
        }
Example #11
0
        public static void separator()
        {
            Window win = currentWindow;

            if (win.skipItems)
            {
                return;
            }

            Vector2 size = new Vector2(win.size.X, 6);

            Vector2 a = win.cursorScreenPosition + new Vector2(1, 2);
            Vector2 b = win.cursorScreenPosition + new Vector2(win.size.X - 1, 2);

            win.canvas.addLine(a, b, style.window.borderColor, 1);

            win.addItem(size);
        }
Example #12
0
        public static void spacer(float x)
        {
            Window win = currentWindow;

            if (win.skipItems)
            {
                return;
            }

            Vector2 space;

            if (win.currentLayout.myDirection == Layout.Direction.Horizontal)
            {
                space = new Vector2(x, 0);
            }
            else
            {
                space = new Vector2(0, x);
            }

            win.addItem(space);
        }
Example #13
0
        public static bool checkbox(String label, ref bool selected)
        {
            Window win = currentWindow;

            if (win.skipItems == true)
            {
                return(false);
            }

            win.addItem(style.checkbox.padding);

            Vector2 labelSize = style.font.size(label);

            win.beginLayout(Layout.Direction.Horizontal);

            bool pressed = selectable(label, ref selected, new Vector2(labelSize.X, 0), SelectableFlags.HasToggle);

            icon(selected ? Icons.CHECKBOX_CHECKED : Icons.CHECKBOX_UNCHECKED);

            win.endLayout();

            return(pressed);
        }