aboutsummaryrefslogtreecommitdiffstats
path: root/gtk/graph_analysis.c
diff options
context:
space:
mode:
authoretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>2011-08-09 12:17:06 +0000
committeretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>2011-08-09 12:17:06 +0000
commitacdf060b46cf512afc8db17333dcbfd36f44ce62 (patch)
tree09f617761c6e2f5617f919f56aa3447d3bf5d1af /gtk/graph_analysis.c
parentb7aa94c611faeeb44e480603a51af8abbde62225 (diff)
Use cairo in a couple of more places.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@38424 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'gtk/graph_analysis.c')
-rw-r--r--gtk/graph_analysis.c58
1 files changed, 30 insertions, 28 deletions
diff --git a/gtk/graph_analysis.c b/gtk/graph_analysis.c
index 02c5a90565..50021d604a 100644
--- a/gtk/graph_analysis.c
+++ b/gtk/graph_analysis.c
@@ -187,22 +187,29 @@ static void on_destroy(GtkWidget *win _U_, graph_analysis_data_t *user_data)
#define HEIGHT_ARROW 6
/****************************************************************************/
-static void draw_arrow(GdkDrawable *pixmap, GdkGC *gc, gint x, gint y, gboolean direction)
+static void draw_arrow(GdkDrawable *pixmap, GdkColor *color, gint x, gint y, gboolean arrow_type)
{
- GdkPoint arrow_point[3];
-
- arrow_point[0].x = x;
- arrow_point[0].y = y-HEIGHT_ARROW/2;
- if (direction == RIGHT_ARROW)
- arrow_point[1].x = x+WIDTH_ARROW;
- else
- arrow_point[1].x = x-WIDTH_ARROW;
- arrow_point[1].y = y;
- arrow_point[2].x = x;
- arrow_point[2].y = y+HEIGHT_ARROW/2;;
+ cairo_t *cr;
if (GDK_IS_DRAWABLE(pixmap)) {
- gdk_draw_polygon(pixmap, gc, TRUE, arrow_point, 3);
+ cr = gdk_cairo_create (pixmap);
+ gdk_cairo_set_source_color (cr, color);
+ if (arrow_type == LEFT_ARROW)
+ {
+ cairo_move_to (cr, x + WIDTH_ARROW, y);
+ cairo_line_to (cr, x + WIDTH_ARROW, y + HEIGHT_ARROW);
+ cairo_line_to (cr, x, y + HEIGHT_ARROW / 2.);
+ }
+ else if (arrow_type == RIGHT_ARROW)
+ {
+ cairo_move_to (cr, x, y);
+ cairo_line_to (cr, x + WIDTH_ARROW, y + HEIGHT_ARROW / 2.);
+ cairo_line_to (cr, x, y + HEIGHT_ARROW);
+ }
+ cairo_close_path (cr);
+ cairo_fill (cr);
+
+ cairo_destroy (cr);
}
}
@@ -611,7 +618,6 @@ static void dialog_graph_draw(graph_analysis_data_t *user_data)
guint32 bottom_y_border;
graph_analysis_item_t *gai;
- GdkGC *frame_fg_color;
GdkGC *frame_bg_color;
GdkGC *column_header_gc;
@@ -629,6 +635,10 @@ static void dialog_graph_draw(graph_analysis_data_t *user_data)
GList *list;
cairo_t *cr;
+
+ GdkColor *color_p;
+ GdkColor black_color = {0, 0, 0, 0};
+ GdkColor white_color = {0, 0xffff, 0xffff, 0xffff};
/* gray and soft gray colors */
GdkColor grey_color0 = {0, 0x64ff, 0x64ff, 0x64ff};
GdkColor grey_color1 = {0, 0x25ff, 0x25ff, 0x25ff};
@@ -639,7 +649,6 @@ static void dialog_graph_draw(graph_analysis_data_t *user_data)
static int len1 = sizeof(dashed1) / sizeof(dashed1[0]);
GtkAllocation draw_area_time_alloc, draw_area_alloc, draw_area_comments_alloc;
- GtkStyle *draw_area_style;
if(!user_data->dlg.needs_redraw){
return;
@@ -654,9 +663,7 @@ static void dialog_graph_draw(graph_analysis_data_t *user_data)
gtk_widget_get_allocation(user_data->dlg.draw_area, &draw_area_alloc);
gtk_widget_get_allocation(user_data->dlg.draw_area_comments, &draw_area_comments_alloc);
- draw_area_style = gtk_widget_get_style(user_data->dlg.draw_area);
-
- /* Clear out old plt */
+ /* Clear out old plot */
if ( GDK_IS_DRAWABLE(user_data->dlg.pixmap_time) ){
cr = gdk_cairo_create (user_data->dlg.pixmap_time);
cairo_set_source_rgb (cr, 1, 1, 1);
@@ -900,12 +907,7 @@ static void dialog_graph_draw(graph_analysis_data_t *user_data)
cr = NULL;
}
- /* select colors */
- if ( current_item+first_item == user_data->dlg.selected_item ){
- frame_fg_color = draw_area_style->white_gc;
- } else {
- frame_fg_color = draw_area_style->black_gc;
- }
+
/* draw the arrow line */
start_arrow = left_x_border+(user_data->dlg.items[current_item].src_node)*NODE_WIDTH+NODE_WIDTH/2;
end_arrow = left_x_border+(user_data->dlg.items[current_item].dst_node)*NODE_WIDTH+NODE_WIDTH/2;
@@ -933,15 +935,15 @@ static void dialog_graph_draw(graph_analysis_data_t *user_data)
/* select colors */
if ( current_item+first_item == user_data->dlg.selected_item ){
- frame_fg_color = draw_area_style->white_gc;
+ color_p = &white_color;
} else {
- frame_fg_color = draw_area_style->black_gc;
+ color_p = &black_color;
}
/* draw the arrow */
if (start_arrow<end_arrow)
- draw_arrow(user_data->dlg.pixmap_main, frame_fg_color, end_arrow-WIDTH_ARROW,top_y_border+current_item*ITEM_HEIGHT+ITEM_HEIGHT-7, RIGHT_ARROW);
+ draw_arrow(user_data->dlg.pixmap_main, color_p, end_arrow-WIDTH_ARROW, (top_y_border+current_item*ITEM_HEIGHT+ITEM_HEIGHT-7)-(HEIGHT_ARROW/2), RIGHT_ARROW);
else
- draw_arrow(user_data->dlg.pixmap_main, frame_fg_color, end_arrow+WIDTH_ARROW,top_y_border+current_item*ITEM_HEIGHT+ITEM_HEIGHT-7, LEFT_ARROW);
+ draw_arrow(user_data->dlg.pixmap_main, color_p, end_arrow, top_y_border+current_item*ITEM_HEIGHT+ITEM_HEIGHT-7-(HEIGHT_ARROW/2), LEFT_ARROW);
/* draw the frame comment */
g_snprintf(label_string, MAX_LABEL, "%s", user_data->dlg.items[current_item].frame_label);