test floating some panels
This commit is contained in:
@@ -124,11 +124,11 @@
|
|||||||
|
|
||||||
<!-- PANEL COLOR PICKER -->
|
<!-- PANEL COLOR PICKER -->
|
||||||
<layout id="tpl-panel-color">
|
<layout id="tpl-panel-color">
|
||||||
<node width="350" margin="0 0 10 0" rtl="ltr">
|
<node width="350" height="350" margin="0 0 10 0" rtl="ltr">
|
||||||
<border height="30" color=".4" align="center" justify="center">
|
<border id="title" height="30" color=".4" align="center" justify="center">
|
||||||
<text text="Colors" color="1 1 1 1"/>
|
<text text="Colors" color="1 1 1 1"/>
|
||||||
</border>
|
</border>
|
||||||
<border color=".4" pad="5" dir="row" height="350">
|
<border color=".4" pad="5" dir="row">
|
||||||
<color-quad id="quad" color="1 0 0 1" height="100%" grow="1"/>
|
<color-quad id="quad" color="1 0 0 1" height="100%" grow="1"/>
|
||||||
<node width="30" dir="col" pad="0 0 0 5"><slider-hue id="hue"/></node>
|
<node width="30" dir="col" pad="0 0 0 5"><slider-hue id="hue"/></node>
|
||||||
</border>
|
</border>
|
||||||
@@ -1280,7 +1280,7 @@ Here's a list of what's available in this release.
|
|||||||
<text text="Floating Panel"/>
|
<text text="Floating Panel"/>
|
||||||
</node>
|
</node>
|
||||||
</border>
|
</border>
|
||||||
<border id="container" height="400" color="0 0 0 .9" pad="10" dir="col">
|
<border id="container" height="400" color="0 0 0 .9" dir="col">
|
||||||
</border>
|
</border>
|
||||||
</border>
|
</border>
|
||||||
</layout>
|
</layout>
|
||||||
|
|||||||
@@ -594,6 +594,8 @@ void App::update(float dt)
|
|||||||
}
|
}
|
||||||
//auto box = n->m_clip;
|
//auto box = n->m_clip;
|
||||||
//glm::ivec4 c = glm::vec4((int)box.x - 1, (int)(height / zoom - box.y - box.w) - 1, (int)box.z + 2, (int)box.w + 2) * zoom;
|
//glm::ivec4 c = glm::vec4((int)box.x - 1, (int)(height / zoom - box.y - box.w) - 1, (int)box.z + 2, (int)box.w + 2) * zoom;
|
||||||
|
if (box.z <= 0.f || box.w <= 0.f)
|
||||||
|
return false;
|
||||||
glm::ivec4 c = glm::vec4((int)box.x, (int)(height / zoom - box.y - box.w), (int)box.z, (int)box.w) * zoom;
|
glm::ivec4 c = glm::vec4((int)box.x, (int)(height / zoom - box.y - box.w), (int)box.z, (int)box.w) * zoom;
|
||||||
glScissor(c.x + off_x, c.y + off_y, c.z, c.w);
|
glScissor(c.x + off_x, c.y + off_y, c.z, c.w);
|
||||||
n->draw();
|
n->draw();
|
||||||
|
|||||||
@@ -64,6 +64,9 @@ public:
|
|||||||
std::shared_ptr<NodePanelGrid> grid;
|
std::shared_ptr<NodePanelGrid> grid;
|
||||||
std::shared_ptr<NodePanelBrushPreset> presets;
|
std::shared_ptr<NodePanelBrushPreset> presets;
|
||||||
NodePanelQuick* quick;
|
NodePanelQuick* quick;
|
||||||
|
NodePanelColor* floating_color;
|
||||||
|
NodeColorPicker* floating_picker;
|
||||||
|
NodePanelBrushPreset* floating_presets;
|
||||||
NodeCanvas* canvas;
|
NodeCanvas* canvas;
|
||||||
const uint16_t main_id = const_hash("main");
|
const uint16_t main_id = const_hash("main");
|
||||||
const std::array<int, 6> res_map{ 512, 1024, 1536, 2048, 4096, 8192 };
|
const std::array<int, 6> res_map{ 512, 1024, 1536, 2048, 4096, 8192 };
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
#include "node_text.h"
|
#include "node_text.h"
|
||||||
#include "node_progress_bar.h"
|
#include "node_progress_bar.h"
|
||||||
#include "node_dialog_picker.h"
|
#include "node_dialog_picker.h"
|
||||||
|
#include "node_panel_floating.h"
|
||||||
|
|
||||||
void App::title_update()
|
void App::title_update()
|
||||||
{
|
{
|
||||||
@@ -872,6 +873,10 @@ void App::brush_update()
|
|||||||
*quick->m_button_brush_current_preview->m_brush = *Canvas::I->m_current_brush;
|
*quick->m_button_brush_current_preview->m_brush = *Canvas::I->m_current_brush;
|
||||||
quick->m_button_brush_current_preview->draw_stroke();
|
quick->m_button_brush_current_preview->draw_stroke();
|
||||||
quick->m_button_color_current_inner->m_color = Canvas::I->m_current_brush->m_tip_color;
|
quick->m_button_color_current_inner->m_color = Canvas::I->m_current_brush->m_tip_color;
|
||||||
|
if (floating_picker)
|
||||||
|
floating_picker->set_color(Canvas::I->m_current_brush->m_tip_color);
|
||||||
|
if (floating_color)
|
||||||
|
floating_color->set_color(Canvas::I->m_current_brush->m_tip_color);
|
||||||
}
|
}
|
||||||
|
|
||||||
void App::init_menu_layer()
|
void App::init_menu_layer()
|
||||||
@@ -1080,8 +1085,41 @@ void App::initLayout()
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// test floating panel
|
||||||
|
auto fp_presets = layout[main_id]->add_child<NodePanelFloating>();
|
||||||
|
floating_presets = fp_presets->m_container->add_child<NodePanelBrushPreset>();
|
||||||
|
floating_presets->SetHeightP(100);
|
||||||
|
floating_presets->on_brush_changed = [this](Node* target, std::shared_ptr<Brush>& b) {
|
||||||
|
auto c = Canvas::I->m_current_brush->m_tip_color;
|
||||||
|
*Canvas::I->m_current_brush = *b;
|
||||||
|
Canvas::I->m_current_brush->m_tip_color = c;
|
||||||
|
Canvas::I->m_current_brush->load();
|
||||||
|
brush_update();
|
||||||
|
};
|
||||||
|
|
||||||
|
auto fp_color = layout[main_id]->add_child<NodePanelFloating>();
|
||||||
|
floating_color = fp_color->m_container->add_child<NodePanelColor>();
|
||||||
|
floating_color->SetHeightP(100);
|
||||||
|
floating_color->find("title")->destroy();
|
||||||
|
floating_color->on_color_changed = [this](Node* target, glm::vec4 color) {
|
||||||
|
Canvas::I->m_current_brush->m_tip_color = color;
|
||||||
|
brush_update();
|
||||||
|
};
|
||||||
|
|
||||||
|
auto fp_picker = layout[main_id]->add_child<NodePanelFloating>();
|
||||||
|
fp_picker->m_container->SetSize(300, 500);
|
||||||
|
floating_picker = fp_picker->m_container->add_child<NodeColorPicker>();
|
||||||
|
floating_picker->m_autohide = false;
|
||||||
|
floating_picker->on_color_change = [this](Node* target, glm::vec3 color) {
|
||||||
|
Canvas::I->m_current_brush->m_tip_color = glm::vec4(color, 1.f);
|
||||||
|
brush_update();
|
||||||
|
};
|
||||||
|
//picker->SetHeightP(100);
|
||||||
|
//color->find("title")->destroy();
|
||||||
|
|
||||||
App::I.redraw = true;
|
App::I.redraw = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
LOG("initializing layout xml");
|
LOG("initializing layout xml");
|
||||||
if (layout.m_loaded)
|
if (layout.m_loaded)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -302,6 +302,8 @@ const Node* Node::init_template(const char* id)
|
|||||||
|
|
||||||
void Node::add_child(Node* n)
|
void Node::add_child(Node* n)
|
||||||
{
|
{
|
||||||
|
if (n->m_parent)
|
||||||
|
n->m_parent->remove_child(n);
|
||||||
m_children.emplace_back(n);
|
m_children.emplace_back(n);
|
||||||
n->m_parent = this;
|
n->m_parent = this;
|
||||||
n->m_manager = m_manager;
|
n->m_manager = m_manager;
|
||||||
@@ -312,6 +314,8 @@ void Node::add_child(Node* n)
|
|||||||
|
|
||||||
void Node::add_child(Node* n, int index)
|
void Node::add_child(Node* n, int index)
|
||||||
{
|
{
|
||||||
|
if (n->m_parent)
|
||||||
|
n->m_parent->remove_child(n);
|
||||||
m_children.emplace_back(n);
|
m_children.emplace_back(n);
|
||||||
n->m_parent = this;
|
n->m_parent = this;
|
||||||
n->m_manager = m_manager;
|
n->m_manager = m_manager;
|
||||||
@@ -322,6 +326,8 @@ void Node::add_child(Node* n, int index)
|
|||||||
|
|
||||||
void Node::add_child(std::shared_ptr<Node> n)
|
void Node::add_child(std::shared_ptr<Node> n)
|
||||||
{
|
{
|
||||||
|
if (n->m_parent)
|
||||||
|
n->m_parent->remove_child(n.get());
|
||||||
m_children.push_back(n);
|
m_children.push_back(n);
|
||||||
n->m_parent = this;
|
n->m_parent = this;
|
||||||
n->m_manager = m_manager;
|
n->m_manager = m_manager;
|
||||||
@@ -332,6 +338,8 @@ void Node::add_child(std::shared_ptr<Node> n)
|
|||||||
|
|
||||||
void Node::add_child(std::shared_ptr<Node> n, int index)
|
void Node::add_child(std::shared_ptr<Node> n, int index)
|
||||||
{
|
{
|
||||||
|
if (n->m_parent)
|
||||||
|
n->m_parent->remove_child(n.get());
|
||||||
m_children.insert(m_children.begin() + index, n);
|
m_children.insert(m_children.begin() + index, n);
|
||||||
n->m_parent = this;
|
n->m_parent = this;
|
||||||
n->m_manager = m_manager;
|
n->m_manager = m_manager;
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ kEventResult NodeColorPicker::handle_event(Event* e)
|
|||||||
switch (e->m_type)
|
switch (e->m_type)
|
||||||
{
|
{
|
||||||
case kEventType::MouseLeave:
|
case kEventType::MouseLeave:
|
||||||
if (!m_interacted)
|
if (!m_interacted || !m_autohide)
|
||||||
break;
|
break;
|
||||||
// else fall through
|
// else fall through
|
||||||
case kEventType::MouseUpL:
|
case kEventType::MouseUpL:
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ public:
|
|||||||
std::function<void(Node* target, glm::vec3 rgb)> on_color_change;
|
std::function<void(Node* target, glm::vec3 rgb)> on_color_change;
|
||||||
|
|
||||||
bool m_interacted = false;
|
bool m_interacted = false;
|
||||||
|
bool m_autohide = true;
|
||||||
NodeSliderH* m_slider_h;
|
NodeSliderH* m_slider_h;
|
||||||
NodeSliderH* m_slider_s;
|
NodeSliderH* m_slider_s;
|
||||||
NodeSliderH* m_slider_v;
|
NodeSliderH* m_slider_v;
|
||||||
|
|||||||
Reference in New Issue
Block a user