diff options
Diffstat (limited to 'src/nanolight.c')
-rw-r--r-- | src/nanolight.c | 153 |
1 files changed, 67 insertions, 86 deletions
diff --git a/src/nanolight.c b/src/nanolight.c index 4751feb..cf6114c 100644 --- a/src/nanolight.c +++ b/src/nanolight.c @@ -48,7 +48,6 @@ static struct fixture *create_fixture(struct nanolight *nl, struct fixture_class const char *label, int universe, int base_addr) { struct fixture *fix; - int i; if ( nl->n_fixtures == nl->max_fixtures ) { struct fixture *fixtures_new; @@ -63,18 +62,25 @@ static struct fixture *create_fixture(struct nanolight *nl, struct fixture_class fix->universe = universe; fix->base_addr = base_addr; fix->cls = cls; - fix->attr_vals = calloc(cls->n_attrs, sizeof(int)); - fix->attr_vals_start = calloc(cls->n_attrs, sizeof(int)); - if ( (fix->attr_vals == NULL) - || (fix->attr_vals_start == NULL) ) - { - nl->n_fixtures--; - return NULL; - } - for ( i=0; i<cls->n_attrs; i++ ) { - fix->attr_vals[i] = cls->attrs[i].home; - } + fix->intensity = 0.0; + fix->cyan = 0.0; + fix->magenta = 0.0; + fix->yellow = 0.0; + fix->red = 0.0; + fix->green = 0.0; + fix->blue = 0.0; + fix->pan = 0.0; + fix->tilt = 0.0; + fix->gobo = 0; + fix->gobo_rotation = 0.5; + fix->gobo_spin = 0.0; + fix->prism = 0; + fix->prism_rotation = 0.5; + fix->prism_spin = 0.5; + fix->focus = 0.5; + fix->zoom = 0.5; + fix->frost = 0.0; return fix; } @@ -91,7 +97,6 @@ int main(int argc, char *argv[]) { struct nanolight nl; struct fixture_class cls; - struct attribute attrs[128]; int c; gtk_init(&argc, &argv); @@ -126,78 +131,54 @@ int main(int argc, char *argv[]) textdomain("nanolight"); /* Set up data structures */ - cls.name = "Dummy fixture"; - cls.n_attrs = 12; - cls.attrs = attrs; - - cls.attrs[0].cls = ATT_INTENSITY; - cls.attrs[0].props = 0; - cls.attrs[0].addr_offset = 49; - cls.attrs[0].home = 0; - - cls.attrs[1].cls = ATT_PAN; - cls.attrs[1].props = ATTR_16BIT; - cls.attrs[1].addr_offset = 0; - cls.attrs[1].home = 32768; - - cls.attrs[2].cls = ATT_TILT; - cls.attrs[2].props = ATTR_16BIT; - cls.attrs[2].addr_offset = 2; - cls.attrs[2].home = 32768; - - cls.attrs[3].cls = ATT_STROBE; - cls.attrs[3].props = 0; - cls.attrs[3].addr_offset = 48; - cls.attrs[3].home = 32; - - cls.attrs[4].cls = ATT_CYAN; - cls.attrs[4].props = ATTR_16BIT; - cls.attrs[4].addr_offset = 8; - cls.attrs[4].home = 0; - - cls.attrs[5].cls = ATT_MAGENTA; - cls.attrs[5].props = ATTR_16BIT; - cls.attrs[5].addr_offset = 10; - cls.attrs[5].home = 0; - - cls.attrs[6].cls = ATT_YELLOW; - cls.attrs[6].props = ATTR_16BIT; - cls.attrs[6].addr_offset = 12; - cls.attrs[6].home = 0; - - int rgobo_stops[] = {0, 6, 10, 15, 19, 24, 28}; - cls.attrs[7].cls = ATT_RGOBO; - cls.attrs[7].props = ATTR_STOP; - cls.attrs[7].addr_offset = 24; - cls.attrs[7].home = 0; - cls.attrs[7].stops = rgobo_stops; - cls.attrs[7].n_stops = 7; - - cls.attrs[8].cls = ATT_ZOOM; - cls.attrs[8].props = ATTR_16BIT; - cls.attrs[8].addr_offset = 32; - cls.attrs[8].home = 0; - - cls.attrs[9].cls = ATT_FOCUS; - cls.attrs[9].props = ATTR_16BIT; - cls.attrs[9].addr_offset = 34; - cls.attrs[9].home = 0; - - int gobo_stops[] = {0, 67, 73, 78, 84, 89, 95, 100, 106}; - cls.attrs[10].cls = ATT_GOBO; - cls.attrs[10].props = ATTR_STOP; - cls.attrs[10].addr_offset = 22; - cls.attrs[10].home = 0; - cls.attrs[10].stops = gobo_stops; - cls.attrs[10].n_stops = 9; - - int prism_stops[] = {0, 50}; - cls.attrs[11].cls = ATT_PRISM; - cls.attrs[11].props = ATTR_STOP; - cls.attrs[11].addr_offset = 27; - cls.attrs[11].home = 0; - cls.attrs[11].stops = prism_stops; - cls.attrs[11].n_stops = 2; + cls.name = "Robe Robin DL7S Profile Mode 1"; + cls.attributes = INTENSITY | COL_CMY | PANTILT | FOCUS | ZOOM + | FROST | IRIS; + cls.attributes16 = INTENSITY | COL_CMY | PANTILT | FOCUS | ZOOM + | FROST | 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; + + 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, + 0, 67, + 0, 73, + 0, 78, + 0, 84, + 0, 89, + 0, 95, + 0, 100, + 0, 106 }; + cls.n_gobos = 15; + cls.n_gobo_chans = 2; + cls.gobo_chans = gobo_chans; + cls.gobo_vals = gobo_vals; + + int prism_chans[] = {27}; + int prism_vals[] = {0, 50}; + cls.n_prisms = 15; + cls.n_prism_chans = 1; + cls.prism_chans = prism_chans; + cls.prism_vals = prism_vals; nl.fixture_width = 80.0; nl.fixtures = NULL; @@ -206,7 +187,7 @@ int main(int argc, char *argv[]) nl.cmdline[0] = '\0'; nl.cursor_idx = 0; nl.n_sel = 0; - nl.sel_attr = ATT_INTENSITY; + nl.sel_attr = INTENSITY; nl.dragging = 0; nl.go_lock = 0; nl.sb_lock = 0; |