Can now translate screenshot area in screenshot tool

This commit is contained in:
Yousef Khadadeh 2025-09-16 17:10:18 +03:00
parent 47232ec7e9
commit 12ef3b0416
2 changed files with 29 additions and 3 deletions

View file

@ -394,19 +394,42 @@ void ScreenshotTool::tool_update() {
break;
}
if(drawP.controls.cursorHoveringOverCanvas)
if(drawP.controls.cursorHoveringOverCanvas && drawP.controls.leftClick) {
for(int i = 0; i < 8; i++)
if(SCollision::collide(controls.circles[i], drawP.world.main.input.mouse.pos))
controls.dragType = i;
if(drawP.controls.leftClick) {
if(controls.dragType == -1) {
Vector2f mousePosScreenshotCoords = controls.coords.get_mouse_pos(drawP.world);
if(SCollision::collide(mousePosScreenshotCoords, SCollision::AABB<float>({controls.rectX1, controls.rectY1}, {controls.rectX2, controls.rectY2})))
controls.dragType = -2;
}
if(controls.dragType == -1)
controls.selectionMode = 0;
else if(controls.dragType == -2) {
controls.translateBeginPos = drawP.world.get_mouse_world_pos();
controls.translateBeginCoords = controls.coords;
controls.selectionMode = 3;
}
else
controls.selectionMode = 1;
}
break;
}
case 3: {
controls.coords = controls.translateBeginCoords;
controls.coords.translate(drawP.world.get_mouse_world_pos() - controls.translateBeginPos);
if((drawP.world.drawData.cam.c.inverseScale << 8) < controls.coords.inverseScale || (drawP.world.drawData.cam.c.inverseScale >> 15) > controls.coords.inverseScale) {
controls.selectionMode = 0;
break;
}
if(!drawP.controls.leftClickHeld) {
controls.selectionMode = 2;
commit_rect();
}
break;
}
}
}
@ -435,7 +458,7 @@ bool ScreenshotTool::prevent_undo_or_redo() {
}
void ScreenshotTool::draw(SkCanvas* canvas, const DrawData& drawData) {
if(controls.selectionMode == 1 || controls.selectionMode == 2) {
if(controls.selectionMode >= 1) {
canvas->save();
controls.coords.transform_sk_canvas(canvas, drawData);
float x1 = std::min(controls.rectX1, controls.rectX2);