diff --git a/MixingView.cpp b/MixingView.cpp index 47124ae..c3df307 100644 --- a/MixingView.cpp +++ b/MixingView.cpp @@ -59,44 +59,47 @@ MixingView::MixingView() : View(MIXING), limbo_scale_(MIXING_LIMBO_SCALE) scene.bg()->attach(circle_); // Mixing scene foreground + + // button frame tmp = new Mesh("mesh/disk.ply"); tmp->scale_ = glm::vec3(0.033f, 0.033f, 1.f); tmp->translation_ = glm::vec3(0.f, 1.f, 0.f); tmp->shader()->color = glm::vec4( COLOR_CIRCLE, 0.9f ); scene.fg()->attach(tmp); - + // interactive button button_white_ = new Disk(); button_white_->scale_ = glm::vec3(0.026f, 0.026f, 1.f); button_white_->translation_ = glm::vec3(0.f, 1.f, 0.f); button_white_->color = glm::vec4( 0.85f, 0.85f, 0.85f, 1.0f ); scene.fg()->attach(button_white_); - + // button frame tmp = new Mesh("mesh/disk.ply"); tmp->scale_ = glm::vec3(0.033f, 0.033f, 1.f); tmp->translation_ = glm::vec3(0.f, -1.f, 0.f); tmp->shader()->color = glm::vec4( COLOR_CIRCLE, 0.9f ); scene.fg()->attach(tmp); - + // interactive button button_black_ = new Disk(); button_black_->scale_ = glm::vec3(0.026f, 0.026f, 1.f); button_black_->translation_ = glm::vec3(0.f, -1.f, 0.f); button_black_->color = glm::vec4( 0.1f, 0.1f, 0.1f, 1.0f ); scene.fg()->attach(button_black_); - + // moving slider slider_root_ = new Group; scene.fg()->attach(slider_root_); - + // interactive slider + slider_ = new Disk(); + slider_->scale_ = glm::vec3(0.08f, 0.08f, 1.f); + slider_->translation_ = glm::vec3(0.0f, 1.0f, 0.f); + slider_->color = glm::vec4( COLOR_CIRCLE, 0.9f ); + slider_root_->attach(slider_); + // dark mask in front tmp = new Mesh("mesh/disk.ply"); - tmp->scale_ = glm::vec3(0.08f, 0.08f, 1.f); + tmp->scale_ = glm::vec3(0.075f, 0.075f, 1.f); tmp->translation_ = glm::vec3(0.0f, 1.0f, 0.f); - tmp->shader()->color = glm::vec4( 0.8f, 0.8f, 0.8f, 0.9f ); + tmp->shader()->color = glm::vec4( COLOR_SLIDER_CIRCLE, 1.0f ); slider_root_->attach(tmp); - slider_ = new Disk(); - slider_->scale_ = glm::vec3(0.075f, 0.075f, 1.f); - slider_->translation_ = glm::vec3(0.0f, 1.0f, 0.f); - slider_->color = glm::vec4( COLOR_SLIDER_CIRCLE, 1.0f ); - slider_root_->attach(slider_); stashCircle_ = new Disk(); stashCircle_->scale_ = glm::vec3(0.5f, 0.5f, 1.f); @@ -406,6 +409,7 @@ View::Cursor MixingView::grab (Source *s, glm::vec2 from, glm::vec2 to, std::pai slider_root_->rotation_.z = angle; // cursor feedback + slider_->color = glm::vec4( COLOR_CIRCLE_OVER, 0.9f ); std::ostringstream info; info << "Global opacity " << 100 - int(Mixer::manager().session()->fading() * 100.0) << " %"; return Cursor(Cursor_Hand, info.str() ); @@ -479,6 +483,23 @@ void MixingView::terminate() } +View::Cursor MixingView::over (glm::vec2 pos) +{ + View::Cursor ret = Cursor(); + std::pair pick = View::pick(pos); + + // deal with internal interactive objects + if ( pick.first == slider_ ) { + slider_->color = glm::vec4( COLOR_CIRCLE_OVER, 0.9f ); + ret.type = Cursor_Hand; + } + else + slider_->color = glm::vec4( COLOR_CIRCLE, 0.9f ); + + + return ret; +} + void MixingView::arrow (glm::vec2 movement) { static int accumulator = 0; diff --git a/MixingView.h b/MixingView.h index 24cdad8..97a5a95 100644 --- a/MixingView.h +++ b/MixingView.h @@ -19,6 +19,7 @@ public: std::pair pick(glm::vec2) override; Cursor grab (Source *s, glm::vec2 from, glm::vec2 to, std::pair) override; void terminate() override; + Cursor over (glm::vec2) override; void arrow (glm::vec2) override; void setAlpha (Source *s); diff --git a/defines.h b/defines.h index 1d11bd7..f72c9cc 100644 --- a/defines.h +++ b/defines.h @@ -92,6 +92,7 @@ #define COLOR_FRAME 0.75f, 0.2f, 0.75f #define COLOR_FRAME_LIGHT 0.9f, 0.6f, 0.9f #define COLOR_CIRCLE 0.75f, 0.2f, 0.75f +#define COLOR_CIRCLE_OVER 0.8f, 0.8f, 0.8f #define COLOR_MIXING_GROUP 0.f, 0.95f, 0.2f #define COLOR_LIMBO_CIRCLE 0.16f, 0.16f, 0.16f #define COLOR_SLIDER_CIRCLE 0.11f, 0.11f, 0.11f