bool mouse_down()

in code/cpp/tools/scene_annotation_tool/main.cpp [2088:2147]


bool mouse_down(igl::opengl::glfw::Viewer& viewer, int button, int modifier) {

    auto mouse_button = (igl::opengl::glfw::Viewer::MouseButton)button;

    if (g_scene_loaded) {
        switch (mouse_button) {
            case igl::opengl::glfw::Viewer::MouseButton::Left:
                if (g_mouse_drawing_key_modifier) {
                    g_mouse_rotation       = false;
                    g_mouse_translation    = false;
                    g_mouse_drawing        = true;
                    g_mouse_drawing_create = false;
                } else {
                    g_mouse_rotation       = true;
                    g_mouse_translation    = false;
                    g_mouse_drawing        = false;
                    g_mouse_drawing_create = false;
                }
                break;

            case igl::opengl::glfw::Viewer::MouseButton::Right:
                if (g_mouse_drawing_key_modifier) {
                    g_mouse_rotation       = false;
                    g_mouse_translation    = false;
                    g_mouse_drawing        = false;
                    g_mouse_drawing_create = true;
                } else {
                    g_mouse_rotation       = false;
                    g_mouse_translation    = true;
                    g_mouse_drawing        = false;
                    g_mouse_drawing_create = false;
                }
                break;

            default:
                g_mouse_rotation       = false;
                g_mouse_translation    = false;
                g_mouse_drawing        = false;
                g_mouse_drawing_create = false;
        }
    }

    int width_window, height_window;
    glfwGetFramebufferSize(viewer.window, &width_window, &height_window);

    if (g_mouse_rotation || g_mouse_translation || g_mouse_drawing) {
        g_mouse_prev_x = viewer.current_mouse_x;
        g_mouse_prev_y = viewer.current_mouse_y;
        g_mouse_curr_x = viewer.current_mouse_x;
        g_mouse_curr_y = viewer.current_mouse_y;
    }

    if (g_mouse_drawing) {
        if (viewer.current_mouse_x >= 0 && viewer.current_mouse_x < width_window && viewer.current_mouse_y >= 0 && viewer.current_mouse_y < height_window) {
            g_mouse_drawing_positions.push_back({viewer.current_mouse_x, viewer.current_mouse_y});
        }
    }

    return true;
}