[REBOL] Re: How to use system/*
From: brett::codeconscious::com at: 28-Dec-2001 8:00
Hi Jason,
> write %vid-dump.r read system/view/vid/vid-styles
>
> ok..
> ..impressive: Can anyone please suggest ways to approach this?
Well here's a leg up.
system/view/vid/vid-styles appears to me to be the master stylesheet where
BOX, FIELD, AREA, etc live.
It is a block of pairs, each pair being the style name and the style
definition as an object. This style
definition is a smart template for making VID faces.
Stylesheets can be created with the STYLIZE function.
You can see all the styles listed in derivation order in my vid-ancestry.r
program which also makes an attempt
at showing the full definition of the style as it might have been given to
STYLIZE.
Most of the styles use a feel object. For the master stylesheet styles
(vid-styles), most of these feel objects live
under system/view/vid/vid-feel. If you right-click on a style in
vid-ancestry.r you are presented with the feel object
of the style, if the program can it will identify which feel object it is.
In my mind I have this picture of the life and times of a style:
(A) The style definition (a block of VID dialect)
(B) The style object created from the definition (A) and stored in a
stylesheet by STYLIZE
(C) A face made from the style (B) by execution of LAYOUT.
Something to note is that the styles contain fields that are relevant only
at different times in the style's "lifecycle".
In (B) the style object, there is a field FACETS which contains most of the
definition from (A). There are also fields
here named WORDS and INIT which are used by LAYOUT.
Finally at (C) things like COLOR, TEXT etc are relevant.
At some point you should read through the source of LAYOUT the function that
ultimately makes use of all these styles.
And you can have a read through my vid-notes.r program which is in bad need
of rewrite, has some misstatements,
but does have some clues. It has a big weakness in that it has not
distinguised between (A), (B) and (C) much at all.
Both of my programs can be found in the docs folder of my rebsite "Code C."
Brett.