[comp.windows.x.announce] Go is available

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
	
-------------------------------------------------------------------------------