import QtQuick 2.12 import QtGraphicalEffects 1.12 import NERvGear.Preferences 1.0 as P import "../../qml/api" AdvpStyleTemplate { style: Rectangle { width: widget.width; height: widget.height; LinearGradient { id: gradient_mask anchors.fill: parent gradient: Gradient { GradientStop { id: p_start; position: 0.0 } GradientStop { id: p_middle; position: 0.5 } GradientStop { id: p_end; position: 1.0 } } } layer.enabled: true layer.effect: OpacityMask{ maskSource: AdvpCanvasTemplate { readonly property var audioData: new Array(128) readonly property bool centerLineFlag: configs["Center Line"] readonly property int linePosition: configs["Line Position"] readonly property int uDataLen: Math.pow(2, configs["Data Length"]); readonly property int dataLength: 64/uDataLen readonly property int channel: configs["Channel"] readonly property bool reverse: configs["Reverse"] readonly property bool centerRotateFlag: configs["Rotate Settings"]["Center Enable"] readonly property real centerRotateAngle: configs["Rotate Settings"]["Center Angle"] readonly property bool lineRotateFlag: configs["Rotate Settings"]["Line Enable"] readonly property real lineRotateAngle: configs["Rotate Settings"]["Line Angle"] readonly property bool autoNormalizing: configs["Data Settings"]["Auto Normalizing"] readonly property real amplitude: configs["Data Settings"]["Amplitude"] / 400.0 readonly property int unitStyle: configs["Data Settings"]["Unit Style"] property int total: channel * dataLength property real logAmplitude: Math.log10(amplitude) property real degUnit: Math.PI / 180 property real halfWidth: width/2 property real halfHeight: height/2 onConfigsUpdated: { context.fillStyle = "black"; gradient_mask.start = Qt.point(0, height*(configs["Gradient Direction"]===2)) gradient_mask.end = Qt.point(width*(configs["Gradient Direction"]!==1), height*(configs["Gradient Direction"]%2)) p_start.color = configs["Start Position Color"]; p_middle.color = configs["Middle Position Color"]; p_end.color = configs["End Position Color"]; } onAudioDataUpdeted: { if(autoNormalizing) { if (unitStyle) { //对数化显示 for(let i=0; i