Add --region option (#2013)
* Fix empty help message bug Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Add --region option Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Fix: initial selection even without --region * Enable 'full --region' Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Enable 'screen --region' Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Allow negative width/height Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Fix screen intersection bug Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com> * Change output format of --print-geometry Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
This commit is contained in:
@@ -328,13 +328,21 @@ void Controller::startScreenGrab(const uint id, const int screenNumber)
|
||||
}
|
||||
QPixmap p(ScreenGrabber().grabScreen(n, ok));
|
||||
if (ok) {
|
||||
CaptureRequest& request = *requests().find(id);
|
||||
QRect geometry = ScreenGrabber().screenGeometry(n);
|
||||
if (request.tasks() & CaptureRequest::PIN) {
|
||||
// change geometry for pin task
|
||||
request.addPinTask(geometry);
|
||||
CaptureRequest& req = *requests().find(id);
|
||||
QRect region = req.initialSelection();
|
||||
if (region.isNull()) {
|
||||
region = ScreenGrabber().screenGeometry(n);
|
||||
} else {
|
||||
QRect screenGeom = ScreenGrabber().screenGeometry(n);
|
||||
screenGeom.moveTopLeft({ 0, 0 });
|
||||
region = region.intersected(screenGeom);
|
||||
p = p.copy(region);
|
||||
}
|
||||
emit captureTaken(id, p, geometry);
|
||||
if (req.tasks() & CaptureRequest::PIN) {
|
||||
// change geometry for pin task
|
||||
req.addPinTask(region);
|
||||
}
|
||||
emit captureTaken(id, p, region);
|
||||
} else {
|
||||
emit captureFailed(id);
|
||||
}
|
||||
@@ -556,6 +564,11 @@ void Controller::startFullscreenCapture(const uint id)
|
||||
{
|
||||
bool ok = true;
|
||||
QPixmap p(ScreenGrabber().grabEntireDesktop(ok));
|
||||
CaptureRequest req(*requests().find(id));
|
||||
QRect region = req.initialSelection();
|
||||
if (!region.isNull()) {
|
||||
p = p.copy(region);
|
||||
}
|
||||
if (ok) {
|
||||
// selection parameter is unused here
|
||||
emit captureTaken(id, p, {});
|
||||
|
||||
Reference in New Issue
Block a user