#ifndef DUI_FRAME_HPP
#define DUI_FRAME_HPP
//Includes
#include "CloseButton.hpp"
namespace dui {
class Frame : public Stencil {
private:
bool draggable, dragged, screenlocked, showclose;
CloseButton cb;
sf::Text text;
sf::Color bodyColor, frameBorder, topColor, nameColor;
sf::RectangleShape body, top;
public:
Frame(): draggable(true), dragged(false), screenlocked(false), showclose(true),
bodyColor(232,232,232), topColor(102,194,255), nameColor(255,255,255) {
text.setFont(defaultFont);
text.setString("Frame");
text.setCharacterSize(10);
cb.setWindow(*window);
rect.width = 300;
rect.height = 150;
frameBorder = borderColor;
parent = this;
}
void draw() {
if(window == nullptr || !visible)
return;
//Draw the body
body.setPosition(rect.left,rect.top);
body.setSize(sf::Vector2f(rect.width,rect.height));
body.setFillColor(bodyColor);
window->draw(body);
gradientColor.r = topColor.r - 20;
gradientColor.g = topColor.g - 20;
gradientColor.b = topColor.b - 20;
//Draw the top.
top.setPosition(rect.left,rect.top);
top.setSize(sf::Vector2f(rect.width,25));
top.setFillColor(topColor);
window->draw(top);
drawGradient(rect.left,rect.top,rect.width,25,gradientColor);
drawOutlineRect(rect.left, rect.top + 25, rect.width, 1, frameBorder);
//Draw the text.
text.setPosition(rect.left + 5, rect.top + 5);
text.setColor(nameColor);
window->draw(text);
//Draw the close button.
cb.setPosition(rect.left + 55, rect.top);
//cb.draw() this crashes
}
};
} //namespace dui
#endif //DUI_FRAME_HPP
I2lmbmRlZiBEVUlfRlJBTUVfSFBQCiNkZWZpbmUgRFVJX0ZSQU1FX0hQUAoKLy9JbmNsdWRlcwojaW5jbHVkZSAiQ2xvc2VCdXR0b24uaHBwIgoKbmFtZXNwYWNlIGR1aSB7CmNsYXNzIEZyYW1lIDogcHVibGljIFN0ZW5jaWwgewpwcml2YXRlOgogICAgYm9vbCBkcmFnZ2FibGUsIGRyYWdnZWQsIHNjcmVlbmxvY2tlZCwgc2hvd2Nsb3NlOwogICAgQ2xvc2VCdXR0b24gY2I7CiAgICBzZjo6VGV4dCB0ZXh0OwogICAgc2Y6OkNvbG9yIGJvZHlDb2xvciwgZnJhbWVCb3JkZXIsIHRvcENvbG9yLCBuYW1lQ29sb3I7CiAgICBzZjo6UmVjdGFuZ2xlU2hhcGUgYm9keSwgdG9wOwpwdWJsaWM6CiAgICBGcmFtZSgpOiBkcmFnZ2FibGUodHJ1ZSksIGRyYWdnZWQoZmFsc2UpLCBzY3JlZW5sb2NrZWQoZmFsc2UpLCBzaG93Y2xvc2UodHJ1ZSksCiAgICBib2R5Q29sb3IoMjMyLDIzMiwyMzIpLCB0b3BDb2xvcigxMDIsMTk0LDI1NSksIG5hbWVDb2xvcigyNTUsMjU1LDI1NSkgewogICAgICAgIHRleHQuc2V0Rm9udChkZWZhdWx0Rm9udCk7CiAgICAgICAgdGV4dC5zZXRTdHJpbmcoIkZyYW1lIik7CiAgICAgICAgdGV4dC5zZXRDaGFyYWN0ZXJTaXplKDEwKTsKICAgICAgICBjYi5zZXRXaW5kb3coKndpbmRvdyk7CiAgICAgICAgcmVjdC53aWR0aCA9IDMwMDsKICAgICAgICByZWN0LmhlaWdodCA9IDE1MDsKICAgICAgICBmcmFtZUJvcmRlciA9IGJvcmRlckNvbG9yOwogICAgICAgIHBhcmVudCA9IHRoaXM7CiAgICB9CgogICAgdm9pZCBkcmF3KCkgewogICAgICAgIGlmKHdpbmRvdyA9PSBudWxscHRyIHx8ICF2aXNpYmxlKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgLy9EcmF3IHRoZSBib2R5CiAgICAgICAgYm9keS5zZXRQb3NpdGlvbihyZWN0LmxlZnQscmVjdC50b3ApOwogICAgICAgIGJvZHkuc2V0U2l6ZShzZjo6VmVjdG9yMmYocmVjdC53aWR0aCxyZWN0LmhlaWdodCkpOwogICAgICAgIGJvZHkuc2V0RmlsbENvbG9yKGJvZHlDb2xvcik7CiAgICAgICAgd2luZG93LT5kcmF3KGJvZHkpOwoKICAgICAgICBncmFkaWVudENvbG9yLnIgPSB0b3BDb2xvci5yIC0gMjA7CiAgICAgICAgZ3JhZGllbnRDb2xvci5nID0gdG9wQ29sb3IuZyAtIDIwOwogICAgICAgIGdyYWRpZW50Q29sb3IuYiA9IHRvcENvbG9yLmIgLSAyMDsKCiAgICAgICAgLy9EcmF3IHRoZSB0b3AuCiAgICAgICAgdG9wLnNldFBvc2l0aW9uKHJlY3QubGVmdCxyZWN0LnRvcCk7CiAgICAgICAgdG9wLnNldFNpemUoc2Y6OlZlY3RvcjJmKHJlY3Qud2lkdGgsMjUpKTsKICAgICAgICB0b3Auc2V0RmlsbENvbG9yKHRvcENvbG9yKTsKICAgICAgICB3aW5kb3ctPmRyYXcodG9wKTsKICAgICAgICBkcmF3R3JhZGllbnQocmVjdC5sZWZ0LHJlY3QudG9wLHJlY3Qud2lkdGgsMjUsZ3JhZGllbnRDb2xvcik7CiAgICAgICAgZHJhd091dGxpbmVSZWN0KHJlY3QubGVmdCwgcmVjdC50b3AgKyAyNSwgcmVjdC53aWR0aCwgMSwgZnJhbWVCb3JkZXIpOwoKICAgICAgICAvL0RyYXcgdGhlIHRleHQuCiAgICAgICAgdGV4dC5zZXRQb3NpdGlvbihyZWN0LmxlZnQgKyA1LCByZWN0LnRvcCArIDUpOwogICAgICAgIHRleHQuc2V0Q29sb3IobmFtZUNvbG9yKTsKICAgICAgICB3aW5kb3ctPmRyYXcodGV4dCk7CgogICAgICAgIC8vRHJhdyB0aGUgY2xvc2UgYnV0dG9uLgogICAgICAgIGNiLnNldFBvc2l0aW9uKHJlY3QubGVmdCArIDU1LCByZWN0LnRvcCk7CiAgICAgICAgLy9jYi5kcmF3KCkgdGhpcyBjcmFzaGVzCiAgICB9Cn07Cn0gLy9uYW1lc3BhY2UgZHVpCgoKI2VuZGlmIC8vRFVJX0ZSQU1FX0hQUA==