X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2Fcontrolflow%2Fdrawing.h;h=69840a1a75f5f51d07d229dc271a102261bc7165;hb=a18124ff571a52da3166455842735142ad067a89;hp=6576a89213ebe016a8283ce9d16f08270904d0b8;hpb=3cb8b205f358d14996003565628dfa70ec95a311;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/drawing.h b/ltt/branches/poly/lttv/modules/gui/controlflow/drawing.h index 6576a892..69840a1a 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/drawing.h +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/drawing.h @@ -24,12 +24,33 @@ #include #include #include +#include +#include +#include #include "cfv.h" #include "drawitem.h" #define SAFETY 50 // safety pixels at right and bottom of pixmap buffer +typedef enum _draw_color { + COL_BLACK, + COL_WHITE, + COL_RUN_USER_MODE,/* green */ + COL_RUN_SYSCALL, /* pale blue */ + COL_RUN_TRAP, /* yellow */ + COL_RUN_IRQ, /* red */ + COL_WAIT, /* dark red */ + COL_WAIT_CPU, /* dark yellow */ + COL_ZOMBIE, /* dark purple */ + COL_WAIT_FORK, /* dark green */ + COL_EXIT, /* "less dark" magenta */ + COL_MODE_UNKNOWN, /* white */ + COL_UNNAMED, /* white */ + NUM_COLORS } draw_color; + +extern GdkColor drawing_colors[NUM_COLORS]; + /* This part of the viewer does : * Draw horizontal lines, getting graphic context as arg. * Copy region of the screen into another. @@ -57,14 +78,30 @@ typedef struct _Drawing_t Drawing_t; struct _Drawing_t { GtkWidget *vbox; GtkWidget *drawing_area; + //GtkWidget *scrolled_window; + GtkWidget *hbox; + GtkWidget *viewport; + GtkWidget *scrollbar; + + GtkWidget *ruler_hbox; GtkWidget *ruler; + GtkWidget *padding; GdkPixmap *pixmap; ControlFlowData *control_flow_data; PangoLayout *pango_layout; - gint height, width, depth; + gint height, width, depth; + /* X coordinate of damaged region */ + gint damage_begin, damage_end; /* damaged region to be exposed, + updated per chunk */ + LttTime last_start; + GdkGC *dotted_gc; + GdkGC *gc; + + /* Position of the horizontal selector, -1 for none */ + gint horizontal_sel; }; Drawing_t *drawing_construct(ControlFlowData *control_flow_data); @@ -73,10 +110,6 @@ void drawing_destroy(Drawing_t *drawing); GtkWidget *drawing_get_widget(Drawing_t *drawing); GtkWidget *drawing_get_drawing_area(Drawing_t *drawing); -//void drawing_Refresh ( Drawing_t *drawing, -// guint x, guint y, -// guint width, guint height); - void drawing_draw_line( Drawing_t *drawing, GdkPixmap *pixmap, guint x1, guint y1, @@ -88,6 +121,9 @@ void drawing_draw_line( Drawing_t *drawing, // guint xdest, guint ydest, // guint width, guint height); +/* Clear the drawing : make it 1xwidth. */ +void drawing_clear(Drawing_t *drawing); + /* Insert a square corresponding to a new process in the list */ void drawing_insert_square(Drawing_t *drawing, guint y, @@ -98,23 +134,34 @@ void drawing_remove_square(Drawing_t *drawing, guint y, guint height); - -//void drawing_Resize(Drawing_t *drawing, guint h, guint w); - -void convert_pixels_to_time( +__inline void convert_pixels_to_time( gint width, guint x, - LttTime *window_time_begin, - LttTime *window_time_end, + TimeWindow time_window, LttTime *time); -void convert_time_to_pixels( - LttTime window_time_begin, - LttTime window_time_end, +__inline void convert_time_to_pixels( + TimeWindow time_window, LttTime time, gint width, guint *x); void drawing_update_ruler(Drawing_t *drawing, TimeWindow *time_window); +void drawing_request_expose(EventsRequest *events_request, + LttvTracesetState *tss, + LttTime end_time); + +void drawing_data_request_begin(EventsRequest *events_request, + LttvTracesetState *tss); +void drawing_chunk_begin(EventsRequest *events_request, LttvTracesetState *tss); + + + +void +tree_row_activated(GtkTreeModel *treemodel, + GtkTreePath *arg1, + GtkTreeViewColumn *arg2, + gpointer user_data); + #endif // _DRAWING_H