From Alejandro Vaquero:
Add RTP player to "RTP Stream Analysis" and makeover of VoIP flow https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4240 svn path=/trunk/; revision=30967
This commit is contained in:
parent
3dbe3bddcc
commit
b16fab6435
|
@ -702,6 +702,8 @@ EXTRA_DIST = \
|
|||
image/stock_dialog_stop_48.xpm \
|
||||
image/stock_dialog_warning_48.xpm \
|
||||
image/text2pcap.rc.in \
|
||||
image/voip_select.xpm \
|
||||
image/voip_bg.xpm \
|
||||
image/toolbar/autoscroll_24.xpm \
|
||||
image/toolbar/capture_airpcap_16.xpm \
|
||||
image/toolbar/capture_capture_16.xpm \
|
||||
|
@ -752,6 +754,11 @@ EXTRA_DIST = \
|
|||
image/toolbar/web_support_24.xpm \
|
||||
image/toolbar/wep_closed_24.xpm \
|
||||
image/toolbar/wiki_24.xpm \
|
||||
image/toolbar/decode_24.xpm \
|
||||
image/toolbar/audio_player_24.xpm \
|
||||
image/toolbar/voip_flow_24.xpm \
|
||||
image/toolbar/telephone_16.xpm \
|
||||
image/toolbar/analyze_24.xpm \
|
||||
image/tshark.rc.in \
|
||||
image/up_arrow.xpm \
|
||||
image/wiresharkdoc.ico \
|
||||
|
|
|
@ -61,7 +61,8 @@
|
|||
#include "gtk/dlg_utils.h"
|
||||
#include "gtk/main.h"
|
||||
#include "gtk/graph_analysis.h"
|
||||
|
||||
#include "../image/voip_select.xpm"
|
||||
#include "../image/voip_bg.xpm"
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
|
@ -115,7 +116,9 @@ static void graph_analysis_reset(graph_analysis_data_t* user_data)
|
|||
static void graph_analysis_init_dlg(graph_analysis_data_t* user_data)
|
||||
{
|
||||
int i;
|
||||
/*const char ** xpm_data;
|
||||
|
||||
xpm_data*/
|
||||
user_data->num_nodes = 0;
|
||||
user_data->num_items = 0;
|
||||
user_data->on_destroy_user_data = NULL;
|
||||
|
@ -134,7 +137,7 @@ static void graph_analysis_init_dlg(graph_analysis_data_t* user_data)
|
|||
user_data->dlg.needs_redraw=TRUE;
|
||||
user_data->dlg.draw_area_time=NULL;
|
||||
user_data->dlg.draw_area=NULL;
|
||||
user_data->dlg.pixmap=NULL;
|
||||
user_data->dlg.pixmap_main=NULL;
|
||||
user_data->dlg.pixmap_time=NULL;
|
||||
user_data->dlg.draw_area_comments=NULL;
|
||||
user_data->dlg.pixmap_comments=NULL;
|
||||
|
@ -626,10 +629,16 @@ static void dialog_graph_draw(graph_analysis_data_t* user_data)
|
|||
GdkGC *frame_fg_color;
|
||||
GdkGC *frame_bg_color;
|
||||
GdkGC *div_line_color;
|
||||
GdkGC *column_header_gc;
|
||||
|
||||
PangoLayout *layout;
|
||||
PangoLayout *big_layout;
|
||||
PangoLayout *middle_layout;
|
||||
PangoLayout *small_layout;
|
||||
PangoFontDescription *middle_font_desc;
|
||||
gint middle_font_size;
|
||||
PangoFontDescription *small_font_desc;
|
||||
gint small_font_size;
|
||||
|
||||
gint label_width, label_height;
|
||||
guint32 draw_width, draw_height;
|
||||
char label_string[MAX_COMMENT];
|
||||
|
@ -642,6 +651,10 @@ static void dialog_graph_draw(graph_analysis_data_t* user_data)
|
|||
}
|
||||
user_data->dlg.needs_redraw=FALSE;
|
||||
|
||||
column_header_gc = gdk_gc_new(user_data->dlg.pixmap_time);
|
||||
gdk_gc_set_fill(column_header_gc,GDK_TILED);
|
||||
gdk_gc_set_tile(column_header_gc, gdk_pixmap_create_from_xpm_d(user_data->dlg.pixmap_time,NULL,NULL,(gchar **)voip_bg_xpm));
|
||||
|
||||
/* Clear out old plt */
|
||||
if ( GDK_IS_DRAWABLE(user_data->dlg.pixmap_time) )
|
||||
gdk_draw_rectangle(user_data->dlg.pixmap_time,
|
||||
|
@ -651,8 +664,8 @@ static void dialog_graph_draw(graph_analysis_data_t* user_data)
|
|||
user_data->dlg.draw_area_time->allocation.width,
|
||||
user_data->dlg.draw_area_time->allocation.height);
|
||||
|
||||
if ( GDK_IS_DRAWABLE(user_data->dlg.pixmap) )
|
||||
gdk_draw_rectangle(user_data->dlg.pixmap,
|
||||
if ( GDK_IS_DRAWABLE(user_data->dlg.pixmap_main) )
|
||||
gdk_draw_rectangle(user_data->dlg.pixmap_main,
|
||||
user_data->dlg.draw_area->style->white_gc,
|
||||
TRUE,
|
||||
0, 0,
|
||||
|
@ -735,38 +748,41 @@ static void dialog_graph_draw(graph_analysis_data_t* user_data)
|
|||
/* We use time from the last display item to calcultate the x left border */
|
||||
g_snprintf(label_string, MAX_LABEL, "%.3f", user_data->dlg.items[display_items-1].time);
|
||||
layout = gtk_widget_create_pango_layout(user_data->dlg.draw_area_time, label_string);
|
||||
big_layout = gtk_widget_create_pango_layout(user_data->dlg.draw_area_time, label_string);
|
||||
middle_layout = gtk_widget_create_pango_layout(user_data->dlg.draw_area_time, label_string);
|
||||
small_layout = gtk_widget_create_pango_layout(user_data->dlg.draw_area_time, label_string);
|
||||
|
||||
/* XXX - to prevent messages like "Couldn't load font x, falling back to y", I've changed font
|
||||
description from "Helvetica-Bold 8" to "Helvetica,Sans,Bold 8", this seems to be
|
||||
conforming to the API, see http://developer.gnome.org/doc/API/2.0/pango/pango-Fonts.html */
|
||||
pango_layout_set_font_description(big_layout, pango_font_description_from_string("Helvetica,Sans,Bold 8"));
|
||||
pango_layout_set_font_description(small_layout, pango_font_description_from_string("Helvetica,Sans,Bold 7"));
|
||||
middle_font_desc = pango_font_description_copy(pango_context_get_font_description(pango_layout_get_context(middle_layout)));
|
||||
middle_font_size = pango_font_description_get_size(middle_font_desc);
|
||||
pango_font_description_set_size(middle_font_desc,(gint)(middle_font_size*0.8));
|
||||
pango_layout_set_font_description(middle_layout,middle_font_desc);
|
||||
|
||||
small_font_desc = pango_font_description_copy(pango_context_get_font_description(pango_layout_get_context(small_layout)));
|
||||
small_font_size = pango_font_description_get_size(small_font_desc);
|
||||
pango_font_description_set_size(small_font_desc,(gint)(small_font_size*0.7));
|
||||
pango_layout_set_font_description(small_layout,small_font_desc);
|
||||
|
||||
pango_layout_get_pixel_size(layout, &label_width, &label_height);
|
||||
|
||||
/* resize the "time" draw area */
|
||||
|
||||
left_x_border=3;
|
||||
left_x_border=0;
|
||||
user_data->dlg.left_x_border = left_x_border;
|
||||
|
||||
right_x_border=2;
|
||||
right_x_border=0;
|
||||
draw_width=user_data->dlg.pixmap_width-right_x_border-left_x_border;
|
||||
|
||||
/* Paint time title background */
|
||||
if ( GDK_IS_DRAWABLE(user_data->dlg.pixmap_time) )
|
||||
gdk_draw_rectangle(user_data->dlg.pixmap_time,
|
||||
user_data->dlg.draw_area_time->style->bg_gc[2],
|
||||
column_header_gc,
|
||||
TRUE,
|
||||
0,
|
||||
0,
|
||||
user_data->dlg.draw_area_time->allocation.width,
|
||||
top_y_border);
|
||||
/* Paint main title background */
|
||||
if ( GDK_IS_DRAWABLE(user_data->dlg.pixmap) )
|
||||
gdk_draw_rectangle(user_data->dlg.pixmap,
|
||||
user_data->dlg.draw_area->style->bg_gc[2],
|
||||
if ( GDK_IS_DRAWABLE(user_data->dlg.pixmap_main) )
|
||||
gdk_draw_rectangle(user_data->dlg.pixmap_main,
|
||||
column_header_gc,
|
||||
TRUE,
|
||||
0,
|
||||
0,
|
||||
|
@ -775,7 +791,7 @@ static void dialog_graph_draw(graph_analysis_data_t* user_data)
|
|||
/* Paint main comment background */
|
||||
if ( GDK_IS_DRAWABLE(user_data->dlg.pixmap_comments) )
|
||||
gdk_draw_rectangle(user_data->dlg.pixmap_comments,
|
||||
user_data->dlg.draw_area_comments->style->bg_gc[2],
|
||||
column_header_gc,
|
||||
TRUE,
|
||||
0,
|
||||
0,
|
||||
|
@ -784,7 +800,7 @@ static void dialog_graph_draw(graph_analysis_data_t* user_data)
|
|||
|
||||
|
||||
/* Draw the word "Time" on top of time column */
|
||||
g_snprintf(label_string, label_width, "%s", "Time");
|
||||
g_snprintf(label_string, label_width, "%s", " Time");
|
||||
pango_layout_set_text(layout, label_string, -1);
|
||||
pango_layout_get_pixel_size(layout, &label_width, &label_height);
|
||||
if (GDK_IS_DRAWABLE(user_data->dlg.pixmap_time)) {
|
||||
|
@ -811,14 +827,15 @@ static void dialog_graph_draw(graph_analysis_data_t* user_data)
|
|||
for (current_item=0; current_item<display_items; current_item++){
|
||||
/*select the color. if it is the selected item select blue color */
|
||||
if ( current_item+first_item == user_data->dlg.selected_item ) {
|
||||
gdk_gc_set_ts_origin(user_data->dlg.bg_gc[0],left_x_border,top_y_border+current_item*ITEM_HEIGHT);
|
||||
frame_bg_color = user_data->dlg.bg_gc[0];
|
||||
} else {
|
||||
frame_bg_color = user_data->dlg.bg_gc[1+user_data->dlg.items[current_item].conv_num%MAX_NUM_COL_CONV];
|
||||
}
|
||||
|
||||
/* Paint background */
|
||||
if (GDK_IS_DRAWABLE(user_data->dlg.pixmap)) {
|
||||
gdk_draw_rectangle(user_data->dlg.pixmap,
|
||||
if (GDK_IS_DRAWABLE(user_data->dlg.pixmap_main)) {
|
||||
gdk_draw_rectangle(user_data->dlg.pixmap_main,
|
||||
frame_bg_color,
|
||||
TRUE,
|
||||
left_x_border,
|
||||
|
@ -834,8 +851,8 @@ static void dialog_graph_draw(graph_analysis_data_t* user_data)
|
|||
g_strlcpy(label_string, get_addr_name(&(user_data->nodes[i])), NODE_WIDTH/5);
|
||||
pango_layout_set_text(layout, label_string, -1);
|
||||
pango_layout_get_pixel_size(layout, &label_width, &label_height);
|
||||
if (GDK_IS_DRAWABLE(user_data->dlg.pixmap)) {
|
||||
gdk_draw_layout(user_data->dlg.pixmap,
|
||||
if (GDK_IS_DRAWABLE(user_data->dlg.pixmap_main)) {
|
||||
gdk_draw_layout(user_data->dlg.pixmap_main,
|
||||
user_data->dlg.draw_area->style->black_gc,
|
||||
left_x_border+NODE_WIDTH/2-label_width/2+NODE_WIDTH*i,
|
||||
top_y_border/2-((i&1)?0:label_height),
|
||||
|
@ -843,8 +860,8 @@ static void dialog_graph_draw(graph_analysis_data_t* user_data)
|
|||
}
|
||||
|
||||
/* draw the node division lines */
|
||||
if (GDK_IS_DRAWABLE(user_data->dlg.pixmap) ) {
|
||||
gdk_draw_line(user_data->dlg.pixmap, user_data->dlg.div_line_gc[0],
|
||||
if (GDK_IS_DRAWABLE(user_data->dlg.pixmap_main) ) {
|
||||
gdk_draw_line(user_data->dlg.pixmap_main, user_data->dlg.div_line_gc[0],
|
||||
left_x_border+NODE_WIDTH/2+NODE_WIDTH*i,
|
||||
top_y_border,
|
||||
left_x_border+NODE_WIDTH/2+NODE_WIDTH*i,
|
||||
|
@ -869,14 +886,14 @@ static void dialog_graph_draw(graph_analysis_data_t* user_data)
|
|||
|
||||
/*draw the comments */
|
||||
g_snprintf(label_string, MAX_COMMENT, "%s", user_data->dlg.items[current_item].comment);
|
||||
pango_layout_set_text(small_layout, label_string, -1);
|
||||
pango_layout_get_pixel_size(small_layout, &label_width, &label_height);
|
||||
pango_layout_set_text(middle_layout, label_string, -1);
|
||||
pango_layout_get_pixel_size(middle_layout, &label_width, &label_height);
|
||||
if (GDK_IS_DRAWABLE(user_data->dlg.pixmap_comments)) {
|
||||
gdk_draw_layout(user_data->dlg.pixmap_comments,
|
||||
user_data->dlg.draw_area->style->black_gc,
|
||||
2,
|
||||
top_y_border+current_item*ITEM_HEIGHT+ITEM_HEIGHT/2-label_height/2,
|
||||
small_layout);
|
||||
middle_layout);
|
||||
}
|
||||
/* select colors */
|
||||
if ( current_item+first_item == user_data->dlg.selected_item ){
|
||||
|
@ -890,8 +907,8 @@ static void dialog_graph_draw(graph_analysis_data_t* user_data)
|
|||
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;
|
||||
|
||||
if (GDK_IS_DRAWABLE(user_data->dlg.pixmap) ) {
|
||||
gdk_draw_line(user_data->dlg.pixmap, frame_fg_color,
|
||||
if (GDK_IS_DRAWABLE(user_data->dlg.pixmap_main) ) {
|
||||
gdk_draw_line(user_data->dlg.pixmap_main, frame_fg_color,
|
||||
start_arrow,
|
||||
top_y_border+current_item*ITEM_HEIGHT+ITEM_HEIGHT-7,
|
||||
end_arrow,
|
||||
|
@ -899,7 +916,7 @@ static void dialog_graph_draw(graph_analysis_data_t* user_data)
|
|||
|
||||
/* draw the additional line when line style is 2 pixels width */
|
||||
if (user_data->dlg.items[current_item].line_style == 2) {
|
||||
gdk_draw_line(user_data->dlg.pixmap, frame_fg_color,
|
||||
gdk_draw_line(user_data->dlg.pixmap_main, frame_fg_color,
|
||||
start_arrow,
|
||||
top_y_border+current_item*ITEM_HEIGHT+ITEM_HEIGHT-6,
|
||||
end_arrow,
|
||||
|
@ -909,14 +926,14 @@ static void dialog_graph_draw(graph_analysis_data_t* user_data)
|
|||
|
||||
/* draw the arrow */
|
||||
if (start_arrow<end_arrow)
|
||||
draw_arrow(user_data->dlg.pixmap, 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, frame_fg_color, end_arrow-WIDTH_ARROW,top_y_border+current_item*ITEM_HEIGHT+ITEM_HEIGHT-7, RIGHT_ARROW);
|
||||
else
|
||||
draw_arrow(user_data->dlg.pixmap, 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, frame_fg_color, end_arrow+WIDTH_ARROW,top_y_border+current_item*ITEM_HEIGHT+ITEM_HEIGHT-7, LEFT_ARROW);
|
||||
|
||||
/* draw the frame comment */
|
||||
g_snprintf(label_string, MAX_LABEL, "%s", user_data->dlg.items[current_item].frame_label);
|
||||
pango_layout_set_text(big_layout, label_string, -1);
|
||||
pango_layout_get_pixel_size(big_layout, &label_width, &label_height);
|
||||
pango_layout_set_text(layout, label_string, -1);
|
||||
pango_layout_get_pixel_size(layout, &label_width, &label_height);
|
||||
if (start_arrow<end_arrow){
|
||||
arrow_width = end_arrow-start_arrow;
|
||||
label_x = arrow_width/2+start_arrow;
|
||||
|
@ -931,12 +948,12 @@ static void dialog_graph_draw(graph_analysis_data_t* user_data)
|
|||
if ((int)left_x_border > ((int)label_x-(int)label_width/2))
|
||||
label_x = left_x_border + label_width/2;
|
||||
|
||||
if (GDK_IS_DRAWABLE(user_data->dlg.pixmap)) {
|
||||
gdk_draw_layout(user_data->dlg.pixmap,
|
||||
if (GDK_IS_DRAWABLE(user_data->dlg.pixmap_main)) {
|
||||
gdk_draw_layout(user_data->dlg.pixmap_main,
|
||||
frame_fg_color,
|
||||
label_x - label_width/2,
|
||||
top_y_border+current_item*ITEM_HEIGHT+ITEM_HEIGHT/2-label_height/2-3,
|
||||
big_layout);
|
||||
layout);
|
||||
}
|
||||
|
||||
/* draw the source port number */
|
||||
|
@ -949,8 +966,8 @@ static void dialog_graph_draw(graph_analysis_data_t* user_data)
|
|||
else {
|
||||
src_port_x = start_arrow + 2;
|
||||
}
|
||||
if (GDK_IS_DRAWABLE(user_data->dlg.pixmap)) {
|
||||
gdk_draw_layout(user_data->dlg.pixmap,
|
||||
if (GDK_IS_DRAWABLE(user_data->dlg.pixmap_main)) {
|
||||
gdk_draw_layout(user_data->dlg.pixmap_main,
|
||||
div_line_color,
|
||||
src_port_x,
|
||||
top_y_border+current_item*ITEM_HEIGHT+ITEM_HEIGHT-2-label_height/2-2,
|
||||
|
@ -967,8 +984,8 @@ static void dialog_graph_draw(graph_analysis_data_t* user_data)
|
|||
else {
|
||||
dst_port_x = end_arrow - label_width - 2;
|
||||
}
|
||||
if (GDK_IS_DRAWABLE(user_data->dlg.pixmap)) {
|
||||
gdk_draw_layout(user_data->dlg.pixmap,
|
||||
if (GDK_IS_DRAWABLE(user_data->dlg.pixmap_main)) {
|
||||
gdk_draw_layout(user_data->dlg.pixmap_main,
|
||||
div_line_color,
|
||||
dst_port_x,
|
||||
top_y_border+current_item*ITEM_HEIGHT+ITEM_HEIGHT-2-label_height/2-2,
|
||||
|
@ -977,8 +994,8 @@ static void dialog_graph_draw(graph_analysis_data_t* user_data)
|
|||
/* draw the div line of the selected item with soft gray*/
|
||||
if ( current_item+first_item == user_data->dlg.selected_item )
|
||||
for (i=0; i<user_data->num_nodes; i++){
|
||||
if (GDK_IS_DRAWABLE(user_data->dlg.pixmap) ) {
|
||||
gdk_draw_line(user_data->dlg.pixmap, user_data->dlg.div_line_gc[1],
|
||||
if (GDK_IS_DRAWABLE(user_data->dlg.pixmap_main) ) {
|
||||
gdk_draw_line(user_data->dlg.pixmap_main, user_data->dlg.div_line_gc[1],
|
||||
left_x_border+NODE_WIDTH/2+NODE_WIDTH*i,
|
||||
(user_data->dlg.selected_item-first_item)*ITEM_HEIGHT+TOP_Y_BORDER,
|
||||
left_x_border+NODE_WIDTH/2+NODE_WIDTH*i,
|
||||
|
@ -1001,7 +1018,7 @@ static void dialog_graph_draw(graph_analysis_data_t* user_data)
|
|||
if (GDK_IS_DRAWABLE(user_data->dlg.draw_area->window) )
|
||||
gdk_draw_pixmap(user_data->dlg.draw_area->window,
|
||||
user_data->dlg.draw_area->style->fg_gc[GTK_WIDGET_STATE(user_data->dlg.draw_area)],
|
||||
user_data->dlg.pixmap,
|
||||
user_data->dlg.pixmap_main,
|
||||
0, 0,
|
||||
0, 0,
|
||||
user_data->dlg.draw_area->allocation.width, user_data->dlg.draw_area->allocation.height);
|
||||
|
@ -1063,10 +1080,12 @@ static gint scroll_event(GtkWidget *widget, GdkEventScroll *event)
|
|||
graph_analysis_data_t *user_data;
|
||||
|
||||
user_data=(graph_analysis_data_t *)g_object_get_data(G_OBJECT(widget), "graph_analysis_data_t");
|
||||
printf("scroll_event\n");
|
||||
|
||||
/* Up scroll */
|
||||
switch(event->direction) {
|
||||
case(GDK_SCROLL_UP):
|
||||
printf("GDK_SCROLL_UP\n");
|
||||
if (user_data->dlg.first_item == 0) return TRUE;
|
||||
if (user_data->dlg.first_item < 3)
|
||||
user_data->dlg.first_item = 0;
|
||||
|
@ -1074,6 +1093,7 @@ static gint scroll_event(GtkWidget *widget, GdkEventScroll *event)
|
|||
user_data->dlg.first_item -= 3;
|
||||
break;
|
||||
case(GDK_SCROLL_DOWN):
|
||||
printf("GDK_SCROLL_DOWN\n");
|
||||
if ((user_data->dlg.first_item+user_data->dlg.v_scrollbar_adjustment->page_size+1 == user_data->num_items)) return TRUE;
|
||||
if ((user_data->dlg.first_item+user_data->dlg.v_scrollbar_adjustment->page_size+1) > (user_data->num_items-3))
|
||||
user_data->dlg.first_item = user_data->num_items-(guint32)user_data->dlg.v_scrollbar_adjustment->page_size-1;
|
||||
|
@ -1081,7 +1101,9 @@ static gint scroll_event(GtkWidget *widget, GdkEventScroll *event)
|
|||
user_data->dlg.first_item += 3;
|
||||
break;
|
||||
case(GDK_SCROLL_LEFT):
|
||||
printf("GDK_SCROLL_LEFT\n");
|
||||
case(GDK_SCROLL_RIGHT):
|
||||
printf("GDK_SCROLL_RIGTH\n");
|
||||
/* nothing to do */
|
||||
break;
|
||||
}
|
||||
|
@ -1138,7 +1160,7 @@ static gint expose_event(GtkWidget *widget, GdkEventExpose *event)
|
|||
if (GDK_IS_DRAWABLE(widget->window))
|
||||
gdk_draw_pixmap(widget->window,
|
||||
widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
|
||||
user_data->dlg.pixmap,
|
||||
user_data->dlg.pixmap_main,
|
||||
event->area.x, event->area.y,
|
||||
event->area.x, event->area.y,
|
||||
event->area.width, event->area.height);
|
||||
|
@ -1197,22 +1219,23 @@ static gint configure_event(GtkWidget *widget, GdkEventConfigure *event _U_)
|
|||
/* gray and soft gray colors */
|
||||
static GdkColor color_div_line[2] = {
|
||||
{0, 0x64ff, 0x64ff, 0x64ff},
|
||||
{0, 0x7fff, 0x7fff, 0x7fff}
|
||||
{0, 0x25ff, 0x25ff, 0x25ff},
|
||||
/*{0, 0x7fff, 0x7fff, 0x7fff}*/
|
||||
};
|
||||
|
||||
/* the first color is blue to highlight the selected item */
|
||||
static GdkColor col[MAX_NUM_COL_CONV+1] = {
|
||||
{0, 0x00FF, 0x00FF, 0xFFFF},
|
||||
{0, 0x33FF, 0xFFFF, 0x33FF},
|
||||
{0, 0x00FF, 0xCCFF, 0xCCFF},
|
||||
{0, 0x66FF, 0xFFFF, 0xFFFF},
|
||||
{0, 0x99FF, 0x66FF, 0xFFFF},
|
||||
{0, 0x90FF, 0xEEFF, 0x90FF},
|
||||
{0, 0xFFFF, 0xA0FF, 0x7AFF},
|
||||
{0, 0xFFFF, 0xB6FF, 0xC1FF},
|
||||
{0, 0xFAFF, 0xFAFF, 0xD2FF},
|
||||
{0, 0xFFFF, 0xFFFF, 0x33FF},
|
||||
{0, 0xCCFF, 0x99FF, 0xFFFF},
|
||||
{0, 0xCCFF, 0xFFFF, 0x33FF},
|
||||
{0, 0xFFFF, 0xCCFF, 0xCCFF},
|
||||
{0, 0xFFFF, 0x99FF, 0x66FF},
|
||||
{0, 0xFFFF, 0xFFFF, 0x99FF}
|
||||
{0, 0x66FF, 0xCDFF, 0xAAFF},
|
||||
{0, 0xE0FF, 0xFFFF, 0xFFFF},
|
||||
{0, 0xB0FF, 0xC4FF, 0xDEFF},
|
||||
{0, 0x87FF, 0xCEFF, 0xFAFF},
|
||||
{0, 0xD3FF, 0xD3FF, 0xD3FF}
|
||||
};
|
||||
|
||||
user_data=(graph_analysis_data_t *)g_object_get_data(G_OBJECT(widget), "graph_analysis_data_t");
|
||||
|
@ -1221,18 +1244,18 @@ static gint configure_event(GtkWidget *widget, GdkEventConfigure *event _U_)
|
|||
exit(10);
|
||||
}
|
||||
|
||||
if(user_data->dlg.pixmap){
|
||||
gdk_pixmap_unref(user_data->dlg.pixmap);
|
||||
user_data->dlg.pixmap=NULL;
|
||||
if(user_data->dlg.pixmap_main){
|
||||
gdk_pixmap_unref(user_data->dlg.pixmap_main);
|
||||
user_data->dlg.pixmap_main=NULL;
|
||||
}
|
||||
|
||||
user_data->dlg.pixmap=gdk_pixmap_new(widget->window,
|
||||
user_data->dlg.pixmap_main=gdk_pixmap_new(widget->window,
|
||||
widget->allocation.width,
|
||||
widget->allocation.height,
|
||||
-1);
|
||||
|
||||
if ( GDK_IS_DRAWABLE(user_data->dlg.pixmap) )
|
||||
gdk_draw_rectangle(user_data->dlg.pixmap,
|
||||
if ( GDK_IS_DRAWABLE(user_data->dlg.pixmap_main) )
|
||||
gdk_draw_rectangle(user_data->dlg.pixmap_main,
|
||||
widget->style->white_gc,
|
||||
TRUE,
|
||||
0, 0,
|
||||
|
@ -1241,15 +1264,22 @@ static gint configure_event(GtkWidget *widget, GdkEventConfigure *event _U_)
|
|||
|
||||
/* create gc for division lines and set the line stype to dash */
|
||||
for (i=0; i<2; i++){
|
||||
user_data->dlg.div_line_gc[i]=gdk_gc_new(user_data->dlg.pixmap);
|
||||
user_data->dlg.div_line_gc[i]=gdk_gc_new(user_data->dlg.pixmap_main);
|
||||
gdk_gc_set_line_attributes(user_data->dlg.div_line_gc[i], 1, GDK_LINE_ON_OFF_DASH, 0, 0);
|
||||
gdk_gc_set_rgb_fg_color(user_data->dlg.div_line_gc[i], &color_div_line[i]);
|
||||
}
|
||||
|
||||
/* create gcs for the background items */
|
||||
for (i=0; i<MAX_NUM_COL_CONV+1; i++){
|
||||
user_data->dlg.bg_gc[i]=gdk_gc_new(user_data->dlg.pixmap);
|
||||
gdk_gc_set_rgb_fg_color(user_data->dlg.bg_gc[i], &col[i]);
|
||||
if (i==0) {
|
||||
user_data->dlg.pixmap_tile_select=gdk_pixmap_create_from_xpm_d(user_data->dlg.pixmap_main,NULL,NULL,(gchar **)voip_select_xpm);
|
||||
user_data->dlg.bg_gc[i]=gdk_gc_new(user_data->dlg.pixmap_tile_select);
|
||||
gdk_gc_set_fill(user_data->dlg.bg_gc[i], GDK_TILED);
|
||||
gdk_gc_set_tile(user_data->dlg.bg_gc[i], user_data->dlg.pixmap_tile_select);
|
||||
} else {
|
||||
user_data->dlg.bg_gc[i]=gdk_gc_new(user_data->dlg.pixmap_main);
|
||||
gdk_gc_set_rgb_fg_color(user_data->dlg.bg_gc[i], &col[i]);
|
||||
}
|
||||
}
|
||||
|
||||
dialog_graph_redraw(user_data);
|
||||
|
@ -1278,7 +1308,7 @@ static gint configure_event_comments(GtkWidget *widget, GdkEventConfigure *event
|
|||
widget->allocation.height,
|
||||
-1);
|
||||
|
||||
if ( GDK_IS_DRAWABLE(user_data->dlg.pixmap) )
|
||||
if ( GDK_IS_DRAWABLE(user_data->dlg.pixmap_main) )
|
||||
gdk_draw_rectangle(user_data->dlg.pixmap_comments,
|
||||
widget->style->white_gc,
|
||||
TRUE,
|
||||
|
@ -1353,6 +1383,7 @@ static gint pane_callback(GtkWidget *widget, GParamSpec *pspec _U_, gpointer dat
|
|||
static gint v_scrollbar_changed(GtkWidget *widget _U_, gpointer data)
|
||||
{
|
||||
graph_analysis_data_t *user_data=(graph_analysis_data_t *)data;
|
||||
|
||||
if ((user_data->dlg.first_item+user_data->dlg.v_scrollbar_adjustment->page_size+1 == user_data->num_items)
|
||||
&& (user_data->dlg.v_scrollbar_adjustment->value >= user_data->dlg.first_item ))
|
||||
return TRUE;
|
||||
|
@ -1375,6 +1406,11 @@ static void create_draw_area(graph_analysis_data_t* user_data, GtkWidget *box)
|
|||
GtkWidget *viewport;
|
||||
GtkWidget *scroll_window_comments;
|
||||
GtkWidget *viewport_comments;
|
||||
GtkWidget *frame_time;
|
||||
GtkWidget *scroll_vbox;
|
||||
GtkWidget *frame_box;
|
||||
GtkRequisition scroll_requisition;
|
||||
GtkWidget *frame;
|
||||
|
||||
hbox=gtk_hbox_new(FALSE, 0);
|
||||
gtk_widget_show(hbox);
|
||||
|
@ -1386,13 +1422,17 @@ static void create_draw_area(graph_analysis_data_t* user_data, GtkWidget *box)
|
|||
user_data->dlg.draw_area_time=gtk_drawing_area_new();
|
||||
gtk_widget_set_size_request(user_data->dlg.draw_area_time, TIME_WIDTH, user_data->dlg.pixmap_height);
|
||||
g_object_set_data(G_OBJECT(user_data->dlg.draw_area_time), "graph_analysis_data_t", user_data);
|
||||
frame_time = gtk_frame_new(NULL);
|
||||
gtk_widget_show(frame_time);
|
||||
gtk_container_add(GTK_CONTAINER(frame_time),user_data->dlg.draw_area_time);
|
||||
|
||||
/* create "comments" draw area */
|
||||
user_data->dlg.draw_area_comments=gtk_drawing_area_new();
|
||||
gtk_widget_set_size_request(user_data->dlg.draw_area_comments, COMMENT_WIDTH, user_data->dlg.pixmap_height);
|
||||
scroll_window_comments=gtk_scrolled_window_new(NULL, NULL);
|
||||
gtk_widget_set_size_request(scroll_window_comments, COMMENT_WIDTH/2, user_data->dlg.pixmap_height);
|
||||
gtk_widget_set_size_request(scroll_window_comments, (gint)(COMMENT_WIDTH/1.5), user_data->dlg.pixmap_height);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scroll_window_comments), GTK_POLICY_ALWAYS, GTK_POLICY_NEVER);
|
||||
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scroll_window_comments), GTK_SHADOW_ETCHED_IN);
|
||||
viewport_comments = gtk_viewport_new(gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(scroll_window_comments)), gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(scroll_window_comments)));
|
||||
gtk_container_add(GTK_CONTAINER(viewport_comments), user_data->dlg.draw_area_comments);
|
||||
gtk_container_add(GTK_CONTAINER(scroll_window_comments), viewport_comments);
|
||||
|
@ -1414,6 +1454,7 @@ static void create_draw_area(graph_analysis_data_t* user_data, GtkWidget *box)
|
|||
else
|
||||
gtk_widget_set_size_request(user_data->dlg.scroll_window, NODE_WIDTH*5, user_data->dlg.pixmap_height);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(user_data->dlg.scroll_window), GTK_POLICY_ALWAYS, GTK_POLICY_NEVER);
|
||||
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(user_data->dlg.scroll_window), GTK_SHADOW_ETCHED_IN);
|
||||
viewport = gtk_viewport_new(gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(user_data->dlg.scroll_window)), gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(user_data->dlg.scroll_window)));
|
||||
gtk_container_add(GTK_CONTAINER(viewport), user_data->dlg.draw_area);
|
||||
gtk_container_add(GTK_CONTAINER(user_data->dlg.scroll_window), viewport);
|
||||
|
@ -1448,7 +1489,7 @@ static void create_draw_area(graph_analysis_data_t* user_data, GtkWidget *box)
|
|||
gtk_widget_show(user_data->dlg.scroll_window);
|
||||
gtk_widget_show(scroll_window_comments);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(hbox), user_data->dlg.draw_area_time, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), frame_time, FALSE, FALSE, 3);
|
||||
|
||||
user_data->dlg.hpane = gtk_hpaned_new();
|
||||
gtk_paned_pack1(GTK_PANED (user_data->dlg.hpane), user_data->dlg.scroll_window, FALSE, TRUE);
|
||||
|
@ -1458,14 +1499,35 @@ static void create_draw_area(graph_analysis_data_t* user_data, GtkWidget *box)
|
|||
|
||||
gtk_box_pack_start(GTK_BOX(hbox), user_data->dlg.hpane, TRUE, TRUE, 0);
|
||||
|
||||
/* Create the vbox to include the vertical scroll and a box at the bottom */
|
||||
scroll_vbox=gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_show(scroll_vbox);
|
||||
|
||||
/* create the associated v_scrollbar */
|
||||
user_data->dlg.v_scrollbar_adjustment=(GtkAdjustment *)gtk_adjustment_new(0,0,0,0,0,0);
|
||||
user_data->dlg.v_scrollbar=gtk_vscrollbar_new(user_data->dlg.v_scrollbar_adjustment);
|
||||
gtk_widget_show(user_data->dlg.v_scrollbar);
|
||||
gtk_box_pack_end(GTK_BOX(hbox), user_data->dlg.v_scrollbar, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(scroll_vbox), user_data->dlg.v_scrollbar, TRUE, TRUE, 0);
|
||||
g_signal_connect(user_data->dlg.v_scrollbar_adjustment, "value_changed", G_CALLBACK(v_scrollbar_changed), user_data);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(box), hbox, TRUE, TRUE, 0);
|
||||
frame_box = gtk_frame_new(NULL);
|
||||
gtk_widget_size_request(user_data->dlg.v_scrollbar, &scroll_requisition);
|
||||
gtk_widget_set_size_request(frame_box, 1, scroll_requisition.width+2);
|
||||
gtk_frame_set_shadow_type(GTK_FRAME(frame_box), GTK_SHADOW_NONE);
|
||||
gtk_widget_show(frame_box);
|
||||
gtk_box_pack_end(GTK_BOX(scroll_vbox), frame_box, FALSE, FALSE, 0);
|
||||
gtk_box_pack_end(GTK_BOX(hbox), scroll_vbox, FALSE, FALSE, 3);
|
||||
|
||||
/* Frame around the main area */
|
||||
frame = gtk_frame_new(NULL);
|
||||
gtk_widget_show(frame);
|
||||
gtk_container_add(GTK_CONTAINER(frame),hbox);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(hbox),3);
|
||||
|
||||
/*gtk_box_pack_start(GTK_BOX(box), hbox, TRUE, TRUE, 15);*/
|
||||
/*gtk_box_pack_start(GTK_BOX(box), frame, TRUE, TRUE, 15);*/
|
||||
gtk_box_pack_start(GTK_BOX(box), frame, TRUE, TRUE, 0);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(box),10);
|
||||
}
|
||||
/****************************************************************************/
|
||||
/* PUBLIC */
|
||||
|
@ -1498,7 +1560,7 @@ static void dialog_graph_create_window(graph_analysis_data_t* user_data)
|
|||
|
||||
/* button row */
|
||||
hbuttonbox = gtk_hbutton_box_new ();
|
||||
gtk_box_pack_start (GTK_BOX (vbox), hbuttonbox, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), hbuttonbox, FALSE, FALSE, 10);
|
||||
gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_SPREAD);
|
||||
gtk_box_set_spacing (GTK_BOX (hbuttonbox), 30);
|
||||
gtk_widget_show(hbuttonbox);
|
||||
|
|
|
@ -88,8 +88,9 @@ typedef struct _graph_analysis_dialog_data_t {
|
|||
GtkWidget *draw_area;
|
||||
GtkWidget *draw_area_comments;
|
||||
GdkPixmap *pixmap_time;
|
||||
GdkPixmap *pixmap;
|
||||
GdkPixmap *pixmap_main;
|
||||
GdkPixmap *pixmap_comments;
|
||||
GdkPixmap *pixmap_tile_select;
|
||||
GtkWidget *scroll_window;
|
||||
GtkWidget *v_scrollbar;
|
||||
GtkAdjustment *v_scrollbar_adjustment;
|
||||
|
|
|
@ -82,6 +82,13 @@
|
|||
#include "gtk/rtp_analysis.h"
|
||||
#include "gtk/rtp_stream.h"
|
||||
#include "gtk/rtp_stream_dlg.h"
|
||||
#include "gtk/stock_icons.h"
|
||||
|
||||
#ifdef HAVE_LIBPORTAUDIO
|
||||
#include "gtk/graph_analysis.h"
|
||||
#include "gtk/voip_calls.h"
|
||||
#include "gtk/rtp_player.h"
|
||||
#endif /* HAVE_LIBPORTAUDIO */
|
||||
|
||||
enum
|
||||
{
|
||||
|
@ -349,6 +356,10 @@ rtp_reset(void *user_data_arg)
|
|||
/* reset graph info */
|
||||
dialog_graph_reset(user_data);
|
||||
|
||||
#ifdef HAVE_LIBPORTAUDIO
|
||||
/* reset the RTP player */
|
||||
reset_rtp_player();
|
||||
#endif
|
||||
/* XXX check for error at fclose? */
|
||||
if (user_data->forward.saveinfo.fp != NULL)
|
||||
fclose(user_data->forward.saveinfo.fp);
|
||||
|
@ -447,6 +458,7 @@ static int rtp_packet(void *user_data_arg, packet_info *pinfo, epan_dissect_t *e
|
|||
{
|
||||
user_data_t *user_data = user_data_arg;
|
||||
const struct _rtp_info *rtpinfo = rtpinfo_arg;
|
||||
gboolean rtp_selected = FALSE;
|
||||
|
||||
/* we ignore packets that are not displayed */
|
||||
if (pinfo->fd->flags.passed_dfilter == 0)
|
||||
|
@ -467,6 +479,7 @@ static int rtp_packet(void *user_data_arg, packet_info *pinfo, epan_dissect_t *e
|
|||
&(user_data->forward.statinfo), pinfo, rtpinfo);
|
||||
rtp_packet_save_payload(&(user_data->forward.saveinfo),
|
||||
&(user_data->forward.statinfo), pinfo, rtpinfo);
|
||||
rtp_selected = TRUE;
|
||||
}
|
||||
/* is it the reversed direction? */
|
||||
else if (user_data->ssrc_rev == rtpinfo->info_sync_src
|
||||
|
@ -481,7 +494,13 @@ static int rtp_packet(void *user_data_arg, packet_info *pinfo, epan_dissect_t *e
|
|||
&(user_data->reversed.statinfo), pinfo, rtpinfo);
|
||||
rtp_packet_save_payload(&(user_data->reversed.saveinfo),
|
||||
&(user_data->reversed.statinfo), pinfo, rtpinfo);
|
||||
rtp_selected = TRUE;
|
||||
}
|
||||
/* add this RTP for future listening using the RTP Player*/
|
||||
#ifdef HAVE_LIBPORTAUDIO
|
||||
if (rtp_selected)
|
||||
add_rtp_packet(rtpinfo, pinfo);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1730,6 +1749,16 @@ static void on_refresh_bt_clicked(GtkWidget *bt _U_, user_data_t *user_data)
|
|||
|
||||
}
|
||||
|
||||
#ifdef HAVE_LIBPORTAUDIO
|
||||
/****************************************************************************/
|
||||
static void
|
||||
on_player_bt_clicked(GtkButton *button _U_, gpointer user_data _U_)
|
||||
{
|
||||
/*rtp_player_init(voip_calls_get_info());*/
|
||||
rtp_player_init(NULL);
|
||||
}
|
||||
#endif /* HAVE_LIBPORTAUDIO */
|
||||
|
||||
static void on_next_bt_clicked_list(GtkWidget *bt _U_, user_data_t *user_data _U_)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
|
@ -3188,7 +3217,9 @@ static void create_rtp_dialog(user_data_t* user_data)
|
|||
GtkWidget *label;
|
||||
GtkWidget *scrolled_window, *scrolled_window_r/*, *frame, *text, *label4, *page_help*/;
|
||||
GtkWidget *box4, *voice_bt, *refresh_bt, *goto_bt, *close_bt, *csv_bt, *next_bt;
|
||||
|
||||
#ifdef HAVE_LIBPORTAUDIO
|
||||
GtkWidget *player_bt = NULL;
|
||||
#endif /* HAVE_LIBPORTAUDIO */
|
||||
GtkWidget *graph_bt;
|
||||
gchar label_forward[150];
|
||||
gchar label_forward_tree[150];
|
||||
|
@ -3323,11 +3354,18 @@ static void create_rtp_dialog(user_data_t* user_data)
|
|||
gtk_widget_show(goto_bt);
|
||||
g_signal_connect(goto_bt, "clicked", G_CALLBACK(on_goto_bt_clicked_lst), user_data);
|
||||
|
||||
graph_bt = gtk_button_new_with_label("Graph");
|
||||
graph_bt = gtk_button_new_with_label("Graph");
|
||||
gtk_container_add(GTK_CONTAINER(box4), graph_bt);
|
||||
gtk_widget_show(graph_bt);
|
||||
g_signal_connect(graph_bt, "clicked", G_CALLBACK(on_graph_bt_clicked), user_data);
|
||||
|
||||
#ifdef HAVE_LIBPORTAUDIO
|
||||
player_bt = gtk_button_new_from_stock(WIRESHARK_STOCK_AUDIO_PLAYER);
|
||||
gtk_container_add(GTK_CONTAINER(box4), player_bt);
|
||||
gtk_widget_show(player_bt);
|
||||
g_signal_connect(player_bt, "clicked", G_CALLBACK(on_player_bt_clicked), NULL);
|
||||
/*gtk_tooltips_set_tip (tooltips, player_bt, "Launch the RTP player to listen the audio stream", NULL);*/
|
||||
#endif /* HAVE_LIBPORTAUDIO */
|
||||
|
||||
next_bt = gtk_button_new_with_label("Next non-Ok");
|
||||
gtk_container_add(GTK_CONTAINER(box4), next_bt);
|
||||
|
|
|
@ -81,7 +81,7 @@
|
|||
#include "gtk/voip_calls.h"
|
||||
#include "gtk/gtkglobals.h"
|
||||
#include "gtk/rtp_player.h"
|
||||
|
||||
#include "gtk/stock_icons.h"
|
||||
|
||||
#ifndef min
|
||||
#define min(a,b) (((a)<(b))?(a):(b))
|
||||
|
@ -358,7 +358,7 @@ add_rtp_packet(const struct _rtp_info *rtp_info, packet_info *pinfo)
|
|||
rtp_packet_t *new_rtp_packet;
|
||||
GString *key_str = NULL;
|
||||
|
||||
/* create the the streams hash if it doen't exist */
|
||||
/* create the streams hash if it doen't exist */
|
||||
if (!rtp_streams_hash)
|
||||
rtp_streams_hash = g_hash_table_new_full( g_str_hash, g_str_equal, rtp_key_destroy, rtp_stream_value_destroy);
|
||||
|
||||
|
@ -458,6 +458,16 @@ mark_rtp_stream_to_play(gchar *key _U_ , rtp_stream_info_t *rsi, gpointer ptr _U
|
|||
}
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
/* Mark the ALL RTP stream to be played. This is called when calling the
|
||||
* RTP player from the "RTP Analysis" window
|
||||
*/
|
||||
static void
|
||||
mark_all_rtp_stream_to_play(gchar *key _U_ , rtp_stream_info_t *rsi, gpointer ptr _U_)
|
||||
{
|
||||
rsi->play = TRUE;
|
||||
total_packets += rsi->num_packets;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
/* Decode a RTP packet
|
||||
|
@ -1373,19 +1383,19 @@ configure_event_channels(GtkWidget *widget, GdkEventConfigure *event _U_)
|
|||
* the other collors are the same as in the Voip Graph analysys
|
||||
* to match the same calls
|
||||
*/
|
||||
static GdkColor col[MAX_NUM_COL_CONV+1] = {
|
||||
{0, 0x00FF, 0x00FF, 0xFFFF},
|
||||
{0, 0x33FF, 0xFFFF, 0x33FF},
|
||||
{0, 0x00FF, 0xCCFF, 0xCCFF},
|
||||
{0, 0x66FF, 0xFFFF, 0xFFFF},
|
||||
{0, 0x99FF, 0x66FF, 0xFFFF},
|
||||
{0, 0xFFFF, 0xFFFF, 0x33FF},
|
||||
{0, 0xCCFF, 0x99FF, 0xFFFF},
|
||||
{0, 0xCCFF, 0xFFFF, 0x33FF},
|
||||
{0, 0xFFFF, 0xCCFF, 0xCCFF},
|
||||
{0, 0xFFFF, 0x99FF, 0x66FF},
|
||||
{0, 0xFFFF, 0xFFFF, 0x99FF}
|
||||
};
|
||||
static GdkColor col[MAX_NUM_COL_CONV+1] = {
|
||||
{0, 0x00FF, 0x00FF, 0xFFFF},
|
||||
{0, 0x90FF, 0xEEFF, 0x90FF},
|
||||
{0, 0xFFFF, 0xA0FF, 0x7AFF},
|
||||
{0, 0xFFFF, 0xB6FF, 0xC1FF},
|
||||
{0, 0xFAFF, 0xFAFF, 0xD2FF},
|
||||
{0, 0xFFFF, 0xFFFF, 0x33FF},
|
||||
{0, 0x66FF, 0xCDFF, 0xAAFF},
|
||||
{0, 0xE0FF, 0xFFFF, 0xFFFF},
|
||||
{0, 0xB0FF, 0xC4FF, 0xDEFF},
|
||||
{0, 0x87FF, 0xCEFF, 0xFAFF},
|
||||
{0, 0xD3FF, 0xD3FF, 0xD3FF}
|
||||
};
|
||||
|
||||
rci=(rtp_channel_info_t *)g_object_get_data(G_OBJECT(widget), "rtp_channel_info_t");
|
||||
if(!rci){
|
||||
|
@ -1844,9 +1854,14 @@ decode_streams(void)
|
|||
/* reset the Progress Bar count */
|
||||
progbar_count = 0;
|
||||
|
||||
/* Mark the RTP streams to be played using the selected VoipCalls*/
|
||||
if (rtp_streams_hash)
|
||||
g_hash_table_foreach( rtp_streams_hash, (GHFunc)mark_rtp_stream_to_play, NULL);
|
||||
/* Mark the RTP streams to be played using the selected VoipCalls. If voip_calls is NULL
|
||||
then this was called from "RTP Analysis" so mark all strams */
|
||||
if (rtp_streams_hash) {
|
||||
if (voip_calls)
|
||||
g_hash_table_foreach( rtp_streams_hash, (GHFunc)mark_rtp_stream_to_play, NULL);
|
||||
else
|
||||
g_hash_table_foreach( rtp_streams_hash, (GHFunc)mark_all_rtp_stream_to_play, NULL);
|
||||
}
|
||||
|
||||
/* Decode the RTP streams and add them to the RTP channels to be played */
|
||||
g_list_foreach( rtp_streams_list, (GFunc)decode_rtp_stream, NULL);
|
||||
|
@ -2034,22 +2049,22 @@ rtp_player_dlg_create(void)
|
|||
gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_SPREAD);
|
||||
gtk_box_set_spacing (GTK_BOX (hbuttonbox), 10);
|
||||
|
||||
bt_decode = gtk_button_new_with_label("Decode");
|
||||
bt_decode = gtk_button_new_from_stock(WIRESHARK_STOCK_DECODE);
|
||||
gtk_container_add(GTK_CONTAINER(hbuttonbox), bt_decode);
|
||||
g_signal_connect(bt_decode, "clicked", G_CALLBACK(on_bt_decode_clicked), NULL);
|
||||
gtk_tooltips_set_tip (tooltips, bt_decode, "Decode the RTP stream(s)", NULL);
|
||||
|
||||
bt_play = gtk_button_new_with_label("Play");
|
||||
bt_play = gtk_button_new_from_stock(GTK_STOCK_MEDIA_PLAY);
|
||||
gtk_container_add(GTK_CONTAINER(hbuttonbox), bt_play);
|
||||
g_signal_connect(bt_play, "clicked", G_CALLBACK(on_bt_play_clicked), NULL);
|
||||
gtk_tooltips_set_tip (tooltips, bt_play, "Play the RTP channel(s)", NULL);
|
||||
|
||||
bt_pause = gtk_button_new_with_label("Pause");
|
||||
bt_pause = gtk_button_new_from_stock(GTK_STOCK_MEDIA_PAUSE);
|
||||
gtk_container_add(GTK_CONTAINER(hbuttonbox), bt_pause);
|
||||
g_signal_connect(bt_pause, "clicked", G_CALLBACK(on_bt_pause_clicked), NULL);
|
||||
gtk_tooltips_set_tip (tooltips, bt_pause, "Pause the RTP channel(s)", NULL);
|
||||
|
||||
bt_stop = gtk_button_new_with_label("Stop");
|
||||
bt_stop = gtk_button_new_from_stock(GTK_STOCK_MEDIA_STOP);
|
||||
gtk_container_add(GTK_CONTAINER(hbuttonbox), bt_stop);
|
||||
g_signal_connect(bt_stop, "clicked", G_CALLBACK(on_bt_stop_clicked), NULL);
|
||||
gtk_tooltips_set_tip (tooltips, bt_stop, "Stop the RTP channel(s)", NULL);
|
||||
|
|
|
@ -51,6 +51,7 @@
|
|||
#include "gtk/gtkglobals.h"
|
||||
#include "gtk/rtp_stream.h"
|
||||
#include "gtk/rtp_analysis.h"
|
||||
#include "gtk/stock_icons.h"
|
||||
|
||||
#include "image/clist_ascend.xpm"
|
||||
#include "image/clist_descend.xpm"
|
||||
|
@ -811,7 +812,7 @@ static void rtpstream_dlg_create (void)
|
|||
gtk_container_add (GTK_CONTAINER (hbuttonbox), bt_mark);
|
||||
gtk_tooltips_set_tip (tooltips, bt_mark, "Mark packets of the selected stream(s)", NULL);
|
||||
|
||||
bt_filter = gtk_button_new_with_label ("Prepare Filter");
|
||||
bt_filter = gtk_button_new_from_stock(WIRESHARK_STOCK_PREPARE_FILTER);
|
||||
gtk_container_add (GTK_CONTAINER (hbuttonbox), bt_filter);
|
||||
gtk_tooltips_set_tip (tooltips, bt_filter, "Prepare a display filter of the selected stream(s)", NULL);
|
||||
|
||||
|
@ -822,7 +823,7 @@ static void rtpstream_dlg_create (void)
|
|||
gtk_tooltips_set_tip(tooltips, bt_copy,
|
||||
"Copy all statistical values of this page to the clipboard in CSV (Comma Separated Values) format.", NULL);
|
||||
|
||||
bt_analyze = gtk_button_new_with_label ("Analyze");
|
||||
bt_analyze = gtk_button_new_from_stock(WIRESHARK_STOCK_ANALYZE);
|
||||
gtk_container_add (GTK_CONTAINER (hbuttonbox), bt_analyze);
|
||||
gtk_tooltips_set_tip (tooltips, bt_analyze, "Open an analyze window of the selected stream(s)", NULL);
|
||||
|
||||
|
|
|
@ -71,6 +71,11 @@
|
|||
#include "../image/toolbar/icon_color_8.xpm"
|
||||
#include "../image/toolbar/icon_color_9.xpm"
|
||||
#include "../image/toolbar/icon_color_0.xpm"
|
||||
#include "../image/toolbar/decode_24.xpm"
|
||||
#include "../image/toolbar/audio_player_24.xpm"
|
||||
#include "../image/toolbar/voip_flow_24.xpm"
|
||||
#include "../image/toolbar/telephone_16.xpm"
|
||||
#include "../image/toolbar/analyze_24.xpm"
|
||||
|
||||
|
||||
typedef struct stock_pixmap_tag{
|
||||
|
@ -145,7 +150,13 @@ void stock_icons_init(void) {
|
|||
{ WIRESHARK_STOCK_COLOR7, "Color 7", 0, 0, NULL },
|
||||
{ WIRESHARK_STOCK_COLOR8, "Color 8", 0, 0, NULL },
|
||||
{ WIRESHARK_STOCK_COLOR9, "Color 9", 0, 0, NULL },
|
||||
{ WIRESHARK_STOCK_COLOR0, "Color 10", 0, 0, NULL }
|
||||
{ WIRESHARK_STOCK_COLOR0, "Color 10", 0, 0, NULL },
|
||||
{ WIRESHARK_STOCK_DECODE, "Decode", 0, 0, NULL },
|
||||
{ WIRESHARK_STOCK_AUDIO_PLAYER, "Player", 0, 0, NULL },
|
||||
{ WIRESHARK_STOCK_VOIP_FLOW, "Flow", 0, 0, NULL },
|
||||
{ WIRESHARK_STOCK_TELEPHONE, "Telephone", 0, 0, NULL },
|
||||
{ WIRESHARK_STOCK_PREPARE_FILTER, "Prepare Filter", 0, 0, NULL },
|
||||
{ WIRESHARK_STOCK_ANALYZE, "Analyze", 0, 0, NULL }
|
||||
};
|
||||
|
||||
static const stock_pixmap_t pixmaps[] = {
|
||||
|
@ -195,6 +206,12 @@ void stock_icons_init(void) {
|
|||
{ WIRESHARK_STOCK_COLOR8, icon_color_8_xpm},
|
||||
{ WIRESHARK_STOCK_COLOR9, icon_color_9_xpm},
|
||||
{ WIRESHARK_STOCK_COLOR0, icon_color_0_xpm},
|
||||
{ WIRESHARK_STOCK_DECODE, decode_24_xpm},
|
||||
{ WIRESHARK_STOCK_AUDIO_PLAYER, audio_player_24_xpm},
|
||||
{ WIRESHARK_STOCK_VOIP_FLOW, voip_flow_24_xpm},
|
||||
{ WIRESHARK_STOCK_TELEPHONE, telephone_16_xpm},
|
||||
{ WIRESHARK_STOCK_PREPARE_FILTER, display_filter_24_xpm},
|
||||
{ WIRESHARK_STOCK_ANALYZE, analyze_24_xpm},
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
|
|
|
@ -85,7 +85,12 @@
|
|||
#define WIRESHARK_STOCK_COLOR8 "Wireshark_Stock_Color_8"
|
||||
#define WIRESHARK_STOCK_COLOR9 "Wireshark_Stock_Color_9"
|
||||
#define WIRESHARK_STOCK_COLOR0 "Wireshark_Stock_Color_10"
|
||||
|
||||
#define WIRESHARK_STOCK_DECODE "Wireshark_Stock_Decode"
|
||||
#define WIRESHARK_STOCK_AUDIO_PLAYER "Wireshark_Audio_Player"
|
||||
#define WIRESHARK_STOCK_VOIP_FLOW "Wireshark_Voip_Flow"
|
||||
#define WIRESHARK_STOCK_TELEPHONE "Wireshark_Telephone"
|
||||
#define WIRESHARK_STOCK_PREPARE_FILTER "Wireshark_Prepare_Filter"
|
||||
#define WIRESHARK_STOCK_ANALYZE "Wireshark_Analyze"
|
||||
|
||||
void stock_icons_init(void);
|
||||
|
||||
|
|
|
@ -64,6 +64,7 @@
|
|||
#include "gtk/dlg_utils.h"
|
||||
#include "gtk/gui_utils.h"
|
||||
#include "gtk/gtkglobals.h"
|
||||
#include "gtk/stock_icons.h"
|
||||
|
||||
#include "image/clist_ascend.xpm"
|
||||
#include "image/clist_descend.xpm"
|
||||
|
@ -771,25 +772,26 @@ static void voip_calls_dlg_create (void)
|
|||
gtk_container_add (GTK_CONTAINER (hbuttonbox), bt_unselect);
|
||||
gtk_tooltips_set_tip (tooltips, bt_unselect, "Unselect this conversation", NULL);*/
|
||||
|
||||
bt_filter = gtk_button_new_with_label ("Prepare Filter");
|
||||
bt_filter = gtk_button_new_from_stock(WIRESHARK_STOCK_PREPARE_FILTER);
|
||||
gtk_container_add (GTK_CONTAINER (hbuttonbox), bt_filter);
|
||||
gtk_tooltips_set_tip (tooltips, bt_filter, "Prepare a display filter of the selected conversation", NULL);
|
||||
|
||||
bt_graph = gtk_button_new_with_label("Graph");
|
||||
bt_graph = gtk_button_new_from_stock(WIRESHARK_STOCK_VOIP_FLOW);
|
||||
gtk_container_add(GTK_CONTAINER(hbuttonbox), bt_graph);
|
||||
gtk_widget_show(bt_graph);
|
||||
g_signal_connect(bt_graph, "clicked", G_CALLBACK(on_graph_bt_clicked), NULL);
|
||||
gtk_tooltips_set_tip (tooltips, bt_graph, "Show a flow graph of the selected calls.", NULL);
|
||||
|
||||
#ifdef HAVE_LIBPORTAUDIO
|
||||
bt_player = gtk_button_new_with_label("Player");
|
||||
bt_player = gtk_button_new_from_stock(WIRESHARK_STOCK_AUDIO_PLAYER);
|
||||
gtk_container_add(GTK_CONTAINER(hbuttonbox), bt_player);
|
||||
gtk_widget_show(bt_player);
|
||||
g_signal_connect(bt_player, "clicked", G_CALLBACK(on_player_bt_clicked), NULL);
|
||||
gtk_tooltips_set_tip (tooltips, bt_player, "Launch the RTP player to listen the selected calls.", NULL);
|
||||
#endif /* HAVE_LIBPORTAUDIO */
|
||||
|
||||
bt_select_all = gtk_button_new_with_label("Select All");
|
||||
/*bt_select_all = gtk_button_new_with_label("Select All");*/
|
||||
bt_select_all = gtk_button_new_from_stock(GTK_STOCK_SELECT_ALL);
|
||||
gtk_container_add (GTK_CONTAINER (hbuttonbox), bt_select_all);
|
||||
GTK_WIDGET_SET_FLAGS(bt_select_all, GTK_CAN_DEFAULT);
|
||||
gtk_tooltips_set_tip (tooltips, bt_select_all, "Select all the calls", NULL);
|
||||
|
@ -971,6 +973,10 @@ void
|
|||
register_tap_listener_voip_calls_dlg(void)
|
||||
{
|
||||
register_stat_cmd_arg("voip,calls",voip_calls_init_tap,NULL);
|
||||
register_stat_menu_item("_VoIP Calls", REGISTER_STAT_GROUP_TELEPHONY,
|
||||
voip_calls_launch, NULL, NULL, NULL);
|
||||
/*register_stat_menu_item("_VoIP Calls", REGISTER_STAT_GROUP_TELEPHONY,
|
||||
voip_calls_launch, NULL, NULL, NULL);*/
|
||||
register_stat_menu_item_stock("_VoIP Calls...",
|
||||
REGISTER_STAT_GROUP_TELEPHONY, WIRESHARK_STOCK_TELEPHONE,
|
||||
voip_calls_launch, NULL, NULL, NULL);
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,103 @@
|
|||
/* XPM */
|
||||
static const char * analyze_24_xpm[] = {
|
||||
"24 24 76 1",
|
||||
" c None",
|
||||
". c #E1E2E2",
|
||||
"+ c #929596",
|
||||
"@ c #686D6E",
|
||||
"# c #3F4547",
|
||||
"$ c #E1E2E3",
|
||||
"% c #FDFDFD",
|
||||
"& c #A2A5A6",
|
||||
"* c #929595",
|
||||
"= c #BBBCBB",
|
||||
"- c #D8D9D6",
|
||||
"; c #D7D9D5",
|
||||
"> c #C1C4BF",
|
||||
", c #A2A5A3",
|
||||
"' c #43484A",
|
||||
") c #676C6D",
|
||||
"! c #5F6464",
|
||||
"~ c #D6D7D6",
|
||||
"{ c #ECECEA",
|
||||
"] c #E9EAE6",
|
||||
"^ c #E6E7E3",
|
||||
"/ c #E3E4E0",
|
||||
"( c #DFE2DC",
|
||||
"_ c #DDDFD9",
|
||||
": c #D3D6D1",
|
||||
"< c #777B7A",
|
||||
"[ c #5E6364",
|
||||
"} c #EEEEEC",
|
||||
"| c #ECEDEA",
|
||||
"1 c #EDEDEB",
|
||||
"2 c #E9EAE7",
|
||||
"3 c #E0E2DC",
|
||||
"4 c #D9DCD5",
|
||||
"5 c #D5D9D1",
|
||||
"6 c #7B7F7E",
|
||||
"7 c #3E4345",
|
||||
"8 c #D4D5D5",
|
||||
"9 c #D6DAD2",
|
||||
"0 c #D3D7D0",
|
||||
"a c #45494B",
|
||||
"b c #909393",
|
||||
"c c #DDE0DA",
|
||||
"d c #A8ABA8",
|
||||
"e c #939697",
|
||||
"f c #BBBDBA",
|
||||
"g c #E8E9E6",
|
||||
"h c #DCDED8",
|
||||
"i c #C5C8C3",
|
||||
"j c #696D6F",
|
||||
"k c #DFE1DC",
|
||||
"l c #D6D8D4",
|
||||
"m c #E2E4DF",
|
||||
"n c #D7D8D5",
|
||||
"o c #EBECE9",
|
||||
"p c #E5E7E3",
|
||||
"q c #BEC0BD",
|
||||
"r c #EAEAE7",
|
||||
"s c #959897",
|
||||
"t c #ECECE9",
|
||||
"u c #3F4446",
|
||||
"v c #7B807E",
|
||||
"w c #D4D7D1",
|
||||
"x c #484E4E",
|
||||
"y c #CECFCD",
|
||||
"z c #464B4D",
|
||||
"A c #A9ADAA",
|
||||
"B c #C5C7C4",
|
||||
"C c #D6D9D4",
|
||||
"D c #474A49",
|
||||
"E c #353B3D",
|
||||
"F c #4B4F4B",
|
||||
"G c #404545",
|
||||
"H c #8B8F90",
|
||||
"I c #525350",
|
||||
"J c #363C3E",
|
||||
"K c #939596",
|
||||
" ",
|
||||
" .+@##@+$ ",
|
||||
" %&#*=-;>,'&% ",
|
||||
" %)!~{]^/(_:<)% ",
|
||||
" &[{}{|1123456& ",
|
||||
" .78}}}}}}}}/90a$ ",
|
||||
" +b{{}}}}}}}}c4de ",
|
||||
" @f]|}}}}}}}}ghij ",
|
||||
" #-^1}}}}}}}}|kl# ",
|
||||
" #;/1}}}}}}}}1mn# ",
|
||||
" @>(2}}}}}}}}opqj ",
|
||||
" +,_3}}}}}}}}rgse ",
|
||||
" .':4/}}}}}}{t8u$ ",
|
||||
" &<59cg|1ort{[& ",
|
||||
" %)vw4hkmpg8[xy ",
|
||||
" %&zABCnqsu&yDEe ",
|
||||
" .+@##@+$ EFGH ",
|
||||
" eGIGH ",
|
||||
" HGIGH ",
|
||||
" HGIGe ",
|
||||
" HGFJ ",
|
||||
" eJK ",
|
||||
" ",
|
||||
" "};
|
|
@ -0,0 +1,87 @@
|
|||
/* XPM */
|
||||
static const char * audio_player_24_xpm[] = {
|
||||
"24 24 60 1",
|
||||
" c None",
|
||||
". c #C1C1C1",
|
||||
"+ c #6D6D6D",
|
||||
"@ c #3C3C3C",
|
||||
"# c #585858",
|
||||
"$ c #353535",
|
||||
"% c #696969",
|
||||
"& c #676767",
|
||||
"* c #686868",
|
||||
"= c #434343",
|
||||
"- c #5B5B5B",
|
||||
"; c #444444",
|
||||
"> c #A9A9A9",
|
||||
", c #5A5A5A",
|
||||
"' c #646464",
|
||||
") c #4D4D4D",
|
||||
"! c #A3A3A3",
|
||||
"~ c #4C4C4C",
|
||||
"{ c #6C6C6C",
|
||||
"] c #474747",
|
||||
"^ c #555555",
|
||||
"/ c #575757",
|
||||
"( c #505050",
|
||||
"_ c #4F4F4F",
|
||||
": c #494949",
|
||||
"< c #535353",
|
||||
"[ c #5E5E5E",
|
||||
"} c #707070",
|
||||
"| c #747474",
|
||||
"1 c #545454",
|
||||
"2 c #6F6F6F",
|
||||
"3 c #666666",
|
||||
"4 c #606060",
|
||||
"5 c #565656",
|
||||
"6 c #616161",
|
||||
"7 c #4B4B4B",
|
||||
"8 c #525252",
|
||||
"9 c #727272",
|
||||
"0 c #757575",
|
||||
"a c #5F5F5F",
|
||||
"b c #5D5D5D",
|
||||
"c c #6B6B6B",
|
||||
"d c #636363",
|
||||
"e c #656565",
|
||||
"f c #3F3F3F",
|
||||
"g c #333333",
|
||||
"h c #343434",
|
||||
"i c #1B1B1B",
|
||||
"j c #171717",
|
||||
"k c #1D1D1D",
|
||||
"l c #414141",
|
||||
"m c #717171",
|
||||
"n c #767676",
|
||||
"o c #3D3D3D",
|
||||
"p c #383838",
|
||||
"q c #464646",
|
||||
"r c #3A3A3A",
|
||||
"s c #424242",
|
||||
"t c #4E4E4E",
|
||||
"u c #303030",
|
||||
" . ",
|
||||
" +@+ ",
|
||||
" #$% ",
|
||||
" & *=+ ",
|
||||
" -;> ,# ') ",
|
||||
" !-~;> {]^ ^- ",
|
||||
" !/(_:> !<[ }; ",
|
||||
" |,_^1:> -} ]2 ~3 ",
|
||||
" [445<5#/:> 6_% &) 3~ ",
|
||||
" ((<1/#[,7> |89 ;0 @ ",
|
||||
" ^/##[[a-~> b[ )c @ ",
|
||||
" b[[add'a~> [^ 7* @ ",
|
||||
" 4a66e3&6)> )[> f2 @ ",
|
||||
" 3*&3*%c3~> &g 2h +@ ",
|
||||
" ijk)2{2*)> ,g3 l# 1^ ",
|
||||
" 2{mb1n9{)> -2 -o p9 ",
|
||||
" '/9|q> 6r} [q ",
|
||||
" '[m: [r{ 9f} ",
|
||||
" 3#l 20 )/ ",
|
||||
" {# >st ",
|
||||
" 0u- ",
|
||||
" 0| ",
|
||||
" ",
|
||||
" "};
|
|
@ -0,0 +1,273 @@
|
|||
/* XPM */
|
||||
static const char * decode_24_xpm[] = {
|
||||
"24 24 246 2",
|
||||
" c None",
|
||||
". c #ACADAA",
|
||||
"+ c #8F908C",
|
||||
"@ c #A5A7A3",
|
||||
"# c #939590",
|
||||
"$ c #AFB0AD",
|
||||
"% c #8D8F8A",
|
||||
"& c #CED2CA",
|
||||
"* c #B1B2AF",
|
||||
"= c #E7E8E7",
|
||||
"- c #92948F",
|
||||
"; c #B3B6AF",
|
||||
"> c #AEB1AB",
|
||||
", c #BABEB7",
|
||||
"' c #D3D7CF",
|
||||
") c #BCBFB8",
|
||||
"! c #ABAEA7",
|
||||
"~ c #B7BAB3",
|
||||
"{ c #8E908B",
|
||||
"] c #ACAEAA",
|
||||
"^ c #AFB2AC",
|
||||
"/ c #B4B7B0",
|
||||
"( c #A7A8A5",
|
||||
"_ c #A9AAA7",
|
||||
": c #8B8D88",
|
||||
"< c #BBBEB7",
|
||||
"[ c #B2B5AF",
|
||||
"} c #90918D",
|
||||
"| c #B1B4AD",
|
||||
"1 c #BEC2BA",
|
||||
"2 c #A8AAA6",
|
||||
"3 c #8A8D87",
|
||||
"4 c #CFD3CB",
|
||||
"5 c #90928D",
|
||||
"6 c #CECFCD",
|
||||
"7 c #8A8C87",
|
||||
"8 c #D1D5CD",
|
||||
"9 c #898B86",
|
||||
"0 c #A1A39F",
|
||||
"a c #91938F",
|
||||
"b c #C0C3BC",
|
||||
"c c #ADB0AA",
|
||||
"d c #898C86",
|
||||
"e c #ABADA8",
|
||||
"f c #C0C4BC",
|
||||
"g c #9C9D98",
|
||||
"h c #E3E3E3",
|
||||
"i c #939592",
|
||||
"j c #656763",
|
||||
"k c #C3C3C2",
|
||||
"l c #CCCCCB",
|
||||
"m c #666865",
|
||||
"n c #9D9E9C",
|
||||
"o c #E6E6E6",
|
||||
"p c #AFB3AC",
|
||||
"q c #DEDEDD",
|
||||
"r c #60635E",
|
||||
"s c #AAACA8",
|
||||
"t c #C4C6C2",
|
||||
"u c #636562",
|
||||
"v c #C7C8C7",
|
||||
"w c #636561",
|
||||
"x c #BCBEBB",
|
||||
"y c #A0A39D",
|
||||
"z c #61635F",
|
||||
"A c #CDCDCC",
|
||||
"B c #8E8F8B",
|
||||
"C c #B9BDB6",
|
||||
"D c #B2B6AF",
|
||||
"E c #C2C6BE",
|
||||
"F c #B5B8B1",
|
||||
"G c #BDC0B9",
|
||||
"H c #8B8E88",
|
||||
"I c #DFDFDE",
|
||||
"J c #7B7C79",
|
||||
"K c #E3E5E0",
|
||||
"L c #E3E6E1",
|
||||
"M c #C2C4C1",
|
||||
"N c #838581",
|
||||
"O c #BABCB9",
|
||||
"P c #E7EAE5",
|
||||
"Q c #E6E8E4",
|
||||
"R c #8B8E89",
|
||||
"S c #E3E3E2",
|
||||
"T c #8C8E89",
|
||||
"U c #A4A6A2",
|
||||
"V c #A5A6A2",
|
||||
"W c #E0E0DF",
|
||||
"X c #D7D8D7",
|
||||
"Y c #CFCFCE",
|
||||
"Z c #D7D7D6",
|
||||
"` c #676965",
|
||||
" . c #E5E8E3",
|
||||
".. c #E0E3DE",
|
||||
"+. c #E9EBE7",
|
||||
"@. c #EEF0ED",
|
||||
"#. c #EDEFEC",
|
||||
"$. c #E8EBE6",
|
||||
"%. c #7C7E7A",
|
||||
"&. c #C9CAC9",
|
||||
"*. c #D2D2D1",
|
||||
"=. c #9EA09C",
|
||||
"-. c #888A85",
|
||||
";. c #9EA09B",
|
||||
">. c #F3F3F3",
|
||||
",. c #8C8E8A",
|
||||
"'. c #787A77",
|
||||
"). c #B7BAB6",
|
||||
"!. c #E3E7E1",
|
||||
"~. c #E5E8E4",
|
||||
"{. c #EDEFED",
|
||||
"]. c #F2F3F1",
|
||||
"^. c #F1F2EF",
|
||||
"/. c #EAECE8",
|
||||
"(. c #E7EAE6",
|
||||
"_. c #797A78",
|
||||
":. c #8B8D89",
|
||||
"<. c #676A65",
|
||||
"[. c #DBDBDA",
|
||||
"}. c #B2B3B1",
|
||||
"|. c #A0A29E",
|
||||
"1. c #DFE2DD",
|
||||
"2. c #E1E4DE",
|
||||
"3. c #E0E3DD",
|
||||
"4. c #E7E9E5",
|
||||
"5. c #D7D8D5",
|
||||
"6. c #81847F",
|
||||
"7. c #737471",
|
||||
"8. c #868784",
|
||||
"9. c #D1D3CF",
|
||||
"0. c #E9EBE8",
|
||||
"a. c #E2E5E1",
|
||||
"b. c #E4E7E2",
|
||||
"c. c #E1E4DF",
|
||||
"d. c #BEC0BB",
|
||||
"e. c #8A8C88",
|
||||
"f. c #757672",
|
||||
"g. c #BFC1BC",
|
||||
"h. c #DDE0D9",
|
||||
"i. c #CFD4CB",
|
||||
"j. c #DDE0DB",
|
||||
"k. c #D6D8D4",
|
||||
"l. c #626360",
|
||||
"m. c #CBCCCB",
|
||||
"n. c #E4E4E4",
|
||||
"o. c #666864",
|
||||
"p. c #D2D3D1",
|
||||
"q. c #E2E5DF",
|
||||
"r. c #D4D8D0",
|
||||
"s. c #D1D3CE",
|
||||
"t. c #60625E",
|
||||
"u. c #CFD0CF",
|
||||
"v. c #C0C2BE",
|
||||
"w. c #DCDFD9",
|
||||
"x. c #E6E9E5",
|
||||
"y. c #868884",
|
||||
"z. c #DCDCDB",
|
||||
"A. c #70726F",
|
||||
"B. c #EBEDE9",
|
||||
"C. c #DDE0DA",
|
||||
"D. c #CCCDCA",
|
||||
"E. c #D4D4D3",
|
||||
"F. c #EDEEEB",
|
||||
"G. c #747672",
|
||||
"H. c #F4F4F4",
|
||||
"I. c #5E605C",
|
||||
"J. c #F0F1EF",
|
||||
"K. c #999A98",
|
||||
"L. c #C2C3C1",
|
||||
"M. c #686966",
|
||||
"N. c #DBDED8",
|
||||
"O. c #D1D2D1",
|
||||
"P. c #E1E2E1",
|
||||
"Q. c #727370",
|
||||
"R. c #EEEFEC",
|
||||
"S. c #D9DDD6",
|
||||
"T. c #D9DBD8",
|
||||
"U. c #6C6E69",
|
||||
"V. c #BEBFBD",
|
||||
"W. c #717470",
|
||||
"X. c #D3D5D1",
|
||||
"Y. c #DFE2DC",
|
||||
"Z. c #C3C9BF",
|
||||
"`. c #DBDED7",
|
||||
" + c #F1F1F1",
|
||||
".+ c #DFDFDF",
|
||||
"++ c #CBCDC9",
|
||||
"@+ c #C6CBC1",
|
||||
"#+ c #DDE1DB",
|
||||
"$+ c #DEE0DC",
|
||||
"%+ c #C3C5C1",
|
||||
"&+ c #EBEDEA",
|
||||
"*+ c #D9DBD7",
|
||||
"=+ c #797B77",
|
||||
"-+ c #D0D2CE",
|
||||
";+ c #F0F1EE",
|
||||
">+ c #ECEEEB",
|
||||
",+ c #C4C6C3",
|
||||
"'+ c #9D9E9B",
|
||||
")+ c #E9E9E9",
|
||||
"!+ c #666964",
|
||||
"~+ c #9C9E9A",
|
||||
"{+ c #818280",
|
||||
"]+ c #D0D1CE",
|
||||
"^+ c #DEE1DB",
|
||||
"/+ c #F4F4F2",
|
||||
"(+ c #FBFBFA",
|
||||
"_+ c #F5F6F4",
|
||||
":+ c #E2E4DF",
|
||||
"<+ c #DDDEDB",
|
||||
"[+ c #81827F",
|
||||
"}+ c #9A9C98",
|
||||
"|+ c #BCBCBB",
|
||||
"1+ c #7C7E7B",
|
||||
"2+ c #F3F4F2",
|
||||
"3+ c #BDC3B7",
|
||||
"4+ c #DADED7",
|
||||
"5+ c #C0C5BA",
|
||||
"6+ c #ECEDEA",
|
||||
"7+ c #939491",
|
||||
"8+ c #9A9A99",
|
||||
"9+ c #B3B3B2",
|
||||
"0+ c #E2E2E2",
|
||||
"a+ c #B2B3B2",
|
||||
"b+ c #959693",
|
||||
"c+ c #E8E9E7",
|
||||
"d+ c #DCDDDB",
|
||||
"e+ c #E6E9E4",
|
||||
"f+ c #898988",
|
||||
"g+ c #EAEAEA",
|
||||
"h+ c #BFBFBF",
|
||||
"i+ c #626460",
|
||||
"j+ c #BEC0BD",
|
||||
"k+ c #E4E5E3",
|
||||
"l+ c #696B68",
|
||||
"m+ c #696968",
|
||||
"n+ c #E2E3E1",
|
||||
"o+ c #6B6E69",
|
||||
"p+ c #9B9C9B",
|
||||
"q+ c #DADBDA",
|
||||
"r+ c #9C9D9B",
|
||||
"s+ c #686B66",
|
||||
"t+ c #B9B9B9",
|
||||
"u+ c #9FA09F",
|
||||
"v+ c #80817F",
|
||||
"w+ c #BFBFBE",
|
||||
" . + @ ",
|
||||
" # $ % & + * # = ",
|
||||
" - ; > , ' ) ! ~ { ",
|
||||
" ] ^ ' ' ' ' ' / ( ",
|
||||
" _ : < ' [ } | ' 1 % 2 ",
|
||||
" 3 4 ' ' 5 6 7 ' ' 8 9 ",
|
||||
" 0 a b ' c d e ' f - g ",
|
||||
" h i j k l m n o . p ' ' ' ' ' > 2 ",
|
||||
" q r s t u v w x y z A B C D b ' E F G H ",
|
||||
" I J K L M N O P Q R l S T U { ' 5 V 7 W ",
|
||||
" X Y Z ` ...+.@.#.Q $.%.&.*.6 =.-.;. ",
|
||||
">.z ,.'.).!.~.{.].^./.(.t _.:.<.[. ",
|
||||
"}.|.1.2.3.4.5.6.7.8.9.0.a.b.c.d.e. ",
|
||||
"f.g.h.i.j.k.l.m.n.*.o.p.q.r.j.s.t. ",
|
||||
"u.o.v.w.x.y.v z.A.B.C.D.` v ",
|
||||
" E.y.L F.G.n. H.I.J.L K.L. ",
|
||||
"Y M.D.N.+.y.O. P.Q.R.S.T.U.V. ",
|
||||
"W.X.Y.Z.`.T.l.X +.+j ++c.@+#+$+z ",
|
||||
"n %++.&+2.#.*+=+I.G.-+;+c.>+&+,+'+ ",
|
||||
")+!+~+{+]+b.^+/+(+_+:+^+<+[+}+` ",
|
||||
" Z v |+1+2+3+4+>+^+5+6+7+8+9+ ",
|
||||
" 0+a+b+2+:+c+b+d+e+6+2 f+ ",
|
||||
" g+h+i+j+k+l+m+z n+k.o+p+ ",
|
||||
" >.q+r+s+K.t+u+w v+w+ "};
|
|
@ -0,0 +1,68 @@
|
|||
/* XPM */
|
||||
static const char * telephone_16_xpm[] = {
|
||||
"16 16 49 1",
|
||||
" c None",
|
||||
". c #303032",
|
||||
"+ c #1F1F21",
|
||||
"@ c #525253",
|
||||
"# c #505052",
|
||||
"$ c #1B1B1D",
|
||||
"% c #242426",
|
||||
"& c #1A1A1C",
|
||||
"* c #4E4E50",
|
||||
"= c #474749",
|
||||
"- c #9A9A9B",
|
||||
"; c #29292C",
|
||||
"> c #1A191D",
|
||||
", c #232325",
|
||||
"' c #686868",
|
||||
") c #3F3E42",
|
||||
"! c #1A191E",
|
||||
"~ c #373739",
|
||||
"{ c #6E6D71",
|
||||
"] c #1B1A1F",
|
||||
"^ c #454547",
|
||||
"/ c #222127",
|
||||
"( c #323234",
|
||||
"_ c #575758",
|
||||
": c #8A8A8B",
|
||||
"< c #222223",
|
||||
"[ c #7E7E7F",
|
||||
"} c #6E6E6F",
|
||||
"| c #444446",
|
||||
"1 c #5D5D5F",
|
||||
"2 c #7F7F81",
|
||||
"3 c #48484A",
|
||||
"4 c #19191B",
|
||||
"5 c #1F1F20",
|
||||
"6 c #29292B",
|
||||
"7 c #4F4F51",
|
||||
"8 c #373738",
|
||||
"9 c #1A1A1B",
|
||||
"0 c #454449",
|
||||
"a c #4F4E53",
|
||||
"b c #19181D",
|
||||
"c c #69696B",
|
||||
"d c #404040",
|
||||
"e c #1C1B20",
|
||||
"f c #545358",
|
||||
"g c #4B4B4F",
|
||||
"h c #848486",
|
||||
"i c #757577",
|
||||
"j c #606062",
|
||||
" ",
|
||||
" . ",
|
||||
" ..+ ",
|
||||
" @.#$. ",
|
||||
" %&*=$- ",
|
||||
" ;>,' ",
|
||||
" )!~ ",
|
||||
" {]^ ",
|
||||
" /( ",
|
||||
" _$: ",
|
||||
" <~ [ ",
|
||||
" }&| 1$2 ",
|
||||
" 34567%. ",
|
||||
" 89>0abc ",
|
||||
" d>efgh ",
|
||||
" ij "};
|
|
@ -0,0 +1,187 @@
|
|||
/* XPM */
|
||||
static const char * voip_flow_24_xpm[] = {
|
||||
"24 24 160 2",
|
||||
" c None",
|
||||
". c #FDFDFD",
|
||||
"+ c #FEFEFE",
|
||||
"@ c #F9F9F9",
|
||||
"# c #F2F2F2",
|
||||
"$ c #F5F5F5",
|
||||
"% c #F8F8F8",
|
||||
"& c #9FA19D",
|
||||
"* c #989A95",
|
||||
"= c #FDFEFD",
|
||||
"- c #F0F1F0",
|
||||
"; c #B7B8B5",
|
||||
"> c #ACADA9",
|
||||
", c #EDEEED",
|
||||
"' c #A0A29E",
|
||||
") c #9D9E9A",
|
||||
"! c #F7F8F7",
|
||||
"~ c #E7E7E7",
|
||||
"{ c #AAACA7",
|
||||
"] c #A1A39F",
|
||||
"^ c #FCFCFC",
|
||||
"/ c #ECECEC",
|
||||
"( c #A6A8A3",
|
||||
"_ c #A2A4A0",
|
||||
": c #FAFAFA",
|
||||
"< c #E5E6E5",
|
||||
"[ c #ABACA9",
|
||||
"} c #A4A6A2",
|
||||
"| c #F0F0EF",
|
||||
"1 c #B1B3B0",
|
||||
"2 c #ABADA9",
|
||||
"3 c #F2F2F1",
|
||||
"4 c #C2C2C2",
|
||||
"5 c #8A8A8A",
|
||||
"6 c #A7A7A7",
|
||||
"7 c #CECECE",
|
||||
"8 c #EFEFEF",
|
||||
"9 c #E9E9E9",
|
||||
"0 c #BABCB9",
|
||||
"a c #AEAFAD",
|
||||
"b c #F0F0F0",
|
||||
"c c #DEDFDE",
|
||||
"d c #E8E8E7",
|
||||
"e c #C7C7C7",
|
||||
"f c #757575",
|
||||
"g c #434343",
|
||||
"h c #4B4B4B",
|
||||
"i c #6F6F6F",
|
||||
"j c #8F8F8F",
|
||||
"k c #BFBFBF",
|
||||
"l c #DDDDDD",
|
||||
"m c #B0B0B0",
|
||||
"n c #E6E6E6",
|
||||
"o c #DCDCDB",
|
||||
"p c #D4D5D2",
|
||||
"q c #E4E4E4",
|
||||
"r c #B5B6B4",
|
||||
"s c #F4F4F4",
|
||||
"t c #E8E8E8",
|
||||
"u c #CFCFCF",
|
||||
"v c #7E7E7E",
|
||||
"w c #595959",
|
||||
"x c #3D3D3D",
|
||||
"y c #7D7D7D",
|
||||
"z c #9A9A9A",
|
||||
"A c #464646",
|
||||
"B c #727272",
|
||||
"C c #C1C2C1",
|
||||
"D c #B5B7B4",
|
||||
"E c #B3B4B0",
|
||||
"F c #ECEDEC",
|
||||
"G c #A8AAA6",
|
||||
"H c #A8A9A6",
|
||||
"I c #FBFBFB",
|
||||
"J c #717171",
|
||||
"K c #393939",
|
||||
"L c #0F0F0F",
|
||||
"M c #151515",
|
||||
"N c #9FA09F",
|
||||
"O c #A1A29F",
|
||||
"P c #A6A7A4",
|
||||
"Q c #ABACA8",
|
||||
"R c #F1F1F0",
|
||||
"S c #F1F1F1",
|
||||
"T c #898989",
|
||||
"U c #0E0E0E",
|
||||
"V c #3A3A3A",
|
||||
"W c #AAABAA",
|
||||
"X c #A1A29E",
|
||||
"Y c #BABBB9",
|
||||
"Z c #B9BAB7",
|
||||
"` c #F4F5F4",
|
||||
" . c #F6F6F6",
|
||||
".. c #A9A9A9",
|
||||
"+. c #ABABAB",
|
||||
"@. c #DCDDDC",
|
||||
"#. c #B3B5B1",
|
||||
"$. c #B1B2AE",
|
||||
"%. c #DEDEDD",
|
||||
"&. c #E3E3E2",
|
||||
"*. c #F6F6F5",
|
||||
"=. c #EFEFEE",
|
||||
"-. c #DCDCDA",
|
||||
";. c #E5E5E4",
|
||||
">. c #B4B6B3",
|
||||
",. c #F5F6F5",
|
||||
"'. c #B9BAB6",
|
||||
"). c #B5B5B4",
|
||||
"!. c #EEEFEE",
|
||||
"~. c #A8AAA5",
|
||||
"{. c #AAABA8",
|
||||
"]. c #E8E9E7",
|
||||
"^. c #A9AAA6",
|
||||
"/. c #A7A9A6",
|
||||
"(. c #DEDEDE",
|
||||
"_. c #ACADAA",
|
||||
":. c #ADAEAA",
|
||||
"<. c #F4F4F3",
|
||||
"[. c #B4B5B2",
|
||||
"}. c #B5B7B3",
|
||||
"|. c #EBEBEB",
|
||||
"1. c #CACACA",
|
||||
"2. c #E2E2E1",
|
||||
"3. c #BCBDBB",
|
||||
"4. c #B8BAB7",
|
||||
"5. c #E2E2E2",
|
||||
"6. c #DDDEDC",
|
||||
"7. c #737373",
|
||||
"8. c #E8E9E8",
|
||||
"9. c #D8D9D7",
|
||||
"0. c #F3F3F2",
|
||||
"a. c #B2B3AF",
|
||||
"b. c #ADAEAB",
|
||||
"c. c #B4B5B4",
|
||||
"d. c #B6B8B4",
|
||||
"e. c #A7A8A5",
|
||||
"f. c #A3A4A1",
|
||||
"g. c #AFAFAF",
|
||||
"h. c #3E3E3E",
|
||||
"i. c #EEEEED",
|
||||
"j. c #EBECEB",
|
||||
"k. c #A7A8A6",
|
||||
"l. c #D4D4D3",
|
||||
"m. c #AAACA9",
|
||||
"n. c #FEFFFE",
|
||||
"o. c #EAEBE9",
|
||||
"p. c #B4B5B1",
|
||||
"q. c #EAEAEA",
|
||||
"r. c #EAEBEA",
|
||||
"s. c #B1B3AF",
|
||||
"t. c #B0B2AF",
|
||||
"u. c #F5F5F4",
|
||||
"v. c #F3F4F2",
|
||||
"w. c #B6B7B4",
|
||||
"x. c #EFF0EF",
|
||||
"y. c #C3C4C2",
|
||||
"z. c #BFC0BE",
|
||||
"A. c #FBFBFA",
|
||||
"B. c #F7F7F7",
|
||||
"C. c #F8F9F8",
|
||||
" . + ",
|
||||
" + . @ # $ ",
|
||||
" % & * = - ; > = ",
|
||||
" , ' ) ! ~ { ] ^ ",
|
||||
" + / ( _ # : + + < [ } . ",
|
||||
" | 1 2 3 4 5 6 7 8 @ ^ 9 0 a + ",
|
||||
" b c d b e f g h i j k l : m n o p q ",
|
||||
" 8 r 1 s t u 6 v w x w y z A B C D E ",
|
||||
" F G H # I l k j J K L M N O P + ",
|
||||
" 9 Q > R S T U V W X ( ^ ",
|
||||
" b Y Z ` ...+.S @.#.$.I ",
|
||||
" S %.&.*. + . =.-.;.I ",
|
||||
" 3 #.>.,. | '.).: ",
|
||||
" !.~.{.- + .].[ ^.$ ",
|
||||
" !./.[ 8 . @ 8 7 6 5 e (._.:.<. ",
|
||||
" s [.}.|.9 m : l k j i h g f 1.2.3.4.$ ",
|
||||
" ` 5.6.o 7.A z y w x w v 6 u t $ 8.9.&.*. ",
|
||||
" 0.a.b.c.M L K J j k l I | ; d.*. ",
|
||||
" 8 e.f.g.h.U T S i.{ _.S ",
|
||||
" j.k.{.l.~ +... . i.m.2 # ",
|
||||
" n.o._.p.q.I + r.s.t.u. ",
|
||||
" v.w.; $ x.y.z.A. ",
|
||||
" . B.C.= @ b s + ",
|
||||
" + "};
|
|
@ -0,0 +1,179 @@
|
|||
/* XPM */
|
||||
static const char * voip_bg_xpm[] = {
|
||||
"20 40 136 2",
|
||||
" c #F6F3F0",
|
||||
". c #F5F2EF",
|
||||
"+ c #F6F2EF",
|
||||
"@ c #F5F3EF",
|
||||
"# c #F6F3EF",
|
||||
"$ c #F5F3F0",
|
||||
"% c #F6F2F0",
|
||||
"& c #F5F2EE",
|
||||
"* c #F5F1EE",
|
||||
"= c #F4F1EE",
|
||||
"- c #F4F2EE",
|
||||
"; c #F5F1EF",
|
||||
"> c #F4F0ED",
|
||||
", c #F4F0EE",
|
||||
"' c #F5F1ED",
|
||||
") c #F4F1ED",
|
||||
"! c #F5F0ED",
|
||||
"~ c #F4F0EC",
|
||||
"{ c #F3F0ED",
|
||||
"] c #F3F1ED",
|
||||
"^ c #F3EFEC",
|
||||
"/ c #F3F0EC",
|
||||
"( c #F3EFED",
|
||||
"_ c #F4EFED",
|
||||
": c #F4EFEC",
|
||||
"< c #F3EFEB",
|
||||
"[ c #F3F0EB",
|
||||
"} c #F2EFEB",
|
||||
"| c #F2EFEC",
|
||||
"1 c #F3EEEB",
|
||||
"2 c #F2EEEA",
|
||||
"3 c #F2EEEB",
|
||||
"4 c #F2EFEA",
|
||||
"5 c #F1EEEA",
|
||||
"6 c #F2EEE9",
|
||||
"7 c #F1EDEA",
|
||||
"8 c #F2EDEA",
|
||||
"9 c #F1EDE9",
|
||||
"0 c #F2EDE9",
|
||||
"a c #F1ECE9",
|
||||
"b c #F1ECE8",
|
||||
"c c #F0EDE9",
|
||||
"d c #F1EDE8",
|
||||
"e c #F0ECE8",
|
||||
"f c #F0EDE8",
|
||||
"g c #F0ECE9",
|
||||
"h c #F0ECE7",
|
||||
"i c #F0EBE7",
|
||||
"j c #EFEBE7",
|
||||
"k c #F0EBE8",
|
||||
"l c #F0EBE6",
|
||||
"m c #EFEBE6",
|
||||
"n c #F0EAE7",
|
||||
"o c #F0EAE6",
|
||||
"p c #EEEBE6",
|
||||
"q c #EFEAE6",
|
||||
"r c #EEEAE6",
|
||||
"s c #EEE9E5",
|
||||
"t c #EEEAE5",
|
||||
"u c #EFE9E5",
|
||||
"v c #EFE9E6",
|
||||
"w c #EFEAE5",
|
||||
"x c #EEE9E4",
|
||||
"y c #EDE9E5",
|
||||
"z c #EDE8E5",
|
||||
"A c #EEE8E4",
|
||||
"B c #EDE9E4",
|
||||
"C c #EDE8E4",
|
||||
"D c #EDE8E3",
|
||||
"E c #EDE7E3",
|
||||
"F c #ECE8E3",
|
||||
"G c #ECE7E3",
|
||||
"H c #ECE8E2",
|
||||
"I c #ECE7E2",
|
||||
"J c #EDE7E2",
|
||||
"K c #ECE6E2",
|
||||
"L c #EBE6E2",
|
||||
"M c #EBE7E2",
|
||||
"N c #ECE6E1",
|
||||
"O c #ECE7E1",
|
||||
"P c #EBE6E1",
|
||||
"Q c #EBE7E1",
|
||||
"R c #EBE5E1",
|
||||
"S c #EBE5E0",
|
||||
"T c #EBE6E0",
|
||||
"U c #EAE5E1",
|
||||
"V c #EAE5E0",
|
||||
"W c #EAE4E0",
|
||||
"X c #EAE5DF",
|
||||
"Y c #EBE5DF",
|
||||
"Z c #EAE4DF",
|
||||
"` c #E9E4DF",
|
||||
" . c #E9E3DF",
|
||||
".. c #E9E3DE",
|
||||
"+. c #E9E4DE",
|
||||
"@. c #EAE3DE",
|
||||
"#. c #EAE3DF",
|
||||
"$. c #EAE4DE",
|
||||
"%. c #E9E3DD",
|
||||
"&. c #E8E3DE",
|
||||
"*. c #E8E2DD",
|
||||
"=. c #E8E2DE",
|
||||
"-. c #E8E3DD",
|
||||
";. c #E9E2DD",
|
||||
">. c #E8E2DC",
|
||||
",. c #E8E1DC",
|
||||
"'. c #E8E1DD",
|
||||
"). c #E7E1DC",
|
||||
"!. c #E7E1DB",
|
||||
"~. c #E7E2DC",
|
||||
"{. c #E7E0DB",
|
||||
"]. c #E7E0DC",
|
||||
"^. c #E8E1DB",
|
||||
"/. c #E8E0DB",
|
||||
"(. c #E6E0DA",
|
||||
"_. c #E7E0DA",
|
||||
":. c #E6E0DB",
|
||||
"<. c #E7E1DA",
|
||||
"[. c #E6DFDA",
|
||||
"}. c #E7DFDA",
|
||||
"|. c #E6DFD9",
|
||||
"1. c #E5DFD9",
|
||||
"2. c #E6E0D9",
|
||||
"3. c #E5DFDA",
|
||||
"4. c #E6DFD8",
|
||||
"5. c #E5DED8",
|
||||
"6. c #E5DED9",
|
||||
"7. c #E5DFD8",
|
||||
"8. c #E6DED9",
|
||||
"9. c #E4DED8",
|
||||
"0. c #E5DDD8",
|
||||
"a. c #E4DDD8",
|
||||
"b. c #E5DED7",
|
||||
"c. c #E5DDD7",
|
||||
"d. c #E4DDD7",
|
||||
"e. c #E4DED7",
|
||||
" ",
|
||||
". + @ # $ + $ . . . + + + $ # . # % ",
|
||||
". . . @ . + . . . . . . & . & . + . + + ",
|
||||
"& & * = - & & - - ; = - & & ; & * - & ; ",
|
||||
"= = > = = , = * ' * * ) ) > = ) = = ! = ",
|
||||
"> ~ > ) > { > ) > ) > ) { ] > > > > ) ) ",
|
||||
"> ^ / / ( _ : ~ / ( ~ ^ ~ / / / ~ _ / / ",
|
||||
"< / < < < ^ ^ [ } / ^ < ^ < } ^ | / < ^ ",
|
||||
"} < < } } < } 1 < | < } } < } 1 } 1 < } ",
|
||||
"2 2 3 3 4 2 2 4 2 } 4 2 3 3 3 3 } 2 2 2 ",
|
||||
"2 2 5 6 7 2 2 8 5 2 8 7 8 7 2 2 2 5 8 7 ",
|
||||
"9 9 9 9 9 9 9 7 7 9 0 7 9 9 0 9 9 7 9 7 ",
|
||||
"a b a c d e a e f b 9 b b b d a b g a a ",
|
||||
"b e e e e e e e b e e e h e e e b e e e ",
|
||||
"h h i i e j h k i h j k i j k k h h k i ",
|
||||
"l i j j m j i m i j i n i o j j o i j m ",
|
||||
"p q q q m m r q q r r q r q q m r q m q ",
|
||||
"q s q t u t t v t w u s r v w w t t t s ",
|
||||
"s s x t x s s s y x s s s x s s s s s t ",
|
||||
"y z A A B C y x B C B B x C x B x B x x ",
|
||||
"C C D D C C C D D D D D C C C C C C D D ",
|
||||
"D E F G F G D G E F E F E F H G F G D G ",
|
||||
"I I G I G J K G I G K I K K I I K G I I ",
|
||||
"L M N M K L O I P L K I P N N K Q K K K ",
|
||||
"P P P R R P P P P P N P R P R P P N P P ",
|
||||
"R S T S T U S S S P T S S R R S P R U R ",
|
||||
"V W V V W V X V X W Y V Y Z V V V V S V ",
|
||||
"` Z Z Z Z ` Z Z X Z Z ` Z W Z Z W W Z Z ",
|
||||
" ... .` Z ..+. .@.` ..` +.+.#.+.#.+.$.+.",
|
||||
"......................%...&.&.%...%.....",
|
||||
"*.=.&.-.-.;.*.%.%.*.;.&.%.;.;.=.=.-.-.;.",
|
||||
">.*.>.*.*.,.*.'.*.>.>.,.>.*.>.>.>.'.>.*.",
|
||||
").,.,.!.>.).,.~.).).).>.,.!.,.~.).).>.~.",
|
||||
"!.{.!.).).].).{.!.).^.).).{./.).!.!.).{.",
|
||||
"{.(.{.(._.{.{.{.!.{.{.:.!.{._.(.<.!.{.(.",
|
||||
"(.(.[.(.(.(.(.[.[.}.[.(.(.[.[.(.[.(.}.(.",
|
||||
"|.1.(.|.|.|.[.2.3.1.|.|.[.[.1.1.|.|.3.2.",
|
||||
"4.1.|.5.6.|.7.1.7.6.1.|.6.6.8.1.|.6.7.6.",
|
||||
"9.5.0.9.5.5.5.5.5.6.5.5.9.5.6.5.9.5.5.9.",
|
||||
"a.a.9.b.a.c.a.b.d.9.a.0.e.a.9.d.0.9.d.e."};
|
|
@ -0,0 +1,116 @@
|
|||
/* XPM */
|
||||
static const char * voip_select_xpm[] = {
|
||||
"20 20 93 2",
|
||||
" c #3F7BC3",
|
||||
". c #407CC5",
|
||||
"+ c #417DC4",
|
||||
"@ c #417DC5",
|
||||
"# c #417CC5",
|
||||
"$ c #417CC4",
|
||||
"% c #437EC6",
|
||||
"& c #427EC6",
|
||||
"* c #437FC6",
|
||||
"= c #437FC5",
|
||||
"- c #427FC6",
|
||||
"; c #4580C7",
|
||||
"> c #4480C7",
|
||||
", c #4580C8",
|
||||
"' c #4480C8",
|
||||
") c #4781C9",
|
||||
"! c #4682C8",
|
||||
"~ c #4782C9",
|
||||
"{ c #4682C9",
|
||||
"] c #4983CA",
|
||||
"^ c #4884CA",
|
||||
"/ c #4983CB",
|
||||
"( c #4984CB",
|
||||
"_ c #4984CA",
|
||||
": c #4883CA",
|
||||
"< c #4B85CB",
|
||||
"[ c #4A85CC",
|
||||
"} c #4B85CC",
|
||||
"| c #4A85CB",
|
||||
"1 c #4D87CE",
|
||||
"2 c #4D87CD",
|
||||
"3 c #4D86CD",
|
||||
"4 c #4C87CE",
|
||||
"5 c #4C87CD",
|
||||
"6 c #4C86CD",
|
||||
"7 c #4F88CF",
|
||||
"8 c #4E88CF",
|
||||
"9 c #4F89CF",
|
||||
"0 c #4E89CE",
|
||||
"a c #4E88CE",
|
||||
"b c #4F88CE",
|
||||
"c c #4E89CF",
|
||||
"d c #518AD0",
|
||||
"e c #508AD0",
|
||||
"f c #508AD1",
|
||||
"g c #518AD1",
|
||||
"h c #528CD2",
|
||||
"i c #538CD1",
|
||||
"j c #528BD2",
|
||||
"k c #538CD2",
|
||||
"l c #528CD1",
|
||||
"m c #548ED3",
|
||||
"n c #558DD3",
|
||||
"o c #548DD3",
|
||||
"p c #548DD4",
|
||||
"q c #548ED4",
|
||||
"r c #558ED4",
|
||||
"s c #568FD4",
|
||||
"t c #568FD5",
|
||||
"u c #5690D4",
|
||||
"v c #578FD5",
|
||||
"w c #5891D6",
|
||||
"x c #5891D7",
|
||||
"y c #5890D6",
|
||||
"z c #5A93D7",
|
||||
"A c #5A92D7",
|
||||
"B c #5A92D8",
|
||||
"C c #5A93D8",
|
||||
"D c #5C94D9",
|
||||
"E c #5C95D9",
|
||||
"F c #5B94D9",
|
||||
"G c #5E95DA",
|
||||
"H c #5D96DB",
|
||||
"I c #5E95DB",
|
||||
"J c #5D96DA",
|
||||
"K c #5E96DA",
|
||||
"L c #5D95DA",
|
||||
"M c #5E96DB",
|
||||
"N c #6098DC",
|
||||
"O c #6097DC",
|
||||
"P c #5F97DC",
|
||||
"Q c #5F98DC",
|
||||
"R c #6098DB",
|
||||
"S c #6199DE",
|
||||
"T c #6299DD",
|
||||
"U c #6199DD",
|
||||
"V c #6299DE",
|
||||
"W c #629ADD",
|
||||
"X c #649BDF",
|
||||
"Y c #639ADE",
|
||||
"Z c #649ADF",
|
||||
"` c #639ADF",
|
||||
" . c #639BDF",
|
||||
" ",
|
||||
". + + @ @ @ + @ @ + + # + @ . + $ @ + $ ",
|
||||
"% % % & * % * = % % % % % % % % % * - % ",
|
||||
"; ; ; > ; , ; ' ; > ; ; > , , ; ; ; , ' ",
|
||||
") ! ~ { { ) ~ ~ ! ~ ~ ~ ~ { ~ ~ ~ ~ ) { ",
|
||||
"] ^ ] / / ] ( _ ^ ] ^ ] ] ] ] ] / ^ : / ",
|
||||
"< [ [ [ } < | } } } } | } [ [ } < | } [ ",
|
||||
"1 2 1 3 3 2 4 4 4 2 1 5 5 6 4 6 5 6 2 2 ",
|
||||
"7 8 9 8 0 a 7 b a 7 8 c 7 9 8 7 c 9 c 7 ",
|
||||
"d e d e d e d f g e e f e d e e e d e g ",
|
||||
"h i j j j j h h h k h h i k l k l l k k ",
|
||||
"m n o o o o o p m o q m o o o m o m o r ",
|
||||
"s t t t t t s u v s t s s t s t s t s t ",
|
||||
"w x w y w w x w y w w w w w w y w w w w ",
|
||||
"z z z A z z A z B z B B C B A C A z C C ",
|
||||
"D E D E D D F D F D D E D D E D D D D F ",
|
||||
"G H I J H K I K L K K M I I M M I M M G ",
|
||||
"N O O P O P P O N Q N O O Q O P R N Q Q ",
|
||||
"S T U U V U T V V U W V T V V T V S U V ",
|
||||
"X Y Z X ` Z X X X X ` Z X Z X ` .` X X "};
|
Loading…
Reference in New Issue