Implement UIWindow
This commit is contained in:
parent
5691afe59b
commit
9b9f7a286a
@ -90,21 +90,6 @@ void TextElement::draw(UIPoint screenPos, glm::mat4 projection) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UIWindow::UIWindow(UIValue x, UIValue y)
|
|
||||||
: UIElement(x, y) {
|
|
||||||
addChild(new TextElement(x, y));
|
|
||||||
}
|
|
||||||
|
|
||||||
UIWindow::~UIWindow() {
|
|
||||||
}
|
|
||||||
|
|
||||||
UIElementType UIWindow::getType() {
|
|
||||||
return UIElementType::WINDOW;
|
|
||||||
}
|
|
||||||
|
|
||||||
void UIWindow::draw(UIPoint screenPos, glm::mat4 projection) {
|
|
||||||
}
|
|
||||||
|
|
||||||
static float rectangleVerts[] = {
|
static float rectangleVerts[] = {
|
||||||
0.0f,
|
0.0f,
|
||||||
1.0f,
|
1.0f,
|
||||||
@ -345,4 +330,62 @@ void TextFieldElement::setText(std::string text) {
|
|||||||
this->cursorPos = 0;
|
this->cursorPos = 0;
|
||||||
updateText(Unicode::convertStdToU32(text));
|
updateText(Unicode::convertStdToU32(text));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UIWindowTitleBar::UIWindowTitleBar(UIValue height)
|
||||||
|
: RectangleElement(uiPx(0), uiPx(0), uiPw(1), height) {
|
||||||
|
this->color = Colors::GRAY;
|
||||||
|
this->draggable = true;
|
||||||
|
|
||||||
|
text = new TextElement(x, uiPh(0.5));
|
||||||
|
text->setText("Window title");
|
||||||
|
text->textMode = TextMode::ORIGIN;
|
||||||
|
text->origin = Origin::LEFT_CENTER;
|
||||||
|
addChild(text);
|
||||||
|
|
||||||
|
closeButton = new ButtonElement(uiPw(1) - uiPx(30), uiPx(0), uiPx(30), uiPh(1));
|
||||||
|
closeButton->text->setText("X");
|
||||||
|
closeButton->color = Colors::RED;
|
||||||
|
closeButton->hoverColor = Colors::RED.darker();
|
||||||
|
addChild(closeButton);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UIWindowTitleBar::dragEnter(UIPoint pos, UIPoint screenPos) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void UIWindowTitleBar::drag(UIPoint pos, UIPoint screenPos) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void UIWindowTitleBar::dragExit(UIPoint pos, UIPoint screenPos) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
UIWindow::UIWindow(UIValue x, UIValue y, UIValue w, UIValue h)
|
||||||
|
: UIElement(x, y) {
|
||||||
|
this->w = w;
|
||||||
|
this->h = h;
|
||||||
|
|
||||||
|
this->background = new RectangleElement(x, y, w, h);
|
||||||
|
background->color = Colors::GRAY.darker();
|
||||||
|
addChild(background);
|
||||||
|
|
||||||
|
this->titleBar = new UIWindowTitleBar(uiPx(25));
|
||||||
|
addChild(titleBar);
|
||||||
|
}
|
||||||
|
|
||||||
|
UIWindow::~UIWindow() {
|
||||||
|
}
|
||||||
|
|
||||||
|
UIElementType UIWindow::getType() {
|
||||||
|
return UIElementType::WINDOW;
|
||||||
|
}
|
||||||
|
|
||||||
|
UIBounds UIWindow::getBounds() {
|
||||||
|
return offsetUIBounds(uiToScreen(w), uiToScreen(h), origin);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UIWindow::draw(UIPoint screenPos, glm::mat4 projection) {
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -6,17 +6,6 @@
|
|||||||
|
|
||||||
namespace kek {
|
namespace kek {
|
||||||
|
|
||||||
class UIWindow: public UIElement {
|
|
||||||
|
|
||||||
UIWindow(UIValue x, UIValue y);
|
|
||||||
|
|
||||||
virtual ~UIWindow();
|
|
||||||
|
|
||||||
virtual UIElementType getType();
|
|
||||||
|
|
||||||
virtual void draw(UIPoint screenPos, glm::mat4 projection);
|
|
||||||
};
|
|
||||||
|
|
||||||
enum class TextMode {
|
enum class TextMode {
|
||||||
// Draw with y as baseline, disables vertical offset from the origin position specified using setOrigin()
|
// Draw with y as baseline, disables vertical offset from the origin position specified using setOrigin()
|
||||||
BASELINE,
|
BASELINE,
|
||||||
@ -135,4 +124,36 @@ class TextFieldElement: public RectangleElement {
|
|||||||
void setText(std::string text);
|
void setText(std::string text);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class UIWindowTitleBar: public RectangleElement {
|
||||||
|
|
||||||
|
public:
|
||||||
|
TextElement *text;
|
||||||
|
ButtonElement *closeButton;
|
||||||
|
|
||||||
|
UIWindowTitleBar(UIValue height);
|
||||||
|
|
||||||
|
virtual void dragEnter(UIPoint pos, UIPoint screenPos);
|
||||||
|
virtual void drag(UIPoint pos, UIPoint screenPos);
|
||||||
|
virtual void dragExit(UIPoint pos, UIPoint screenPos);
|
||||||
|
};
|
||||||
|
|
||||||
|
class UIWindow: public UIElement {
|
||||||
|
|
||||||
|
public:
|
||||||
|
RectangleElement *background;
|
||||||
|
UIWindowTitleBar *titleBar;
|
||||||
|
|
||||||
|
UIValue w, h;
|
||||||
|
|
||||||
|
UIWindow(UIValue x, UIValue y, UIValue w, UIValue h);
|
||||||
|
|
||||||
|
virtual ~UIWindow();
|
||||||
|
|
||||||
|
virtual UIElementType getType();
|
||||||
|
|
||||||
|
virtual UIBounds getBounds();
|
||||||
|
|
||||||
|
virtual void draw(UIPoint screenPos, glm::mat4 projection);
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -172,6 +172,9 @@ int main(int argc, char **argv) {
|
|||||||
rect2->addChild(box);
|
rect2->addChild(box);
|
||||||
rect2->addChild(text);
|
rect2->addChild(text);
|
||||||
|
|
||||||
|
UIWindow *window = new UIWindow(uiPx(0), uiPx(0), uiPx(720), uiPx(480));
|
||||||
|
UI::addElement(window);
|
||||||
|
|
||||||
if(Engine::start() != KEK_SUCCESS) return 1;
|
if(Engine::start() != KEK_SUCCESS) return 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user