src/*: fix missing functions to generate GLArea

The new UI prototype did not bring functions to generate a GLArea at the
correct location in the code tree. This commit fixes this.

Signed-off-by: Adrien 'neox' Bourmault <neox@a-lec.org>
This commit is contained in:
Adrien Bourmault 2024-09-10 13:25:47 +02:00
parent 708780554b
commit 17a337b2b8
4 changed files with 93 additions and 6 deletions

View File

@ -68,3 +68,88 @@ void util_pile_test(); // called in fsm/measure.c
void util_double_list_test(); // " " void util_double_list_test(); // " "
void util_sorted_list_test(); // " " void util_sorted_list_test(); // " "
//------------------------------------------------------------------------------
/*
* Look for stack entry and returns stack_id
*
* @params container_widget, generally the GtkBox that contains the GLArea
*
* @returns stack_id
*/
long util_gl_get_stack(void *container_widget);
/*
* Look for stack entry and returns stack_id
*
* @params container_widget, generally the GtkBox that contains the GLArea
*
* @returns stack_id
*/
long util_gl_is_util_ready(void *container_widget);
/*
* Look for stack entry and initializes OpenGL for it
*
* @params container_widget, generally the GtkBox that contains the GLArea
*
* @returns bool, true if success
*/
bool util_gl_init_stack(void *container_widget, GError *error_buffer);
/*
* Look for stack entry and shutdowns OpenGL for it
*
* @params container_widget, generally the GtkBox that contains the GLArea
*
* @returns bool, true if success
*/
bool util_gl_shutdown_stack(void *container_widget, GError *error_buffer);
void util_gl_clean_stack_index(void);
/*
* Look for stack entry and triggers OpenGL for drawing
*
* @params container_widget, generally the GtkBox that contains the GLArea
*
* @returns bool, true if success
*/
bool util_gl_render_stack(GtkWidget *container_widget);
/*
* Look for stack entry and triggers OpenGL for drawing
*
* @params container_widget, generally the GtkBox that contains the GLArea
*
* @returns bool, true if success
*/
bool util_gl_update_axis(GtkWidget *container_widget, int axis, int value);
/*
* Look for every stack entry and shutdowns OpenGL for it
*
* @params void
*
* @returns bool, true if success
*/
void util_gl_shutdown_all_stacks(void);
/*
* Creates a slider widget
*
* @params axis, meaning which axis we're building (for label)
*
* @returns GtkWidget*, pointer to the new widget
*/
GtkWidget *create_axis_slider(int axis);
/*
* Creates GLArea and indexes it
*
* @params target_mode, meaning which util_gl_stack we're on
* target_widget, meaning the box that will host the GLArea
*
* @returns bool, true if success
*/
bool util_gl_setup_glarea(int target_mode, GtkWidget *target_widget);

View File

@ -31,6 +31,7 @@
#include "../include/signal.h" #include "../include/signal.h"
#include "../include/widget.h" #include "../include/widget.h"
#include "../include/graphics.h" #include "../include/graphics.h"
#include "../include/util.h"
static void on_auto_notification (const char *message) static void on_auto_notification (const char *message)
@ -114,7 +115,7 @@ gboolean on_glarea_render(GtkGLArea *area,
return false; return false;
} }
if (graphics_render_stack(gtk_widget_get_parent(GTK_WIDGET(area))) == false) { if (util_gl_render_stack(gtk_widget_get_parent(GTK_WIDGET(area))) == false) {
on_auto_notification("Failed to render corresponding graphic stack !"); on_auto_notification("Failed to render corresponding graphic stack !");
return false; return false;
} }
@ -138,7 +139,7 @@ void on_glarea_realize(GtkWidget *widget)
} }
// Link graphical stack to widget // Link graphical stack to widget
if (graphics_init_graphics_stack(gtk_widget_get_parent(widget), if (util_gl_init_stack(gtk_widget_get_parent(widget),
internal_error) == false) { internal_error) == false) {
on_auto_notification( on_auto_notification(
"Failed to link the graphic stack to widgets !"); "Failed to link the graphic stack to widgets !");
@ -163,7 +164,7 @@ void on_glarea_unrealize(GtkWidget *widget)
} }
// Destroy graphic stack // Destroy graphic stack
if (graphics_shutdown_graphics_stack(gtk_widget_get_parent(widget), if (util_gl_shutdown_stack(gtk_widget_get_parent(widget),
internal_error) == false) { internal_error) == false) {
on_auto_notification( on_auto_notification(
"Failed to shutdown the graphic stack !"); "Failed to shutdown the graphic stack !");
@ -185,7 +186,7 @@ void on_axis_value_change(GtkAdjustment *adjustment, gpointer data)
g_assert(axis >= 0 && axis < N_AXIS); g_assert(axis >= 0 && axis < N_AXIS);
/* Update the rotation angle */ /* Update the rotation angle */
graphics_update_axis_stack(container_widget, util_gl_update_axis(container_widget,
axis, axis,
gtk_adjustment_get_value(adjustment)); gtk_adjustment_get_value(adjustment));

View File

@ -81,7 +81,7 @@ long util_gl_get_stack(void *container_widget)
* *
* @returns stack_id * @returns stack_id
*/ */
long util_gl_is_util_ready(void *container_widget) long util_gl_is_ready(void *container_widget)
{ {
// look for stack_index entry // look for stack_index entry
for (int i = 0; i < stack_index_size; i++) { for (int i = 0; i < stack_index_size; i++) {

View File

@ -27,6 +27,7 @@
#include "../../../include/fsm.h" #include "../../../include/fsm.h"
#include "../../../include/widget.h" #include "../../../include/widget.h"
#include "../../../include/signal.h" #include "../../../include/signal.h"
#include "../../../include/util.h"
static GtkAdjustment *X_adjust; static GtkAdjustment *X_adjust;
static GtkAdjustment *Y_adjust; static GtkAdjustment *Y_adjust;
@ -89,7 +90,7 @@ static void *get_ZOOM_box()
void *widget_get_space_view(int partition_space_vs_camera) void *widget_get_space_view(int partition_space_vs_camera)
{ {
GtkBox *drawbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0)); GtkBox *drawbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0));
ui_setup_glarea (GTK_BOX (drawbox)); util_gl_setup_glarea (0, GTK_WIDGET (drawbox));
GtkBox *camera = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 2)); GtkBox *camera = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 2));
gtk_box_append (camera, GTK_WIDGET (get_XYZ_box())); gtk_box_append (camera, GTK_WIDGET (get_XYZ_box()));