mirror of
https://github.com/brunoherbelin/vimix.git
synced 2025-12-13 03:09:57 +01:00
Merge commit
This commit is contained in:
@@ -388,6 +388,15 @@ void UserInterface::handleKeyboard()
|
|||||||
else
|
else
|
||||||
Mixer::manager().setCurrentNext();
|
Mixer::manager().setCurrentNext();
|
||||||
}
|
}
|
||||||
|
// arrow keys to act on current view
|
||||||
|
else if (ImGui::IsKeyPressed( GLFW_KEY_LEFT ))
|
||||||
|
Mixer::manager().view()->arrow( glm::vec2(-1.f, 0.f) );
|
||||||
|
else if (ImGui::IsKeyPressed( GLFW_KEY_RIGHT ))
|
||||||
|
Mixer::manager().view()->arrow( glm::vec2(+1.f, 0.f) );
|
||||||
|
else if (ImGui::IsKeyPressed( GLFW_KEY_UP ))
|
||||||
|
Mixer::manager().view()->arrow( glm::vec2(0.f, -1.f) );
|
||||||
|
else if (ImGui::IsKeyPressed( GLFW_KEY_DOWN ))
|
||||||
|
Mixer::manager().view()->arrow( glm::vec2(0.f, 1.f) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
80
View.cpp
80
View.cpp
@@ -523,6 +523,25 @@ View::Cursor MixingView::grab (Source *s, glm::vec2 from, glm::vec2 to, std::pai
|
|||||||
return Cursor(Cursor_ResizeAll, info.str() );
|
return Cursor(Cursor_ResizeAll, info.str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MixingView::arrow (glm::vec2 movement)
|
||||||
|
{
|
||||||
|
Source *s = Mixer::manager().currentSource();
|
||||||
|
if (s) {
|
||||||
|
|
||||||
|
glm::vec3 gl_Position_from = Rendering::manager().unProject(glm::vec2(0.f), scene.root()->transform_);
|
||||||
|
glm::vec3 gl_Position_to = Rendering::manager().unProject(movement, scene.root()->transform_);
|
||||||
|
glm::vec3 gl_delta = gl_Position_to - gl_Position_from;
|
||||||
|
|
||||||
|
if (UserInterface::manager().shiftModifier())
|
||||||
|
gl_delta *= 10.f;
|
||||||
|
|
||||||
|
s->group(mode_)->translation_ += gl_delta * ARROWS_MOVEMENT_FACTOR;
|
||||||
|
|
||||||
|
// request update
|
||||||
|
s->touch();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MixingView::setAlpha(Source *s)
|
void MixingView::setAlpha(Source *s)
|
||||||
{
|
{
|
||||||
if (!s)
|
if (!s)
|
||||||
@@ -1357,6 +1376,25 @@ void GeometryView::terminate()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GeometryView::arrow (glm::vec2 movement)
|
||||||
|
{
|
||||||
|
Source *s = Mixer::manager().currentSource();
|
||||||
|
if (s) {
|
||||||
|
|
||||||
|
glm::vec3 gl_Position_from = Rendering::manager().unProject(glm::vec2(0.f), scene.root()->transform_);
|
||||||
|
glm::vec3 gl_Position_to = Rendering::manager().unProject(movement, scene.root()->transform_);
|
||||||
|
glm::vec3 gl_delta = gl_Position_to - gl_Position_from;
|
||||||
|
|
||||||
|
if (UserInterface::manager().shiftModifier())
|
||||||
|
gl_delta *= 10.f;
|
||||||
|
|
||||||
|
s->group(mode_)->translation_ += gl_delta * ARROWS_MOVEMENT_FACTOR;
|
||||||
|
|
||||||
|
// request update
|
||||||
|
s->touch();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
LayerView::LayerView() : View(LAYER), aspect_ratio(1.f)
|
LayerView::LayerView() : View(LAYER), aspect_ratio(1.f)
|
||||||
{
|
{
|
||||||
// read default settings
|
// read default settings
|
||||||
@@ -2086,7 +2124,8 @@ View::Cursor AppearanceView::over (glm::vec2 pos)
|
|||||||
// show paint brush cursor
|
// show paint brush cursor
|
||||||
if (edit_source_->maskShader()->mode == MaskShader::PAINT) {
|
if (edit_source_->maskShader()->mode == MaskShader::PAINT) {
|
||||||
if (mask_cursor_paint_ > 0) {
|
if (mask_cursor_paint_ > 0) {
|
||||||
if ( ABS(P.x) < S.x && ABS(P.y) < S.y ) {
|
S += glm::vec2(edit_source_->maskShader()->brush.x);
|
||||||
|
if ( ABS(P.x) < S.x && ABS(P.y) < S.y ) {
|
||||||
mask_cursor_circle_->visible_ = edit_source_->maskShader()->brush.z < 1.0;
|
mask_cursor_circle_->visible_ = edit_source_->maskShader()->brush.z < 1.0;
|
||||||
mask_cursor_square_->visible_ = edit_source_->maskShader()->brush.z > 0.0;
|
mask_cursor_square_->visible_ = edit_source_->maskShader()->brush.z > 0.0;
|
||||||
edit_source_->maskShader()->option = mask_cursor_paint_;
|
edit_source_->maskShader()->option = mask_cursor_paint_;
|
||||||
@@ -2396,7 +2435,7 @@ void AppearanceView::draw()
|
|||||||
ImGuiToolkit::PushFont(ImGuiToolkit::FONT_DEFAULT);
|
ImGuiToolkit::PushFont(ImGuiToolkit::FONT_DEFAULT);
|
||||||
ImGuiToolkit::Icon(16,1);
|
ImGuiToolkit::Icon(16,1);
|
||||||
if (ImGui::VSliderInt("##BrushSize", ImVec2(30,260), &pixel_size, pixel_size_min, pixel_size_max, "") ){
|
if (ImGui::VSliderInt("##BrushSize", ImVec2(30,260), &pixel_size, pixel_size_min, pixel_size_max, "") ){
|
||||||
edit_source_->maskShader()->brush.x = CLAMP(float(pixel_size) / edit_source_->frame()->height(), 0.05, 2.0);
|
edit_source_->maskShader()->brush.x = CLAMP(float(pixel_size) / edit_source_->frame()->height(), BRUSH_MIN_SIZE, BRUSH_MAX_SIZE);
|
||||||
}
|
}
|
||||||
if (ImGui::IsItemHovered()) {
|
if (ImGui::IsItemHovered()) {
|
||||||
ImGui::BeginTooltip();
|
ImGui::BeginTooltip();
|
||||||
@@ -2419,7 +2458,7 @@ void AppearanceView::draw()
|
|||||||
{
|
{
|
||||||
ImGuiToolkit::PushFont(ImGuiToolkit::FONT_DEFAULT);
|
ImGuiToolkit::PushFont(ImGuiToolkit::FONT_DEFAULT);
|
||||||
ImGui::Text(ICON_FA_FEATHER_ALT);
|
ImGui::Text(ICON_FA_FEATHER_ALT);
|
||||||
ImGui::VSliderFloat("##BrushPressure", ImVec2(30,260), &edit_source_->maskShader()->brush.y, 1.0, 0.01, "", 0.3f);
|
ImGui::VSliderFloat("##BrushPressure", ImVec2(30,260), &edit_source_->maskShader()->brush.y, BRUSH_MAX_PRESS, BRUSH_MIN_PRESS, "", 0.3f);
|
||||||
if (ImGui::IsItemHovered()) {
|
if (ImGui::IsItemHovered()) {
|
||||||
ImGui::BeginTooltip();
|
ImGui::BeginTooltip();
|
||||||
ImGui::Text("Pressure %.1f%%", edit_source_->maskShader()->brush.y * 100.0);
|
ImGui::Text("Pressure %.1f%%", edit_source_->maskShader()->brush.y * 100.0);
|
||||||
@@ -3029,3 +3068,38 @@ void AppearanceView::terminate()
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AppearanceView::arrow (glm::vec2 movement)
|
||||||
|
{
|
||||||
|
Source *s = Mixer::manager().currentSource();
|
||||||
|
if (s) {
|
||||||
|
|
||||||
|
glm::vec3 gl_Position_from = Rendering::manager().unProject(glm::vec2(0.f), scene.root()->transform_);
|
||||||
|
glm::vec3 gl_Position_to = Rendering::manager().unProject(movement, scene.root()->transform_);
|
||||||
|
glm::vec3 gl_delta = gl_Position_to - gl_Position_from;
|
||||||
|
|
||||||
|
if (UserInterface::manager().shiftModifier())
|
||||||
|
gl_delta *= 10.f;
|
||||||
|
|
||||||
|
s->group(mode_)->translation_ += gl_delta * ARROWS_MOVEMENT_FACTOR;
|
||||||
|
|
||||||
|
// request update
|
||||||
|
s->touch();
|
||||||
|
}
|
||||||
|
else if (edit_source_) {
|
||||||
|
if (edit_source_->maskShader()->mode == MaskShader::PAINT) {
|
||||||
|
if (mask_cursor_paint_ > 0) {
|
||||||
|
glm::vec2 b = 0.05f * movement;
|
||||||
|
edit_source_->maskShader()->brush.x = CLAMP(edit_source_->maskShader()->brush.x+b.x, BRUSH_MIN_SIZE, BRUSH_MAX_SIZE);
|
||||||
|
edit_source_->maskShader()->brush.y = CLAMP(edit_source_->maskShader()->brush.y+b.y, BRUSH_MIN_PRESS, BRUSH_MAX_PRESS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (edit_source_->maskShader()->mode == MaskShader::SHAPE) {
|
||||||
|
if (mask_cursor_shape_ > 0) {
|
||||||
|
float b = -0.05 * movement.y;
|
||||||
|
edit_source_->maskShader()->blur = CLAMP(edit_source_->maskShader()->blur+b, SHAPE_MIN_BLUR, SHAPE_MAX_BLUR);
|
||||||
|
edit_source_->touch();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
6
View.h
6
View.h
@@ -76,6 +76,9 @@ public:
|
|||||||
return Cursor();
|
return Cursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// left-right [-1 1] and up-down [1 -1] action from arrow keys
|
||||||
|
virtual void arrow (glm::vec2) {}
|
||||||
|
|
||||||
// accessible scene
|
// accessible scene
|
||||||
Scene scene;
|
Scene scene;
|
||||||
|
|
||||||
@@ -107,6 +110,7 @@ public:
|
|||||||
|
|
||||||
std::pair<Node *, glm::vec2> pick(glm::vec2) override;
|
std::pair<Node *, glm::vec2> pick(glm::vec2) override;
|
||||||
Cursor grab (Source *s, glm::vec2 from, glm::vec2 to, std::pair<Node *, glm::vec2>) override;
|
Cursor grab (Source *s, glm::vec2 from, glm::vec2 to, std::pair<Node *, glm::vec2>) override;
|
||||||
|
void arrow (glm::vec2) override;
|
||||||
|
|
||||||
void setAlpha (Source *s);
|
void setAlpha (Source *s);
|
||||||
inline float limboScale() { return limbo_scale_; }
|
inline float limboScale() { return limbo_scale_; }
|
||||||
@@ -157,6 +161,7 @@ public:
|
|||||||
std::pair<Node *, glm::vec2> pick(glm::vec2 P) override;
|
std::pair<Node *, glm::vec2> pick(glm::vec2 P) override;
|
||||||
Cursor grab (Source *s, glm::vec2 from, glm::vec2 to, std::pair<Node *, glm::vec2> pick) override;
|
Cursor grab (Source *s, glm::vec2 from, glm::vec2 to, std::pair<Node *, glm::vec2> pick) override;
|
||||||
void terminate() override;
|
void terminate() override;
|
||||||
|
void arrow (glm::vec2) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Node *overlay_position_;
|
Node *overlay_position_;
|
||||||
@@ -232,6 +237,7 @@ public:
|
|||||||
std::pair<Node *, glm::vec2> pick(glm::vec2 P) override;
|
std::pair<Node *, glm::vec2> pick(glm::vec2 P) override;
|
||||||
Cursor grab (Source *s, glm::vec2 from, glm::vec2 to, std::pair<Node *, glm::vec2> pick) override;
|
Cursor grab (Source *s, glm::vec2 from, glm::vec2 to, std::pair<Node *, glm::vec2> pick) override;
|
||||||
Cursor over (glm::vec2) override;
|
Cursor over (glm::vec2) override;
|
||||||
|
void arrow (glm::vec2) override;
|
||||||
|
|
||||||
void initiate() override;
|
void initiate() override;
|
||||||
void terminate() override;
|
void terminate() override;
|
||||||
|
|||||||
@@ -42,9 +42,16 @@
|
|||||||
#define APPEARANCE_DEFAULT_SCALE 2.f
|
#define APPEARANCE_DEFAULT_SCALE 2.f
|
||||||
#define APPEARANCE_MIN_SCALE 0.4f
|
#define APPEARANCE_MIN_SCALE 0.4f
|
||||||
#define APPEARANCE_MAX_SCALE 7.0f
|
#define APPEARANCE_MAX_SCALE 7.0f
|
||||||
|
#define BRUSH_MIN_SIZE 0.05f
|
||||||
|
#define BRUSH_MAX_SIZE 2.f
|
||||||
|
#define BRUSH_MIN_PRESS 0.005f
|
||||||
|
#define BRUSH_MAX_PRESS 1.f
|
||||||
|
#define SHAPE_MIN_BLUR 0.f
|
||||||
|
#define SHAPE_MAX_BLUR 1.f
|
||||||
#define TRANSITION_DEFAULT_SCALE 5.0f
|
#define TRANSITION_DEFAULT_SCALE 5.0f
|
||||||
#define TRANSITION_MIN_DURATION 0.2f
|
#define TRANSITION_MIN_DURATION 0.2f
|
||||||
#define TRANSITION_MAX_DURATION 10.f
|
#define TRANSITION_MAX_DURATION 10.f
|
||||||
|
#define ARROWS_MOVEMENT_FACTOR 5.f
|
||||||
|
|
||||||
#define IMGUI_TITLE_MAINWINDOW ICON_FA_CIRCLE_NOTCH " vimix"
|
#define IMGUI_TITLE_MAINWINDOW ICON_FA_CIRCLE_NOTCH " vimix"
|
||||||
#define IMGUI_TITLE_MEDIAPLAYER ICON_FA_FILM " Player"
|
#define IMGUI_TITLE_MEDIAPLAYER ICON_FA_FILM " Player"
|
||||||
|
|||||||
Reference in New Issue
Block a user