This splits the dive time, depth, pressure and temperature maxima and minima setup from the per-dive-computer "create_plot_info()" function into one setup function that walks _all_ the dive computers, so that we have a global maxima and minima. That way the graph scaling we set up will now fit the data from all dive computers rather than just the particular one we are plotting. So if you switch back-and-forth between computers, the scale (which is defined by the extremes) remains the same. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
60 lines
1.5 KiB
C
60 lines
1.5 KiB
C
#ifndef DISPLAY_H
|
|
#define DISPLAY_H
|
|
|
|
#include <cairo.h>
|
|
|
|
#define DPI_SCREEN 72.0
|
|
#define SCALE_SCREEN 1.0
|
|
#define SCALE_PRINT (1.0 / DPI_SCREEN)
|
|
|
|
extern void repaint_dive(void);
|
|
extern void do_print(void);
|
|
|
|
/* Plot info with smoothing, velocity indication
|
|
* and one-, two- and three-minute minimums and maximums */
|
|
struct plot_info {
|
|
int nr;
|
|
int maxtime;
|
|
int meandepth, maxdepth;
|
|
int minpressure, maxpressure;
|
|
int mintemp, maxtemp;
|
|
double endtempcoord;
|
|
gboolean has_ndl;
|
|
struct plot_data *entry;
|
|
};
|
|
|
|
/*
|
|
* Cairo scaling really is horribly horribly mis-designed.
|
|
*
|
|
* Which is sad, because I really like Cairo otherwise. But
|
|
* the fact that the line width is scaled with the same scale
|
|
* as the coordinate system is a f*&%ing disaster. So we
|
|
* can't use it, and instead have this butt-ugly wrapper thing..
|
|
*/
|
|
struct graphics_context {
|
|
int printer;
|
|
cairo_t *cr;
|
|
cairo_rectangle_t drawing_area;
|
|
double maxx, maxy;
|
|
double leftx, rightx;
|
|
double topy, bottomy;
|
|
unsigned int maxtime;
|
|
struct plot_info pi;
|
|
};
|
|
|
|
typedef enum { SC_SCREEN, SC_PRINT } scale_mode_t;
|
|
|
|
extern void plot(struct graphics_context *gc, struct dive *dive, scale_mode_t scale);
|
|
extern void init_profile_background(struct graphics_context *gc);
|
|
extern void attach_tooltip(int x, int y, int w, int h, const char *text);
|
|
extern void get_plot_details(struct graphics_context *gc, int time, char *buf, size_t bufsize);
|
|
|
|
struct options {
|
|
enum { PRETTY, TABLE, ONEPERPAGE } type;
|
|
int print_selected;
|
|
};
|
|
|
|
extern char zoomed_plot;
|
|
|
|
#endif
|