New icons for source representation in Mixing and Layer views.

This commit is contained in:
brunoherbelin
2020-05-27 22:44:15 +02:00
parent 0bc8d2439d
commit b9cf0689ec
15 changed files with 897 additions and 784 deletions

192
Mesh.cpp
View File

@@ -383,195 +383,3 @@ void Mesh::accept(Visitor& v)
Primitive::accept(v);
v.visit(*this);
}
Frame::Frame(Type style) : Node()
{
color = glm::vec4( 1.f, 1.f, 1.f, 1.f);
switch (style) {
case SHARP_LARGE:
border_ = nullptr; //new Mesh("mesh/border_large_sharp.ply");
shadow_ = new Mesh("mesh/shadow.ply", "images/shadow.png");
break;
case SHARP_THIN:
border_ = new Mesh("mesh/border_sharp.ply");
shadow_ = nullptr;
break;
case ROUND_LARGE:
border_ = new Mesh("mesh/border_large_round.ply");
shadow_ = new Mesh("mesh/shadow.ply", "images/shadow.png");
break;
default:
case ROUND_THIN:
border_ = new Mesh("mesh/border_round.ply");
shadow_ = new Mesh("mesh/shadow.ply", "images/shadow.png");
break;
case ROUND_SHADOW:
border_ = new Mesh("mesh/border_round.ply");
shadow_ = new Mesh("mesh/shadow_perspective.ply", "images/shadow_perspective.png");
break;
}
}
Frame::~Frame()
{
if(border_) delete border_;
if(shadow_) delete shadow_;
}
void Frame::draw(glm::mat4 modelview, glm::mat4 projection)
{
if ( !initialized() ) {
if(border_) border_->init();
if(shadow_) shadow_->init();
init();
}
if ( visible_ ) {
// enable antialiasing
glEnable(GL_MULTISAMPLE_ARB);
// shadow
if(shadow_)
shadow_->draw( modelview * transform_, projection);
if(border_) {
// right side
float ar = scale_.x / scale_.y;
glm::vec3 s(1.f, 1.f, 1.f);
// glm::vec3 s(scale_.y, scale_.y, 1.0);
glm::vec3 t(translation_.x - 1.0 + ar, translation_.y, translation_.z);
glm::mat4 ctm = modelview * GlmToolkit::transform(t, rotation_, s);
if(border_) {
// right side
border_->shader()->color = color;
border_->draw( ctm, projection );
// left side
t.x = -t.x;
s.x = -s.x;
ctm = modelview * GlmToolkit::transform(t, rotation_, s);
border_->draw( ctm, projection );
}
}
// enable antialiasing
glDisable(GL_MULTISAMPLE_ARB);
}
}
void Frame::accept(Visitor& v)
{
Node::accept(v);
v.visit(*this);
}
Handles::Handles(Type type) : Node(), type_(type)
{
color = glm::vec4( 1.f, 1.f, 1.f, 1.f);
if ( type_ == ROTATE ) {
handle_ = new Mesh("mesh/border_handles_rotation.ply");
}
else {
// handle_ = new LineSquare(color, int ( 2.1f * Rendering::manager().DPIScale()) );
handle_ = new Mesh("mesh/border_handles_overlay.ply");
// handle_->scale_ = glm::vec3( 0.05f, 0.05f, 1.f);
}
}
Handles::~Handles()
{
if(handle_) delete handle_;
}
void Handles::update( float dt )
{
Node::update(dt);
handle_->update(dt);
}
void Handles::draw(glm::mat4 modelview, glm::mat4 projection)
{
if ( !initialized() ) {
if(handle_) handle_->init();
init();
}
if ( visible_ ) {
// enable antialiasing
glEnable(GL_MULTISAMPLE_ARB);
// set color
handle_->shader()->color = color;
glm::mat4 ctm;
glm::vec3 rot(0.f);
glm::vec4 vec = modelview * glm::vec4(1.f, 0.f, 0.f, 0.f);
rot.z = glm::orientedAngle( glm::vec3(1.f, 0.f, 0.f), glm::normalize(glm::vec3(vec)), glm::vec3(0.f, 0.f, 1.f) );
if ( type_ == RESIZE ) {
// 4 corners
// ctm = modelview * glm::translate(glm::identity<glm::mat4>(), glm::vec3(1.f, -1.f, 0.f));
vec = modelview * glm::vec4(1.f, -1.f, 0.f, 1.f);
ctm = GlmToolkit::transform(vec, rot, glm::vec3(1.f));
handle_->draw( ctm, projection );
// ctm = modelview * glm::translate(glm::identity<glm::mat4>(), glm::vec3(1.f, +1.f, 0.f));
vec = modelview * glm::vec4(1.f, 1.f, 0.f, 1.f);
ctm = GlmToolkit::transform(vec, rot, glm::vec3(1.f));
handle_->draw( ctm, projection );
// ctm = modelview * glm::translate(glm::identity<glm::mat4>(), glm::vec3(-1.f, -1.f, 0.f));
vec = modelview * glm::vec4(-1.f, -1.f, 0.f, 1.f);
ctm = GlmToolkit::transform(vec, rot, glm::vec3(1.f));
handle_->draw( ctm, projection );
// ctm = modelview * glm::translate(glm::identity<glm::mat4>(), glm::vec3(-1.f, +1.f, 0.f));
vec = modelview * glm::vec4(-1.f, 1.f, 0.f, 1.f);
ctm = GlmToolkit::transform(vec, rot, glm::vec3(1.f));
handle_->draw( ctm, projection );
}
else if ( type_ == RESIZE_H ){
// left and right
// ctm = modelview * glm::translate(glm::identity<glm::mat4>(), glm::vec3(1.f, 0.f, 0.f));
vec = modelview * glm::vec4(1.f, 0.f, 0.f, 1.f);
ctm = GlmToolkit::transform(vec, rot, glm::vec3(1.f));
handle_->draw( ctm, projection );
// ctm = modelview * glm::translate(glm::identity<glm::mat4>(), glm::vec3(-1.f, 0.f, 0.f));
vec = modelview * glm::vec4(-1.f, 0.f, 0.f, 1.f);
ctm = GlmToolkit::transform(vec, rot, glm::vec3(1.f));
handle_->draw( ctm, projection );
}
else if ( type_ == RESIZE_V ){
// top and bottom
// ctm = modelview * glm::translate(glm::identity<glm::mat4>(), glm::vec3(0.f, +1.f, 0.f));
vec = modelview * glm::vec4(0.f, 1.f, 0.f, 1.f);
ctm = GlmToolkit::transform(vec, rot, glm::vec3(1.f));
handle_->draw( ctm, projection );
// ctm = modelview * glm::translate(glm::identity<glm::mat4>(), glm::vec3(0.f, -1.f, 0.f));
vec = modelview * glm::vec4(0.f, -1.f, 0.f, 1.f);
ctm = GlmToolkit::transform(vec, rot, glm::vec3(1.f));
handle_->draw( ctm, projection );
}
else if ( type_ == ROTATE ){
// only once in upper top right corner
glm::vec4 pos = modelview * glm::vec4(1.08f, 1.08f, 0.f, 1.f);
ctm = GlmToolkit::transform(glm::vec3(pos), glm::vec3(0.f), glm::vec3(1.f));
handle_->draw( ctm, projection );
}
glDisable(GL_MULTISAMPLE_ARB);
}
}
void Handles::accept(Visitor& v)
{
Node::accept(v);
v.visit(*this);
}