fix texture id bug, few gestures bugs solved
This commit is contained in:
@@ -332,7 +332,8 @@
|
|||||||
<button-custom id="menu-layers" height="100%" margin="0 0 0 0" justify="center" align="center" pad="8" color=".1">
|
<button-custom id="menu-layers" height="100%" margin="0 0 0 0" justify="center" align="center" pad="8" color=".1">
|
||||||
<text text="Layers" font-face="arial" font-size="11"/>
|
<text text="Layers" font-face="arial" font-size="11"/>
|
||||||
</button-custom>
|
</button-custom>
|
||||||
<node height="100%" color="1" grow="1" justify="center" align="flex-end">
|
<node height="100%" color="1" grow="1" align="center" justify="flex-end" dir="row">
|
||||||
|
<text id="txt-memory" text="History memory: 0.0 Kb" font-face="arial" font-size="11" margin="0 20 0 0" color=".6 .6 .6 1"/>
|
||||||
<text text="PanoPainter 0.1.2 alpha" font-face="arial" font-size="11" margin="0 10 0 0" color=".2 .5 1 1"/>
|
<text text="PanoPainter 0.1.2 alpha" font-face="arial" font-size="11" margin="0 10 0 0" color=".2 .5 1 1"/>
|
||||||
</node>
|
</node>
|
||||||
</border>
|
</border>
|
||||||
@@ -341,6 +342,7 @@
|
|||||||
<button id="btn-open" width="50" height="100%" margin="0 5 0 0" text="Open"/>
|
<button id="btn-open" width="50" height="100%" margin="0 5 0 0" text="Open"/>
|
||||||
<button id="btn-save" width="50" height="100%" margin="0 5 0 0" text="Save"/>
|
<button id="btn-save" width="50" height="100%" margin="0 5 0 0" text="Save"/>
|
||||||
<button id="btn-export" width="50" height="100%" margin="0 5 0 0" text="Export"/>
|
<button id="btn-export" width="50" height="100%" margin="0 5 0 0" text="Export"/>
|
||||||
|
<button id="btn-anim" width="50" height="100%" margin="0 5 0 0" text="Anim"/>
|
||||||
<button id="btn-clear" width="50" height="100%" margin="0 5 0 15" text="Clear"/>
|
<button id="btn-clear" width="50" height="100%" margin="0 5 0 15" text="Clear"/>
|
||||||
<button-custom id="btn-bucket" width="50" height="100%" margin="0 20 0 0" thickness="1" border-color="0 0 0 1" pad="2">
|
<button-custom id="btn-bucket" width="50" height="100%" margin="0 20 0 0" thickness="1" border-color="0 0 0 1" pad="2">
|
||||||
<image path="data/ui/bucket.png" width="100%" height="100%" align="center" justify="flex-end"/>
|
<image path="data/ui/bucket.png" width="100%" height="100%" align="center" justify="flex-end"/>
|
||||||
|
|||||||
@@ -1,5 +1,23 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "action.h"
|
#include "action.h"
|
||||||
|
#include "app.h"
|
||||||
|
|
||||||
ActionManager ActionManager::I;
|
ActionManager ActionManager::I;
|
||||||
|
|
||||||
|
void ActionManager::add(Action *action)
|
||||||
|
{
|
||||||
|
I.m_actions.emplace(action);
|
||||||
|
I.m_memory += action->memory();
|
||||||
|
LOG("History: %.2f KB", I.m_memory / 1024.f);
|
||||||
|
App::I.update_memory_usage(I.m_memory);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ActionManager::undo()
|
||||||
|
{
|
||||||
|
I.m_actions.top()->undo();
|
||||||
|
I.m_memory -= I.m_actions.top()->memory();
|
||||||
|
I.m_actions.pop();
|
||||||
|
LOG("History: %.2f KB", I.m_memory / 1024.f);
|
||||||
|
App::I.update_memory_usage(I.m_memory);
|
||||||
|
}
|
||||||
|
|||||||
@@ -15,19 +15,8 @@ public:
|
|||||||
static ActionManager I;
|
static ActionManager I;
|
||||||
std::stack<std::unique_ptr<Action>> m_actions;
|
std::stack<std::unique_ptr<Action>> m_actions;
|
||||||
size_t m_memory = 0;
|
size_t m_memory = 0;
|
||||||
static void add(Action* action)
|
static void add(Action* action);
|
||||||
{
|
static void undo();
|
||||||
I.m_actions.emplace(action);
|
|
||||||
I.m_memory += action->memory();
|
|
||||||
LOG("History: %.2f KB", I.m_memory / 1024.f);
|
|
||||||
}
|
|
||||||
static void undo()
|
|
||||||
{
|
|
||||||
I.m_actions.top()->undo();
|
|
||||||
I.m_memory -= I.m_actions.top()->memory();
|
|
||||||
I.m_actions.pop();
|
|
||||||
LOG("History: %.2f KB", I.m_memory / 1024.f);
|
|
||||||
}
|
|
||||||
static bool empty()
|
static bool empty()
|
||||||
{
|
{
|
||||||
return I.m_actions.empty();
|
return I.m_actions.empty();
|
||||||
|
|||||||
@@ -584,6 +584,15 @@ void App::initLayout()
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
if (auto* button = layout[main_id]->find<NodeButton>("btn-anim"))
|
||||||
|
{
|
||||||
|
button->on_click = [this,button](Node*) {
|
||||||
|
if (canvas)
|
||||||
|
{
|
||||||
|
//canvas->m_canvas->export_anim(data_path);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
if (auto* button = layout[main_id]->find<NodeButton>("btn-open"))
|
if (auto* button = layout[main_id]->find<NodeButton>("btn-open"))
|
||||||
{
|
{
|
||||||
button->on_click = [this,button](Node*) {
|
button->on_click = [this,button](Node*) {
|
||||||
@@ -946,3 +955,14 @@ void App::terminate()
|
|||||||
color->clear_context();
|
color->clear_context();
|
||||||
stroke->clear_context();
|
stroke->clear_context();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void App::update_memory_usage(size_t bytes)
|
||||||
|
{
|
||||||
|
if (auto txt = layout[main_id]->find<NodeText>("txt-memory"))
|
||||||
|
{
|
||||||
|
static char buffer[128];
|
||||||
|
sprintf(buffer, "History memory: %.2f Kb", bytes / 1024.f);
|
||||||
|
txt->set_text(buffer);
|
||||||
|
layout[main_id]->update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ public:
|
|||||||
void create();
|
void create();
|
||||||
void terminate();
|
void terminate();
|
||||||
void clear();
|
void clear();
|
||||||
|
void update_memory_usage(size_t bytes);
|
||||||
void update(float dt);
|
void update(float dt);
|
||||||
void resize(float w, float h);
|
void resize(float w, float h);
|
||||||
bool mouse_down(int button, float x, float y);
|
bool mouse_down(int button, float x, float y);
|
||||||
|
|||||||
@@ -220,6 +220,8 @@ void CanvasModeGrid::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case kEventType::MouseCancel:
|
case kEventType::MouseCancel:
|
||||||
|
if (m_dragging)
|
||||||
|
m_lines.pop_back();
|
||||||
m_dragging = false;
|
m_dragging = false;
|
||||||
node->mouse_release();
|
node->mouse_release();
|
||||||
break;
|
break;
|
||||||
@@ -280,13 +282,7 @@ void CanvasModeFill::init()
|
|||||||
|
|
||||||
void CanvasModeFill::leave()
|
void CanvasModeFill::leave()
|
||||||
{
|
{
|
||||||
auto drawer = [this](const glm::mat4& camera, const glm::mat4& proj) {
|
canvas->draw_objects(std::bind(&CanvasModeFill::on_Draw, this, glm::mat4(), std::placeholders::_1, std::placeholders::_2));
|
||||||
ui::ShaderManager::use(ui::kShader::Color);
|
|
||||||
ui::ShaderManager::u_mat4(ui::kShaderUniform::MVP, proj * camera);
|
|
||||||
ui::ShaderManager::u_vec4(ui::kShaderUniform::Col, { node->m_brush.m_tip_color.rgb(), node->m_brush.m_tip_opacity });
|
|
||||||
m_shape.draw_fill();
|
|
||||||
};
|
|
||||||
canvas->draw_objects(std::bind(drawer, std::placeholders::_1, std::placeholders::_2));
|
|
||||||
m_points.clear();
|
m_points.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -351,9 +347,12 @@ void CanvasModeFill::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case kEventType::MouseCancel:
|
case kEventType::MouseCancel:
|
||||||
|
if (m_dragging)
|
||||||
|
m_points.pop_back();
|
||||||
m_dragging = false;
|
m_dragging = false;
|
||||||
node->mouse_release();
|
node->mouse_release();
|
||||||
m_points.clear();
|
if (m_points.size() < 4)
|
||||||
|
m_points.clear();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ void RTT::destroy()
|
|||||||
{
|
{
|
||||||
unbindTexture();
|
unbindTexture();
|
||||||
glDeleteTextures(1, &texID);
|
glDeleteTextures(1, &texID);
|
||||||
|
LOG("TEX rtt destroy %d", texID)
|
||||||
}
|
}
|
||||||
if (fboID)
|
if (fboID)
|
||||||
{
|
{
|
||||||
@@ -32,6 +33,7 @@ void RTT::destroy()
|
|||||||
glDeleteFramebuffers(1, &fboID);
|
glDeleteFramebuffers(1, &fboID);
|
||||||
LOG("RTT DESTROY %d", fboID);
|
LOG("RTT DESTROY %d", fboID);
|
||||||
}
|
}
|
||||||
|
texID = 0;
|
||||||
fboID = 0;
|
fboID = 0;
|
||||||
rboID = 0;
|
rboID = 0;
|
||||||
// w = 0;
|
// w = 0;
|
||||||
@@ -49,6 +51,7 @@ bool RTT::create(int width, int height, int tex/* = -1*/)
|
|||||||
if (tex == -1)
|
if (tex == -1)
|
||||||
{
|
{
|
||||||
glGenTextures(1, &texID);
|
glGenTextures(1, &texID);
|
||||||
|
LOG("TEX rtt create %d", texID);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ class RTT
|
|||||||
{
|
{
|
||||||
bool bound = false;
|
bool bound = false;
|
||||||
GLint oldFboID = 0;
|
GLint oldFboID = 0;
|
||||||
GLuint fboID;
|
GLuint fboID = 0;
|
||||||
GLuint rboID;
|
GLuint rboID = 0;
|
||||||
GLuint texID;
|
GLuint texID = 0;
|
||||||
int w;
|
int w;
|
||||||
int h;
|
int h;
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ bool Texture2D::create(int width, int height, GLint internal_format, GLint forma
|
|||||||
m_format = format;
|
m_format = format;
|
||||||
m_iformat = internal_format;
|
m_iformat = internal_format;
|
||||||
glGenTextures(1, &m_tex);
|
glGenTextures(1, &m_tex);
|
||||||
LOG("genTex %d", m_tex);
|
LOG("TEX create %d", m_tex);
|
||||||
bind();
|
bind();
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, internal_format, width, height, 0, format, GL_UNSIGNED_BYTE, data);
|
glTexImage2D(GL_TEXTURE_2D, 0, internal_format, width, height, 0, format, GL_UNSIGNED_BYTE, data);
|
||||||
unbind();
|
unbind();
|
||||||
|
|||||||
Reference in New Issue
Block a user