⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 font3dstate.java

📁 JAVA3D矩陈的相关类
💻 JAVA
字号:
/* * $RCSfile: Font3DState.java,v $ * * Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistribution of source code must retain the above copyright *   notice, this list of conditions and the following disclaimer. * * - Redistribution in binary form must reproduce the above copyright *   notice, this list of conditions and the following disclaimer in *   the documentation and/or other materials provided with the *   distribution. * * Neither the name of Sun Microsystems, Inc. or the names of * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * This software is provided "AS IS," without a warranty of any * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY * EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF * USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR * ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR * INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * * You acknowledge that this software is not designed, licensed or * intended for use in the design, construction, operation or * maintenance of any nuclear facility. * * $Revision: 1.4 $ * $Date: 2007/02/09 17:20:34 $ * $State: Exp $ */package com.sun.j3d.utils.scenegraph.io.state.javax.media.j3d;import javax.media.j3d.Font3D;import javax.media.j3d.FontExtrusion;import javax.media.j3d.SceneGraphObject;import java.awt.Font;import com.sun.j3d.utils.scenegraph.io.retained.Controller;import com.sun.j3d.utils.scenegraph.io.retained.SymbolTableData;import java.awt.Shape;import java.lang.String;import java.lang.Integer;import java.io.IOException;import java.io.DataInput;import java.io.DataOutput;import java.awt.geom.PathIterator;import java.awt.geom.GeneralPath;public class Font3DState extends NodeComponentState {    private Font font=null;    private double tesselationTolerance=0.0D;    private FontExtrusion extrudePath=null;    public Font3DState( SymbolTableData symbol, Controller control ) {	super( symbol, control );    }    public void writeConstructorParams( DataOutput out ) throws IOException {	super.writeConstructorParams( out );	out.writeUTF( font.getFontName() );	out.writeInt( font.getStyle() );	out.writeInt( font.getSize() );	out.writeDouble( tesselationTolerance );	if ( extrudePath!=null ) {	    Shape shape = extrudePath.getExtrusionShape();	    if ( shape != null ) {		PathIterator shapePath = shape.getPathIterator( null );		float[] coords = new float[ 6 ];		int segType;		int points;		while ( !(shapePath.isDone()) ) {		    // Get type of current path segment and associated coordinates		    segType = shapePath.currentSegment( coords );		    out.writeInt( segType );		    // Write out relevant coordinates		    points = 0;		    if ( segType==PathIterator.SEG_MOVETO) points = 1;		    else if ( segType==PathIterator.SEG_LINETO ) points = 1;		    else if (segType==PathIterator.SEG_QUADTO ) points = 2;		    else if (segType==PathIterator.SEG_CUBICTO ) points = 3;		    for (int i=0;i<points;i++ ) {			out.writeFloat( coords[ i*2+0 ] );			out.writeFloat( coords[ i*2+1 ] );		    }		    // Next segment		    if ( !(shapePath.isDone()) ) shapePath.next();		}	    }	    // Flag for end of path definition	    out.writeInt( Integer.MIN_VALUE );	    out.writeDouble( extrudePath.getTessellationTolerance() );	} else out.writeInt( Integer.MIN_VALUE );    }    public void readConstructorParams( DataInput in ) throws IOException {	super.readConstructorParams( in );	String fontName = in.readUTF();	int style = in.readInt();	int size = in.readInt();	font = new Font( fontName, style, size );	tesselationTolerance = in.readDouble();	GeneralPath shape = null;	int segType = in.readInt();	while ( segType!=Integer.MIN_VALUE ) {	    if ( shape==null ) shape = new GeneralPath();	    if ( segType==PathIterator.SEG_MOVETO) {		shape.moveTo( in.readFloat(), in.readFloat() );	    } else if ( segType==PathIterator.SEG_LINETO ) {		shape.lineTo( in.readFloat(), in.readFloat() );	    } else if ( segType==PathIterator.SEG_QUADTO ) {		shape.quadTo( in.readFloat(), in.readFloat(),			      in.readFloat(), in.readFloat() );	    } else if ( segType==PathIterator.SEG_CUBICTO ) {		shape.curveTo( in.readFloat(), in.readFloat(),			       in.readFloat(), in.readFloat(),			       in.readFloat(), in.readFloat() );	    } else if ( segType==PathIterator.SEG_CLOSE ) {		shape.closePath();	    }	    segType = in.readInt();	}	if ( shape!=null ) extrudePath = new FontExtrusion( shape, in.readDouble() );	else extrudePath = null;    }    public SceneGraphObject createNode( Class j3dClass ) {	return createNode( j3dClass, new Class[] { Font.class,						   Double.TYPE,						   FontExtrusion.class },				     new Object[] { font,						    new Double( tesselationTolerance ),						    extrudePath } );    }    protected SceneGraphObject createNode() {	return new Font3D( font, tesselationTolerance, extrudePath );    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -