Re: Universal network graphics language
wei@xcf.Berkeley.EDU (Pei Y. Wei)
Date: Fri, 28 Jan 94 08:02:44 -0800
From: wei@xcf.Berkeley.EDU (Pei Y. Wei)
Message-id: <9401281602.AA21358@xcf.Berkeley.EDU>
To: sleator@cs.cmu.edu
Subject: Re: Universal network graphics language
Cc: www-talk@www0.cern.ch
Content-Length: 3391
In some ways, I think the ViolaWWW browser is developing some
capabilities that could possibly be useful for the ideas being
discussed here, particuarily relevant along the lines of "objects"
and "scripts".
Right now, the ViolaWWW that is under development can embed viola
objects/applications inside of HTML documents. This is useful in that,
for example, if you needed a hyper-active tree widget in your HTML
document, and HTML+ doesn't happen to define it, you could build it as
a mini viola application. Same thing with customized input-forms that
could conceivably do complicated client-side checking. Or, complex
tables. Or, a chess board.
You'd basically have a simple GUI toolkit and language at your disposal,
along with HTML.
To make this a bit more concrete, here's an simple example of one
viola object being embedded into a HTML doc.
-----------------------------
<P>Watch Big Bird count from zero to infinity:
<LINK REL="vobj" HREF="http://sesame.st/count.v">.
-----------------------------
Listed below is what the file "http://sesame.st/count.v" would look
like, just to give people a feel of the language:
-----------------------------
\class {txtLabel}
\name {count}
\script {
/* This object counts and displays
*/
switch (arg[0]) {
case "setup":
/* arg[1] == parent object
*
* Convention sez to link to the parent object (the
* document object).
*/
set("parent", arg[1]);
after(50000, self(), "tic"); /* start counting in ~5 secs */
return;
break;
case "tic":
/* Increment and display. Call self after 10000 micro secs.
*/
set("label", n++);
render();
after(10000, self(), "tic");
return;
break;
}
usual();
}
\font {normal_large}
\width {200}
\height {50}
\BGColor {darkGreen}
\FGColor {white}
\BDColor {black}
\
-----------------------------
To implement the chess board interface, you'd *basically* write a
mini viola application that consists of: objects for representing
board-cells, chess pieces; an object doing the talking with the chess
server; a clock object; text fields for IRC type communications...
The ViolaWWW browser could fetch this chess-board-application
(embedded in HTML or not) from a WWW server, and renders it on the fly.
Now, what I've just described is, I think, more of GUI than Graphics
of a "network graphics language". But the class hierarchy could be
expanded, and grown, to include other classes of rendering objects.
The language syntax could be more abbreviated to make program size
smaller. The viola objects abstraction could be raised to improve
cross platform portability. Viola could be ported to other platforms.
Security could be better improved without giving up too much flexibility
(currently every object has a security tagging, and all objects
instantiated from foreign sources are marked as untrusted to system
priviledges...). etc.
-Pei
Pei Y. Wei (wei@ora.com)
O'Reilly & Associates, Inc.
PS. you might want to forward this to the original To:list. My machine
ran out of machine id spots, it said.