56gboolean
spin (gpointer data)
69 if (this_proj -> modelgl)
71 if (this_proj -> modelgl ->
spin[
val -> c])
74 double cameraAngle[2] = {0.0, 0.0};
75 cameraAngle[
val -> c] = 0.1 * this_proj -> modelgl -> spin_speed[
val -> c];
76 rotate_x_y (this_proj -> modelgl, cameraAngle[0], cameraAngle[1]);
77 update (this_proj -> modelgl);
103static gboolean spin_wait_for_stop (gpointer data)
124G_MODULE_EXPORT
void spin_go (GtkButton * but, gpointer data)
129 int s =
val -> b - 2;
134 view -> spin_speed[
val -> c] += s;
135 if (view -> spin_speed[
val -> c] == 0)
137 view ->
spin[
val -> c] = FALSE;
138 g_timeout_add (
REFRESH, (GSourceFunc) spin_wait_for_stop, data);
140 else if (! view ->
spin[
val -> c])
155G_MODULE_EXPORT
void spin_stop (GtkButton * but, gpointer data)
161 view ->
spin[i] = FALSE;
162 view -> spin_speed[i] = 0;
178 if (view -> spiner == NULL)
180 view -> spiner = g_malloc0(
sizeof*view -> spiner);
182 view -> spiner -> win =
create_win (str, view -> win, FALSE, FALSE);
184 GtkWidget * table = gtk_grid_new ();
191 gtk_grid_attach (GTK_GRID (table), view -> spiner -> right, 2,1,1,1);
192 gtk_grid_attach (GTK_GRID (table), view -> spiner -> left, 0,1,1,1);
193 gtk_grid_attach (GTK_GRID (table), view -> spiner -> stop, 1,1,1,1);
194 gtk_grid_attach (GTK_GRID (table), view -> spiner ->
up, 1,0,1,1);
195 gtk_grid_attach (GTK_GRID (table), view -> spiner -> down, 1,2,1,1);
198 gtk_window_set_resizable (GTK_WINDOW(view -> spiner -> win), FALSE);
Global variable declarations Global convenience function declarations Global data structure defin...
GtkWidget * create_win(gchar *str, GtkWidget *parent, gboolean modal, gboolean resiz)
create a new GtkWindow
G_MODULE_EXPORT gboolean hide_this_window(GtkWidget *win, GdkEvent *event, gpointer data)
hide a GtkWindow
void add_gtk_close_event(GtkWidget *widg, GCallback handler, gpointer data)
add a close event signal and callback to a GtkWidget
GtkWidget * create_button(gchar *text, int image_format, gchar *image, int dimx, int dimy, int relief, GCallback handler, gpointer data)
create a simple button
gchar * prepare_for_title(gchar *init)
prepare a string for a window title, getting rid of all markup
void add_container_child(int type, GtkWidget *widg, GtkWidget *child)
Add a GtkWidget into another GtkWidget.
void show_the_widgets(GtkWidget *widg)
show GtkWidget
project * get_project_by_id(int p)
get project pointer using id number
void update(glwin *view)
update the rendering of the OpenGL window
Variable declarations related to the OpenGL window Function declarations related to the OpenGL wind...
#define REFRESH
Refresh time for spinning the OpenGL window in milliseconds.
G_MODULE_EXPORT void spin_go(GtkWidget *widg, gpointer data)
gboolean spin(gpointer data)
spin
G_MODULE_EXPORT void spin_stop(GtkButton *but, gpointer data)
stop spin
G_MODULE_EXPORT void spin_go(GtkButton *but, gpointer data)
start spin
void save_rotation_quaternion(glwin *view)
save the rotation quaternion of the last image
G_MODULE_EXPORT void window_spinner(GtkWidget *widg, gpointer data)
create the spin window callback
gboolean spin(gpointer data)
spin
void rotate_x_y(glwin *view, double angle_x, double angle_y)
rotate the OpenGL camera
G_MODULE_EXPORT void spin_stop(GtkButton *but, gpointer data)
stop spin