void DrawPathTool::updateDrawHover() { if (!shift_pressed) angle_helper->getConstrainedCursorPosMap(cur_pos_map, constrained_pos_map); if (!previous_point_is_curve_point && !left_mouse_down && editingInProgress()) { // Show a line to the cursor position as preview hidePreviewPoints(); if (!path_has_preview_point) { preview_path->addCoordinate(MapCoord(constrained_pos_map)); path_has_preview_point = true; } preview_path->setCoordinate(preview_path->getCoordinateCount() - 1, MapCoord(constrained_pos_map)); updatePreviewPath(); updateDirtyRect(); // TODO: Possible optimization: mark only the last segment as dirty } else if (previous_point_is_curve_point && !left_mouse_down && editingInProgress()) { setPreviewPointsPosition(constrained_pos_map, 1); updateDirtyRect(); } }
void DrawRectangleTool::updateHover(bool mouse_down) { if (shift_pressed) constrained_pos_map = MapCoordF(snap_helper->snapToObject(cur_pos_map, cur_map_widget)); else constrained_pos_map = cur_pos_map; if (!editingInProgress()) { setPreviewPointsPosition(constrained_pos_map); updateDirtyRect(); if (mouse_down && ctrl_pressed) pickDirection(constrained_pos_map, cur_map_widget); else if (!mouse_down) angle_helper->setCenter(constrained_pos_map); } else { hidePreviewPoints(); if (mouse_down && !dragging && (cur_pos - click_pos).manhattanLength() >= Settings::getInstance().getStartDragDistancePx()) { // Start dragging dragging = true; } if (!mouse_down || dragging) updateRectangle(); } }
bool DrawFreehandTool::mouseMoveEvent(QMouseEvent* event, MapCoordF map_coord, MapWidget* widget) { Q_UNUSED(widget); bool mouse_down = containsDrawingButtons(event->buttons()); if (!mouse_down) { if (!editingInProgress()) { setPreviewPointsPosition(map_coord); setDirtyRect(); } } else { if (!editingInProgress()) return false; dragging = true; cur_pos = event->pos(); cur_pos_map = map_coord; updatePath(); } return true; }
bool DrawCircleTool::mouseMoveEvent(QMouseEvent* event, MapCoordF map_coord, MapWidget* widget) { Q_UNUSED(widget); bool mouse_down = containsDrawingButtons(event->buttons()); if (!mouse_down) { if (!editingInProgress()) { setPreviewPointsPosition(map_coord); setDirtyRect(); } else { cur_pos = event->pos(); cur_pos_map = map_coord; if (!second_point_set) opposite_pos_map = map_coord; updateCircle(); } } else { if (!editingInProgress()) return false; if ((event->pos() - click_pos).manhattanLength() >= Settings::getInstance().getStartDragDistancePx()) { if (!dragging) { dragging = true; updateStatusText(); } } if (dragging) { cur_pos = event->pos(); cur_pos_map = map_coord; if (!second_point_set) opposite_pos_map = cur_pos_map; updateCircle(); } } return true; }
void DrawPathTool::updateHover() { if (shift_pressed) constrained_pos_map = MapCoordF(snap_helper->snapToObject(cur_pos_map, cur_map_widget)); else constrained_pos_map = cur_pos_map; if (!editingInProgress()) { // Show preview objects at this position setPreviewPointsPosition(constrained_pos_map); if (picked_angle) angle_helper->setCenter(constrained_pos_map); updateDirtyRect(); } else // if (draw_in_progress) { updateDrawHover(); } }