Package xj3d.filter.filters
Class ITSCreaseAnglerFilter
java.lang.Object
xj3d.filter.AbstractFilter
xj3d.filter.filters.ITSCreaseAnglerFilter
- All Implemented Interfaces:
BinaryContentHandler
,ContentHandler
,ProtoHandler
,RouteHandler
,ScriptHandler
,StringContentHandler
Takes an IndexedTriangleSet and a creaseAngle parameter and outputs a geometry
that accounts for the creaseAngle. Valid output with be either another
IndexedTriangleSet or a TriangleSet. Preference will be given to an IndexedTriangleSet
for speed purposes. All faces
who's geometric normal is less then the creaseAngle will be calculated so
that the faces are shaded smoothly across the edge; otherwise, normals shall
be calculated so that a lighting discontinuity across the edge is produced.
Input normals are ignored.
- Version:
- $Revision: 1.2 $
- Author:
- Alan Hudson
-
Field Summary
Fields inherited from class xj3d.filter.AbstractFilter
contentHandler, documentLocator, errorHandler, fieldHandler, fieldReader, fieldStack, lastErrorCode, majorVersion, minorVersion, nodeStack, parsingType, protoHandler, routeHandler, scriptHandler
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
endField()
Notification of the end of a field declaration.void
endNode()
Notification of the end of a node declaration.void
fieldValue
(boolean value) Set the value of the field at the given index as an boolean.void
fieldValue
(float[] value, int len) Set the value of the field at the given index as an array of floats.void
fieldValue
(int[] value, int len) Set the value of the field at the given index as an array of integers.void
fieldValue
(String value) The value of a normal field.void
fieldValue
(String[] values) Set the value of the field at the given index as an array of strings.void
setArguments
(String[] arg) Set the argument parameters to control the filter operationvoid
Declaration of the start of the document.void
startExternProtoDecl
(String name) Notification of the start of an EXTERNPROTO declaration of the given name.void
startField
(String name) Notification of a field declaration.void
Notification of the start of a node.void
startProtoDecl
(String name) Notification of the start of an ordinary (inline) proto declaration.void
The field value is a USE for the given node name.Methods inherited from class xj3d.filter.AbstractFilter
componentDecl, endDocument, endExternProtoDecl, endProtoBody, endProtoDecl, endScriptDecl, exportDecl, externProtoURI, fieldValue, fieldValue, fieldValue, fieldValue, fieldValue, fieldValue, fieldValue, fieldValue, getContentHandler, getErrorReporter, getLastErrorCode, getProtoHandler, getRouteHandler, getScriptHandler, importDecl, metaDecl, profileDecl, protoFieldDecl, protoIsDecl, routeDecl, scriptFieldDecl, setContentHandler, setDocumentLocator, setErrorReporter, setParsingType, setProtoHandler, setRouteHandler, setScriptHandler, startProtoBody, startScriptDecl
-
Constructor Details
-
ITSCreaseAnglerFilter
public ITSCreaseAnglerFilter()Default Constructor
-
-
Method Details
-
startDocument
public void startDocument(String uri, String url, String encoding, String type, String version, String comment) throws SAVException, VRMLException Declaration of the start of the document. The parameters are all of the values that are declared on the header line of the file after the#
start. The type string contains the representation of the first few characters of the file after the #. This allows us to work out if it is VRML97 or the later X3D spec.Version numbers change from VRML97 to X3D and aren't logical. In the first, it is
#VRML V2.0
and the second is#X3D V1.0
even though this second header represents a later spec.- Specified by:
startDocument
in interfaceContentHandler
- Overrides:
startDocument
in classAbstractFilter
- Parameters:
uri
- The URI of the file.url
- The base URL of the file for resolving relative URIs contained in the fileencoding
- The encoding of this document - utf8 or binarytype
- The bytes of the first part of the file headerversion
- The VRML version of this documentcomment
- Any trailing text on this line. If there is none, this is null.- Throws:
SAVException
- This call is taken at the wrong time in the structure of the documentVRMLException
- The content provided is invalid for this part of the document or can't be parsed
-
startNode
Notification of the start of a node. This is the opening statement of a node and it's DEF name. USE declarations are handled in a separate method.- Specified by:
startNode
in interfaceContentHandler
- Overrides:
startNode
in classAbstractFilter
- Parameters:
name
- The name of the node that we are about to parsedefName
- The string associated with the DEF name. Null if not given for this node.- Throws:
SAVException
- This call is taken at the wrong time in the structure of the document.VRMLException
- This call is taken at the wrong time in the structure of the document.
-
endNode
Notification of the end of a node declaration.- Specified by:
endNode
in interfaceContentHandler
- Overrides:
endNode
in classAbstractFilter
- Throws:
SAVException
- This call is taken at the wrong time in the structure of the document.VRMLException
- This call is taken at the wrong time in the structure of the document.
-
startField
Notification of a field declaration. This notification is only called if it is a standard node. If the node is a script or PROTO declaration then theScriptHandler
orProtoHandler
methods are used.- Specified by:
startField
in interfaceContentHandler
- Overrides:
startField
in classAbstractFilter
- Parameters:
name
- The name of the field declared- Throws:
SAVException
- This call is taken at the wrong time in the structure of the document.VRMLException
- This call is taken at the wrong time in the structure of the document.
-
useDecl
The field value is a USE for the given node name. This is a terminating call for startField as well. The next call will either be anotherstartField()
orendNode()
.- Specified by:
useDecl
in interfaceContentHandler
- Overrides:
useDecl
in classAbstractFilter
- Parameters:
defName
- The name of the DEF string to use- Throws:
SAVException
- This call is taken at the wrong time in the structure of the documentVRMLException
- The content provided is invalid for this part of the document or can't be parsed
-
endField
Notification of the end of a field declaration. This is called only at the end of an MFNode declaration. All other fields are terminated by eitheruseDecl(String)
orfieldValue(String)
. This will only ever be called if there have been nodes declared. If no nodes have been declared (ie "[]") then you will get afieldValue()
. call with the parameter value of null.- Specified by:
endField
in interfaceContentHandler
- Overrides:
endField
in classAbstractFilter
- Throws:
SAVException
- This call is taken at the wrong time in the structure of the document.VRMLException
- This call is taken at the wrong time in the structure of the document.
-
fieldValue
The value of a normal field. This is a string that represents the entire value of the field. MFStrings will have to be parsed. This is a terminating call for startField as well. The next call will either be anotherstartField()
orendNode()
.If this field is an SFNode with a USE declaration you will have the
useDecl(String)
method called rather than this method.- Specified by:
fieldValue
in interfaceBinaryContentHandler
- Specified by:
fieldValue
in interfaceStringContentHandler
- Overrides:
fieldValue
in classAbstractFilter
- Parameters:
value
- The value of this field- Throws:
SAVException
- This call is taken at the wrong time in the structure of the documentVRMLException
- The content provided is invalid for this part of the document or can't be parsed
-
fieldValue
Set the value of the field at the given index as an array of strings. This would be used to set MFString field types.- Specified by:
fieldValue
in interfaceStringContentHandler
- Overrides:
fieldValue
in classAbstractFilter
- Parameters:
values
- The new value to use for the node- Throws:
SAVException
- This call is taken at the wrong time in the structure of the document.VRMLException
- This call is taken at the wrong time in the structure of the document.
-
fieldValue
Set the value of the field at the given index as an array of integers. This would be used to set MFInt32 field types.- Specified by:
fieldValue
in interfaceBinaryContentHandler
- Overrides:
fieldValue
in classAbstractFilter
- Parameters:
value
- The new value to use for the nodelen
- The number of valid entries in the value array- Throws:
SAVException
- This call is taken at the wrong time in the structure of the document.VRMLException
- This call is taken at the wrong time in the structure of the document.
-
fieldValue
Set the value of the field at the given index as an boolean. This would be used to set SFBool field types.- Specified by:
fieldValue
in interfaceBinaryContentHandler
- Overrides:
fieldValue
in classAbstractFilter
- Parameters:
value
- The new value to use for the node- Throws:
SAVException
- This call is taken at the wrong time in the structure of the document.VRMLException
- This call is taken at the wrong time in the structure of the document.
-
fieldValue
Set the value of the field at the given index as an array of floats. This would be used to set MFFloat, SFVec2f, SFVec3f and SFRotation field types.- Specified by:
fieldValue
in interfaceBinaryContentHandler
- Overrides:
fieldValue
in classAbstractFilter
- Parameters:
value
- The new value to use for the nodelen
- The number of valid entries in the value array- Throws:
SAVException
- This call is taken at the wrong time in the structure of the document.VRMLException
- This call is taken at the wrong time in the structure of the document.
-
startProtoDecl
Notification of the start of an ordinary (inline) proto declaration. The proto has the given node name.- Specified by:
startProtoDecl
in interfaceProtoHandler
- Overrides:
startProtoDecl
in classAbstractFilter
- Parameters:
name
- The name of the proto- Throws:
SAVException
- Always thrownVRMLException
- Never thrown
-
startExternProtoDecl
Notification of the start of an EXTERNPROTO declaration of the given name. Between here and the matchingAbstractFilter.endExternProtoDecl()
call you should only receiveAbstractFilter.protoFieldDecl(int, java.lang.String, java.lang.String, java.lang.Object)
calls.- Specified by:
startExternProtoDecl
in interfaceProtoHandler
- Overrides:
startExternProtoDecl
in classAbstractFilter
- Parameters:
name
- The node name of the extern proto- Throws:
SAVException
- Always thrownVRMLException
- Never thrown
-
setArguments
Set the argument parameters to control the filter operation- Overrides:
setArguments
in classAbstractFilter
- Parameters:
arg
- The array of argument parameters.
-