Bug 439650

Summary: Add Canvas transformation method
Product: [Applications] krita Reporter: Aki <aki.rissanen>
Component: ScriptingAssignee: Krita Bugs <krita-bugs-null>
Status: REPORTED ---    
Severity: wishlist CC: halla
Priority: NOR    
Version First Reported In: 4.4.5   
Target Milestone: ---   
Platform: Other   
OS: All   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Aki 2021-07-08 15:46:25 UTC
SUMMARY

Canvas already has methods for getting / setting of rotation & scale(zoom) of transformation, only thing missing is translate of transformation.


# new methods

Canvas.transform() -> QTransform
Canvas.setTransform(transform: QTransform)

Canvas.translation() -> float, float
Canvas.setTranslation(x: float, y: float)


# existing rotation & scale methods

Canvas.rotation() -> float
Canvas.setRotation(angle: float)

Canvas.zoomLevel() -> float
Canvas.setZoomLevel(value: float)


# additionally signal for canvas transform change would be really useful.

Canvas.transformChanged = pyqtSignal(QTransform)
# or
Notifier.canvasTransformChanged = pyqtSignal(Canvas, QTransform)


references:

https://doc.qt.io/qt-5/qtransform.html

https://api.kde.org/appscomplete-api/krita-apidocs/libs/libkis/html/classCanvas.html

https://krita-artists.org/t/pyqt-document-inside-the-canvas-distances-and-pan/25960/11


/AkiR
Comment 1 Halla Rempt 2021-07-08 16:12:34 UTC
Do you mean for panning?
Comment 2 Aki 2021-07-08 17:30:07 UTC
(In reply to Halla Rempt from comment #1)
> Do you mean for panning?

Yes, panning is another word for it.

QTransform.translate() ≈ Canvas.pan()
QTransform.rotate() ≈ Canvas.rotation()
QTransform.scale() ≈ Canvas.zoomLevel()

/AkiR