changeset 1328:cd04892eb2f1

Better MUSHRA scale text using HTML elements rather than canvas
author Nicholas Jillings <nickjillings@users.noreply.github.com>
date Mon, 11 Jan 2016 11:29:12 +0000
parents 93c86446b13e
children b175ea21b021
files mushra.css mushra.js
diffstat 2 files changed, 29 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/mushra.css	Mon Jan 11 10:40:02 2016 +0000
+++ b/mushra.css	Mon Jan 11 11:29:12 2016 +0000
@@ -49,8 +49,18 @@
 	z-index: 2;
 }
 
+div#scale-text-holder {
+	position:relative;
+	width: 100px;
+	float: left;
+}
+div.scale-text {
+	position: absolute;
+}
+
 canvas#scale-canvas {
 	position: relative;
+	float: left;
 }
 
 div.track-slider {
--- a/mushra.js	Mon Jan 11 10:40:02 2016 +0000
+++ b/mushra.js	Mon Jan 11 11:29:12 2016 +0000
@@ -78,6 +78,9 @@
 	var scaleHolder = document.createElement('div');
 	scaleHolder.id = "scale-holder";
 	sliderBox.appendChild(scaleHolder);
+	var scaleText = document.createElement('div');
+	scaleText.id = "scale-text-holder";
+	scaleHolder.appendChild(scaleText);
 	var scaleCanvas = document.createElement('canvas');
 	scaleCanvas.id = "scale-canvas";
 	scaleHolder.appendChild(scaleCanvas);
@@ -319,8 +322,9 @@
 		audioEngineContext.audioObjects[i].interfaceDOM.resize(event);
 	}
 	document.getElementById('scale-holder').style.marginLeft = (diff-100) + 'px';
+	document.getElementById('scale-text-holder').style.height = window.innerHeight-194 + 'px';
 	var canvas = document.getElementById('scale-canvas');
-	canvas.width = totalWidth+100;
+	canvas.width = totalWidth;
 	canvas.height = window.innerHeight-194;
 	drawScale();
 }
@@ -337,17 +341,28 @@
 	var height = canvas.height;
 	var width = canvas.width;
 	var draw_heights = [24, height-34];
+	var textHolder = document.getElementById('scale-text-holder');
+	textHolder.innerHTML = null;
+	var lastHeight = 0;
 	for (var scale of scales)
 	{
 		var posPercent = scale.position / 100.0;
 		var posPix = (1-posPercent)*(draw_heights[1]-draw_heights[0])+draw_heights[0];
-		ctx.font = "20px Georgia";
-		ctx.fillText(scale.text,0,Math.floor(posPix)+10);
 		ctx.fillStyle = "#000000";
 		ctx.setLineDash([1,2]);
-		ctx.moveTo(100,posPix);
+		ctx.moveTo(0,posPix);
 		ctx.lineTo(width,posPix);
 		ctx.stroke();
+		var text = document.createElement('div');
+		text.align = "right";
+		var textC = document.createElement('span');
+		textC.textContent = scale.text;
+		text.appendChild(textC);
+		text.className = "scale-text";
+		textHolder.appendChild(text);
+		text.style.top = (posPix-9) + 'px';
+		text.style.left = 100 - ($(text).width()+3) + 'px';
+		lastHeight = posPix;
 	}
 }