#include <gtk/gtk.h> #include <string.h> GtkTextBuffer *t; GdkPixbuf *pixbuf[2]; void charger_pixbuf (); static void Txt_Validate (GtkWidget *w, GtkWidget *entry); void add_text (gchar *msg, gchar *couleur); void add_img (gchar *img); /* ============================================================================= * Point d' entrée ==============================================================================*/ int main(int argc, char **argv) { GtkWidget *fen, *vbox, *TextView, *Txt; GdkColor color; gtk_init(&argc, &argv); fen = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(fen), 400, 200); gtk_window_set_position (GTK_WINDOW(fen), GTK_WIN_POS_CENTER_ALWAYS); g_signal_connect(G_OBJECT(fen), "destroy", G_CALLBACK(gtk_main_quit), NULL); vbox = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (fen), vbox); TextView = gtk_text_view_new(); t = gtk_text_view_get_buffer (GTK_TEXT_VIEW (TextView)); gtk_box_pack_start (GTK_BOX (vbox), TextView, TRUE, TRUE, 0); Txt = gtk_entry_new (); gtk_entry_set_max_length (GTK_ENTRY (Txt), 255); gdk_color_parse ("#4D425E", &color); gtk_widget_modify_base (TextView, GTK_STATE_NORMAL, &color); gtk_entry_set_text(GTK_ENTRY (Txt), "eh:)oh:(:p"); g_signal_connect (G_OBJECT(Txt), "activate", G_CALLBACK(Txt_Validate),(gpointer)Txt); gtk_box_pack_start (GTK_BOX (vbox), Txt, FALSE, TRUE, 0); gtk_widget_show_all(fen); charger_pixbuf(); gtk_main(); return 0; } /*============================================================================== Presser Entrée pour envoyer un msg =============================================================================*/ static void Txt_Validate(GtkWidget *w, GtkWidget *entry) { add_text ((gchar *)gtk_entry_get_text(GTK_ENTRY(entry)), "orange"); gtk_entry_set_text (GTK_ENTRY(entry),""); } /*============================================================================== Ajoute du texte en couleur au TextView, et émoticones ==============================================================================*/ void add_text(gchar *msg, gchar *couleur) { GtkTextTag *tag; GtkTextIter i; gint n,k,b=0; gchar mot[255]; //tampon d'injection gchar *sm = "()p"; // 16: de 0 Ã 15 gtk_text_buffer_get_end_iter(t, &i); tag = gtk_text_buffer_create_tag(t, NULL, "foreground", couleur, NULL); for (n=0; n<strlen(msg); n++) { if (msg[n]==':') { for (k=0; k<3; k++) { if (msg[n+1]==sm[k]) { if (b) { mot[b]=0; b=0; gtk_text_buffer_insert_with_tags(t, &i, mot, -1, tag, NULL); } gtk_text_buffer_insert_pixbuf (t, &i, pixbuf[k]); n++; } } } else mot[b++]=msg[n]; } if (b>1) { mot[b]=0; gtk_text_buffer_insert_with_tags(t, &i, mot, -1, tag, NULL); } gtk_text_buffer_insert (t, &i, "\n", -1); /* gtk_text_buffer_get_end_iter(t, &i); tag = gtk_text_buffer_create_tag(t, NULL, "foreground", couleur, NULL); gtk_text_buffer_insert_with_tags(t, &i, msg,-1, tag,NULL); gtk_text_buffer_insert (t, &i, "\n", -1); */ } /* ============================================================================= Charger Pixbuf ==============================================================================*/ void charger_pixbuf() { // $ gdk-pixbuf-csource --raw --name=myimage_inline 1.png >> 1.c static const guint8 imglol[] ={ "GdkP" /* Pixbuf magic (0x47646b50) */ "\0\0\2\360" /* length: header (24) + pixel_data (728) */ "\1\1\0\2" /* pixdata_type (0x1010002) */ "\0\0\0""4" /* rowstride (52) */ "\0\0\0\15" /* width (13) */ "\0\0\0\16" /* height (14) */ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" "\0""8^z\377Jy\230\3778d\201\377\377\377\377\0\377\377\377\0\377\377\377" "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\1\32-\377" "P\211\265\377\255\324\360\377\272\342\373\377\274\343\373\377\272\337" "\367\377\255\327\362\377P\213\267\377\1\35""0\377\377\377\377\0\377\377" "\377\0\377\377\377\0\1\25'\3775\202\301\377\225\315\363\377\230\325\373" "\377\230\323\371\377\230\317\364\377\230\311\356\377\230\312\360\377" "\225\315\363\3775\226\325\377\1\40""2\377\377\377\377\0\377\377\377\0" "\0N\222\377M\235\336\377X\221\267\377>l\210\377]\226\277\377r\267\353" "\377a\225\277\377>`|\377T\204\250\377M\254\355\377\0n\263\377\377\377" "\377\0\0""6`\377\0\201\336\377*\245\363\377']\177\377F\246\345\377'Z" "|\377L\245\346\377(Y|\377F\231\327\377&Uv\377*\220\336\377\0\204\342" "\377\0;e\377\0Dx\377\0\221\357\377\5\236\372\377\24s\262\377&\230\350" "\377\35~\303\377&\227\346\377\35\210\316\377&\234\354\377\24v\265\377" "\5\177\333\377\0q\317\377\0x\377\0Y\217\377" "\0\230\366\377\0\205\343\377\0}\332\377\0o\315\377\0p\316\377\0\200\336" "\377\0\215\353\377\0\217\355\377\0\201\337\377\0r\320\377\0h\306\377" "\0""9o\377\0X\216\377\3t\276\377F~\246\377H\177\250\377H{\244\377H\200" "\251\377H\202\253\377H\204\255\377H\177\247\377Hy\242\377H{\244\377\14" "\\\240\377\0>s\377\377\377\377\0\2`\246\377\313\316\320\377\377\377\377" "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" "\377\377\377\377\377\377\377\377\343\344\345\377\14c\237\377\377\377" "\377\0\377\377\377\0\0""2[\377:m\226\377\344\346\347\377\376\376\376" "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" "\356\357\357\377T\177\233\377\1""9`\377\377\377\377\0\377\377\377\0\377" "\377\377\0\10\77l\377@q\231\377\240\252\262\377\345\347\352\377\360\362" "\363\377\351\353\355\377\254\264\272\377N\177\237\377\22Ov\377\377\377" "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\25;Z\377" ".n\236\377A\177\253\377W\206\252\377G\200\250\3776v\240\377\"Hc\377\377" "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0""6" "66\377666\377///\377\"',\377\36.:\377#(,\377///\377666\377666\377\377" "\377\377\0\377\377\377\0"
}; pixbuf[0] = gdk_pixbuf_new_from_inline (728,imglol,TRUE,NULL); static const guint8 imgtux[] ={ "GdkP" /* Pixbuf magic (0x47646b50) */ "\0\0\4\30" /* length: header (24) + pixel_data (1024) */ "\1\1\0\2" /* pixdata_type (0x1010002) */ "\0\0\0@" /* rowstride (64) */ "\0\0\0\20" /* width (16) */ "\0\0\0\20" /* height (16) */ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\2\4\1\2\2\4\15\3\3" "\5\17\6\6\10\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\2\2\1\1\3P\1\1\3\342\12\12\13" "\354\23\23\23\217\2\2\5\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\2\20\14\14\15\271\16\16\17" "\377\35\35\36\377\16\16\17\372\1\1\3L\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\1\33GEC\312^W\77" "\377so^\377332\377\1\1\3z\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\1\33XF\32\306\315\246\26\377" "\310\251!\377I>\35\377\6\6\7\231\0\0\0\12\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\3\3\4%ZSC\321\304\247W\377" "\317\267z\377yul\377\16\16\17\330\2\2\3&\0\0\0\1\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\2\6\30\30\31\203\257\257\256" "\373\354\354\351\377\367\366\364\377\313\313\311\377\27\27\30\376\1\1" "\3\231\1\1\2\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\1\5\5\6""4556\355\343\343\341\377\372\372\371\377\372\372\370\377\350" "\350\347\377aaa\377\11\11\12\371\1\1\3T\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\1\5\17\17\20\212\233\233\232\377\374\374\372\377" "\372\372\370\377\375\375\373\377\375\375\373\377\271\271\270\377\26\26" "\27\377\3\3\5\257\0\0\0\11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\12" "\10\2\37\32\341\312\311\307\377\373\373\371\377\370\370\367\377\375" "\375\373\377\375\375\373\377\305\304\300\377\27\27\30\377\5\5\6\314\0" "\0\1\26\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\266\204\11\30\261\203\11w\302" "\225\17\365\247\231n\377\347\347\346\377\372\372\371\377\375\375\373" "\377\372\371\365\377\301\250[\377#\34\13\377[H\14\326@3\4\36\0\0\0\1" "\0\0\0\0\0\0\0\0\0\0\0\1\266\205\12]\355\265\13\374\364\274\14\377\275" "\224\16\377{wi\377\374\374\372\377\375\375\373\377\345\343\336\377\322" "\244*\377\275\214\11\377\340\253\12\366\277\223\12hsW\10\4\0\0\0\0\0" "\0\0\0\0\0\0\5\241t\7\177\357\265\14\377\364\274\14\377\357\271\14\377" "\272\240R\377\310\310\307\377\266\266\265\377]YS\377\302\222\16\377\363" "\273\14\377\352\263\13\370\310\227\13\247V@\5\15\0\0\0\0\0\0\0\0\0\0" "\0\6^C\4U\213d\6\270\246y\7\340\301\214\11\365yT\10\353\26\26\26\311" "\15\15\15\304\17\12\3\315\235p\7\363\272\210\10\355kM\5\233\35\25\1\77" "\0\0\0\12\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\33\2\1\0C\12\7\0`!\26\1~\25\15" "\1q\0\0\0R\0\0\0L\1\1\0W\"\27\1}!\26\1p\2\1\0:\0\0\0\24\0\0\0\2\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\14\0\0\0\27\0\0\0\"\0\0\0\35\0\0\0\21" "\0\0\0\16\0\0\0\24\0\0\0\40\0\0\0\34\0\0\0\13\0\0\0\1\0\0\0\0\0\0\0\0"}; pixbuf[1] = gdk_pixbuf_new_from_inline (1024,imgtux,TRUE,NULL); static const guint8 imgwin[] ={ "GdkP" /* Pixbuf magic (0x47646b50) */ "\0\0\3\330" /* length: header (24) + pixel_data (960) */ "\1\1\0\2" /* pixdata_type (0x1010002) */ "\0\0\0@" /* rowstride (64) */ "\0\0\0\20" /* width (16) */ "\0\0\0\17" /* height (15) */ "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\226A\377" "\366\317\260\377\362\276\231\377\346\302\262\377\377\377\377\0\377\377" "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\337g\27" "\377\376\243R\377\377\226A\377\377i\5\377\343K\0\377\210$\11\377\377" "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\225Y1\377\377\204" ")\377\377\247_\377\377\202/\377\372^\0\377\330B\0\377\177\32\14\377\377" "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\334t/\377\377\223" ";\377\377\245]\377\377w\35\377\362U\0\377\316:\0\377\377\377\377\0\377" "\377\377\0e\207\0\377o\253\6\377\215\316\35\377\225\325(\377\210\323" "\4\377t\250\34\377\377\377\377\0ukg\377\370p\25\377\377\236O\377\377" "\236O\377\377o\17\377\346Q\0\377\276)\1\377\377\377\377\0Pw\2\377f\226" "\0\377z\300\0\377\265\3775\377\257\377%\377\202\324\0\377s\2249\377\377" "\377\377\0\222fM\377\377\207\35\377\377\260[\377\376\227<\377\377g\1" "\377\342J\0\377\224\32\6\377\377\377\377\0\\{\0\377o\242\0\377\221\334" "\0\377\302\377K\377\246\377\13\377|\303\0\377\377\377\377\0\377\377\377" "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" "\0\2505\10\377\377\377\377\0\377\377\377\0b\206\0\377m\254\0\377\251" "\377\3\377\302\377K\377\223\350\0\377h\242\2\377\377\377\377\0\377\377" "\377\0=^\263\377p\234\354\377\230\273\375\377z\245\375\377Hu\366\377" "\377\377\377\0\377\377\377\0Kr\7\377h\230\0\377y\276\0\377\260\377\27" "\377\271\3773\377\222\346\0\377Z\204\10\377\377\377\377\0;Eg\377Uy\377" "\377\235\257\377\377\223\252\377\377m\214\377\377;W\377\377\6\27\357" "\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0f\277\6\377" "O\235\11\377Bf\17\377\377\377\377\0\377\377\377\0AY\246\377e\206\377" "\377\243\266\377\377\207\236\377\377c\204\377\377+D\377\377\12\30\245" "\377\377\377\377\0\252\211\2\377\243z\13\377\377\377\377\0\377\377\377" "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0Hf\330\377" "{\227\377\377\243\266\377\377{\227\377\377Ss\377\377\37""4\377\377\377" "\377\377\0\377\377\377\0\254\212\0\377\336\254\0\377\377\333I\377\377" "\345U\377\377\322\1\377\377\377\377\0\377\377\377\0\377\377\377\0Su\365" "\377\231\261\377\377\243\273\377\377u\225\377\377Ki\377\377\12\32\367" "\377\377\377\377\0\232\177\3\377\272\225\0\377\352\266\0\377\377\337" "o\377\377\330=\377\377\306\1\377td\26\377\377\377\377\0\377\377\377\0" "Zy\336\377F[\304\3770A\232\377\33;\307\377;T\353\377\7\26\316\377\377" "\377\377\0\235\202\0\377\306\236\0\377\377\307\5\377\377\343\201\377" "\377\314\31\377\365\276\0\377\377\377\377\0\377\377\377\0\377\377\377" "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" "\0\377\377\377\0\377\377\377\0\251\213\0\377\326\246\0\377\377\315\37" "\377\377\346o\377\377\314\1\377\322\244\4\377\377\377\377\0\377\377\377" "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" "\0\377\377\377\0\377\377\377\0\377\377\377\0\274\2458\377\346\271\37" "\377\362\317-\377\362\330C\377\341\266\"\377\226\210P\377\377\377\377" "\0\377\377\377\0\377\377\377\0"}; pixbuf[2] = gdk_pixbuf_new_from_inline (960,imgwin,TRUE,NULL); // besoin d'exporter en png? //gdk_pixbuf_save (pixbuf[1], "test1.png", "png", NULL, NULL); // préfères jpg? //gdk_pixbuf_save (pixbuf[1], "test.jpg", "jpeg", NULL, "quality", "100", NULL); // ico? //gdk_pixbuf_save (pixbuf[1], "test.ico", "ico", NULL, "depth", "32", NULL); }