瀏覽代碼

Font: Clean up.

Mr.doob 9 年之前
父節點
當前提交
0e74e725e8
共有 1 個文件被更改,包括 57 次插入75 次删除
  1. 57 75
      src/extras/core/Font.js

+ 57 - 75
src/extras/core/Font.js

@@ -13,7 +13,7 @@ THREE.Font.prototype = {
 
 	constructor: THREE.Font,
 
-	generateShapes: function ( text, size, curveSegments ) {
+	generateShapes: function ( text, size, divisions ) {
 
 		function createPaths( text ) {
 
@@ -25,9 +25,7 @@ THREE.Font.prototype = {
 
 			for ( var i = 0; i < chars.length; i ++ ) {
 
-				var path = new THREE.Path();
-
-				var ret = extractGlyphPoints( chars[ i ], scale, offset, path );
+				var ret = createPath( chars[ i ], scale, offset );
 				offset += ret.offset;
 
 				paths.push( ret.path );
@@ -38,118 +36,102 @@ THREE.Font.prototype = {
 
 		}
 
-		function extractGlyphPoints( c, scale, offset, path ) {
-
-			var pts = [];
+		function createPath( c, scale, offset ) {
 
-			var b2 = THREE.ShapeUtils.b2;
-			var b3 = THREE.ShapeUtils.b3;
-
-			var i, i2, divisions,
-				outline, action, length,
-				scaleX, scaleY,
-				x, y, cpx, cpy, cpx0, cpy0, cpx1, cpy1, cpx2, cpy2,
-				laste,
-				glyph = data.glyphs[ c ] || data.glyphs[ '?' ];
+			var glyph = data.glyphs[ c ] || data.glyphs[ '?' ];
 
 			if ( ! glyph ) return;
 
-			if ( glyph.o ) {
+			var path = new THREE.Path();
 
-				outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );
-				length = outline.length;
+			var pts = [], b2 = THREE.ShapeUtils.b2, b3 = THREE.ShapeUtils.b3;
+			var x, y, cpx, cpy, cpx0, cpy0, cpx1, cpy1, cpx2, cpy2, laste;
 
-				scaleX = scale;
-				scaleY = scale;
+			if ( glyph.o ) {
 
-				for ( i = 0; i < length; ) {
+				var outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );
 
-					action = outline[ i ++ ];
+				for ( var i = 0, l = outline.length; i < l; ) {
 
-					//console.log( action );
+					var action = outline[ i ++ ];
 
 					switch ( action ) {
 
-					case 'm':
+						case 'm': // moveTo
 
-						// Move To
+							x = outline[ i ++ ] * scale + offset;
+							y = outline[ i ++ ] * scale;
 
-						x = outline[ i ++ ] * scaleX + offset;
-						y = outline[ i ++ ] * scaleY;
+							path.moveTo( x, y );
 
-						path.moveTo( x, y );
-						break;
+							break;
 
-					case 'l':
+						case 'l': // lineTo
 
-						// Line To
+							x = outline[ i ++ ] * scale + offset;
+							y = outline[ i ++ ] * scale;
 
-						x = outline[ i ++ ] * scaleX + offset;
-						y = outline[ i ++ ] * scaleY;
-						path.lineTo( x, y );
-						break;
+							path.lineTo( x, y );
 
-					case 'q':
+							break;
 
-						// QuadraticCurveTo
+						case 'q': // quadraticCurveTo
 
-						cpx  = outline[ i ++ ] * scaleX + offset;
-						cpy  = outline[ i ++ ] * scaleY;
-						cpx1 = outline[ i ++ ] * scaleX + offset;
-						cpy1 = outline[ i ++ ] * scaleY;
+							cpx  = outline[ i ++ ] * scale + offset;
+							cpy  = outline[ i ++ ] * scale;
+							cpx1 = outline[ i ++ ] * scale + offset;
+							cpy1 = outline[ i ++ ] * scale;
 
-						path.quadraticCurveTo( cpx1, cpy1, cpx, cpy );
+							path.quadraticCurveTo( cpx1, cpy1, cpx, cpy );
 
-						laste = pts[ pts.length - 1 ];
+							laste = pts[ pts.length - 1 ];
 
-						if ( laste ) {
+							if ( laste ) {
 
-							cpx0 = laste.x;
-							cpy0 = laste.y;
+								cpx0 = laste.x;
+								cpy0 = laste.y;
 
-							for ( i2 = 1, divisions = this.divisions; i2 <= divisions; i2 ++ ) {
+								for ( var i2 = 1; i2 <= divisions; i2 ++ ) {
 
-								var t = i2 / divisions;
-								b2( t, cpx0, cpx1, cpx );
-								b2( t, cpy0, cpy1, cpy );
+									var t = i2 / divisions;
+									b2( t, cpx0, cpx1, cpx );
+									b2( t, cpy0, cpy1, cpy );
 
-							}
+								}
 
-						}
+							}
 
-						break;
+							break;
 
-					case 'b':
+						case 'b': // bezierCurveTo
 
-						// Cubic Bezier Curve
+							cpx  = outline[ i ++ ] * scale + offset;
+							cpy  = outline[ i ++ ] * scale;
+							cpx1 = outline[ i ++ ] * scale + offset;
+							cpy1 = outline[ i ++ ] * scale;
+							cpx2 = outline[ i ++ ] * scale + offset;
+							cpy2 = outline[ i ++ ] * scale;
 
-						cpx  = outline[ i ++ ] * scaleX + offset;
-						cpy  = outline[ i ++ ] * scaleY;
-						cpx1 = outline[ i ++ ] * scaleX + offset;
-						cpy1 = outline[ i ++ ] * scaleY;
-						cpx2 = outline[ i ++ ] * scaleX + offset;
-						cpy2 = outline[ i ++ ] * scaleY;
+							path.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );
 
-						path.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );
+							laste = pts[ pts.length - 1 ];
 
-						laste = pts[ pts.length - 1 ];
+							if ( laste ) {
 
-						if ( laste ) {
+								cpx0 = laste.x;
+								cpy0 = laste.y;
 
-							cpx0 = laste.x;
-							cpy0 = laste.y;
+								for ( var i2 = 1; i2 <= divisions; i2 ++ ) {
 
-							for ( i2 = 1, divisions = this.divisions; i2 <= divisions; i2 ++ ) {
+									var t = i2 / divisions;
+									b3( t, cpx0, cpx1, cpx2, cpx );
+									b3( t, cpy0, cpy1, cpy2, cpy );
 
-								var t = i2 / divisions;
-								b3( t, cpx0, cpx1, cpx2, cpx );
-								b3( t, cpy0, cpy1, cpy2, cpy );
+								}
 
 							}
 
-						}
-
-						break;
+							break;
 
 					}
 
@@ -164,7 +146,7 @@ THREE.Font.prototype = {
 		//
 
 		if ( size === undefined ) size = 100;
-		if ( curveSegments === undefined ) curveSegments = 4;
+		if ( divisions === undefined ) divisions = 4;
 
 		var data = this.data;