Storyboard * storyboard_new (const gchar *snippets_path) { Storyboard *self; ClutterColor bg_color = {200, 200, 200, 255}; self = g_slice_new0 (Storyboard); self->max_knock = DEFAULT_MAX_KNOCK; self->max_salute = DEFAULT_MAX_SALUTE; self->gesture_index = g_random_int_range (0, TOTAL_GESTURES-1); if (g_strstr_len (snippets_path, -1, "file://") != snippets_path) self->snippets_path = g_strdup_printf ("file://%s", snippets_path); else self->snippets_path = g_strdup (snippets_path); self->stage = clutter_stage_new (); clutter_stage_hide_cursor (CLUTTER_STAGE (self->stage)); g_signal_connect (self->stage, "destroy", G_CALLBACK (clutter_main_quit), NULL); g_signal_connect (self->stage, "key-press-event", G_CALLBACK (stage_on_key_pressed), self); clutter_actor_set_size (self->stage, 1920, 1080); clutter_stage_set_fullscreen (CLUTTER_STAGE (self->stage), TRUE); clutter_actor_set_background_color (self->stage, &bg_color); /* transition */ self->transition = transition_new (self->stage, 1000, transition_on_finish, self); /* salut stream */ salut_stream_new (on_salut_stream_ready, self); g_object_unref (self->stage); clutter_actor_show (self->stage); /* initial state */ self->status = STATUS_NONE; return self; }
void table_construct(table_t *t, const char *input) { assert(t != NULL); int after_state = 0; int len; int cur = 0; char c; transition_t* ts; len = strlen(input); while (cur < len) { c = input[cur]; switch (c) { case ' ': break; case '{': ts_lexme = next; break; case ':': if (after_state && next != '{') { ts_state_next = next; ts = transition_new(); table_add_transition(t, ts); } break; case ',': if (after_state) { ts_lexme = next; } break; case '}': if (after_state) { after_state = 0; } break; default: if (! after_state && next == ':') { after_state = 1; ts_state = c; } break; } cur++; } }