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); }
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); }
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); }
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); }
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); }
//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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }