6 /*****************************************************************************
8 *****************************************************************************/
20 /* Vector of unallocated colors */
21 static GdkColor CF_Colors
[] =
23 { 0, 0xffff, 0x0000, 0x0000 }, // RED
24 { 0, 0x0000, 0xffff, 0x0000 }, // GREEN
25 { 0, 0x0000, 0x0000, 0xffff }, // BLUE
26 { 0, 0xffff, 0xffff, 0xffff }, // WHITE
27 { 0, 0x0000, 0x0000, 0x0000 } // BLACK
32 GtkWidget
*Drawing_Area_V
;
35 gint height
, width
, depth
;
40 Drawing_t
*Drawing_construct(void)
43 Drawing_t
*Drawing
= g_new(Drawing_t
, 1);
45 Drawing
->Drawing_Area_V
= gtk_drawing_area_new ();
47 g_object_set_data_full(
48 G_OBJECT(Drawing
->Drawing_Area_V
),
51 (GDestroyNotify
)Drawing_destroy
);
53 gtk_widget_modify_bg( Drawing
->Drawing_Area_V
,
57 gdk_window_get_geometry(Drawing
->Drawing_Area_V
->window
,
63 Drawing
->Pixmap
= gdk_pixmap_new(
64 Drawing
->Drawing_Area_V
->window
,
72 void Drawing_destroy(Drawing_t
*Drawing
)
75 // Do not unref here, Drawing_t destroyed by it's widget.
76 //g_object_unref( G_OBJECT(Drawing->Drawing_Area_V));
81 GtkWidget
*Drawing_getWidget(Drawing_t
*Drawing
)
83 return Drawing
->Drawing_Area_V
;
86 /* get_time_from_pixels
88 * Get the time interval from window time and pixels, and pixels requested. This
89 * function uses TimeMul, which should only be used if the float value is lower
90 * that 4, and here it's always lower than 1, so it's ok.
92 void convert_pixels_to_time(
95 LttTime
*window_time_begin
,
96 LttTime
*window_time_end
,
99 LttTime window_time_interval
;
101 TimeSub(window_time_interval
, *window_time_end
, *window_time_begin
);
104 TimeMul(*time
, window_time_interval
,
105 (x
/(float)Drawing
->width
));
106 TimeAdd(*time
, *window_time_begin
, *time
);
112 void convert_time_to_pixels(
113 LttTime window_time_begin
,
114 LttTime window_time_end
,
119 LttTime window_time_interval
;
120 float interval_float
, time_float
;
122 TimeSub(window_time_interval
, window_time_end
, window_time_begin
);
124 TimeSub(time
, time
, window_time_begin
);
126 interval_float
= (window_time_interval
.tv_sec
* NANSECOND_CONST
)
127 + window_time_interval
.tv_nsec
;
128 time_float
= (time
.tv_sec
* NANSECOND_CONST
)
131 *x
= (guint
)(time_float
/interval_float
* Drawing
->width
);
137 void Drawing_Resize(Drawing_t
*Drawing
, guint h
, guint w
)
139 Drawing
->height
= h
;
142 gtk_widget_set_size_request ( Drawing
->Drawing_Area_V
,