Selaa lähdekoodia

Merge pull request #6469 from gero3/new_geometry_text_allow_drop

Allow dropping of font files to add as  example
Ricardo Cabello 10 vuotta sitten
vanhempi
commit
95b8d491a1
1 muutettua tiedostoa jossa 47 lisäystä ja 29 poistoa
  1. 47 29
      examples/webgl_geometry_text.html

+ 47 - 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,20 @@
 
 				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 {
-
-						font = "helvetiker";
-
+					fontIndex ++;
+					if ( fontIndex >= reverseFontMap.length ) { 
+						
+						fontIndex = 0;
+						
 					}
+					
+					font = reverseFontMap[fontIndex];
 
 					refreshText();
 
 				}, false );
 
+
 				document.getElementById( "weight" ).addEventListener( 'click', function() {
 
 					if ( weight == "bold" ) {
@@ -398,6 +384,38 @@
 
 			}
 
+			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 ) {