Differences between revisions 1 and 5 (spanning 4 versions)
Revision 1 as of 2009-03-22 13:30:55
Size: 43
Editor: anonymous
Comment:
Revision 5 as of 2009-03-22 13:47:20
Size: 3436
Editor: anonymous
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
ScriptTree hier beschreiben... ====== ScriptTree ======
Created Donnerstag 12 März 2009
Line 3: Line 4:
mom ... draft about the future of scripting bindings, object tree ...

needs renaming some funcs in c++

The listed funcs and meths are not complete, yet.

==== TODO: ====

* filter/parameter:
 * where will they processed in future if we have sw-frei0r and gl-shaders effects?
 * co exist?
 * apply a filter once to a 'static' layer e.g. make some drawings on [[GeoLayer]] then apply a frei0r blur once an keep that result


==== namespace ====

put all Objects into global space or put them into a Freej Object like this:

{{{
freej = new Freej()
movie = new freej.MovieLayer('lol') // or = new MovieLayer(...) ?!

freej.layers.push(movie)
move.active(true)
movie.start()
}}}


==== getter/setter ====

getter/setter:

in spidermonkey no real differences between props and meths, props can be c++ funcs, too.

{{{
currval = movie.active // we can define a watcher
                       // in js and/or c (!)
currval = movie.active()

oldval = movie.active(new_val)
}}}

reason for making funcs instead of props, it's easier to script a "toggle",
e.g. toggle active:

{{{
state = movie.active(!state)
}}}

rule of thumb: we use props for r/o values only

==== the tree ====

{{{
Legend:

* obj
+ meth
> callback
- prop (r/o, usually?!)

note: this wiki parser makes it difficult to keep a correct indent ...
every script object is a 'baseObj',
every Layer/Controller/Filter is an Entry
}}}

 * baseObj [to discuss]
{{{
 + label() [for display, short e.g. LAY, MOV, CAM1, WII2]
 - name/id [device name/id]
 - filename [url, set via open()]
}}}
 * Freej (stage size, bpp) [Context]
{{{
  - layers [linklist]
  - controllers [linklist]
  - output [linklist, encoders, viewports, audio[alsa,jack...], to another freej/layer?]
  - ...
  + reset(new file) / run_js(file) => or a js-script object, see below
  + resize(w,h)
  - width, heigth
}}}
 * LinkList
{{{
  + add=push, pop, shift, unshift, remove(n, obj), insert(pos) [e.g. arrange Layer stack]
  - n, length [no of entries]
  > pre_add [can deny add to list e.g. type check]
  > post_add [e.g. autostart movie]

}}}
 * Entry
{{{
  + move: up, down, top, bottom
  + remove
  - first, last, next, prev [Entry]
  - list [it's [[LinkList]] or NULL]
  + active()
  + open, close
  > eof [end of movie, device disconnect]
}}}
  * Controller
   * JoyStick
   * Keyboard
   * Midi
   * Mouse
   * Trigger (->thread)
   * ViMo
   * Wii
   * Osc
   * Console/slang
  * Layer
{{{
   + x,y,zoom,resize,blit, **crop**, ...
   - width, heigth
   - filter [linklist, frei0r]
   +- audio (?!)
   + set Limits(mem and/or size)
   * CamLayer [add camctrl ?!]
   * Flash
   * Geo [sdl gfx, how about other like cairo? gl?]
   * Image
   * MovieLayer
    add eof callback to Entry ?
   * Particle
   * Text
   * xgrap [make desktop movie, vnc]
}}}
 * Script [js script object]
{{{
  new context for live scripting or running content from web
  in a different context (->security !)
  yes, u can spawn a seperate script context which _may_ share Objects
  reload a modified script at runtime! (perl never reparses a module twice, python?)

  + open, parse, run
  + init_std_classes, init_freej_classes <<< remember the .exec() !!!
}}}

==== missing: ====

{{{
* JSThread
+ start, stop, set_fps, get_fps
}}}

ScriptTree

Created Donnerstag 12 März 2009

draft about the future of scripting bindings, object tree ...

needs renaming some funcs in c++

The listed funcs and meths are not complete, yet.

TODO:

* filter/parameter:

  • where will they processed in future if we have sw-frei0r and gl-shaders effects?
  • co exist?
  • apply a filter once to a 'static' layer e.g. make some drawings on GeoLayer then apply a frei0r blur once an keep that result

namespace

put all Objects into global space or put them into a Freej Object like this:

freej = new Freej()
movie = new freej.MovieLayer('lol') // or = new MovieLayer(...) ?!

freej.layers.push(movie)
move.active(true)
movie.start()

getter/setter

getter/setter:

in spidermonkey no real differences between props and meths, props can be c++ funcs, too.

currval = movie.active // we can define a watcher
                       // in js and/or c (!)
currval = movie.active()

oldval = movie.active(new_val)

reason for making funcs instead of props, it's easier to script a "toggle", e.g. toggle active:

state = movie.active(!state)

rule of thumb: we use props for r/o values only

the tree

Legend:

* obj
+ meth
> callback
- prop (r/o, usually?!)

note: this wiki parser makes it difficult to keep a correct indent ...
every script object is a 'baseObj',
every Layer/Controller/Filter is an Entry
  • baseObj [to discuss]

        + label() [for display, short e.g. LAY, MOV, CAM1, WII2]
        - name/id [device name/id]
        - filename [url, set via open()]
  • Freej (stage size, bpp) [Context]

                - layers [linklist]
                - controllers [linklist]
                - output [linklist, encoders, viewports, audio[alsa,jack...], to another freej/layer?]
                - ...
                + reset(new file) / run_js(file) => or a js-script object, see below
                + resize(w,h)
                - width, heigth

                + add=push, pop, shift, unshift, remove(n, obj), insert(pos) [e.g. arrange Layer stack]
                - n, length [no of entries]
                > pre_add [can deny add to list e.g. type check]
                > post_add [e.g. autostart movie]
  • Entry

                + move: up, down, top, bottom
                + remove
                - first, last, next, prev [Entry]
                - list [it's [[LinkList]] or NULL]
                + active()
                + open, close
                > eof [end of movie, device disconnect]
  • Controller
    • JoyStick

    • Keyboard
    • Midi
    • Mouse
    • Trigger (->thread)

    • ViMo

    • Wii
    • Osc
    • Console/slang
  • Layer

                        + x,y,zoom,resize,blit, **crop**, ...
                        - width, heigth
                        - filter [linklist, frei0r]
                        +- audio (?!)
                        + set Limits(mem and/or size)
                        * CamLayer [add camctrl ?!]
                        * Flash
                        * Geo [sdl gfx, how about other like cairo? gl?]
                        * Image
                        * MovieLayer
                                add eof callback to Entry ?
                        * Particle
                        * Text
                        * xgrap [make desktop movie, vnc]
  • Script [js script object]

                new context for live scripting or running content from web
                in a different context (->security !)
                yes, u can spawn a seperate script context which _may_ share Objects
                reload a modified script at runtime! (perl never reparses a module twice, python?)

                + open, parse, run
                + init_std_classes, init_freej_classes <<< remember the .exec() !!!

missing:

* JSThread
+ start, stop, set_fps, get_fps

ScriptTree (last edited 2009-03-22 13:47:20 by anonymous)