projects
/
lttv.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
basic drawing widget, nothing drawn for now
[lttv.git]
/
ltt
/
branches
/
poly
/
lttv
/
modules
/
guiControlFlow
/
Drawing.c
diff --git
a/ltt/branches/poly/lttv/modules/guiControlFlow/Drawing.c
b/ltt/branches/poly/lttv/modules/guiControlFlow/Drawing.c
index 009109f806c19ae7efb88dab8872c068e68281ba..0210b7136160d3fbfaf297d81e80172b57d677b5 100644
(file)
--- a/
ltt/branches/poly/lttv/modules/guiControlFlow/Drawing.c
+++ b/
ltt/branches/poly/lttv/modules/guiControlFlow/Drawing.c
@@
-1,5
+1,7
@@
#include "Drawing.h"
#include "Drawing.h"
+#include <gtk/gtk.h>
+#include <gdk/gdk.h>
/*****************************************************************************
* Drawing functions *
/*****************************************************************************
* Drawing functions *
@@
-26,43
+28,61
@@
static GdkColor CF_Colors [] =
};
};
-typedef struct _Drawing_t {
- GtkWidget *Drawing_Area_V
+struct _Drawing_t {
+ GtkWidget *Drawing_Area_V;
+ GdkPixmap *Pixmap;
- g
uint height, wid
th;
+ g
int height, width, dep
th;
-}
Drawing_t
;
+};
-Drawing_t *Drawing(void)
+Drawing_t *Drawing
_construct
(void)
{
{
- Drawing_t Drawing = g_new(Drawing_t, 1);
+ Drawing_t
*
Drawing = g_new(Drawing_t, 1);
Drawing->Drawing_Area_V = gtk_drawing_area_new ();
g_object_set_data_full(
G_OBJECT(Drawing->Drawing_Area_V),
Drawing->Drawing_Area_V = gtk_drawing_area_new ();
g_object_set_data_full(
G_OBJECT(Drawing->Drawing_Area_V),
- "Drawing_Data",
+ "
Link_
Drawing_Data",
Drawing,
(GDestroyNotify)Drawing_destroy);
Drawing,
(GDestroyNotify)Drawing_destroy);
- gtk_widget_modify_bg(
Control_Flow_Data
->Drawing_Area_V,
+ gtk_widget_modify_bg(
Drawing
->Drawing_Area_V,
GTK_STATE_NORMAL,
&CF_Colors[BLACK]);
GTK_STATE_NORMAL,
&CF_Colors[BLACK]);
-
+ gdk_window_get_geometry(Drawing->Drawing_Area_V->window,
+ NULL, NULL,
+ &(Drawing->width),
+ &(Drawing->height),
+ &(Drawing->depth));
+
+ Drawing->Pixmap = gdk_pixmap_new(
+ Drawing->Drawing_Area_V->window,
+ Drawing->width,
+ Drawing->height,
+ Drawing->depth);
+
return Drawing;
}
void Drawing_destroy(Drawing_t *Drawing)
{
return Drawing;
}
void Drawing_destroy(Drawing_t *Drawing)
{
- g_object_unref( G_OBJECT(Drawing->Drawing_Area_V));
+ // Do not unref here, Drawing_t destroyed by it's widget.
+ //g_object_unref( G_OBJECT(Drawing->Drawing_Area_V));
g_free(Drawing);
}
g_free(Drawing);
}
+GtkWidget *Drawing_getWidget(Drawing_t *Drawing)
+{
+ return Drawing->Drawing_Area_V;
+}
+
/* get_time_from_pixels
*
* Get the time interval from window time and pixels, and pixels requested. This
/* get_time_from_pixels
*
* Get the time interval from window time and pixels, and pixels requested. This
@@
-74,17
+94,16
@@
void convert_pixels_to_time(
guint x,
LttTime *window_time_begin,
LttTime *window_time_end,
guint x,
LttTime *window_time_begin,
LttTime *window_time_end,
- LttTime *time,
- );
+ LttTime *time)
{
LttTime window_time_interval;
{
LttTime window_time_interval;
- TimeSub(window_time_interval, *window_time_end, window_time_begin);
+ TimeSub(window_time_interval, *window_time_end,
*
window_time_begin);
TimeMul(*time, window_time_interval,
(x/(float)Drawing->width));
TimeMul(*time, window_time_interval,
(x/(float)Drawing->width));
- TimeAdd(*time, window_time_begin, *time);
+ TimeAdd(*time,
*
window_time_begin, *time);
}
}
@@
-95,34
+114,34
@@
void convert_time_to_pixels(
LttTime window_time_end,
LttTime time,
Drawing_t *Drawing,
LttTime window_time_end,
LttTime time,
Drawing_t *Drawing,
- guint *x,
- )
+ guint *x)
{
LttTime window_time_interval;
{
LttTime window_time_interval;
+ float interval_float, time_float;
TimeSub(window_time_interval, window_time_end, window_time_begin);
TimeSub(window_time_interval, window_time_end, window_time_begin);
- TimeSub(time, time, wi
m
dow_time_begin);
+ TimeSub(time, time, wi
n
dow_time_begin);
- *x = (guint)((time/(float)window_time_interval) * Drawing->width);
+ interval_float = (window_time_interval.tv_sec * NANSECOND_CONST)
+ + window_time_interval.tv_nsec;
+ time_float = (time.tv_sec * NANSECOND_CONST)
+ + time.tv_nsec;
+
+ *x = (guint)(time_float/interval_float * Drawing->width);
}
}
-void Drawing_Resize(Drawing_t *Drawing, guint h, guint
,
w)
+void Drawing_Resize(Drawing_t *Drawing, guint h, guint w)
{
{
- guint w;
-
Drawing->height = h ;
Drawing->height = h ;
- Drawing->w
eight
= w ;
+ Drawing->w
idth
= w ;
- gtk_widget_set_size_request (
Control_Flow_Data
->Drawing_Area_V,
- Drawing->w
eight
,
+ gtk_widget_set_size_request (
Drawing
->Drawing_Area_V,
+ Drawing->w
idth
,
Drawing->height);
}
Drawing->height);
}
-
-
-
This page took
0.039902 seconds
and
4
git commands to generate.