#include "Drawing.h"
#include "CFV-private.h"
+#define MAX_PATH_LEN 256
+
+//FIXME : remove this include when tests finished.
+#include <string.h>
+
+void test_draw_item(Drawing_t *Drawing,
+ GdkPixmap *Pixmap)
+{
+ PropertiesIcon properties_icon;
+ DrawContext draw_context;
+
+ DrawInfo current, previous;
+ ItemInfo over, middle, under, modify_over, modify_middle, modify_under;
+
+ int i,j;
+
+ for(i=0; i<1024;i=i+15)
+ {
+ for(j=0;j<768;j=j+15)
+ {
+ over.x = i;
+ over.y = j;
+ over.ts = NULL;
+ over.tfs = NULL;
+
+ current.modify_over = &over;
+
+ draw_context.drawable = Pixmap;
+ draw_context.gc = Drawing->Drawing_Area_V->style->black_gc;
+
+ draw_context.Current = ¤t;
+ draw_context.Previous = NULL;
+
+ properties_icon.icon_name = g_new(char, MAX_PATH_LEN);
+ strncpy(properties_icon.icon_name,
+ "/home/compudj/local/share/LinuxTraceToolkit/pixmaps/mini-display.xpm",
+ MAX_PATH_LEN);
+ properties_icon.width = -1;
+ properties_icon.height = -1;
+ properties_icon.position = OVER;
+ draw_icon(&properties_icon, &draw_context);
+ g_free(properties_icon.icon_name);
+ }
+ }
+
+}
/* NOTE : no drawing data should be sent there, since the drawing widget
* has not been initialized */
Drawing_t *Drawing,
GdkPixmap *Pixmap,
gint x, gint y, // y not used here?
- gint width,
+ gint width,
gint height) // height won't be used here ?
{
- int i;
+ int i,j;
ProcessInfo Process_Info = {10000, 12000, 55600};
//ProcessInfo Process_Info = {156, 14000, 55500};
GtkTreeRowReference *got_RowRef;
gint Font_Size;
//icon
- GdkBitmap *mask = g_new(GdkBitmap, 1);
- GdkPixmap *icon_pixmap = g_new(GdkPixmap, 1);
- GdkGC * gc = gdk_gc_new(Pixmap);
-
+ //GdkBitmap *mask = g_new(GdkBitmap, 1);
+ //GdkPixmap *icon_pixmap = g_new(GdkPixmap, 1);
+ GdkGC * gc;
// rectangle
GdkColor color = { 0, 0xffff, 0x0000, 0x0000 };
+ gc = gdk_gc_new(Pixmap);
/* Sent text data */
layout = gtk_widget_create_pango_layout(Drawing->Drawing_Area_V,
NULL);
y+(height/2), x + width, y+(height/2),
Drawing->Drawing_Area_V->style->black_gc);
-
- /* Draw icon */
- icon_pixmap = gdk_pixmap_create_from_xpm(Pixmap, &mask, NULL,
-// "/home/compudj/local/share/LinuxTraceToolkit/pixmaps/move_message.xpm");
- "/home/compudj/local/share/LinuxTraceToolkit/pixmaps/mini-display.xpm");
- gdk_gc_copy(gc, Drawing->Drawing_Area_V->style->black_gc);
- gdk_gc_set_clip_mask(gc, mask);
- gdk_draw_drawable(Pixmap,
- gc,
- icon_pixmap,
- 0, 0, 0, 0, -1, -1);
-
- g_free(icon_pixmap);
- g_free(mask);
-
g_info("y : %u, height : %u", y, height);
Drawing->Drawing_Area_V->style->black_gc);
g_info("y : %u, height : %u", y, height);
+
+
+ /* IMPORTANT : This action uses the cpu heavily! */
+ //icon_pixmap = gdk_pixmap_create_from_xpm(Pixmap, &mask, NULL,
+// "/home/compudj/local/share/LinuxTraceToolkit/pixmaps/move_message.xpm");
+ // "/home/compudj/local/share/LinuxTraceToolkit/pixmaps/mini-display.xpm");
+
+ // gdk_gc_set_clip_mask(Drawing->Drawing_Area_V->style->black_gc, mask);
+
+// for(i=x;i<x+width;i=i+15)
+// {
+// for(j=0;j<height*20;j=j+15)
+// {
+
+ /* Draw icon */
+ //gdk_gc_copy(gc, Drawing->Drawing_Area_V->style->black_gc);
+// gdk_gc_set_clip_origin(Drawing->Drawing_Area_V->style->black_gc, i, j);
+// gdk_draw_drawable(Pixmap,
+// Drawing->Drawing_Area_V->style->black_gc,
+// icon_pixmap,
+// 0, 0, i, j, -1, -1);
+
+// }
+// }
+
+ test_draw_item(Drawing,Pixmap);
+
+ //gdk_gc_set_clip_origin(Drawing->Drawing_Area_V->style->black_gc, 0, 0);
+ //gdk_gc_set_clip_mask(Drawing->Drawing_Area_V->style->black_gc, NULL);
+
+ //g_free(icon_pixmap);
+ //g_free(mask);
+
+
+
+
pango_font_description_set_size(FontDesc, Font_Size);
+ g_object_unref(layout);
g_free(gc);
- g_free(layout);
- //g_free(context);
}
void send_test_process(ProcessList *Process_List, Drawing_t *Drawing)
ControlFlowData *Control_Flow_Data = guicontrolflow() ;
Control_Flow_Data->Parent_Window = pmParentWindow;
+ TimeWindow *time_window = guicontrolflow_get_time_window(Control_Flow_Data);
+ time_window->start_time.tv_sec = 0;
+ time_window->start_time.tv_nsec = 0;
+ time_window->time_width.tv_sec = 0;
+ time_window->time_width.tv_nsec = 0;
+ LttTime *current_time = guicontrolflow_get_current_time(Control_Flow_Data);
+ current_time->tv_sec = 0;
+ current_time->tv_nsec = 0;
+
+ //g_critical("time width1 : %u",time_window->time_width);
+
get_time_window(pmParentWindow,
- guicontrolflow_get_time_window(Control_Flow_Data));
+ time_window);
get_current_time(pmParentWindow,
- guicontrolflow_get_current_time(Control_Flow_Data));
+ current_time);
+ //g_critical("time width2 : %u",time_window->time_width);
// Unreg done in the GuiControlFlow_Destructor
reg_update_time_window(update_time_window_hook, Control_Flow_Data,
pmParentWindow);
}
-#ifdef DEBUG
/* Hook called before drawing. Gets the initial context at the beginning of the
* drawing interval and copy it to the context in Event_Request.
*/
int draw_before_hook(void *hook_data, void *call_data)
{
EventRequest *Event_Request = (EventRequest*)hook_data;
- EventsContext Events_Context = (EventsContext*)call_data;
+ //EventsContext Events_Context = (EventsContext*)call_data;
- Event_Request->Events_Context = Events_Context;
+ //Event_Request->Events_Context = Events_Context;
return 0;
}
{
EventRequest *Event_Request = (EventRequest*)hook_data;
+ //static int i=0;
+
+ //i++;
+ //g_critical("%i", i);
+
+ /* Text dumping if the information */
+ GString *string = g_string_new("");;
+ gboolean field_names = TRUE, state = TRUE;
+ LttvTracefileContext *tfc = (LttvTracefileContext *)call_data;
+
+ LttvTracefileState *tfs = (LttvTracefileState *)call_data;
+
+ LttEvent *e;
+
+ e = tfc->e;
+
+ lttv_event_to_string(e, tfc->tf, string, TRUE, field_names, tfs);
+ g_string_append_printf(string,"\n");
+
+ if(state) {
+ g_string_append_printf(string, " %s",
+ g_quark_to_string(tfs->process->state->s));
+ }
+
+ g_info("%s",string->str);
+
+ g_string_free(string, TRUE);
+
+ /* End of text dump */
+
+ /* Add process to process list (if not present) and get drawing "y" from
+ * process position */
+ guint pid = tfs->process->pid;
+ LttTime birth = tfs->process->creation_time;
+ guint y = 0, height = 0;
+ ProcessList *process_list =
+ guicontrolflow_get_process_list(Event_Request->Control_Flow_Data);
+
+ if(processlist_get_process_pixels(process_list,
+ pid,
+ &birth,
+ &y,
+ &height) == 1)
+ {
+ /* Process not present */
+ processlist_add(process_list,
+ pid,
+ &birth,
+ &y);
+ drawing_insert_square( Event_Request->Control_Flow_Data->Drawing, y, height);
+ }
+
+ /* Find pixels corresponding to time of the event. If the time does
+ * not fit in the window, show a warning, not supposed to happend. */
+
+
+ /* Finally, draw what represents the event. */
+
+
return 0;
}
g_free(Event_Request);
return 0;
}
-#endif