Meshroom/meshroom/ui/qml/Viewer/PhongImageViewer.qml
2024-11-14 10:49:56 +00:00

48 lines
1.7 KiB
QML

import QtQuick
import Utils 1.0
import AliceVision 1.0 as AliceVision
/**
* PhongImageViewer displays an Image (albedo + normal) with a given light direction.
* Shading is done using Blinn-Phong reflection model, material and light direction parameters available.
* Accept HdrImageToolbar controls (gamma / offset / channel).
*
* <!> Requires QtAliceVision plugin.
*/
AliceVision.PhongImageViewer {
id: root
width: sourceSize.width
height: sourceSize.height
visible: true
// paintedWidth / paintedHeight / imageStatus for compatibility with standard Image
property int paintedWidth: sourceSize.width
property int paintedHeight: sourceSize.height
property var imageStatus: {
if (root.status === AliceVision.PhongImageViewer.EStatus.LOADING) {
return Image.Loading
} else if (root.status === AliceVision.PhongImageViewer.EStatus.LOADING_ERROR ||
root.status === AliceVision.PhongImageViewer.EStatus.MISSING_FILE) {
return Image.Error
} else if ((root.sourcePath === "") || (root.sourceSize.height <= 0) || (root.sourceSize.width <= 0)) {
return Image.Null
}
return Image.Ready
}
property string channelModeString : "rgba"
channelMode: {
switch (channelModeString) {
case "rgb": return AliceVision.PhongImageViewer.EChannelMode.RGB
case "r": return AliceVision.PhongImageViewer.EChannelMode.R
case "g": return AliceVision.PhongImageViewer.EChannelMode.G
case "b": return AliceVision.PhongImageViewer.EChannelMode.B
case "a": return AliceVision.PhongImageViewer.EChannelMode.A
default: return AliceVision.PhongImageViewer.EChannelMode.RGBA
}
}
}