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;
}