Idź do dokumentacji tego pliku.00001 #ifndef __XTEXT_H__
00002 #define __XTEXT_H__
00003
00004 #include <gtk/gtkadjustment.h>
00005 #ifdef USE_XFT
00006 #include <X11/Xft/Xft.h>
00007 #endif
00008
00009 #ifdef USE_SHM
00010 #include <X11/Xlib.h>
00011 #include <sys/ipc.h>
00012 #include <sys/shm.h>
00013 #include <X11/extensions/XShm.h>
00014 #endif
00015
00016 #define GTK_TYPE_XTEXT (gtk_xtext_get_type ())
00017 #define GTK_XTEXT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GTK_TYPE_XTEXT, GtkXText))
00018 #define GTK_XTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_XTEXT, GtkXTextClass))
00019 #define GTK_IS_XTEXT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GTK_TYPE_XTEXT))
00020 #define GTK_IS_XTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_XTEXT))
00021 #define GTK_XTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_XTEXT, GtkXTextClass))
00022
00023
00024 #define XTEXT_MIRC_COLS 32
00025 #define XTEXT_COLS 37
00026 #define XTEXT_MARK_FG 32
00027 #define XTEXT_MARK_BG 33
00028 #define XTEXT_FG 34
00029 #define XTEXT_BG 35
00030 #define XTEXT_MARKER 36
00031
00032 typedef struct _GtkXText GtkXText;
00033 typedef struct _GtkXTextClass GtkXTextClass;
00034
00035 typedef struct textentry textentry;
00036
00037 typedef struct {
00038 GtkXText *xtext;
00039
00040 gfloat old_value;
00041 textentry *text_first;
00042 textentry *text_last;
00043 guint16 grid_offset[256];
00044
00045 textentry *last_ent_start;
00046 textentry *last_ent_end;
00047 int last_offset_start;
00048 int last_offset_end;
00049
00050 int last_pixel_pos;
00051
00052 int pagetop_line;
00053 int pagetop_subline;
00054 textentry *pagetop_ent;
00055
00056 int num_lines;
00057 int indent;
00058
00059 textentry *marker_pos;
00060
00061 int window_width;
00062 int window_height;
00063
00064 unsigned int time_stamp:1;
00065 unsigned int scrollbar_down:1;
00066 unsigned int needs_recalc:1;
00067 unsigned int grid_dirty:1;
00068 unsigned int marker_seen:1;
00069 unsigned int reset_marker_pos:1;
00070 } xtext_buffer;
00071
00072 struct _GtkXText {
00073 GtkWidget widget;
00074
00075 xtext_buffer *buffer;
00076 xtext_buffer *orig_buffer;
00077 xtext_buffer *selection_buffer;
00078
00079 #ifdef USE_SHM
00080 XShmSegmentInfo shminfo;
00081 #endif
00082
00083 GtkAdjustment *adj;
00084 GdkPixmap *pixmap;
00085 GdkDrawable *draw_buf;
00086 GdkCursor *hand_cursor;
00087 GdkCursor *resize_cursor;
00088
00089 int pixel_offset;
00090
00091 int last_win_x;
00092 int last_win_y;
00093 int last_win_h;
00094 int last_win_w;
00095
00096 int tint_red;
00097 int tint_green;
00098 int tint_blue;
00099
00100 GdkGC *bgc;
00101 GdkGC *fgc;
00102 GdkGC *light_gc;
00103 GdkGC *dark_gc;
00104 GdkGC *thin_gc;
00105 GdkGC *marker_gc;
00106 gulong palette[XTEXT_COLS];
00107
00108 gint io_tag;
00109 gint add_io_tag;
00110 gint scroll_tag;
00111 gulong vc_signal_tag;
00112
00113 int select_start_adj;
00114 int select_start_x;
00115 int select_start_y;
00116 int select_end_x;
00117 int select_end_y;
00118
00119 int max_lines;
00120
00121 int col_fore;
00122 int col_back;
00123
00124 int depth;
00125
00126 textentry *hilight_ent;
00127 int hilight_start;
00128 int hilight_end;
00129
00130 guint16 fontwidth[128];
00131
00132 #ifdef USE_XFT
00133 XftColor color[XTEXT_COLS];
00134 XftColor *xft_fg;
00135 XftColor *xft_bg;
00136 XftDraw *xftdraw;
00137 XftFont *font;
00138 XftFont *ifont;
00139 #else
00140 struct pangofont {
00141 PangoFontDescription *font;
00142 PangoFontDescription *ifont;
00143 int ascent;
00144 int descent;
00145 } *font, pango_font;
00146 PangoLayout *layout;
00147 #endif
00148
00149 int fontsize;
00150 int space_width;
00151 int stamp_width;
00152 int max_auto_indent;
00153
00154 unsigned char scratch_buffer[4096];
00155
00156 void (*error_function) (int type);
00157 int (*urlcheck_function) (GtkWidget *xtext, char *word, int len);
00158
00159 int jump_out_offset;
00160 int jump_in_offset;
00161
00162 int ts_x;
00163 int ts_y;
00164
00165 int clip_x;
00166 int clip_x2;
00167
00168 int clip_y;
00169 int clip_y2;
00170
00171
00172 unsigned int bold:1;
00173 unsigned int underline:1;
00174 unsigned int italics:1;
00175
00176
00177 unsigned int backcolor:1;
00178
00179
00180 unsigned int moving_separator:1;
00181 unsigned int word_or_line_select:1;
00182 unsigned int button_down:1;
00183 unsigned int hilighting:1;
00184 unsigned int dont_render:1;
00185 unsigned int dont_render2:1;
00186 unsigned int cursor_hand:1;
00187 unsigned int cursor_resize:1;
00188 unsigned int skip_border_fills:1;
00189 unsigned int skip_stamp:1;
00190 unsigned int mark_stamp:1;
00191 unsigned int force_stamp:1;
00192 unsigned int render_hilights_only:1;
00193 unsigned int in_hilight:1;
00194 unsigned int un_hilight:1;
00195 unsigned int recycle:1;
00196 unsigned int avoid_trans:1;
00197 unsigned int force_render:1;
00198 unsigned int shm:1;
00199
00200
00201 unsigned int auto_indent:1;
00202 unsigned int thinline:1;
00203 unsigned int transparent:1;
00204 unsigned int shaded:1;
00205 unsigned int marker:1;
00206 unsigned int separator:1;
00207 unsigned int wordwrap:1;
00208 unsigned int overdraw:1;
00209 };
00210
00211 struct _GtkXTextClass {
00212 GtkWidgetClass parent_class;
00213 void (*word_click) (GtkXText * xtext, char *word, GdkEventButton * event);
00214 };
00215
00216 GtkWidget *gtk_xtext_new(GdkColor palette[], int separator);
00217 void gtk_xtext_append_fstring(xtext_buffer *buf, fstring_t *fstr);
00218 int gtk_xtext_set_font(GtkXText * xtext, char *name);
00219 void gtk_xtext_set_background(GtkXText * xtext, GdkPixmap * pixmap, gboolean trans);
00220 void gtk_xtext_set_palette(GtkXText * xtext, GdkColor palette[]);
00221 void gtk_xtext_clear(xtext_buffer * buf);
00222 void gtk_xtext_refresh(GtkXText * xtext, int do_trans);
00223 void gtk_xtext_reset_marker_pos(GtkXText * xtext);
00224
00225 typedef void (*GtkXTextForeach) (GtkXText * xtext, unsigned char *text, void *data);
00226
00227 void gtk_xtext_set_error_function(GtkXText * xtext, void (*error_function) (int));
00228 void gtk_xtext_set_indent(GtkXText * xtext, gboolean indent);
00229 void gtk_xtext_set_max_indent(GtkXText * xtext, int max_auto_indent);
00230 void gtk_xtext_set_max_lines(GtkXText * xtext, int max_lines);
00231 void gtk_xtext_set_show_marker(GtkXText * xtext, gboolean show_marker);
00232 void gtk_xtext_set_show_separator(GtkXText * xtext, gboolean show_separator);
00233 void gtk_xtext_set_thin_separator(GtkXText * xtext, gboolean thin_separator);
00234 void gtk_xtext_set_time_stamp(xtext_buffer * buf, gboolean timestamp);
00235 void gtk_xtext_set_tint(GtkXText * xtext, int tint_red, int tint_green, int tint_blue);
00236 void gtk_xtext_set_urlcheck_function(GtkXText * xtext,
00237 int (*urlcheck_function) (GtkWidget *, char *, int));
00238 void gtk_xtext_set_wordwrap(GtkXText * xtext, gboolean word_wrap);
00239
00240 xtext_buffer *gtk_xtext_buffer_new(GtkXText * xtext);
00241 void gtk_xtext_buffer_free(xtext_buffer * buf);
00242 void gtk_xtext_buffer_show(GtkXText * xtext, xtext_buffer * buf, int render);
00243 GType gtk_xtext_get_type(void);
00244
00245 #endif