summaryrefslogtreecommitdiff
path: root/utils/themeeditor/models/parsetreenode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/themeeditor/models/parsetreenode.cpp')
-rw-r--r--utils/themeeditor/models/parsetreenode.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/utils/themeeditor/models/parsetreenode.cpp b/utils/themeeditor/models/parsetreenode.cpp
index 973ceb598b..1b894b7c33 100644
--- a/utils/themeeditor/models/parsetreenode.cpp
+++ b/utils/themeeditor/models/parsetreenode.cpp
@@ -660,6 +660,17 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport)
660 new RBProgressBar(viewport, info, element->params_count, 660 new RBProgressBar(viewport, info, element->params_count,
661 element->params); 661 element->params);
662 return true; 662 return true;
663
664 case 'v':
665 /* %pv */
666 if(element->params_count > 0)
667 {
668 new RBProgressBar(viewport, info, element->params_count,
669 element->params, true);
670 return true;
671 }
672 else
673 return false;
663 } 674 }
664 675
665 return false; 676 return false;
@@ -928,6 +939,26 @@ QVariant ParseTreeNode::evalTag(const RBRenderInfo& info, bool conditional,
928 child = ((branches - 1) * child / 100) + 1; 939 child = ((branches - 1) * child / 100) + 1;
929 } 940 }
930 } 941 }
942 else if(QString(element->tag->name) == "pv")
943 {
944 /* ?pv gets scaled to the number of available children, sandwiched
945 * in between mute and 0/>0dB. I assume a floor of -50dB for the
946 * time being
947 */
948 int dB = val.toInt();
949
950 if(dB < -50)
951 child = 0;
952 else if(dB == 0)
953 child = branches - 2;
954 else if(dB > 0)
955 child = branches - 1;
956 else
957 {
958 int options = branches - 3;
959 child = (options * (dB + 50)) / 50;
960 }
961 }
931 else if(QString(element->tag->name) == "px") 962 else if(QString(element->tag->name) == "px")
932 { 963 {
933 child = val.toInt(); 964 child = val.toInt();