FIGUE

http://www.inria.fr/croap/figue/index.html

This is a single-page compendium of all the pages found in the HTML original version. It provides an easier way to print than stepping through the individual pages.

This page is very large and pulls in many images.

This page has dysfunctional links.

Copyright Notices

* Credits

  • The portable fonts used in Figue's Symbol class rely on the anti-aliased fonts for Java, courtesy of Bernard Suffrin , Worcester College.

  • The parser which is the heart of Figue's XML like persistence layer was developped using ANTLR. ANTLR is fully in the public domain, copyright 1998 by Terence Parr, Magelang Institute.

  • QBullets are used to indicate the function of hypertext links. QBullets appear courtesy of Matterform Media. QBullets are freeware, copyright 1996 by Matterform Media. See the QBullet legend for the meanings of all the QBullets.

* Copyright

Software FIGUE (c) INRIA 1998 in its 1 version of the 31/07/1998, hereinafter referred to as "THE SOFTWARE".

The SOFTWARE has been designed and produced by Bruno CONDUCTIER, Laurent HASCOET, Laurent THERY, researchers of the project CROAP, a research project of the National Computer and Automatics Institute (INRIA).

INRIA
Domaine de Voluceau, Rocquencourt
78153 Le Chesnay Cedex
FRANCE

INRIA holds all the patent rights concerning the SOFTWARE The SOFTWARE has been registered at the Agency for the Protection of Programmes (APP) under the number IDDN.FR.001.350018.00.R.P.1998.000.10800.

Foreword

The SOFTWARE is currently being developed and INRIA wishes for it to be used by the scientific world so as to test, evaluate and continually update it.

To this end, INRIA has decided to distribute the prototype of the SOFTWARE by FIP in a source form.

a) Extent of the rights granted by INRIA to the user of the SOFTWARE

INRIA freely grants the right to use, modify and integrate the SOFTWARE in another programe.

b) Reproduction of the SOFTWARE

Clauses 9 and 10 of the Berne agreement for the protection of literary and artistic works (Union of Berne) respectively specify in their paragraphs 2 and 3 authorizing only the reproduction and quoting of works on the condition that :

  • "this reproduction does not adversely affect the normal exploitation of the work or cause any unjustified prejudice to the legitimate interests of the author"

  • that the quotations given by way of illustration and/or tuition conform to the proper uses and that it mentions the source and name of the author if this name features in the source", any use or reproduction of the software items and/or documents exclusively owned by INRIA and carried out to obtain profit or for commercial ends being subject to obtaining the prior express authorization of INRIA. Any commercial use made without obtaining the prior express agreement of the INRIA would therefore constitute a fraudulent imitation.

c) Return of information

Any user of the SOFTWARE shall send his comments on the use of the SOFTWARE to INRIA at (Figue@sophia.inria.fr).

d) Guarantees

Note that the SOFTWARE is a research product currently being developed.
INRIA disclaims any responsibility in any way in any instance of being obliged to put right any possible direct or indirect damage sustained by the user.

FIGUE

If you are facing some troubles with navigation and meaning of small QBullets have a look at the online help . Moreover a FAQ answers to frequently-asked questions.

FIGUE is an incremental two dimensional layout engine, developped by the CROAP group of INRIA. Currently, this work is done in the KOALA action of the DYADE BULL/INRIA applied research joint structure.

INRIA DYADE BULL

Before using this information and the product it supports, be sure to read the Copyright Notices.

From this site you will review the Figue key features, the current state of the project and how to use or extend the engine. Technical and scientific datas are also available: you could browse the java API and the design specifications.

If the information you want isn't there, why not contact us?
Technical questions and complaints not present in the known limitations and bugs report should be addressed to the support.

TIP Some easy to print versions of the documents are available.

Finally, you could check some informations that we have found useful along this project.

* Contact Info

Yves Bertot Scientific leader of the CROAP project Laurent Théry

* Support

* For up-to-date information

* Restricted Access

Introduction

* Features Include

  • Comprehensive Java framework for structured text formatting / editing
  • Written completely in Java
  • Bypasses standard text area
    • Write once, don't rewrite for each media
      • Two dimensional text layout
      • ASCII streams
      • Printing facilities
    • Write once, don't rewrite for each Java version
      • Don't pay the price for SWING if you only need Java 1.1 and AWT
      • Lightweight application fully SWING compliant
  • Fully customizable and extensible
    • By plugging standard customizer
    • By furnishing new implementation of default components / behaviors
  • Incremental editing
  • Multithreaded
    • Allowing browsing while the informations are being loaded and formatted
  • Source code is included

* What is Figue Definitely Not ?

  • Not yet another applet builder
    • Figue is oversized for simple text animation.
  • Not yet another HTML browser
    • Let's not re-invent the wheel! Static HTML is already supported by all browser.

* What is Figue Good For ?

  • Figue is designed for application requiring
    • sophisticated and dynamic layout
    • open and extensible architecture
  • Figue is a specialized toolbox for building customized editors.

Requirements

* Software

  • Java run-time environment, preferably with JIT
  • JDK 1.1.5 or later
  • Java Fundation Class library (if you want to run the Swing version)

* System and Hardware

  • Any platform that supports Java VM 1.1

    Figue has been succesfully tested with the following setups :

    • Windows NT
      • Microsoft SDK for Java Version 2.0
      • Sun JDK 1.1.6 & Symantec JIT
    • Digital Unix V4.0
      • JDK 1.1.6
    • Solaris
      • Sun JDK 1.1.5
    • Linux
      • Sun JDK 1.1.5
  • Figue has been succesfully tested on the minimal configuration
    • PC with 133 Intel Pentium processor
    • memory 16 MB

* Browser

  • To see active applets and demos any JDK 1.1 Enabled Browser
  • To see samples when using an outdated browser just click on the following link each time you see it :
       Want to see what you are missing ?

Downloading Zone

* Ready To Print

Use the following single page versions if you want to print from a browser without stepping through the individual pages.

* Getting the Software

See the Copyright Notices.

Figue distribution comes as a single zip or compressed tar file :
TIP Java classes are also available as a single jar file figue.jar

* Figue Installation

Unzipping the file you receive will produce the directory tree :
  • aioli
    • modules
      • figue
        • web and its subdirectories provide reference manual, tutorial and design documentation.
          • index.html
        • classes and its subdirectories provide archives. and utility classes.
          • figue.jar
        • java and its subdirectories provide sources.
          • tutorial
    • java
      • classes
        • figue and its subdirectories provide core classes.
For example, if you placed the archive in directory TOOLS
  • UNIX :
       cd TOOLS
       gunzip figue.tar.gz
       tar xvf figue.tar
  • NT :
       call the file manager
       go to the TOOLS directory
       double-click on the archive

TIPPut the local file aioli/modules/figue/web/index.html in your bookmarks.

* Running Tutorial and Demos

Remember the requirements : you must have at least JDK 1.1 installed properly on your machine.

* JAR File

Place the runtime library figue.jar in your CLASSPATH.

  • UNIX :
       CLASSPATH=TOOLS/aioli/modules/figue/classes/figue.jar:$CLASSPATH
       export CLASSPATH
    	      
  • NT :
       start the Control Panel
       select System,
       edit the environment variables 
       CLASSPATH TOOLS/aioli/modules/figue/classes/figue.jar:;%CLASSPATH%
       validate

Getting Started

* Before You Go On

At this point, you should have downloaded and installed Figue.

From now on we will assume that you have chosen to extract Figue into a directory called TOOLS. You will have to modify the following commands appropriately with the accurate name.

* Verifying the Installation

  • Using a text editor, create a file named HelloWorld.java with the following code

    import figue.*;
    import java.awt.Frame;
    
    public final class HelloWorld {
        public final static void main(String[] args) {
    	final AWTFacade theFacade = new AWTFacade();
    	final Frame theAppli = new Frame("Hello World");
    	theAppli.setBounds(50,50,300,100);
    	theAppli.add(theFacade.getAwtComponent());
    	theAppli.validate();
    	theAppli.setVisible(true);
            PathInterface thePath = new Path();
            thePath.addOperation(
              new InsertGlyph(Atom.newAtom("Hello World"),0));
            theFacade.buildInit(thePath);
            theFacade.buildComplete();	
        }   
    }

  • Compile the source file using the Java compiler

    • Microsoft SDK on NT
      jvc.exe HelloWorld.java
    • Sun JDK on Unix / NT
      javac HelloWorld.java

    If the compilation succeeds, the compiler creates a file named HelloWorld.class in the same directory as the Java source file

  • Run the application using the Java interpreter

    • Microsoft SDK on NT
      jview.exe HelloWorld
    • Sun JDK on Unix / NT
      java HelloWorld

    After you have verified that HelloWorld runs, type Control-C to shut it down.

  • If you have any trouble running the "Hello World" test see the common troubleshootings and their solutions.

* How do I use it ?

* Troubleshooting

  • Symptom
    bagheera$ javac HelloWorld.java 
    HelloWorld.java:1: Package figue not found in import.
    import figue.*;
           ^
    1 error
    bagheera$
    • Short answer

      The figue archive is not in your classpath
      bagheera$ echo $CLASSPATH
      
      bagheera$

    • Corrective action

      Put the TOOLS/aioli/modules/figue/classes/figue.jar file in your classpath

      bagheera$ CLASSPATH=TOOLS/aioli/modules/figue/
      classes/figue.jar 
      bagheera$ echo $CLASSPATH
      TOOLS/aioli/modules/figue/classes/figue.jar
      bagheera$
  • Symptom
    zephir$ javac HelloWorld.java 
    HelloWorld.java:6: Missing term.
        public final static void main(String[] args) {
                                                      ^
    HelloWorld.java:6: ';' expected.
        public final static void main(String[] args) {
                                                      ^
    HelloWorld.java:7: Invalid expression statement.
            final AWTFacade theFacade = new AWTFacade();
            ^
    3 errors
    zephir$
    • Short answer

      You are still using Java 1.0

      zephir$ java -version
      java version "1.0.2dp:11/13/96-15:42"
    • Corrective action

      Modify you path or install Java 1.1

      zephir$ PATH=/usr/local/java11/bin:$PATH
      zephir$ which java
      /usr/local/java11/bin/java
      zephir$ java -version
      java version "1.1.5"
      zephir$
  • Symptom
    bagheera$ java HelloWorld 
    Can't find class HelloWorld
    bagheera$
    • Short answer

      You testing directory is not in your CLASSPATH

      zephir$ echo $CLASSPATH
      TOOLS/aioli/modules/figue/classes/figue.jar
      zephir$
    • Corrective action

      Put the testing directory in your classpath

      zephir$ ls HelloWorld.class 
      HelloWorld.class
      zephir$ CLASSPATH=.:$CLASSPATH
      zephir$ echo $CLASSPATH
      .:TOOLS/aioli/modules/figue/classes/tutorial.jar
      zephir$

What's New

This page documents anything noteworthy about Figue, in reverse-chronological order.

Frequently-Asked Questions

From now on we will assume that you have chosen to extract Figue into a directory called TOOLS. You will have to modify the given commands appropriately with the accurate name.

* Index

General

Development Issues

* How do i get / install Figue ?

You may download and install Figue by going to the download page http://www.inria.fr/croap/figue/web/download.html

Back to index

* How can I get started with Figue ?

First check the Getting Started section. Then follow the tutorial for a guided tour.

Back to index

* What can i do if i can't get the "Getting Started" example to work ?

Check the troubleshooting section. Most of the time :

  • you are still using an unsupported JDK,
  • you have an erroneus CLASSPATH.
Back to index

* Where is the documentation ?

Check the reference manual for a complete list of all constructs.

Back to index

* How do I find out what has changed between each version ?

Check the What's New section.

Back to index

* How do i uninstall Figue ?

Remove the directory "aioli" from your local disk.

Back to index

* Which JDK version does Figue require ?

  • JDK 1.1
  • JDK 1.1 & SWING
Back to index

* Is Figue 100% Pure Java(TM) ?

The 100% Pure Java(TM) is a certification program that acts as a quality assurance seal of approval that a application is completely written in Java and can run on any JRE-supported platform. Figue is written entirely in Java and although not yet certified, should qualify for 100% Pure Java certification.

Back to index

* How do I deploy an applet containing Figue ?

Copy the archive "TOOLS/aioli/modules/figue/classes/figue.jar" to a directory relative to the applet's HTML file. Then put figue.jar in the archive list of your APPLET tag.

Back to index

* Can I create my own archive containing Figue ?

Classes are located in the directory "TOOLS/aioli/java/classes". All relevant classes are in packages :

  • figue
  • figue/box
  • figue/custom
  • figue/error
  • figue/event
  • figue/format
  • figue/geometry
  • figue/internal
  • figue/io
  • figue/io/xml
  • figue/jape
  • figue/multithread
  • figue/path
  • figue/resource
  • figue/selection

Be careful to preserve the figue directory hierarchy when you create the archive (In other words, be sure to understand the "using Jar files with packages" issue.

$ cd /tmp
/tmp
$ mkdir forJarCreation
$ cp -i -r TOOLS/aioli/java/classes/figue forJarCreation/
$ cd forJarCreation/
/tmp/forJarCreation
$ ls
figue
$ jar cf YouOwnArchive.jar figue/*.class figue/custom/*.class 
$ ls 
YouOwnArchive.jar  figue
bagheera$ cd /tmp
/tmp
$ rm -r forJarCreation/

Don't forget to put your own classes in the previous code ...

Back to index

* Which Figue classes do I need to jar up for my application ?

It depends on what your application does ... You may be able to be more selective with the "TOOLS/aioli/java/classes/figue" directory.

Here is a tip explaining how to improve your applet's download performance using navigator's Java console.

Back to index

* Can I get source code ?

Sources are provided in the directory "TOOLS/aioli/modules/figue/java" under the Copyright Notices agreement.

Back to index

How To

This page is comprised of hyperlinks to various topics in the Figue documentation that cover particular tasks, subjects, tips or tricks that developers commonly need to know about.

* Tasks

  • [PENDING : Under construction]

* Subjects

  • [PENDING : Under construction]

* Tips

  • [PENDING : Under construction]

* Tricks

  • [PENDING : Under construction]

Demos

* AÏOLI

AÏOLI is a toolkit that is dedicated to the construction of user-interface for interactive application. Here is an example of an application that displays java programs. The particularity of this example is that the mouse click is sensitive to the structure of the program.

AIOLI SAMPLE

Contributions

* [PENDING : Under construction]

Known Limitations and Bugs Report

* There is no Portable Way to Use/Install New Fonts With Java 1.1.

  • Easy way with Microsoft SDK
    new com.ms.awt.FontX("My_New_Font_Name",Font.BOLD,18);
    	      
  • Bad time with Sun JDK
    • You must modify your font.properties file in java/lib by creating a kind of alias between the abstract font name and the system font name (this suppose that you have the right permission over the file and imply that these modifications will be global for all users !!).
      My_New_Font.0=My_New_Font_System_Name,ANSI_CHARSET
      		  
    • In the Java code use the abstract name for creating an AWT font
      new Font("My_New_Font",Font.BOLD,18);
      		  
    See Fonts in Java

    The Java 1.2 seems to relax this constraint. Since the font constructor accept both logical font name and font face name.

* Size of Italic is not Equal to the Draw Area.

The size computed for some font with font metrics differs from the drawing and cleaning area. For example, the letter "f" in big italic will recover a part of the previous and next letters.

* Problem with drawBytes under Linux.

The drawBytes method doesn't work accuraty under Linux. The current font is not always correct. Using the drawString method is the current workaround for Linux. The penality is an heavy object allocation (bytes to string conversion and object allocation while using drawString).

The Source

Current Workaround
Use drawBytes instead of drawString (Heavy cost of string conversion).

The Source

* Wrong Layout of Heavy Component in a Custom Container on SDK.

We encounter strange offsets on Microsoft SDK and Internet Explorer when subclassing Container and laying out manually heavyweight component, such scrollbar.

The Source

Current Workaround
Subclass Panel instead of Container.

The Source

* Microsoft's VM can't Handle Accuratly Sun's Optimized Code.

When using the option "-O" with javac some public accessors to a private member seem to be inlined and cause illegal access exception when running on Microsoft's virtual machine. Side effect, an inner class can't access freely to private members or methods of the enclosing class on Microsoft SDK and Internet Explorer.

The Source

Current Workaround
Compile without optimization or remove the private modifier in the enclosing class.

The Source

* The Scrollbar's Unit Increment is not Taken into Account by some JDK.

The setUnitIncrement method seems to have no effect with some JDK. The value that is added (subtracted) when scrolling with the arrows is 1.

The Source

Current Workaround
Move to another Java version (the JDK 1.1.6 on NT seem's to correct this feature), or deal with the line increment manualy.

The Source

Useful Information

* Design Patterns

* Coding Standards

* Java

* XML

* UML

Help

* Menus

Go thereLinks to another major section
HereThe current section

* Tips and Tricks

TIPSome tip
Some pitfall

* Navigational Cues

OutLinkLinks to a different Web site
Scroll UpLinks to another place further up on the same page
Scroll DownLinks to another place further down on the same page
Class/MethodLinks to the java application programming interface

* Multimedia Cues

PictureLinks to a standalone image or a page dominated by a large graphic
SoundDownloads and plays a digital sound file
MovieDownloads and plays a movie file
Virtual Reality3D movie glasses connect you to a VRML site or QTVR file

* Page Type Cues

Fill-Out FormLinks to a page with an interactive fill-out form
Email LinkPops up a standard mailto: email dialog box
SearchLinks to a search page
Secure PageLinks to a secured or password-protected page
ListLinks to a page that is entirely composed of links to other pages
NoteLinks to a short, explanatory page that contains no further links
HelpLinks to helpful instructions or information

* Net Services Cues

Downloadable FileLinks to an FTP archive and begins to download a file to your disk drive
FTP DirectoryLinks to an FTP directory from which you can select a file to download
TelnetLinks to a Telnet site
NewsLinks to a News site
Text OnlyLinks to unformatted plain text, such as a Gopher site

* Other Markers

New Marker
Updated Marker
Smiley replacement. For the especially nostalgic,
a sideways smiley is also included. :-)

* Dummy Link for QBullets

Many of the QBullet links in this section are just dummy links pointed to this page. Their only function is to show you what QBullets look like next to hypertext links. Click the back arrow of your browser to return to the place you came from.


Copyright ©1998 INRIA