atomes 1.3.1
atomes: an atomic scale modeling tool box
Loading...
Searching...
No Matches
curve.h
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-2026 by CNRS and University of Strasbourg */
15
22
23/*
24* This header file: 'curve.h'
25*
26* Contains:
27
28 - Variable declarations for the curve widget
29 - Functions for interactions with the curve widget
30
31*/
32
33#ifndef CURVE_H_
34#define CURVE_H_
35
36#include "global.h"
37
38// Grid lines width in pixels
39#define GRIDSIZE 0.1
40// Default position of the legend on the curve
41#define LEGX 0.65
42#define LEGY 0.15
43// Default color of the data from 0 to 65535
44#define RED 1.0
45#define GREEN 0.0
46#define BLUE 0.0
47// Default linewidth of the data line
48#define DTHICK 1.0
49// Number of dash types
50#define NDASHS 11
51// Number of glyph types
52#define NGLYPHS 37
53// The marges between the windows border and the axes
54#define MARGX 100
55#define MARGY 70
56
57extern GtkWidget * axischoice;
58extern GtkWidget * vmin, * vmax;
59extern GtkWidget * majt;
60extern GtkWidget * nmi[2];
61extern GtkWidget * xyp[2];
62extern int resol[2];
63extern int originp;
64extern int ndash;
65extern int nglyph;
66extern double back_alpha;
67
68typedef struct curve_dash curve_dash;
70{
71 const double * a;
72 int b;
73};
74
75extern gint32 etime;
76extern double XDRAW, YDRAW;
77extern double DXDRAW, DYDRAW;
78extern double xmax, ymax;
79extern double x_min, x_max;
80extern double y_max, y_min;
81extern double ax, ay;
82extern double cxy[2];
83extern double mticks;
84extern int nticks;
85extern int xlog, ylog;
86extern int dxlog, dylog;
87extern char * sca;
88
89extern PangoLayout * layout;
90extern gboolean dogrid;
91extern int x_shift, y_shift;
92extern int amint, amajt;
93extern int tickpos, labpos;
94
95// Marge sur X et Y dans les graphs
96extern int xmarge;
97extern int ymarge;
98extern char * curve_image_file;
99
100extern int get_curve_shift (Curve * this_curve);
101
102// Number of dash formats
103extern int ndash;
104extern int nglyph;
105extern const double dashed1[];
106extern int len1;
107extern const double pdashed[];
108extern int lenp;
109
110extern curve_dash * selectdash (int iddash);
111extern double scale (double axe);
112extern Curve * get_curve_from_pointer (gpointer data);
113extern void prep_plot (Curve * this_curve);
114extern void hide_curves (project * this_proj, int c);
115extern void erase_curves (project * this_proj, int c);
116extern void update_curves ();
117extern void update_curve (gpointer curve);
118
119#ifdef GTK3
120extern gboolean show_curve (GtkWidget * grwdget, cairo_t * cr, gpointer curve);
121#else
122extern void show_curve (GtkDrawingArea * area, cairo_t * cr, int width, int height, gpointer curve);
123#endif
124extern void hide_curve (gpointer data);
125#ifdef GTK3
126extern G_MODULE_EXPORT gboolean to_hide_curve (GtkWidget * thecurve, GdkEvent * event, gpointer data);
127#else
128extern G_MODULE_EXPORT gboolean to_hide_curve (GtkWindow * thecurve, gpointer data);
129#endif
130
131extern void clean_curves_data (int calc, int start, int end);
132extern void initcurve (project * pid, int rid, int cid);
133extern void init_curve_title (project * this_proj, int rid, int cid);
134extern void add_curve_widgets (project * this_proj, int rid);
135extern void allocextra (int a, int b, int c);
136
137extern void label_curve (cairo_t * cr, double val, int axe, int p, Curve * this_curve);
138
139extern void show_frame (cairo_t * cd,
140 int tf, int da, int res[2],
141 double ti, double x[2], double y[2],
142 ColRGBA dcol);
143extern void prep_frame (cairo_t * fr, int da, double ti, ColRGBA dcol);
144extern void draw_frame (cairo_t * cr, Curve * this_curve, int rid, int cid);
145
146extern void draw_glyph (cairo_t * in, int theglyph, double x, double y, ColRGBA gcolor, double size);
147
148extern const gchar * default_title (int ax, gpointer data);
149extern void show_title (cairo_t * cr, Curve * this_curve);
150
151extern void autoscale_axis (project * this_proj, Curve * this_curve, int rid, int cid, int aid);
152extern void setup_xaxis_linear (cairo_t * cr, Curve * this_curve);
153extern void setup_xaxis_log (cairo_t * cr, Curve * this_curve, int rid, int cid, gboolean draw_it);
154extern void setup_yaxis_linear (cairo_t * cr, Curve * this_curve);
155extern void setup_yaxis_log (cairo_t * cr, Curve * this_curve, gboolean draw_it);
156
157extern void write_curve (gpointer idata);
158extern void save_image (gpointer cdata);
159extern void remove_extra (ExtraSets * sets, CurveExtra * ctmp);
160extern void curve_window_add_menu_bar (tint * data);
161extern GtkWidget * curve_popup_menu (gpointer data);
162extern void show_curve_popup_menu (GdkEvent * event, gpointer data);
163
164void draw_curve (cairo_t * cr,
165 int cid,
166 int rid,
167 project * this_proj,
168 int points,
169 ColRGBA withcolor,
170 int xscale,
171 int yscale,
172 int asp,
173 int vdash,
174 double thick,
175 int glyp,
176 double gize,
177 int freq,
178 double hwidth,
179 double hopac,
180 int hpos,
181 int extra,
182 int pid);
183
184extern void show_legend (cairo_t * cr, project * this_proj, int rid, int cid);
185#endif
int tickpos
Definition curve.c:84
int xlog
Definition curve.c:75
int labpos
Definition curve.c:84
double ay
Definition curve.c:71
double cxy[2]
Definition curve.c:72
double DYDRAW
Definition curve.c:67
double xmax
Definition curve.c:68
int ylog
Definition curve.c:75
int dylog
Definition curve.c:76
gint32 etime
Definition curve.c:64
double DXDRAW
Definition curve.c:67
int resol[2]
Definition curve.c:65
char * sca
Definition curve.c:77
int xmarge
Definition curve.c:87
const double dashed1[]
Definition curve.c:98
double YDRAW
Definition curve.c:66
int ymarge
Definition curve.c:88
double mticks
Definition curve.c:73
const double pdashed[]
Definition curve.c:125
int ndash
Definition curve.c:92
double XDRAW
Definition curve.c:66
int amajt
Definition curve.c:83
double y_max
Definition curve.c:70
double x_max
Definition curve.c:69
gboolean dogrid
Definition curve.c:81
double ax
Definition curve.c:71
int lenp
Definition curve.c:126
double y_min
Definition curve.c:70
int nglyph
Definition curve.c:93
int len1
Definition curve.c:99
int dxlog
Definition curve.c:76
int nticks
Definition curve.c:74
PangoLayout * layout
Definition curve.c:80
int x_shift
Definition curve.c:82
int amint
Definition curve.c:83
int originp
Definition curve.c:78
double x_min
Definition curve.c:69
char * curve_image_file
Definition curve.c:89
double ymax
Definition curve.c:68
int y_shift
Definition curve.c:82
void show_frame(cairo_t *cd, int tf, int da, int res[2], double ti, double x[2], double y[2], ColRGBA dcol)
draw frame
Definition frame.c:81
void setup_yaxis_linear(cairo_t *cr, Curve *this_curve)
setup y axis using a linear scale
Definition yaxis.c:118
GtkWidget * xyp[2]
GtkWidget * majt
void add_curve_widgets(project *this_proj, int rid)
add curve widgets to the project
Definition cwidget.c:283
GtkWidget * curve_popup_menu(gpointer data)
create curve popup menu
Definition m_curve.c:719
void setup_xaxis_linear(cairo_t *cr, Curve *this_curve)
setup x axis using a linear scale
Definition xaxis.c:52
G_MODULE_EXPORT gboolean to_hide_curve(GtkWindow *thecurve, gpointer data)
void show_curve_popup_menu(GdkEvent *event, gpointer data)
GtkWidget * vmin
void hide_curve(gpointer data)
hide curve
Definition show.c:312
void show_title(cairo_t *cr, Curve *this_curve)
draw title
Definition title.c:104
void initcurve(project *pid, int rid, int cid)
initialize curve widget
Definition cwidget.c:159
GtkWidget * nmi[2]
void label_curve(cairo_t *cr, double val, int axe, int p, Curve *this_curve)
draw axis label
Definition labels.c:56
void draw_curve(cairo_t *cr, int cid, int rid, project *this_proj, int points, ColRGBA withcolor, int xscale, int yscale, int asp, int vdash, double thick, int glyp, double gize, int freq, double hwidth, double hopac, int hpos, int extra, int pid)
draw target curve to the cairo drawing context
Definition draw.c:85
void erase_curves(project *this_proj, int c)
free all curve(s) data
Definition curve.c:552
int get_curve_shift(Curve *this_curve)
get cruve window size shift
Definition w_curve.c:555
double scale(double axe)
find appropriate major tick spacing based on axis length
Definition curve.c:205
void setup_yaxis_log(cairo_t *cr, Curve *this_curve, gboolean draw_it)
setup y axis using a log scale
Definition yaxis.c:224
void show_legend(cairo_t *cr, project *this_proj, int rid, int cid)
draw legend
Definition legend.c:56
void prep_plot(Curve *this_curve)
prepare curve plot (setting up variables for the plot)
Definition curve.c:326
void hide_curves(project *this_proj, int c)
for project hide all curves for a calculation
Definition curve.c:472
void save_image(gpointer cdata)
export curve window plot to image - creating the dialog
Definition w_img.c:309
void allocextra(int a, int b, int c)
void prep_frame(cairo_t *fr, int da, double ti, ColRGBA dcol)
draw frame line
Definition frame.c:56
void update_curve(gpointer curve)
update curve rendering
Definition curve.c:635
Curve * get_curve_from_pointer(gpointer data)
get Curve pointer from pointer
Definition curve.c:313
curve_dash * selectdash(int iddash)
setup dash pointer
Definition curve.c:135
double back_alpha
Definition w_img.c:58
void draw_frame(cairo_t *cr, Curve *this_curve, int rid, int cid)
draw frame and axis data
Definition frame.c:163
void curve_window_add_menu_bar(tint *data)
add menu bar to the curve window
Definition m_curve.c:625
void clean_curves_data(int calc, int start, int end)
clean curve data on a range of curve id
Definition initc.c:61
void init_curve_title(project *this_proj, int rid, int cid)
init curve title and axis titles
Definition cwidget.c:260
const gchar * default_title(int ax, gpointer data)
default title string
Definition title.c:54
void show_curve(GtkDrawingArea *area, cairo_t *cr, int width, int height, gpointer curve)
show curve callback GTK3
Definition show.c:77
void remove_extra(ExtraSets *sets, CurveExtra *ctmp)
remove data from extra set(s)
Definition m_curve.c:159
void write_curve(gpointer idata)
save curve data - creating the dialog
Definition w_data.c:170
void setup_xaxis_log(cairo_t *cr, Curve *this_curve, int rid, int cid, gboolean draw_it)
setup x axis using a log scale
Definition xaxis.c:159
GtkWidget * axischoice
void update_curves()
update all curve(s) rendering for all project(s) in the workspace
Definition curve.c:605
void autoscale_axis(project *this_proj, Curve *this_curve, int rid, int cid, int aid)
autoscale axis
Definition yaxis.c:56
void draw_glyph(cairo_t *in, int theglyph, double x, double y, ColRGBA gcolor, double size)
draw glyph at (x,y)
Definition glyph.c:88
GtkWidget * vmax
Definition curve.h:58
atom * tf
Definition d_measures.c:70
float val
Definition dlp_init.c:117
Global variable declarations Global convenience function declarations Global data structure defin...
double y
Definition ogl_draw.c:63
double x
Definition ogl_draw.c:63
int b
Definition curve.h:72
const double * a
Definition curve.h:71
Definition global.h:118
GtkWidget * res[2]
Definition w_encode.c:342