atomes 1.2.1
atomes: an atomic scale modeling tool box
Loading...
Searching...
No Matches
m_quality.c
Go to the documentation of this file.
1/* This file is part of the 'atomes' software
2
3'atomes' is free software: you can redistribute it and/or modify it under the terms
4of the GNU Affero General Public License as published by the Free Software Foundation,
5either version 3 of the License, or (at your option) any later version.
6
7'atomes' is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
8without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9See the GNU General Public License for more details.
10
11You should have received a copy of the GNU Affero General Public License along with 'atomes'.
12If not, see <https://www.gnu.org/licenses/>
13
14Copyright (C) 2022-2025 by CNRS and University of Strasbourg */
15
22/*
23* This file: 'm_quality.c'
24*
25* Contains:
26*
27
28 - The functions to create the 'OengGL -> Quality' submenu
29
30*
31* List of functions:
32
33 void set_quality (int q, glwin * view);
34
35 G_MODULE_EXPORT void set_quality_spin (GtkSpinButton * res, gpointer data);
36 G_MODULE_EXPORT void window_quality (GtkWidget * widg, gpointer data);
37 G_MODULE_EXPORT void to_window_quality (GSimpleAction * action, GVariant * parameter, gpointer data);
38
39 GtkWidget * menu_quality (glwin * view, int id);
40
41 GMenu * menu_quality (glwin * view, int popm);
42
43*/
44
45#include "global.h"
46#include "interface.h"
47#include "preferences.h"
48#include "project.h"
49#include "glwindow.h"
50#include "glview.h"
51
60void set_quality (int q, glwin * view)
61{
62 if (! preferences)
63 {
64 view -> anim -> last -> img -> quality = q;
66 view -> create_shaders[MDBOX] = TRUE;
67 view -> create_shaders[MAXIS] = TRUE;
68 update (view);
69#ifdef GTK3
70 gtk_range_set_value (GTK_RANGE(view -> ogl_quality), view -> anim -> last -> img -> quality);
71#endif
72 }
73 else
74 {
75 tmp_opengl[3] = q;
76 }
77}
78
87G_MODULE_EXPORT void set_quality_spin (GtkSpinButton * res, gpointer data)
88{
89 glwin * view = (glwin *)data;
90 set_quality (gtk_spin_button_get_value_as_int(res), view);
91 update_entry_int (GTK_ENTRY(res), view -> anim -> last -> img -> quality);
92}
93
102G_MODULE_EXPORT void window_quality (GtkWidget * widg, gpointer data)
103{
104 glwin * view = (glwin *)data;
105 GtkWidget * win = dialogmodal ("Render Quality", GTK_WINDOW(view -> win));
106 GtkWidget * vbox = dialog_get_content_area (win);
107 GtkWidget * hbox = create_hbox (0);
108 add_box_child_start (GTK_ORIENTATION_VERTICAL, vbox, hbox, TRUE, TRUE, 10);
109 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, hbox, gtk_label_new ("Quality [2-1000]: "), TRUE, TRUE, 0);
110 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, hbox,
111 spin_button (G_CALLBACK(set_quality_spin), view -> anim -> last -> img -> quality, 2.0, 1000.0, 1.0, 0, 100, data),
112 FALSE, FALSE, 10);
113 add_gtk_close_event (win, G_CALLBACK(destroy_this_window), NULL);
115 run_this_gtk_dialog (win, G_CALLBACK(run_destroy_dialog), NULL);
116#ifdef GTK3
117 // GTK3 Menu Action To Check
118 gtk_range_set_value (GTK_RANGE(view -> ogl_quality), view -> anim -> last -> img -> quality);
119#else
120 update_menu_bar (view);
121#endif
122}
123
124#ifdef GTK3
133GtkWidget * menu_quality (glwin * view, int id)
134{
135 GtkWidget * menuq = gtk_menu_new ();
136 GtkWidget * fixed = gtk_fixed_new ();
137 if (id == 0)
138 {
139 view -> ogl_quality = create_hscale (2.0, 1000.0, 1.0, view -> anim -> last -> img -> quality, GTK_POS_RIGHT, 0, 100, NULL, NULL, NULL);
140 gtk_fixed_put (GTK_FIXED(fixed), view -> ogl_quality, 0, 0);
141 }
142 else
143 {
144 GtkWidget * qscale = create_hscale (2.0, 1000.0, 1.0, view -> anim -> last -> img -> quality, GTK_POS_RIGHT, 0, 100, NULL, NULL, NULL);
145 gtk_fixed_put (GTK_FIXED(fixed), qscale, 0, 0);
146 }
147 GtkWidget * qs = create_menu_item_from_widget (fixed, FALSE, FALSE, FALSE);
148 g_signal_connect (G_OBJECT (qs), "activate", G_CALLBACK(window_quality), view);
149 gtk_menu_shell_append ((GtkMenuShell *)menuq, qs);
150 return menuq;
151}
152#else
162G_MODULE_EXPORT void to_window_quality (GSimpleAction * action, GVariant * parameter, gpointer data)
163{
164 window_quality (NULL, data);
165}
166
175GMenu * menu_quality (glwin * view, int popm)
176{
177 GMenu * menu = g_menu_new ();
178 gchar * str = g_strdup_printf ("Quality: %d", view -> anim -> last -> img -> quality);
179 append_opengl_item (view, menu, str, "quality", popm, popm, NULL, IMG_NONE, NULL, FALSE, G_CALLBACK(to_window_quality), (gpointer)view, FALSE, FALSE, FALSE, TRUE);
180 g_free (str);
181 return menu;
182}
183#endif
void init_default_shaders(glwin *view)
re-initialize the default OpenGL shaders
Global variable declarations Global convenience function declarations Global data structure defin...
void run_this_gtk_dialog(GtkWidget *dial, GCallback handler, gpointer data)
run a GTK (3 and 4) basic GtkDialog
Definition gtk-misc.c:501
@ IMG_NONE
Definition global.h:262
GtkWidget * create_menu_item_from_widget(GtkWidget *widg, gboolean check, gboolean radio, gboolean status)
GtkWidget * dialogmodal(gchar *str, GtkWindow *parent)
Create a new dialog modal window.
Definition gtk-misc.c:520
void update_entry_int(GtkEntry *entry, int intval)
update the content of a GtkEntry as int
Definition gtk-misc.c:624
G_MODULE_EXPORT gboolean destroy_this_window(GtkWidget *win, GdkEvent *event, gpointer data)
destroy a GtkWindow
Definition gtk-misc.c:2479
void add_gtk_close_event(GtkWidget *widg, GCallback handler, gpointer data)
add a close event signal and callback to a GtkWidget
Definition gtk-misc.c:2522
GtkWidget * spin_button(GCallback handler, double value, double start, double end, double step, int digits, int dim, gpointer data)
create a spin button
Definition gtk-misc.c:1833
GtkWidget * dialog_get_content_area(GtkWidget *widg)
prepare GtkWidget to insert content in a GtkDialog window
Definition gtk-misc.c:835
void add_box_child_start(int orientation, GtkWidget *widg, GtkWidget *child, gboolean expand, gboolean fill, int padding)
Add a GtkWidget in a GtkBox at the initial position.
Definition gtk-misc.c:308
GtkWidget * create_hbox(int spacing)
create a GtkBox with horizontal orientation
Definition gtk-misc.c:823
G_MODULE_EXPORT void run_destroy_dialog(GtkDialog *dialog, gint response_id, gpointer data)
to destroy a GtkDialog when the dialog emit the closing signal
Definition gtk-misc.c:2237
GtkWidget * create_hscale(float min, float max, float delta, float val, int pos, int round, int size, GCallback handler, GCallback scroll_handler, gpointer data)
create an horizontal scale GtkWidget
Definition gtk-misc.c:754
void show_the_widgets(GtkWidget *widg)
show GtkWidget
Definition gtk-misc.c:182
void update(glwin *view)
update the rendering of the OpenGL window
Definition glview.c:450
Variable declarations related to the OpenGL window Function declarations related to the OpenGL wind...
action
Definition glview.h:198
@ MAXIS
Definition glwin.h:94
@ MDBOX
Definition glwin.h:93
Function declarations for the creation of the OpenGL window.
void append_opengl_item(glwin *view, GMenu *menu, const gchar *name, gchar *key, int mpop, int item_id, gchar *accel, int image_format, gpointer icon, gboolean custom, GCallback handler, gpointer data, gboolean check, gboolean status, gboolean radio, gboolean sensitive)
Messaging function declarations.
void set_quality(int q, glwin *view)
set OpenGL quality
Definition m_quality.c:60
GMenu * menu_quality(glwin *view, int popm)
create the 'OpenGL -> Quality' menu item - GTK4
Definition m_quality.c:175
G_MODULE_EXPORT void to_window_quality(GSimpleAction *action, GVariant *parameter, gpointer data)
quality callback GTK4
Definition m_quality.c:162
G_MODULE_EXPORT void set_quality_spin(GtkSpinButton *res, gpointer data)
set quality spin button callback
Definition m_quality.c:87
G_MODULE_EXPORT void window_quality(GtkWidget *widg, gpointer data)
adjust OpenGL quality - creating the dialog
Definition m_quality.c:102
int * tmp_opengl
gboolean preferences
Preference variable declarations.
Function declarations for reading atomes project file Function declarations for saving atomes proje...
Definition glwin.h:965
GtkWidget * res[2]
Definition w_encode.c:212
GtkWidget * hbox
Definition workspace.c:71
GtkWidget * img
Definition workspace.c:70
GtkWidget * vbox
Definition workspace.c:72