J.Davy@my.bull.fr (Jacques Davy) (05/17/91)
ANNOUNCE: Go-1.0.alpha is now available on: export.lcs.mit.edu (18.30.0.238) in /contrib/go-1.0.a.tar.Z avahi.inria.fr (138.96.24.30) in /pub/go Mailing lists for discussions: go-talk@frmy.bull.fr go-talk-request@frmy.bull.fr go-bug@frmy.bull.fr Jacques Davy Bull, Multimedia Product Line (R&D) Project Manager 7 rue Ampere 91300 Massy Cedex France Tel: (33 1) 69 93 88 57 Fax: (33 1) 69 93 76 69 Email: davy@frmy.bull.fr ------------------------------------------------------------------------------- COPYRIGHT: Copyright (c) 1990, 1991 Bull S.A., Paris, France Permission to use, copy, modify, distribute FREE OF CHARGE this software and its documentation for any purpose is hereby granted without fee, provided that (i) the above copyright notices and this permission notice appear in all copies of the software and related documentation, and (ii) the name of Bull may not be used in any advertising or publicity relating to the software without the specific, prior written permission of Bull. The permission to distribute or sublicense FOR CHARGE either this software (all or part) or products derived from this software is subject to prior licence from Bull under separate agreement. The information in this software is subject to change without notice and should not be construed as a commitment by Bull. Bull assumes no responsibility for the use or inability to use any of its software. The software is provided "AS IS" without warranty of any kind, and Bull expressly disclaims all implied warranties, including but not limited to the implied warranties of merchantability and fitness for a particular purpose. In no event shall Bull be liable for any special, incidental, indirect or consequential damages of any kind, or any damages whatsoever resulting from loss of use, data or profits, whether or not advised of the possibility of damage, and on any theory of liability, arising out of or in connection with the use or performance of this software. ------------------------------------------------------------------------------- PRESENTATION: Go A Graphical And Interactive C++ Toolkit For Application Data Presentation And Editing Jacques Davy Bull - Multimedia Product Line email: davy@my.bull.fr 5th Annual Technical X Conference on the X Window System 14-16 January 1991 ABSTRACT This paper gives a short presentation of Go which is an application programmer toolkit provid- ing support for the presentation and the interac- tion of the application objects. Go does not overlap existing de facto standard user interface toolkits but intends to complete them with an extensible portable object oriented layer for 2D graphic presentation. Go is written in C++. 1. Introduction not allow to present complex graphic (structured graphic, A typical Graphical User images, formatted text, Interface (GUI) includes ...). (almost) everything needed for the dialog between the For certain domains (CAD- application and the user. It CAM, publishing, tutoring, allows the user to control geography, decision support, the application process ...), applications have to through dialog objects such display graphical data with as menus, dialog boxes, list much more sophisticated boxes, .... It also provides structures and want the user objects to display simple to interact with them. This data (simple text, pixmaps). requires from the program- These functionnalities match mers a high expertise in low the needs of a wide range of level graphic libraries applications, but they do along with an important May 17, 1991 - 2 - development task. Yet the the application context. In reusability is not addition, applications need guaranteed at all. specific graphical presenta- tion and behaviour depending Go intends to help graphical on their specific domain application programmers by (i.e. electronic component providing them with a objects are desired by CAD- library which may be CAM applications) and the integrated into existing GUI number of object types is environments: Xt toolkits unlimited. (OSF/MotifTM, OpenLookTM, ...) but also MS/WindowsTM, For these reasons, Go has and on top of other graphic been designed extensible and systems (i.e. PostScriptTM). portable (independent of the underlaying graphic system), 2. Go Overview interactive and user custom- izable. As previously stated, GUI environments may be divided 2.1. Extensibility into two components: the user dialog and the data It is not possible to create presentation and interac- a limited graphic object tion. The user dialog allows library which matches all the user to control the applications needs in term application process and is of shape, complexity, usually provided by existing behaviour, etc ... products (Motif, OpenLook, Windows, ...). Go is an object oriented toolkit written in C++ (but It is clear that the appli- also provides a C language cation is relatively binding for C applications). independent of the way the Using this object oriented user generates commands technology, Go is fully (i.e. the action may be extensible allowing the triggered by a push button application programmer to or a pulldown menu item, it easily create his/her own does not matter for the graphic objects. Creating a application). The user dia- new object class may be per- log may be defined for an formed by subclassing a expert or for a novice and predefined graphic object may be prototyped and gen- class or by subclassing the erated by an Interface Go super class. Builder. For example, the code for For the application data defining the GoRectangle presentation however, things class (implementing a rec- are quite different. The tangle object defined by its application is very con- outline and its background cerned about its data attributes and able to be presentation. This presenta- resized, deformed, rotated, tion and the behaviour of ...) as a derivation from the displayed objects, the the GoPolygon class is only graphical constraints 200 lines including the C between objects depend on language binding, C++ and C May 17, 1991 - 3 - header files. 2.3. User Interaction Subclassing the Go super Go offers a powerful feature class offers a wide open to interact with graphic range of any kind of imple- objects. The interaction is mentation (i.e. ``light- implemented by a dedicated weight'' Go are possible). object class (GoUI) which interprets user events 2.2. Portability through ascii description files, and by Sensor objects Data presentation is very which make graphic objects close to the application sensitive and give to the itself and must be portable user a feedback of this sen- across various platforms sitivity. (Unix stations, PCs). Sensors may call Go methods, Go is Window/Graphic system but also any methods or independent and can be functions callable from a easily ported on top of user event. Such methods or standard existing platforms functions have to be expli- by subclassing the GoInter- citely declared to GoUI. face class. A GoInterface subclass implements the Several Sensor instances may graphic primitives be attached to a single (geometric, text, image) object allowing sensitive used by Go instances at area definitions. drawing time. It is also responsible for delivering 2.4. Application Interac- events coming from the win- tion dow system. Presently, an XGoInterface and an XtGoIn- A Go based application acts terface exist for the X Win- on objects through methods dow System. and it may be notified of any Go modification (coordi- A Motif based application nate system, attributes, ... may easily take advantage of and even creation and des- Go by using the Graphic truction) by a callback Widget of Bull Widget Set mechanism. Callbacks may be (BWS). The WGoInterface sub- pre-conditions (the callback class (for MS-Windows) is procedure is called before under development and the the action and can refuse or PSGoInterface (for modify the action) or post- PostScript) is planed. conditions (the callback procedure is called after Switching between different the action is performed) and GoInterface instances may be allow to implement con- dynamic: for example, gen- straints on Go instances. erating a PostScript file describing a graphical Go does not intrinsically scheme displayed in an X allow geometric constraints, window may be performed by but it provides support for replacing the XGoInterface constraint management. For instance by a PSGoInterface example, for the move opera- instance. tion, a pre-condition might May 17, 1991 - 4 - control the confinement of are the main information the object and/or a post- used by the draw routine. condition might require other object alignments. Any Go subclass inherits the Constraints are not Go class methods. These exclusively geometric and it methods mostly involve the is possible to combine coordinate system modifica- graphical constraints with tion (move, resize, rotate, semantic constraints. A set setCoordSys, ...) and the of predefined geometric con- object tree management straints such as alignments (reparent, next, child, or confinement will be ...). These methods act offered. either on individual instances or on subtrees. An application may also Other methods for the condi- associate private data with tion and association manage- a graphic object instance ment (add or remove (i.e. private data may be pre/postCond, add, remove, hypermedia references com- set and get association) are bined with sensitive areas also inherited of the Go (Sensors)). class but they do not involve subtrees. 2.5. Go Structure Additionnal methods are A Go is a node of a tree defined for each subclass hierarchy of Go's, it may be Go composite and have Go 2.6. Predefined Go subc- children. A subtree may be lasses viewed as a leaf (access to a node inside the subtree is The application developper forbidden), in that case, may create his/her own Go the subtree is seen as an subclasses but Go offers a object. set of predefined Go subc- lasses usable directly in The graphic object Go applications or as superc- geometry is defined in its lasses of new Go subclasses. own coordinate system. The Go coordinate system is not These predefined Go are necessarily orthogonal and GoGeometric and subclasses it is expressed either in (polyline, polygon, curves, the Go absolute coordinate bezier, cubic, ...), GoText system (which is in millime- and subclasses (mono font or ters and its origin is the multi font and attributes) upper left corner) or rela- and GoImage (color, gray or tively to another coordinate monochrome). Other classes system (typically its parent are under development coordinate system). Any (graph, tree, ...). coordinate system modifica- tion is allowed (scaling on 2.7. Go Import/Export X or Y axes, rotation, miror, ...). The coordinate The application may want to system, the output attri- export a Go structure to the butes (colors, line styles, external world or to import fonts, ...) and private data from an other format a May 17, 1991 - 5 - structured graphic or image. 4. Acknowledgements Go allows to import/export This project is funded by Go subtrees from/to various the Multimedia Product Line existing formats by using a at Bull and by the European GoStream subclass instance. Economic Community in the Go does not care about the MultiWorks project. stream format but uses instead a GoStream object in I would like to thank order to store or retrieve Olivier Jojic, Philippe itself. A Go based applica- Smadja, Gilles Be'nati, tion may use GoStream to Michel Andre' and Aline insert/restore private Jacomet who spent and con- information in/from the tinue to spend lot of time stream. GoStream may be the on designing, (re)writing privileged mechanism for and testing Go. I don't for- inter application communica- get the contribution of Syl- tion (e.g. cut/copy/paste). vie Be'gard, Patricia Langle and Aboobacker at the begin- A proprietary (binary and ning of the project. ascii) format exists and TIFF, Compound Text, CGM are A special thank to the Free planned. Software Foundation who allowed us to develop in C++ 3. Status in a comfortable environ- ment. The current version of Go is the version 0.3. A demons- 5. Contact tration program has been showed during the last Jacques Davy ESPRIT Conference Week Bull SA (Brussels - November 1990). 7, rue Ampe`re - 91343 Massy Cedex France The version 1.0 is under development, the beta Tel: (33 1) 69 93 88 57 release should be available Fax: (33 1) 69 93 76 69 by the end of March. email: davy@my.bull.fr In 1991, we are going to promote Go version 1.0 and to prepare next versions. Next versions will support new window/graphic systems and new import/export for- mats. We will develop new predefined Go subclasses and constraints. We are also thinking about extensions such as 3D and animation and to integrate Go in a mul- timedia application develop- ment platform. Some Go based applications are also needed. May 17, 1991 -------------------------------------------------------------------------------