X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2FguiControlFlow%2FDraw_Item.c;h=eccfef0fea5f876b46b58ab4c06bd5c499d28020;hb=90ffd2adca8a23a36f3a9b7279f40797907723de;hp=70befcc4005a93308be4a29faefaa5d7cf41a4d3;hpb=1a31868cb394a6b2214965baee974fa3cea927f3;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/guiControlFlow/Draw_Item.c b/ltt/branches/poly/lttv/modules/guiControlFlow/Draw_Item.c index 70befcc4..eccfef0f 100644 --- a/ltt/branches/poly/lttv/modules/guiControlFlow/Draw_Item.c +++ b/ltt/branches/poly/lttv/modules/guiControlFlow/Draw_Item.c @@ -90,138 +90,6 @@ #define MAX_PATH_LEN 256 -/* The DrawContext keeps information about the current drawing position and - * the previous one, so we can use both to draw lines. - * - * over : position for drawing over the middle line. - * middle : middle line position. - * under : position for drawing under the middle line. - * - * the modify_* are used to take into account that we should go forward - * when we draw a text, an arc or an icon, while it's unneeded when we - * draw a line or background. - * - */ -struct _DrawContext { - GdkDrawable *drawable; - GdkGC *gc; - - - DrawInfo *Current; - DrawInfo *Previous; -}; - -struct _DrawInfo { - ItemInfo *over; - ItemInfo *middle; - ItemInfo *under; - - ItemInfo *modify_over; - ItemInfo *modify_middle; - ItemInfo *modify_under; -}; - -/* LttvExecutionState is accessible through the LttvTracefileState. Is has - * a pointer to the LttvProcessState which points to the top of stack - * execution state : LttvExecutionState *state. - * - * LttvExecutionState contains (useful here): - * LttvExecutionMode t, - * LttvExecutionSubmode n, - * LttvProcessStatus s - * - * - * LttvTraceState will be used in the case we need the string of the - * different processes, eventtype_names, syscall_names, trap_names, irq_names. - * - * LttvTracefileState also gives the cpu_name and, as it herits from - * LttvTracefileContext, it gives the LttEvent structure, which is needed - * to get facility name and event name. - */ -struct _ItemInfo { - gint x, y; - LttvTraceState *ts; - LttvTracefileState *tfs; -}; - -/* - * Structure used to keep information about icons. - */ -struct _IconStruct { - GdkPixmap *pixmap; - GdkBitmap *mask; -}; - - -/* - * The Item element is only used so the DrawOperation is modifiable by users. - * During drawing, only the Hook is needed. - */ -struct _DrawOperation { - DrawableItems Item; - LttvHooks *Hook; -}; - -/* - * We define here each items that can be drawn, together with their - * associated priority. Many item types can have the same priority, - * it's only used for quicksorting the operations when we add a new one - * to the array of operations to perform. Lower priorities are executed - * first. So, for example, we may want to give background color a value - * of 10 while a line would have 20, so the background color, which - * is in fact a rectangle, does not hide the line. - */ - -static int Items_Priorities[] = { - 50, /* ITEM_TEXT */ - 40, /* ITEM_ICON */ - 20, /* ITEM_LINE */ - 30, /* ITEM_POINT */ - 10 /* ITEM_BACKGROUND */ -}; - -/* - * Here are the different structures describing each item type that can be - * drawn. They contain the information necessary to draw the item : not the - * position (this is provided by the DrawContext), but the text, icon name, - * line width, color; all the properties of the specific items. - */ - -struct _PropertiesText { - GdkColor *foreground; - GdkColor *background; - gint size; - gchar *Text; - RelPos position; -}; - - -struct _PropertiesIcon { - gchar *icon_name; - gint width; - gint height; - RelPos position; -}; - -struct _PropertiesLine { - GdkColor *color; - gint line_width; - GdkLineStyle style; - RelPos position; -}; - -struct _PropertiesArc { - GdkColor *color; - gint size; /* We force circle by width = height */ - gboolean filled; - RelPos position; -}; - -struct _PropertiesBG { - GdkColor *color; -}; - - /* Drawing hook functions */ gboolean draw_text( void *hook_data, void *call_data) { @@ -237,13 +105,11 @@ gboolean draw_text( void *hook_data, void *call_data) gdk_gc_set_foreground(Draw_Context->gc, Properties->foreground); gdk_gc_set_background(Draw_Context->gc, Properties->background); - layout = gtk_widget_create_pango_layout(GTK_WIDGET(Draw_Context->drawable), NULL); + layout = Draw_Context->pango_layout; context = pango_layout_get_context(layout); FontDesc = pango_context_get_font_description(context); - Font_Size = pango_font_description_get_size(FontDesc); pango_font_description_set_size(FontDesc, Properties->size*PANGO_SCALE); - pango_layout_set_text(layout, Properties->Text, -1); pango_layout_get_pixel_extents(layout, &ink_rect, NULL); switch(Properties->position) { @@ -271,10 +137,6 @@ gboolean draw_text( void *hook_data, void *call_data) break; } - - pango_font_description_set_size(FontDesc, Font_Size); - g_free(layout); - return 0; } @@ -291,7 +153,7 @@ gboolean draw_icon( void *hook_data, void *call_data) LttvAttributeValue value; gchar icon_name[MAX_PATH_LEN] = "icons/"; IconStruct *icon_info; - + strcat(icon_name, Properties->icon_name); g_assert(lttv_iattribute_find_by_path(attributes, icon_name, @@ -426,7 +288,6 @@ gboolean draw_arc( void *hook_data, void *call_data) Draw_Context->Current->modify_over->y, Properties->size, Properties->size, 0, 360*64); Draw_Context->Current->modify_over->x += Properties->size; - break; case MIDDLE: gdk_draw_arc(Draw_Context->drawable, Draw_Context->gc,