Browse Source

Allow dropping of font files to add as example

gero3 10 years ago
parent
commit
6abae775cb
1 changed files with 41 additions and 29 deletions
  1. 41 29
      examples/webgl_geometry_text.html

+ 41 - 29
examples/webgl_geometry_text.html

@@ -68,7 +68,6 @@
 		<script src="fonts/droid/droid_sans_bold.typeface.js"></script>
 		<script src="fonts/droid/droid_serif_regular.typeface.js"></script>
 		<script src="fonts/droid/droid_serif_bold.typeface.js"></script>
-
 		<!-- todo async loader for fonts -->
 
 		<script>
@@ -122,8 +121,8 @@
 
 			};
 
-			var reverseFontMap = {};
-			var reverseWeightMap = {};
+			var reverseFontMap = [];
+			var reverseWeightMap = [];
 
 			for ( var i in fontMap ) reverseFontMap[ fontMap[i] ] = i;
 			for ( var i in weightMap ) reverseWeightMap[ weightMap[i] ] = i;
@@ -139,16 +138,11 @@
 
 			var postprocessing = { enabled : false };
 			var glow = 0.9;
+            var fontIndex = 0;
 
 			init();
 			animate();
 
-			function capitalize( txt ) {
-
-				return txt.substring( 0, 1 ).toUpperCase() + txt.substring( 1 );
-
-			}
-
 			function decimalToHex( d ) {
 
 				var hex = Number( d ).toString( 16 );
@@ -265,6 +259,10 @@
 				document.addEventListener( 'touchmove', onDocumentTouchMove, false );
 				document.addEventListener( 'keypress', onDocumentKeyPress, false );
 				document.addEventListener( 'keydown', onDocumentKeyDown, false );
+				renderer.domElement.addEventListener( 'drop', onDrop, false );
+                renderer.domElement.addEventListener("dragover", function (evt) {
+                    evt.preventDefault();
+                }, false);
 
 				document.getElementById( "color" ).addEventListener( 'click', function() {
 
@@ -277,32 +275,16 @@
 
 				document.getElementById( "font" ).addEventListener( 'click', function() {
 
-					if ( font == "helvetiker" ) {
-
-						font = "optimer";
-
-					} else if ( font == "optimer" ) {
-
-						font = "gentilis";
-
-					} else if ( font == "gentilis" ) {
-
-						font = "droid sans";
-
-					} else if ( font == "droid sans" ) {
-
-						font = "droid serif";
-
-					} else {
+                    fontIndex++
+                    if ( fontIndex >= reverseFontMap.length ) { fontIndex = 0;}
 
-						font = "helvetiker";
-
-					}
+                    font = reverseFontMap[fontIndex];
 
 					refreshText();
 
 				}, false );
 
+
 				document.getElementById( "weight" ).addEventListener( 'click', function() {
 
 					if ( weight == "bold" ) {
@@ -398,6 +380,36 @@
 
 			}
 
+            function onDrop( e ) {
+                e.preventDefault();
+
+                var file = e.dataTransfer.files[0],
+                    reader = new FileReader();
+
+                reader.onload = function (event) {
+                    console.log(event.target);
+                    eval(event.target.result);
+
+                    var index = 0;
+                    for (f in THREE.FontUtils.faces) {
+                        if (!fontMap[f]){
+
+                            fontMap[f] = reverseFontMap.length;
+                            reverseFontMap[reverseFontMap.length] = f;
+                            font = f;
+
+                        }
+                    };
+
+					refreshText();
+                };
+
+                console.log(file);
+                reader.readAsText(file);
+
+                return false;
+            };
+
 			function onDocumentKeyDown( event ) {
 
 				if ( firstLetter ) {