mirror of
https://github.com/dyne/FreeJ.git
synced 2026-06-16 12:59:33 +02:00
* Trigger Controller
* cynosure.js update git-svn-id: svn://dyne.org/rastasoft/freej/trunk@900 383723c8-4afa-0310-b8a8-b1afb83214fc
This commit is contained in:
@@ -224,4 +224,22 @@ JoystickController.prototype.hatmotion = function (which, hat, value);
|
||||
*/
|
||||
JoystickController.prototype.button = function (which, button, state);
|
||||
|
||||
//////////////////////////////
|
||||
// Trigger Controller
|
||||
|
||||
/** The TriggerController constructor creates a trigger controller
|
||||
@class The Trigger Controller holds callbacks to javascript. You can use the frame callback to process various stuff, instead using run().
|
||||
|
||||
@constructor
|
||||
@base Controller
|
||||
@returns a new TriggerController
|
||||
*/
|
||||
function TriggerController() { };
|
||||
TriggerController.prototype = new Controller();
|
||||
|
||||
/** This will be called each frame.
|
||||
Don't waste too much time here!
|
||||
|
||||
@type void
|
||||
*/
|
||||
TriggerController.prototype.frame = function ();
|
||||
|
||||
+89
-133
@@ -1,3 +1,22 @@
|
||||
/* FreeJ example scripts
|
||||
* (c) Copyright 2005 Christoph Rudorff aka MrGoil <leitzentrale@telebel.de>
|
||||
*
|
||||
* This source code is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Public License as published
|
||||
* by the Free Software Foundation; either version 2 of the License,
|
||||
* or (at your option) any later version.
|
||||
*
|
||||
* This source code is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* Please refer to the GNU Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Public License along with
|
||||
* this source code; if not, write to:
|
||||
* Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
This is an example script by Mr.Goil
|
||||
how to to Cynosure
|
||||
@@ -7,24 +26,80 @@ $Id: $
|
||||
curColor = 0;
|
||||
curBase = curColor;
|
||||
shadowWidth = 2 ; //get_integer_resource ("shadowWidth", "Integer");
|
||||
elevation = 10; // get_integer_resource ("elevation", "Integer");
|
||||
elevation = 10; //get_integer_resource ("elevation", "Integer");
|
||||
sway = 30; //get_integer_resource ("sway", "Integer");
|
||||
tweak = 20; //get_integer_resource ("tweak", "Integer");
|
||||
gridSize = 10; //get_integer_resource ("gridSize", "Integer");
|
||||
timeLeft = 0;
|
||||
ncolors = 8; //get_integer_resource ("colors", "Colors");
|
||||
iterations = 100; //get_integer_resource ("iterations", "Iterations");
|
||||
MINCELLSIZE = 50;
|
||||
MINRECTSIZE = 16;
|
||||
MINCELLSIZE = 64;
|
||||
MINRECTSIZE = 24;
|
||||
THRESHOLD = 100;
|
||||
|
||||
colors = new Array(0xa03000ff, 0x006000ff, 0x336000ff, 0x00ff00ff, 0xc20000ff, 0x0000c0ff, 0xc0c0c0ff, 0x30f0f0ff, 0x00ff90ff);
|
||||
// should come from freej - how about resize event?
|
||||
width=200; height=600;
|
||||
width=1024; height=768;
|
||||
width=800; height=800;
|
||||
width=400; height=300;
|
||||
|
||||
geo = new GeometryLayer();
|
||||
add_layer(geo);
|
||||
Draw();
|
||||
|
||||
trigger = new TriggerController();
|
||||
register_controller(trigger);
|
||||
trigger.frame = function() { Draw(); };
|
||||
|
||||
kbd = new KeyboardController();
|
||||
register_controller(kbd);
|
||||
kbd.released_q = function() { quit(); }
|
||||
kbd.released_x = function() { Draw(); }
|
||||
|
||||
mc = new MidiController(); // ('descr')
|
||||
register_controller(mc);
|
||||
ret = mc.connect_from(0, 20, 0);
|
||||
|
||||
mc.event_ctrl = function (ch, func, value) {
|
||||
switch (ch) {
|
||||
case 0:
|
||||
switch (func) {
|
||||
case 2:
|
||||
shadowWidth = value;
|
||||
break;
|
||||
case 3:
|
||||
elevation = value;
|
||||
break;
|
||||
case 4:
|
||||
sway = value;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
switch (func) {
|
||||
case 2:
|
||||
tweak = value+1;
|
||||
break;
|
||||
case 3:
|
||||
gridSize = value/4 +1;
|
||||
break;
|
||||
case 4:
|
||||
iterations = value*2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
switch (func) {
|
||||
case 2:
|
||||
MINRECTSIZE = value;
|
||||
break;
|
||||
case 3:
|
||||
MINCELLSIZE = value;
|
||||
break;
|
||||
case 4:
|
||||
THRESHOLD = value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function integer(i) {
|
||||
if (i>0)
|
||||
@@ -33,19 +108,15 @@ function integer(i) {
|
||||
return Math.ceil(i)
|
||||
}
|
||||
|
||||
var i = 0;
|
||||
function Draw() {
|
||||
//debug("draw color3=" + colors[3]);
|
||||
var i = 0;
|
||||
while (1) {
|
||||
if (iterations > 0 && ++i >= iterations) {
|
||||
for (j=0; j<10; j++) {
|
||||
if ((iterations > 0) && (++i >= iterations)) {
|
||||
i = 0; // clearScreen
|
||||
geo.rectangle_fill(0,0,width,height,0);
|
||||
//debug("clear\n");
|
||||
}
|
||||
paint();
|
||||
//debug("loop" + i + "col2:" + colors[2]);
|
||||
run(0.01);
|
||||
}
|
||||
geo.rectangle_fill(0,0,width,height,0x000000FF);
|
||||
}
|
||||
paint();
|
||||
}
|
||||
}
|
||||
|
||||
function paint() {
|
||||
@@ -108,23 +179,18 @@ function paint() {
|
||||
curY + elevation + curHeight,
|
||||
0x00000060);
|
||||
|
||||
/* Draw the edge */
|
||||
/* Draw the edge */
|
||||
if (shadowWidth > 0)
|
||||
geo.rectangle_fill(curX + shadowWidth, curY + shadowWidth,
|
||||
curX + shadowWidth + curWidth,
|
||||
curY + shadowWidth + curHeight,
|
||||
0x000000ff);
|
||||
|
||||
//XFillRectangle(dpy, window, fg_gc, curX, curY, curWidth, curHeight);
|
||||
//geo.rectangle_fill(curX, curY, curX+curWidth, curY+curHeight, fg_gc);
|
||||
geo.rectangle_fill(curX, curY, curX+curWidth, curY+curHeight, fg_gc);
|
||||
geo.rectangle_fill(curX, curY, curX+curWidth, curY+curHeight, fg_gc)
|
||||
|
||||
/* Draw a 1-pixel black border around the rectangle */
|
||||
//XeDrawRectangle(dpy, window, bg_gc, curX, curY, curWidth, curHeight);
|
||||
geo.rectangle(curX, curY, curX+curWidth, curY+curHeight, 0x00000000);
|
||||
//debug("j=" + j + " color = " + fg_gc);
|
||||
}
|
||||
//debug("i=" + i);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -176,114 +242,4 @@ function genNewColor() {
|
||||
}
|
||||
|
||||
|
||||
quit();
|
||||
/*
|
||||
REGISTER_CLASS("Layer",
|
||||
REGISTER_CLASS("ParticleLayer",
|
||||
REGISTER_CLASS("GeometryLayer",
|
||||
REGISTER_CLASS("VScrollLayer",
|
||||
REGISTER_CLASS("ImageLayer",
|
||||
REGISTER_CLASS("CamLayer",
|
||||
REGISTER_CLASS("MovieLayer",
|
||||
REGISTER_CLASS("MovieLayer",
|
||||
REGISTER_CLASS("TextLayer",
|
||||
REGISTER_CLASS("Effect",
|
||||
|
||||
JS(cafudda) {
|
||||
JS(pause) {
|
||||
JS(quit) {
|
||||
JS(rem_layer) {
|
||||
JS(add_layer) {
|
||||
JS(list_layers) {
|
||||
JS(layer_list_effects) {
|
||||
JS(fullscreen) {
|
||||
JS(set_resolution) {
|
||||
JS(stream_start) {
|
||||
JS(stream_stop) {
|
||||
JS(freej_scandir) {
|
||||
JS(freej_echo) {
|
||||
JS(freej_strstr) {
|
||||
JS(debug) {
|
||||
JS(rand) {
|
||||
JS(srand) {
|
||||
JS(layer_constructor) {
|
||||
JS(effect_constructor) {
|
||||
JS(entry_down) {
|
||||
JS(entry_up) {
|
||||
JS(entry_move) {
|
||||
JS(layer_set_blit) {
|
||||
JS(layer_get_blit) {
|
||||
JS(layer_get_name) {
|
||||
JS(layer_get_filename) {
|
||||
JS(layer_set_position) {
|
||||
JS(layer_get_x_position) {
|
||||
JS(layer_get_y_position) {
|
||||
JS(layer_set_blit_value) {
|
||||
JS(layer_get_blit_value) {
|
||||
JS(layer_activate) {
|
||||
JS(layer_deactivate) {
|
||||
JS(layer_add_effect) {
|
||||
JS(layer_rem_effect) {
|
||||
JS(layer_rotate) {
|
||||
JS(layer_zoom) {
|
||||
JS(layer_spin) {
|
||||
JS_CONSTRUCTOR("GeometryLayer",geometry_layer_constructor,GeoLayer);
|
||||
JS(geometry_layer_clear) {
|
||||
JS(geometry_layer_pixel) {
|
||||
JS(geometry_layer_hline) {
|
||||
JS(geometry_layer_vline) {
|
||||
JS(geometry_layer_rectangle) {
|
||||
JS(geometry_layer_rectangle_fill) {
|
||||
JS(geometry_layer_line) {
|
||||
JS(geometry_layer_aaline) {
|
||||
JS(geometry_layer_circle) {
|
||||
JS(geometry_layer_aacircle) {
|
||||
JS(geometry_layer_circle_fill) {
|
||||
JS(geometry_layer_ellipse) {
|
||||
JS(geometry_layer_aaellipse) {
|
||||
JS(geometry_layer_ellipse_fill) {
|
||||
JS(geometry_layer_pie) {
|
||||
JS(geometry_layer_pie_fill) {
|
||||
JS(geometry_layer_trigon) {
|
||||
JS(geometry_layer_aatrigon) {
|
||||
JS(geometry_layer_trigon_fill) {
|
||||
JS_CONSTRUCTOR("ParticleLayer",particle_layer_constructor,GenLayer);
|
||||
JS(particle_layer_blossom) {
|
||||
JS_CONSTRUCTOR("ImageLayer",image_layer_constructor,ImageLayer);
|
||||
JS(image_layer_open) {
|
||||
JS_CONSTRUCTOR("VScrollLayer",vscroll_layer_constructor,ScrollLayer);
|
||||
JS(vscroll_layer_append) {
|
||||
JS(vscroll_layer_speed) {
|
||||
JS(vscroll_layer_linespace) {
|
||||
JS(vscroll_layer_kerning) {
|
||||
JS_CONSTRUCTOR("V4lLayer",v4l_layer_constructor,V4lGrabber);
|
||||
JS(v4l_layer_chan) {
|
||||
JS(v4l_layer_freq) {
|
||||
JS(v4l_layer_band) {
|
||||
JS_CONSTRUCTOR("AviLayer",avi_layer_constructor,AviLayer);
|
||||
JS(avi_layer_forward) {
|
||||
JS(avi_layer_rewind) {
|
||||
JS(avi_layer_mark_in) {
|
||||
JS(avi_layer_mark_in_now) {
|
||||
JS(avi_layer_mark_out) {
|
||||
JS(avi_layer_mark_out_now) {
|
||||
JS(avi_layer_getpos) {
|
||||
JS(avi_layer_setpos) {
|
||||
JS(avi_layer_pause) {
|
||||
JS_CONSTRUCTOR("TxtLayer",txt_layer_constructor,TxtLayer);
|
||||
JS(txt_layer_print) {
|
||||
JS(txt_layer_size) {
|
||||
JS(txt_layer_font) {
|
||||
JS(txt_layer_advance) {
|
||||
JS(txt_layer_blink) {
|
||||
JS(txt_layer_blink_on) {
|
||||
JS(txt_layer_blink_off) {
|
||||
JS_CONSTRUCTOR("VideoLayer",video_layer_constructor,VideoLayer);
|
||||
JS(video_layer_seek) {
|
||||
JS(video_layer_forward) {
|
||||
JS(video_layer_rewind) {
|
||||
JS(video_layer_mark_in) {
|
||||
JS(video_layer_mark_out) {
|
||||
JS(video_layer_pause) {
|
||||
|
||||
*/
|
||||
|
||||
@@ -77,6 +77,7 @@ freej_SOURCES = \
|
||||
kbd_ctrl.cpp \
|
||||
joy_ctrl.cpp \
|
||||
midi_ctrl.cpp \
|
||||
trigger_ctrl.cpp \
|
||||
\
|
||||
audio_input.cpp \
|
||||
\
|
||||
|
||||
@@ -74,6 +74,7 @@ JS(js_joy_ctrl_constructor);
|
||||
#ifdef WITH_MIDI
|
||||
JS(js_midi_ctrl_constructor);
|
||||
#endif
|
||||
JS(js_trigger_ctrl_constructor);
|
||||
|
||||
// encoder constructor
|
||||
#ifdef WITH_OGGTHEORA
|
||||
@@ -108,6 +109,10 @@ extern JSClass js_midi_ctrl_class;
|
||||
extern JSFunctionSpec js_midi_ctrl_methods[];
|
||||
#endif
|
||||
|
||||
// Trigger Controller
|
||||
extern JSClass js_trigger_ctrl_class;
|
||||
extern JSFunctionSpec js_trigger_ctrl_methods[];
|
||||
|
||||
// ParticleLayer
|
||||
extern JSClass particle_layer_class;
|
||||
extern JSFunctionSpec particle_layer_methods[];
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
/* FreeJ
|
||||
* (c) Copyright 2001-2007 Denis Roio aka jaromil <jaromil@dyne.org>
|
||||
*
|
||||
* This source code is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Public License as published
|
||||
* by the Free Software Foundation; either version 2 of the License,
|
||||
* or (at your option) any later version.
|
||||
*
|
||||
* This source code is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* Please refer to the GNU Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Public License along with
|
||||
* this source code; if not, write to:
|
||||
* Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __TRIGGER_CTRL_H__
|
||||
#define __TRIGGER_CTRL_H__
|
||||
|
||||
#include <controller.h>
|
||||
|
||||
#include <SDL.h>
|
||||
|
||||
class TriggerCtrl : Controller {
|
||||
|
||||
public:
|
||||
TriggerCtrl();
|
||||
~TriggerCtrl();
|
||||
|
||||
int peep(Context *env);
|
||||
bool init(JSContext *env, JSObject *obj);
|
||||
int poll(Context *env);
|
||||
|
||||
private:
|
||||
|
||||
JSContext *jsenv;
|
||||
JSObject *jsobj;
|
||||
|
||||
int _poll(Context *env);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -186,6 +186,11 @@ void JsParser::init() {
|
||||
js_joy_ctrl_constructor,
|
||||
js_joy_ctrl_methods);
|
||||
|
||||
REGISTER_CLASS("TriggerController",
|
||||
js_trigger_ctrl_class,
|
||||
js_trigger_ctrl_constructor,
|
||||
js_trigger_ctrl_methods);
|
||||
|
||||
#ifdef WITH_OGGTHEORA
|
||||
// encoder class
|
||||
REGISTER_CLASS("VideoEncoder",
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
/* FreeJ
|
||||
* (c) Copyright 2001-2007 Denis Roio aka jaromil <jaromil@dyne.org>
|
||||
*
|
||||
* This source code is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Public License as published
|
||||
* by the Free Software Foundation; either version 2 of the License,
|
||||
* or (at your option) any later version.
|
||||
*
|
||||
* This source code is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* Please refer to the GNU Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Public License along with
|
||||
* this source code; if not, write to:
|
||||
* Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* "$Id: trigger_ctrl.cpp 881 2007-08-02 01:06:11Z mrgoil $"
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
// I used a Logitech WingMan here. It got 2 joys and 7 Buttons
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include <trigger_ctrl.h>
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <context.h>
|
||||
#include <jutils.h>
|
||||
|
||||
|
||||
#include <callbacks_js.h> // javascript
|
||||
|
||||
JS(js_trigger_ctrl_constructor);
|
||||
|
||||
DECLARE_CLASS("TriggerController",js_trigger_ctrl_class, js_trigger_ctrl_constructor);
|
||||
|
||||
JSFunctionSpec js_trigger_ctrl_methods[] = { {0} }; // all dynamic methods
|
||||
|
||||
|
||||
|
||||
TriggerCtrl::TriggerCtrl()
|
||||
:Controller() {
|
||||
set_name("Trigger");
|
||||
}
|
||||
|
||||
TriggerCtrl::~TriggerCtrl() {
|
||||
}
|
||||
|
||||
bool TriggerCtrl::init(JSContext *env, JSObject *obj) {
|
||||
func("%u:%s:%s",__LINE__,__FILE__,__FUNCTION__);
|
||||
jsenv = env;
|
||||
jsobj = obj;
|
||||
|
||||
initialized = true;
|
||||
return(true);
|
||||
}
|
||||
|
||||
int TriggerCtrl::peep(Context *env) {
|
||||
poll(env);
|
||||
}
|
||||
|
||||
int TriggerCtrl::poll(Context *env) {
|
||||
jsval ret;
|
||||
JS_CallFunctionName(jsenv, jsobj, "frame", 0, NULL, &ret);
|
||||
return(1);
|
||||
}
|
||||
|
||||
JS(js_trigger_ctrl_constructor) {
|
||||
func("%u:%s:%s",__LINE__,__FILE__,__FUNCTION__);
|
||||
|
||||
TriggerCtrl *trigger = new TriggerCtrl();
|
||||
|
||||
// assign instance into javascript object
|
||||
if( ! JS_SetPrivate(cx, obj, (void*)trigger) ) {
|
||||
error("failed assigning trigger controller to javascript");
|
||||
delete trigger; return JS_FALSE;
|
||||
}
|
||||
|
||||
// initialize with javascript context
|
||||
if(! trigger->init(cx, obj) ) {
|
||||
error("failed initializing trigger controller");
|
||||
delete trigger; return JS_FALSE;
|
||||
}
|
||||
|
||||
*rval = OBJECT_TO_JSVAL(obj);
|
||||
return JS_TRUE;
|
||||
}
|
||||
Reference in New Issue
Block a user