JavaView© v3.95.000

jv.loader
Class PgLoader

java.lang.Object
  extended byjv.loader.PgLoader

public final class PgLoader
extends java.lang.Object

Dispatcher for loading/saving geometries and images from/to file. Depending on the file name extension an appropriate filter is invoked.


Field Summary
static int NUM_GEOMETRY_TAGS
          Number of available geometry tags to describe state of geometry.
 
Constructor Summary
PgLoader()
          Create an empty loader manager and initialize it.
 
Method Summary
 PvDisplayOption getDisplayOption()
          Get option of a single display which some parsers fill out.
 PvDisplayOption[] getDisplayOptions()
          Get display options which some parsers fill out.
 boolean getTag(int aBit)
          Check whether geometry tag is set.
 void init()
          Initialize and reset this loader manager.
 boolean isAnimated()
          Flag whether currently loaded data is interpreted as an animation.
 boolean isEnabledOptimization()
          Determines if the loader is allowed to do some optimization on an imported geometry, or if it shall provide the data as found in the geometry file.
static PvDisplayOption[] load(java.io.BufferedReader in, java.lang.String ext)
          Deprecated. use #loadDisplay(BufferedReader in, String ext)
static PgGeometry[] load(PgGeometry[] geomArr, java.io.BufferedReader in, java.lang.String ext)
          Deprecated. use non-static method loadGeometry() with same method signature.
static PgGeometry[] load(PgGeometry[] geomArr, java.lang.String fileName)
          Deprecated. use non-static method loadGeometry() with same method signature.
static PgGeometry[] load(PgGeometry[] geomArr, java.lang.String data, java.lang.String ext)
          Deprecated. use non-static method loadGeometry() with same method signature.
static PgGeometry[] load(java.lang.String fileName)
          Deprecated. use non-static method loadGeometry() with same method signature.
 PvDisplayOption[] loadDisplay(java.io.BufferedReader in, java.lang.String ext)
          Read display options from a buffered reader.
 PvDisplayOption[] loadDisplay(java.lang.String fileName)
          Read display options from a buffered reader.
 PgGeometry[] loadGeometry(PgGeometry[] geomArr, java.io.BufferedReader in, java.lang.String ext)
          Read a geometry from a buffered reader with the content of a geometry file.
 PgGeometry[] loadGeometry(PgGeometry[] geomArr, java.lang.String fileName)
          Read a geometry from named file whose extension determines the file format.
 PgGeometry[] loadGeometry(PgGeometry[] geomArr, java.lang.String data, java.lang.String ext)
          Read a geometry from a string representing content of a geometry file.
 PgGeometry[] loadGeometry(java.lang.String fileName)
          Read a geometry from named file whose extension determines the file format.
 PgGeometry[] loadGeometry(java.lang.String data, java.lang.String ext)
          Read a geometry from a string representing content of a geometry file.
static double parseDouble(java.io.StreamTokenizer st)
          Parse double value in exponential notation.
static double parseDouble(java.lang.String string)
          Parse double value in exponential notation using Double(String).doubleValue().
static boolean parseEndOfLine(java.io.StreamTokenizer st)
          Ignore all tokens of a stream until the next end-of-line is reached.
static PgGeometry[] read(PgJvxSrc[][] geomAnim, boolean bShowAnimationPanel)
          Deprecated. use non-static method readAnimation() with same method signature.
static PgGeometry[] read(PgJvxSrc[] geomAnim, boolean bShowAnimationPanel)
          Deprecated. use non-static method readAnimation() with same method signature.
static boolean readAll(java.awt.List list, java.lang.String fileName)
          Read list of files from a given XML listing file.
 PgGeometry[] readAnimation(PgJvxSrc[][] geomAnim, boolean bShowAnimationPanel)
          Create a set of keyframe objects from a double array of geometries and returns the list of dynamic geometries.
 PgGeometry[] readAnimation(PgJvxSrc[] geomAnim, boolean bShowAnimationPanel)
          Create a set of keyframe objects containing a single keyframe from an array of geometries.
static PsKeyframe[] readAnimation(PsKeyframe[] keyframe, int firstKey, int lastKey, java.lang.String fileName)
          Deprecated. use readAnimation(PsKeyframe [], int, int, String, int);
 PsKeyframe[] readAnimation(PsKeyframe[] keyframe, int firstKey, int lastKey, java.lang.String fileName, int fixedLen)
          Create a set of keyframe objects from a set of files.
static boolean readDirs(java.awt.List list, java.lang.String fileName)
          Read list of directories from a given XML listing file.
static java.lang.String[] readDirs(java.lang.String fileName)
          Read list of directories from a given XML listing file into array.
static boolean save(java.awt.Image image, java.lang.String fileName)
          Deprecated. use saveImage(Image, String)
static boolean save(PgGeometryIf[] geomIf, java.lang.String fileName)
          Deprecated. use saveGeometry(PgGeometry [], String).
static boolean save(PvDisplayOption[] option, java.lang.String fileName)
          Deprecated. use saveDisplay(PvDisplayOption [] option, String fileName).
static boolean save(java.lang.String data, java.lang.String fileName)
          Deprecated. use saveString(String, String).
 boolean saveDisplay(PvDisplayOption[] option, java.lang.String fileName)
          Write display settings to a JVD file.
 boolean saveGeometry(PgGeometry[] geom, java.lang.String fileName)
          Write a set of geometries to a named file whose extension determines the format.
 boolean saveGeometry(PgGeometryIf[] geomIf, java.lang.String fileName)
          Same functionality as saveGeometry(PgGeometry [], String) but provided to avoid casting.
 java.lang.String saveGeometryToString(PgGeometry[] geom, java.lang.String ext)
          Write a geometry to a string in a given format determined by its file extension.
 boolean saveImage(java.awt.Image image, java.lang.String fileName)
          Write an image to a named file whose extension determines the file format.
 boolean saveString(java.lang.String data, java.lang.String fileName)
          Write a string to a named file if running as application.
static java.lang.String saveToString(PgGeometryIf[] geom, java.lang.String ext)
          Deprecated. use non-static method saveGeometryToString(PgGeometry [], String)
 void setAnimated(boolean flag)
          Set flag whether currently loaded data should be interpreted as an animation.
 void setDisplayOption(PvDisplayOption option)
          Set option of a single display which some parsers fill out.
 void setDisplayOptions(PvDisplayOption[] option)
          Set the display options to be used by some parsers.
 void setEnabledOptimization(boolean flag)
          Set flag if the loader is allowed to do some optimization on an imported geometry, or if it shall provide the data as found in the geometry file.
 void setTag(int aBit, boolean flag)
          Set geometry tag of this loader manager.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NUM_GEOMETRY_TAGS

public static final int NUM_GEOMETRY_TAGS
Number of available geometry tags to describe state of geometry. External loaders may add own tags beyond this number.

See Also:
getTag(int), setTag(int, boolean), Constant Field Values
Constructor Detail

PgLoader

public PgLoader()
Create an empty loader manager and initialize it.

Method Detail

init

public void init()
Initialize and reset this loader manager.


getTag

public boolean getTag(int aBit)
Check whether geometry tag is set. For possible tags see jv.loader.PgLoaderIf.

See Also:
setTag(int, boolean)

setTag

public void setTag(int aBit,
                   boolean flag)
Set geometry tag of this loader manager. For possible tags see jv.loader.PgLoaderIf.

See Also:
getTag(int)

isEnabledOptimization

public boolean isEnabledOptimization()
Determines if the loader is allowed to do some optimization on an imported geometry, or if it shall provide the data as found in the geometry file.

For example, some file formats do not store a connected mesh but provide individual vertices for each face. In this case, a loader manager may identify equal vertices.

By default this loader manager is enabled to do optimization if the individual loader allows optimization too.

Returns:
true if loader manager is enabled for optimization.
Since:
JavaView 2.99.018

setEnabledOptimization

public void setEnabledOptimization(boolean flag)
Set flag if the loader is allowed to do some optimization on an imported geometry, or if it shall provide the data as found in the geometry file.

For example, some file formats do not store a connected mesh but provide individual vertices for each face. In this case, a loader manager may identify equal vertices.

Optimization is sometimes not suitable without further knowledge about a specific data set. Then the loader may be advised to keep the original data by enabling this flag.

Method must be called before the loader manager starts reading a file.

Parameters:
flag - true if loader manager is enabled for optimization.
Since:
JavaView 2.99.018

isAnimated

public boolean isAnimated()
Flag whether currently loaded data is interpreted as an animation.

Since:
JavaView 2.47

setAnimated

public void setAnimated(boolean flag)
Set flag whether currently loaded data should be interpreted as an animation. This flag is used by specific loaders only whose file format allow such kind of specifications, for example, Maple and Mathematica.

Since:
JavaView 2.47

getDisplayOption

public PvDisplayOption getDisplayOption()
Get option of a single display which some parsers fill out.

Note, most geometry files provide no display options, or at most for a single display.

Returns:
display options for a single display
Since:
JavaView 2.46

setDisplayOption

public void setDisplayOption(PvDisplayOption option)
Set option of a single display which some parsers fill out.

Note, most geometry files provide no display options, or at most for a single display.

Parameters:
option - display options for a single display
Since:
JavaView 2.46

getDisplayOptions

public PvDisplayOption[] getDisplayOptions()
Get display options which some parsers fill out. Options may be used to configure a set of displays.

Returns:
array of options obtained from a file
Since:
JavaView 2.46

setDisplayOptions

public void setDisplayOptions(PvDisplayOption[] option)
Set the display options to be used by some parsers.

Parameters:
option - array of options of a set of displays
Since:
JavaView 2.46

loadGeometry

public PgGeometry[] loadGeometry(java.lang.String data,
                                 java.lang.String ext)
Read a geometry from a string representing content of a geometry file. Method creates a StringReader and calls loadGeometry(PgGeometry [],String,String) with a null geometry array. Method is supplied for convenience.

Parameters:
data - String with geometry data
ext - Extension identifying the file format, usually 3 characters.
Returns:
new geometry array, or null if failure.
Since:
JavaView 2.46

loadGeometry

public PgGeometry[] loadGeometry(PgGeometry[] geomArr,
                                 java.lang.String data,
                                 java.lang.String ext)
Read a geometry from a string representing content of a geometry file. Method creates a StringReader and calls loadGeometry(PgGeometry [],BufferedReader,String) with a null geometry array. Method is supplied for convenience.

Parameters:
geomArr - Geometry which will be filled with data, maybe null.
data - String with geometry data
ext - Extension identifying the file format, usually 3 characters.
Returns:
either old geometry array with new data, or new geometry array, or null if failure.
Since:
JavaView 2.46

loadGeometry

public PgGeometry[] loadGeometry(java.lang.String fileName)
Read a geometry from named file whose extension determines the file format. Extension of file name determines the type of loader. Models may be compressed having extensions like "filename.obj.gz" or "filename.obj.zip" where middle extension determines the file format and the last extension the compression type.

Parameters:
fileName - full qualified name of geometry file, e.g. http://... or file:/...
Returns:
newGeom Either old geometry with new data, or new geometry, or null.

loadGeometry

public PgGeometry[] loadGeometry(PgGeometry[] geomArr,
                                 java.lang.String fileName)
Read a geometry from named file whose extension determines the file format. The geometry is passed as an argument and filled. Passing the geometry allows updating of the same geometry. Extension of file name determines the type of loader. Models may be compressed having extensions like "filename.obj.gz" or "filename.obj.zip" where middle extension determines the file format and the last extension the compression type.

Parameters:
geomArr - Geometry which will be filled with data, maybe null.
fileName - full qualified name of geometry file, e.g. http://... or file:/...
Returns:
newGeom Either old geometry with new data, or new geometry, or null.
Since:
JavaView 2.46

loadGeometry

public PgGeometry[] loadGeometry(PgGeometry[] geomArr,
                                 java.io.BufferedReader in,
                                 java.lang.String ext)
Read a geometry from a buffered reader with the content of a geometry file. The geometry is passed as an argument and filled. Passing the geometry allows updating of the same geometry. The file format and loader are determined by the file extension.

If the geometry data is available at an input stream 'data', for example standard input System.in, then use the following command to generate a BufferedReader new BufferedReader(new InputStreamReader(data)) as argument of this method. If data is read from a file, then use jv.object.PsUtil#open(String) to create a buffered reader or use another load of this class.

Parameters:
geomArr - Array of geometries which will be filled with data, maybe null.
in - Buffered reader with geometry data
ext - Extension identifying the file format, usually 3 characters.
Returns:
either old geometry array with new data, or new geometry array, or null if failure.
Since:
JavaView 2.46

load

public static PgGeometry[] load(PgGeometry[] geomArr,
                                java.lang.String data,
                                java.lang.String ext)
Deprecated. use non-static method loadGeometry() with same method signature.

Read a geometry from a string representing content of a geometry file. Method creates a StringReader and calls load(PgGeometry [], BufferedReader, String) with a null geometry array. Method is supplied for convenience.

Parameters:
geomArr - Geometries which will be filled with data, maybe null.
data - String with geometry data
ext - Extension identifying the file format, usually 3 characters.
Returns:
either old geometry array with new data, or new geometry array, or null if failure.

load

public static PgGeometry[] load(java.lang.String fileName)
Deprecated. use non-static method loadGeometry() with same method signature.

Read a geometry from named file whose extension determines the file format. Extension of file name determines the type of loader. Models may be compressed having extensions like "filename.obj.gz" or "filename.obj.zip" where middle extension determines the file format and the last extension the compression type.

Parameters:
fileName - full qualified name of geometry file, e.g. http://... or file:/...
Returns:
newGeom Either old geometry with new data, or new geometry, or null.

load

public static PgGeometry[] load(PgGeometry[] geomArr,
                                java.lang.String fileName)
Deprecated. use non-static method loadGeometry() with same method signature.

Read a geometry from named file whose extension determines the file format. The geometry is passed as an argument and filled. Passing the geometry allows updating of the same geometry. Extension of file name determines the type of loader. Models may be compressed having extensions like "filename.obj.gz" or "filename.obj.zip" where middle extension determines the file format and the last extension the compression type.

Parameters:
geomArr - Geometries which will be filled with data, maybe null.
fileName - full qualified name of geometry file, e.g. http://... or file:/...
Returns:
newGeom Either old geometry with new data, or new geometry, or null.

load

public static PgGeometry[] load(PgGeometry[] geomArr,
                                java.io.BufferedReader in,
                                java.lang.String ext)
Deprecated. use non-static method loadGeometry() with same method signature.

Read a geometry from a buffered reader with the content of a geometry file. The geometry is passed as an argument and filled. Passing the geometry allows updating of the same geometry. The file format and loader are determined by the file extension.

If the geometry data is available at an input stream 'data', for example standard input System.in, then use the following command to generate a BufferedReader new BufferedReader(new InputStreamReader(data)) as argument of this method. If data is read from a file, then use jv.object.PsUtil#open(String) to create a buffered reader or use another load of this class.

Parameters:
geomArr - Geometries which will be filled with data, maybe null.
in - Buffered reader with geometry data
ext - Extension identifying the file format, usually 3 characters.
Returns:
either old geometry array with new data, or new geometry array, or null if failure.

load

public static PvDisplayOption[] load(java.io.BufferedReader in,
                                     java.lang.String ext)
Deprecated. use #loadDisplay(BufferedReader in, String ext)

Read display options from a buffered reader.


loadDisplay

public PvDisplayOption[] loadDisplay(java.lang.String fileName)
Read display options from a buffered reader. Format is same as file extension and determines the type of loader.

Method opens the file connection and calls loadDisplay(BufferedReader,String).

Parameters:
fileName - full qualified name of geometry file, e.g. http://... or file:/...
Returns:
array with display options, or null on failure.
Since:
JavaView 2.32

loadDisplay

public PvDisplayOption[] loadDisplay(java.io.BufferedReader in,
                                     java.lang.String ext)
Read display options from a buffered reader. Format is same as file extension and determines the type of loader.

If the display data is available at an input stream 'data', for example standard input System.in, then use the following command to generate a BufferedReader new BufferedReader(new InputStreamReader(data)) as argument of this method. If data is read from a file, then use jv.object.PsUtil#open(String) to create a buffered reader or use another load of this class.

Parameters:
in - Buffered reader with display option data
ext - Extension identifying the file format, usually 3 characters.
Returns:
display option array, or null if failure.

saveGeometryToString

public java.lang.String saveGeometryToString(PgGeometry[] geom,
                                             java.lang.String ext)
Write a geometry to a string in a given format determined by its file extension. The chosen file format is determined from the 3-digit filename extension passed as argument. Many file formats allow saving only of a single geometry, in which case the first geometry in the array is saved and the others not.

Note, this method does not save texture images, use saveGeometry(PgGeometry [], String) instead.

Parameters:
geom - array of geometries to be saved to string
ext - filename extension to determine the file format
Returns:
geometry as string in specified file format.
Since:
JavaView 2.46
See Also:
saveGeometry(PgGeometry [], String)

saveToString

public static java.lang.String saveToString(PgGeometryIf[] geom,
                                            java.lang.String ext)
Deprecated. use non-static method saveGeometryToString(PgGeometry [], String)

Write a geometry to a string in a given format determined by its file extension. The chosen file format is determined from the 3-digit filename extension passed as argument. Many file formats allow saving only of a single geometry, in which case the first geometry in the array is saved and the others not.

Parameters:
geom - array of geometries to be saved to string
ext - filename extension to determine the file format
Returns:
geometry as string in specified file format.
See Also:
saveGeometry(PgGeometry [], String)

saveGeometry

public boolean saveGeometry(PgGeometry[] geom,
                            java.lang.String fileName)
Write a set of geometries to a named file whose extension determines the format. The chosen file format is determined from the 3-digit extension of the filename. Many file formats allow saving only of a single geometry, in which case the first geometry in the array is saved and the others not.

Note, if geometry has texture then the texture image to saved in the same directory. The name of the texture file is either name='path of geometry file'/'name of texture'(.gif), if texture has a name, or name='path of geometry file'/'geom[i].getName()'_'texture.gif'.

Parameters:
geom - array of geometries to be saved to file
fileName - full file name including path
Returns:
true on success
Since:
JavaView 2.47
See Also:
saveGeometry(PgGeometryIf [], String), saveGeometryToString(PgGeometry [],String), PgGeometryIf.isVisible(), PgGeometryIf.getTextureImage()

saveGeometry

public boolean saveGeometry(PgGeometryIf[] geomIf,
                            java.lang.String fileName)
Same functionality as saveGeometry(PgGeometry [], String) but provided to avoid casting.

Since:
JavaView 2.47
See Also:
saveGeometry(PgGeometry [], String)

save

public static boolean save(PgGeometryIf[] geomIf,
                           java.lang.String fileName)
Deprecated. use saveGeometry(PgGeometry [], String).

Write a set of geometries to a named file whose extension determines the format. The chosen file format is determined from the 3-digit extension of the filename. Many file formats allow saving only of a single geometry, in which case the first geometry in the array is saved and the others not.

Note, only visible geometries are saved.

Note, if geometry has texture then the texture image to saved in the same directory. The name of the texture file is either name='path of geometry file'/'name of texture'(.gif), if texture has a name, or name='path of geometry file'/'geom[i].getName()'_'texture.gif'.

Parameters:
geomIf - array of geometries to be saved to file
fileName - full file name including path
Returns:
true on success
See Also:
PgGeometryIf.isVisible(), PgGeometryIf.getTextureImage(), saveToString(PgGeometryIf [], String)

save

public static boolean save(java.lang.String data,
                           java.lang.String fileName)
Deprecated. use saveString(String, String).

Write a string to a named file if running as application. When running as applet then the string is displayed inside a dialog PgExport_Dialog from which it may be saved using cut-and-paste.

Parameters:
data - string to be saved to file
fileName - full file name including path
Returns:
true on success

saveString

public boolean saveString(java.lang.String data,
                          java.lang.String fileName)
Write a string to a named file if running as application. When running as applet then the string is displayed inside a dialog PgExport_Dialog from which it may be saved using cut-and-paste.

Parameters:
data - string to be saved to file
fileName - full file name including path
Returns:
true on success
Since:
JavaView 2.46

save

public static boolean save(PvDisplayOption[] option,
                           java.lang.String fileName)
Deprecated. use saveDisplay(PvDisplayOption [] option, String fileName).

Write display settings to a JVD file.

Parameters:
option - Display options to be saved to file
fileName - full file name including path
Returns:
true on success

saveDisplay

public boolean saveDisplay(PvDisplayOption[] option,
                           java.lang.String fileName)
Write display settings to a JVD file.

Parameters:
option - Display options to be saved to file
fileName - full file name including path
Returns:
true on success

save

public static boolean save(java.awt.Image image,
                           java.lang.String fileName)
Deprecated. use saveImage(Image, String)

Write an image to a named file whose extension determines the file format.

Parameters:
image - Image to be saved to file
fileName - Full file name including path
Returns:
true on success

saveImage

public boolean saveImage(java.awt.Image image,
                         java.lang.String fileName)
Write an image to a named file whose extension determines the file format.

Parameters:
image - Image to be saved to file
fileName - Full file name including path
Returns:
true on success
Since:
JavaView 2.47

parseEndOfLine

public static boolean parseEndOfLine(java.io.StreamTokenizer st)
                              throws java.io.IOException
Ignore all tokens of a stream until the next end-of-line is reached. The next token will start at the beginning of the new line. This method is useful to skip the rest of a current line. Note, EOL must be significant in the current stream tokenizer.

Returns:
true if EOL is found, else false, i.e. EOF is found.
Throws:
java.io.IOException

parseDouble

public static double parseDouble(java.io.StreamTokenizer st)
                          throws java.io.IOException
Parse double value in exponential notation. This method tries to catch different settings of character in the StreamTokenizer, but not any situations might be handled correctly.

This method first aquires the next token from StreamTokenizer, then analyses the following token if there is a number in exponential form. If yes, then the number is created in this method, otherwise the second token is pushed back.

The need for this method arise from the special setup of some StreamTokenizers in JavaView where several characters like 'e', 'E', '+', are sometimes marked as word characters.

Throws:
java.io.IOException

parseDouble

public static double parseDouble(java.lang.String string)
Parse double value in exponential notation using Double(String).doubleValue(). This method is a convenience to avoid catching NumberFormatException.


readAll

public static boolean readAll(java.awt.List list,
                              java.lang.String fileName)
Read list of files from a given XML listing file.


readDirs

public static boolean readDirs(java.awt.List list,
                               java.lang.String fileName)
Read list of directories from a given XML listing file.


readDirs

public static java.lang.String[] readDirs(java.lang.String fileName)
Read list of directories from a given XML listing file into array.


readAnimation

public PgGeometry[] readAnimation(PgJvxSrc[] geomAnim,
                                  boolean bShowAnimationPanel)
Create a set of keyframe objects containing a single keyframe from an array of geometries. Method just calls readAnimation(PgJvxSrc [][] geomAnim, ...).

Since:
JavaView 2.46

read

public static PgGeometry[] read(PgJvxSrc[] geomAnim,
                                boolean bShowAnimationPanel)
Deprecated. use non-static method readAnimation() with same method signature.

Create a set of keyframe objects containing a single keyframe from an array of geometries. Method just calls read(PgJvxSrc [][] geomAnim, ...).


readAnimation

public static PsKeyframe[] readAnimation(PsKeyframe[] keyframe,
                                         int firstKey,
                                         int lastKey,
                                         java.lang.String fileName)
Deprecated. use readAnimation(PsKeyframe [], int, int, String, int);


readAnimation

public PsKeyframe[] readAnimation(PsKeyframe[] keyframe,
                                  int firstKey,
                                  int lastKey,
                                  java.lang.String fileName,
                                  int fixedLen)
Create a set of keyframe objects from a set of files. All files must have the same number of geometries. In case the geometries may be of different type within a keyframe, then the i-th geometry in a keyframe must be of the same type for all keyframes.

An application calling this method typically adds the dynamic geometries of each keyframe to a display or performs another action.

The argument fixedLen==0 indicates that no leading zeros appear in the keyframe index. A positive value indicates that the keyframe index of the file name must have the format "name.0017.ext" (here fixedLen==4).

Returns:
an array of keyframe geometries

readAnimation

public PgGeometry[] readAnimation(PgJvxSrc[][] geomAnim,
                                  boolean bShowAnimationPanel)
Create a set of keyframe objects from a double array of geometries and returns the list of dynamic geometries.

Each keyframe object has a dynamic geometry which represents the current state of a keyframe animation at a specific time.

The parent of the dynamic geometry is the corresponding keyframe object.

Since:
JavaView 2.46

read

public static PgGeometry[] read(PgJvxSrc[][] geomAnim,
                                boolean bShowAnimationPanel)
Deprecated. use non-static method readAnimation() with same method signature.

Create a set of keyframe objects from a double array of geometries.


JavaView© v3.95.000

The software JavaView© is copyright protected. All Rights Reserved.