6import org.mauikit.controls as Maui
7import org.mauikit.imagetools.editor as ITE
9import "private" as Private
23 readonly
property bool ready : String(control.url).length
25 readonly
property alias
editor : imageDoc
27 headBar.visible: control.ready
28 headBar.background: null
29 headBar.leftContent:
Button
31 icon.name:
"edit-undo"
33 enabled: imageDoc.edited
34 onClicked: imageDoc.undo()
37 headBar.rightContent: [
41 icon.name:
"document-save-as"
42 enabled: imageDoc.edited
48 Maui.Controls.status :
Maui.Controls.Negative
56 readonly
property real ratioX: editImage.paintedWidth / editImage.nativeWidth;
57 readonly
property real ratioY: editImage.paintedHeight / editImage.nativeHeight;
59 fillMode: Image.PreserveAspectFit
110 visible: _transBar.rotationButton.checked
112 anchors.fill : parent
113 property int wgrid: control.width / 20
115 var ctx = getContext(
"2d")
117 ctx.strokeStyle =
Maui.Theme.textColor
119 var nrows = height/wgrid;
120 for(var i=0; i < nrows+1; i++){
121 ctx.moveTo(0, wgrid*i);
122 ctx.lineTo(width, wgrid*i);
125 var ncols = width/wgrid
126 for(var j=0; j < ncols+1; j++){
127 ctx.moveTo(wgrid*j, 0);
128 ctx.lineTo(wgrid*j, height);
141 icon.name:
"color-mode-black-white"
142 text:
i18nd(
"mauikitimagetools",
"Color")
143 checked: _actionsBarLoader.currentIndex === 0
144 onTriggered: _actionsBarLoader.currentIndex = 0
150 icon.name:
"dialog-transform"
151 text:
i18nd(
"mauikitimagetools",
"Transform")
152 checked: _actionsBarLoader.currentIndex === 1
153 onTriggered: _actionsBarLoader.currentIndex = 1
159 icon.name:
"layer-new"
160 text:
i18nd(
"mauikitimagetools",
"Layer")
161 checked: _actionsBarLoader.currentIndex === 2
162 onTriggered: _actionsBarLoader.currentIndex = 2
167 id: _actionsBarLoader
168 property int currentIndex : -1
170 visible:
status == Loader.Ready
172 anchors.bottom: parent.bottom
173 anchors.horizontalCenter: parent.horizontalCenter
174 anchors.margins:
Maui.Style.space.big
176 sourceComponent: Pane
179 Maui.Theme.colorSet:
Maui.Theme.Complementary
180 Maui.Theme.inherit:
false
184 background: Rectangle
186 radius:
Maui.Style.radiusV
187 color:
Maui.Theme.backgroundColor
189 layer.enabled: GraphicsInfo.api !== GraphicsInfo.Software
190 layer.effect: MultiEffect
192 autoPaddingEnabled:
true
194 shadowColor:
"#000000"
198 ScaleAnimator on scale
202 duration:
Maui.Style.units.longDuration
204 easing.type: Easing.OutInQuad
207 OpacityAnimator on opacity
211 duration:
Maui.Style.units.longDuration
215 contentItem: RowLayout
217 spacing:
Maui.Style.defaultSpacing
221 icon.name:
"edit-undo"
222 Layout.alignment:
Qt.AlignVCenter
223 onClicked: imageDoc.undo()
225 enabled:imageDoc.edited
233 model: [_colorsAction, _transfromAction, _layerAction]
238 display: ToolButton.IconOnly
247 icon.name:
"dialog-apply"
248 onClicked: imageDoc.applyChanges()
249 enabled: !imageDoc.changesApplied
260 xAxis.maximum: control.width - _pane.width
263 yAxis.enabled :
false
269 console.log(centroid.position, centroid.scenePosition, centroid.velocity.x)
271 let pos = centroid.velocity.x
272 _pane.x =
Qt.binding(()=> {
return pos < 0 ?
Maui.Style.space.big : control.width - _pane.width -
Maui.Style.space.big })
273 _pane.y =
Qt.binding(()=> { return control.height - _pane.height - Maui.Style.space.big })
285 Private.TransformationBar
288 visible: _actionsBarLoader.currentIndex === 1 && control.ready
295 visible: _actionsBarLoader.currentIndex === 0 && control.ready
303 imageDoc.crop(selectionTool.selectionX / editImage.ratioX,
304 selectionTool.selectionY / editImage.ratioY,
305 selectionTool.selectionWidth / editImage.ratioX,
306 selectionTool.selectionHeight / editImage.ratioY);
Q_SCRIPTABLE CaptureState status()
QString i18nd(const char *domain, const char *text, const TYPE &arg...)
QString i18n(const char *text, const TYPE &arg...)
QString path(const QString &relativePath)