summaryrefslogtreecommitdiff
path: root/src/scheme.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/scheme.c')
-rw-r--r--src/scheme.c143
1 files changed, 9 insertions, 134 deletions
diff --git a/src/scheme.c b/src/scheme.c
index e13d7d3..ad7ee6a 100644
--- a/src/scheme.c
+++ b/src/scheme.c
@@ -24,6 +24,7 @@
#include <libguile.h>
#include "lightctx.h"
+#include "fixture_library.h"
static SCM fixture_type;
@@ -63,127 +64,6 @@ static SCM fixture_class_name(SCM fixture_class_scm)
}
-static struct fixture_class *make_generic_dimmer()
-{
- struct fixture_class *cls;
-
- cls = malloc(sizeof(struct fixture_class));
- if ( cls == NULL ) return NULL;
-
- /* Set up data structures */
- cls->name = "Generic dimmer";
- cls->properties = 0;
- cls->attributes = INTENSITY;
- cls->attributes16 = 0;
- cls->intensity_offset = 0;
- cls->n_magic = 0;
- cls->n_gobos = 0;
- cls->n_gobo_chans = 0;
- cls->n_prisms = 0;
- cls->n_prism_chans = 0;
-
- return cls;
-}
-
-
-static struct fixture_class *make_dl7s()
-{
- struct fixture_class *cls;
-
- cls = malloc(sizeof(struct fixture_class));
- if ( cls == NULL ) return NULL;
-
- /* Set up data structures */
- cls->name = "Robe Robin DL7S Profile Mode 1";
- cls->properties = COL_CMY;
- cls->attributes = INTENSITY | COLOUR | PANTILT | FOCUS | ZOOM
- | FROST | IRIS | GOBO | PRISM;
- cls->attributes16 = INTENSITY | COLOUR | PANTILT | FOCUS | ZOOM
- | IRIS;
-
- cls->intensity_offset = 49;
- cls->pan_offset = 0;
- cls->tilt_offset = 2;
- cls->cyan_offset = 8;
- cls->magenta_offset = 10;
- cls->yellow_offset = 12;
- cls->focus_offset = 34;
- cls->zoom_offset = 32;
- cls->frost_offset = 29; /* FIXME 0..179 only */
- cls->iris_offset = 30; /* FIXME: 0..179 only, but also fine @ offset 32 */
- cls->gobo_rotate_offset = 25;
- cls->gobo_spin_offset = 25;
- cls->prism_rotate_offset = 0;
- cls->prism_spin_offset = 28;
-
- int magic_chans[] = {48};
- int magic_vals[] = {32};
- cls->magic_chans = magic_chans;
- cls->magic_vals = magic_vals;
- cls->n_magic = 1;
-
- int gobo_chans[] = {24, 22};
- int gobo_vals[] = { 0, 0,
- 6, 0,
- 10, 0,
- 15, 0,
- 19, 0,
- 24, 0,
- 28, 0,
- 33, 0,
- 38, 0,
- 42, 0,
- 47, 0,
- 52, 0,
- 57, 0,
- 0, 67,
- 0, 73,
- 0, 78,
- 0, 84,
- 0, 89,
- 0, 95,
- 0, 100,
- 0, 106 };
- int gobo_flags[] = { 0,
- GOBO_ROTATE,
- GOBO_ROTATE,
- GOBO_ROTATE,
- GOBO_ROTATE,
- GOBO_ROTATE,
- GOBO_ROTATE,
- GOBO_SPIN,
- GOBO_SPIN,
- GOBO_SPIN,
- GOBO_SPIN,
- GOBO_SPIN,
- GOBO_SPIN,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0 };
- cls->n_gobos = 21;
- cls->n_gobo_chans = 2;
- cls->gobo_chans = gobo_chans;
- cls->gobo_vals = gobo_vals;
- cls->gobo_flags = gobo_flags;
-
- int prism_chans[] = {27};
- int prism_vals[] = {0, 50};
- int prism_flags [] = {0, PRISM_SPIN};
- cls->n_prisms = 2;
- cls->n_prism_chans = 1;
- cls->prism_chans = prism_chans;
- cls->prism_vals = prism_vals;
- cls->prism_flags = prism_flags;
-
- return cls;
-}
-
-
static SCM patch_fixture(SCM fixture_name_scm, SCM fixture_class_scm,
SCM universe_scm, SCM addr_scm)
{
@@ -228,8 +108,8 @@ static void finalize_fixture_class(SCM fixture)
void *register_scheme_funcs(void *data)
{
SCM name, slots;
+ SCM obj;
SCM fixture_class_list;
- struct fixture_class *cls;
nl = data;
@@ -245,18 +125,13 @@ void *register_scheme_funcs(void *data)
/* Expose the list of fixture classes */
fixture_class_list = SCM_EOL;
- cls = make_dl7s();
- if ( cls != NULL ) {
- SCM obj = scm_make_foreign_object_1(fixture_class_type, cls);
- SCM obj_list = scm_list_1(obj);
- fixture_class_list = scm_append(scm_list_2(fixture_class_list, obj_list));
- }
- cls = make_generic_dimmer();
- if ( cls != NULL ) {
- SCM obj = scm_make_foreign_object_1(fixture_class_type, cls);
- SCM obj_list = scm_list_1(obj);
- fixture_class_list = scm_append(scm_list_2(fixture_class_list, obj_list));
- }
+
+ obj = scm_make_foreign_object_1(fixture_class_type, &dl7s_class);
+ fixture_class_list = scm_append(scm_list_2(fixture_class_list, scm_list_1(obj)));
+
+ obj = scm_make_foreign_object_1(fixture_class_type, &generic_dimmer_class);
+ fixture_class_list = scm_append(scm_list_2(fixture_class_list, scm_list_1(obj)));
+
scm_define(scm_from_utf8_symbol("fixture-class-library"), fixture_class_list);
/* Expose the list of fixtures (starts empty) */