#ifndef __TOOLKIT_H__ #define __TOOLKIT_H__ #ifdef WITH_GTK #include #include enum { TSTRING_DIRECTION_R_TO_L, TSTRING_DIRECTION_L_TO_R }; enum { TALIGNMENT_END, TALIGNMENT_CENTER, TALIGNMENT_BEGINNING }; #define _XFUNCPROTOBEGIN #define _XFUNCPROTOEND #define TNone NULL #define TXImage GdkImage #define TIdleKeep TRUE #define TIdleRemove FALSE #define TNullTimeout 0 #define TIntervalId int #define TEvent GdkEvent #define TButtonPressedEvent GdkEventButton #define TButtonReleasedEvent GdkEventButton typedef void *TPointer; #include #include enum { XmAUTOMATIC = 0 }; typedef GdkFont TFontStruct; typedef GdkCursor *TCursor; typedef GdkVisual TVisual; typedef GdkImage TImage; typedef GdkColormap *TColormap; typedef GdkPixmap *TPixmap; typedef GdkWindow *TWindow; typedef GtkWidget *TAppContext; typedef GtkWidget *TWidget; typedef GdkDrawable *TDrawable; typedef GdkGC *TGC; typedef GList *TCallbackList; typedef TWidget *TWidgetList; typedef GdkAtom *TAtom; typedef GdkColor TColor; typedef GdkPoint TPoint; typedef XVisualInfo TVisualInfo; #define TLineSolid GDK_LINE_SOLID #define TLineDoubleDash GDK_LINE_DOUBLE_DASH #define TCapButt GDK_CAP_BUTT #define TJoinBevel GDK_JOIN_BEVEL #define TJoinRound GDK_JOIN_ROUND #define TLSBFirst GDK_LSB_FIRST #define TMSBFirst GDK_MSB_FIRST #define XmAnyCallbackStruct gtk_xmhtml_callback_info /* These two functions can be removed when XmHTML is converted to use * 16-bit color information. The corresponding XCCGetPixels() and * XCCGetPixelsIncremental() macros below should be changed to use the * un-wrapped Gdk functions. */ extern void wrap_gdk_cc_get_pixels (int incremental, GdkColorContext *cc, gushort *reds, gushort *greens, gushort *blues, gint ncolors, gint *used, gulong *colors, gint *nallocated); #define CHECK_CALLBACK(w,f,g) (gtk_signal_handler_pending (GTK_OBJECT (w), gtk_xmhtml_signals [GTK_XMHTML_##g], FALSE)) #define XtCallCallbackList(a,b,c) fprintf (stderr, "Warning callback being invoked\n"); #define TPROTO(f,a,b,c,d) f (a, b) #define Toolkit_Widget_Parent(w) GTK_WIDGET(w)->parent #define Toolkit_Is_Realized(w) GTK_WIDGET_REALIZED(w) #define Toolkit_Widget_Window(x) (x)->window #define Toolkit_Default_Root_Window(dpy) GDK_ROOT_PARENT() #define Toolkit_Pointer_Ungrab(display,time) gdk_pointer_ungrab(time) #define Toolkit_CurrentTime GDK_CURRENT_TIME #define Toolkit_HTML_Widget(widget,field) GTK_HTML((widget))->(field) #define Toolkit_Screen_Width(w) gdk_screen_width () #define Toolkit_Display(w) GDK_DISPLAY () #define Toolkit_Free_Font(dpy,font) gdk_font_unref ((font)) #define Toolkit_Free_Cursor(dpy,cursor) gdk_cursor_destroy ((cursor)); #define Toolkit_Widget_Name(w) "SomeWidget" #define Toolkit_Set_Font(dpy,gc,xfont) gdk_gc_set_font ((gc), (xfont)) #define Toolkit_Set_Foreground(dpy,gc,fg) do{TColor m;m.pixel=(fg);gdk_gc_set_foreground((gc),&m);}while(0) #define Toolkit_Set_Line_Attributes(dpy,gc,w,line,cap,join) gdk_gc_set_line_attributes((gc),(w),\ (line),(cap),(join)) #define Toolkit_Draw_String(dpy,win,gc,xs,ys,text,len,f) gdk_draw_text((win),(f),(gc),(xs),(ys),(text),(len)) #define Toolkit_Fill_Rectangle(dpy,win,gc,x,y,w,h) gdk_draw_rectangle ((win),(gc),TRUE,(x),(y),(w),(h)) #define Toolkit_Draw_Rectangle(dpy,win,gc,x,y,w,h) gdk_draw_rectangle ((win),(gc),FALSE,(x),(y),(w),(h)) #define Toolkit_Draw_Line(dpy,win,gc,x1,y1,x2,y2) gdk_draw_line ((win),(gc),(x1),(y1),(x2),(y2)) #define Toolkit_Draw_Arc(dpy,win,gc,x,y,w,h,a1,a2) gdk_draw_arc ((win),(gc),FALSE,(x),(y),(w),(h),(a1),(a2)) #define Toolkit_Fill_Arc(dpy,win,gc,x,y,w,h,a1,a2) gdk_draw_arc ((win),(gc),TRUE,(x),(y),(w),(h),(a1),(a2)) #define Toolkit_Draw_Lines(dpy,win,gc,points,npoints,mode) gdk_draw_polygon ((win),(gc),FALSE,(points),(npoints)) #define Toolkit_Text_Width(font,text,len) gdk_text_width (font, text, len) #define Toolkit_Copy_Area(dpy,src,dst,gc,sx,sy,w,h,dx,dy) \ gdk_window_copy_area ((dst),(gc),(dx),(dy),(src),(sx),(sy),(w),(h)) #define Toolkit_Create_Pixmap(dpy,win,w,h,d) gdk_pixmap_new((win),(w),(h),(d)) #define Toolkit_Free_Pixmap(d,p) gdk_pixmap_unref (p) #define Toolkit_Create_Image(d,v,depth,form,off,data,w,h,bp,bpl) my_gdk_image_new((v),(w),(h),(data),(bp),(bpl)) #define Toolkit_Image_Bits_Per_Pixel(i) (((GdkImagePrivate *) i)->ximage->bits_per_pixel) #define Toolkit_Set_Image_Data(i, d) do { \ ((GdkImagePrivate *) i)->ximage->data = d; \ i->mem = d; \ } while (0) #define Toolkit_GC_Free(dpy,gc) gdk_gc_destroy(gc) #define Toolkit_Widget_Repaint(w) \ _XmHTMLClearArea((w), 0, 0, GTK_WIDGET(w)->allocation.width, GTK_WIDGET(w)->allocation.height) #define Toolkit_Flush(d,de) gdk_flush () #define Toolkit_Widget_Force_Repaint(w) do { \ Toolkit_Widget_Repaint(w); \ gtk_widget_draw (GTK_WIDGET (w), NULL);gdk_flush();}while (0) #define Toolkit_StyleColor_Background(w) (GTK_XMHTML(w))->background_pixel #define Toolkit_StyleColor_Foreground(w) (GTK_XMHTML(w))->foreground_pixel #define Toolkit_StyleGC_BottomShadow(w) (GTK_XMHTML(w))->bottom_shadow_gc #define Toolkit_StyleGC_TopShadow(w) (GTK_XMHTML(w))->top_shadow_gc #define Toolkit_StyleGC_Highlight(w) (GTK_XMHTML(w))->highlight_gc #define Toolkit_StyleColor_Highlight(w) (GTK_XMHTML(w))->highlight_color #define Toolkit_Widget_Dim(h) (GTK_WIDGET(h)->allocation) #define Toolkit_Screen_Height(w) gdk_screen_height () #define Toolkit_Widget_Is_Realized(w) GTK_WIDGET_REALIZED (w) #define Toolkit_Clear_Area(d,w,xs,ys,wi,h,b) do {\ if (b) \ gdk_window_clear_area_e ((w),(xs),(ys),(wi),(h)); \ else \ gdk_window_clear_area ((w),(xs),(ys),(wi),(h)); \ } while (0) #define Toolkit_Widget_Destroy(w) gtk_widget_destroy (w) #define Toolkit_Widget_Colormap(w) gtk_widget_get_colormap (GTK_WIDGET (w)) #define Toolkit_Parse_Color(dpy,cm,c,d) gdk_color_parse (c, d) #define Toolkit_Alloc_Color(dpy,cm,c) gdk_color_alloc (cm,c) #define Toolkit_Get_Visual(w, dest) dest = gtk_widget_get_visual (w) #define Toolkit_Image_Destroy(i) gdk_image_destroy(i) #define Toolkit_Get_Image_Data(i) (i->mem) #define Toolkit_Image_Bytes_Per_Line(i) (i->bpl) #define Toolkit_Timeout_Remove(t) gtk_timeout_remove(t) #define Toolkit_Call_Callback(w,c,s,d) \ gtk_signal_emit (GTK_OBJECT(w), gtk_xmhtml_signals [GTK_XMHTML_##s], d) #define Toolkit_Undefine_Cursor(d,w) gdk_window_set_cursor ((w), NULL) #define Toolkit_Define_Cursor(d,w,c) gdk_window_set_cursor ((w),(c)) #define XCCCreate(w,v,c) gdk_color_context_new (v, c) #define XCCFree(c) if ((c)) gdk_color_context_free ((c)) #define XCCGetDepth(c) (c)->visual->depth #define XCCGetParentVisual(w) gtk_widget_get_visual(w) #define XCCGetPixels(cc,r,g,b,n,co,a) wrap_gdk_cc_get_pixels (0,cc,r,g,b,n,0,co,a) #define XCCGetPixelsIncremental(cc,r,g,b,n,u,co,na) wrap_gdk_cc_get_pixels (1,cc,r,g,b,n,u,co,na) #define XCCAddPalette(c,p,n) gdk_color_context_add_palette (c,p,n) #define XCCInitDither(cc) gdk_color_context_init_dither (cc) #define XCCGetIndexFromPalette(cc,r,g,b,f) gdk_color_context_get_index_from_palette(cc,r,g,b,f) #define XCCFreeDither(cc) gdk_color_context_free_dither (cc) typedef GdkColorContextDither XCCDither; #define XmSHADOW_IN 1 #define XmSHADOW_OUT 2 #else /* motif */ #define TNone None #define TPointer XtPointer #define TColor XColor #define TColormap Colormap #define TPixmap Pixmap #define TWindow Window #define TXImage XImage #define TIdleKeep False #define TIdleRemove True #define TVisual Visual #define TNullTimeout None #define TEvent XEvent #define TButtonPressedEvent XButtonPressedEvent #define TButtonReleasedEvent XButtonReleasedEvent #define TCallbackList XtCallbackList #define TIntervalId XtIntervalId #define TAppContext XtAppContext #define TGC GC #define TPoint XPoint #define TFontStruct XFontStruct #define TWidgetList WidgetList #define TSTRING_DIRECTION_R_TO_L XmSTRING_DIRECTION_R_TO_L #define TSTRING_DIRECTION_L_TO_R XmSTRING_DIRECTION_L_TO_R #define TLineSolid LineSolid #define TLineDoubleDash LineDoubleDash #define TCapButt CapButt #define TJoinBevel JoinBevel #define TJoinRound JoinRound #define TLSBFirst LSBFirst #define TMSBFirst MSBFirst #define CHECK_CALLBACK(w,f,g) ((w)->html.(f)) #define TPROTO(f,a,b,c,d) f (a, b, c, d) #define Toolkit_Widget_Parent(w) XtParent(w) #define Toolkit_Is_Realized(w) XtIsRealized ((Widget) w) #define Toolkit_Widget_Window(x) XtWindow((x)) #define Toolkit_Default_Root_Window(dpy) DefaultRootWindow(dpy) #define Toolkit_Pointer_Ungrab(display,time) XUngrabPointer(display,time) #define Toolkit_CurrentTime CurrentTime #define Toolkit_HTML_Widget(widget,field) (widget)->html.(field) #define Toolkit_Screen_Width(w) WidthOfScreen(XtScreen((Widget)w))); #define Toolkit_Display(w) XtDisplay(w) #define Toolkit_Free_Font(dpy,font) XFreeFont (dpy, (font)) #define Toolkit_Widget_Name(w) XtName(w) #define Toolkit_Set_Font(dpy,gc,xfont) XSetFont ((dpy), (gc), (xfont)->fid) #define Toolkit_Set_Foreground(dpy,gc,fg) XSetForeground((dpy),(gc),(fg)) #define Toolkit_Set_Line_Attributes(dpy,gc,w,line,cap,join) XSetLineAttributes((dpy),(gc),(w),\ (line),(cap),(join)) #define Toolkit_Draw_String(dpy,win,gc,xs,ys,text,len,f) XDrawString((dpy),(win),(gc),(xs),(ys),(text),(len)) #define Toolkit_Fill_Rectangle(dpy,win,gc,x,y,w,h) XFillRectangle ((dpy),(win),(gc),(x),(y),(w),(h)) #define Toolkit_Draw_Rectangle(dpy,win,gc,x,y,w,h) XDrawRectangle ((dpy),(win),(gc),(x),(y),(w),(h)) #define Toolkit_Draw_Line(dpy,win,gc,x1,y1,x2,y2) XDrawLine ((dpy),(win),(gc),(x1),(y1),(x2),(y2)) #define Toolkit_Draw_Arc(dpy,win,gc,x,y,w,h,a1,a2) XDrawArc ((dpy),(win),(gc),(x),(y),(w),(h),(a1),(a2)) #define Toolkit_Fill_Arc(dpy,win,gc,x,y,w,h,a1,a2) XFillArc ((dpy),(win),(gc),(x),(y),(w),(h),(a1),(a2)) #define Toolkit_Draw_Lines(dpy,win,gc,points,npoints,mode) XDrawLines((dpy),(win),(gc),(points),(npoints),(mode)) #define Toolkit_Text_Width(font,text,len) XTextWidth (font, text, len) #define Toolkit_Copy_Area(dpy,src,dst,gc,sx,sy,w,h,dx,dy) \ XCopyArea ((dpy),(src),(dst),(gc),(sx),(sy),(w),(h),(dx),(dy)) #define Toolkit_Create_Pixmap(dpy,win,w,h,d) XCreatePixmap((dpy),(win),(w),(h),(d)) #define Toolkit_Free_Pixmap(d,p) XFreePixmap ((d),(p)) #define Toolkit_Create_Image(d,v,depth,form,off,data,w,h,bp,bpl) \ XCreateImage ((d),(v),(depth),(form),(off),(data),(w),(h),(bp),(bpl)) #define Toolkit_Image_Bits_Per_Pixel(i) (image->bits_per_pixel) #define Toolkit_Set_Image_Data(i, d) do { i->data = d; } while (0) #define Toolkit_GC_Free(dpy,gc) XFreeGC((dpy),(gc)) #define Toolkit_Free_Cursor(dpy,cursor) XFreeCursor ((dpy), (cursor)) #define Toolkit_Widget_Repaint(w) _XmHTMLClearArea((w), 0, 0, (w)->core.width, (w)->core.height) #define Toolkit_Widget_Force_Repaint(w) \ do { _XmHTMLClearArea((w), 0, 0, (w)->core.width, (w)->core.height); \ XSync(XtDisplay((TWidget)(w)), True); } while (0) #define Toolkit_Flush(d,de) XSync (d,de) #define Toolkit_StyleColor_Background(w) (w)->core.background_pixel #define Toolkit_StyleColor_Foreground(w) (w)->manager.foreground #define Toolkit_StyleGC_BottomShadow(w) (w)->manager.bottom_shadow_GC #define Toolkit_StyleGC_TopShadow(w) (w)->manager.top_shadow_GC #define Toolkit_StyleGC_Highlight(w) (w)->manager.highlight_GC #define Toolkit_StyleColor_Highlight(w) (w)->manager.highlight_color #define Toolkit_Widget_Dim(h) ((h)->core) #define Toolkit_Screen_Height(w) HeightOfScreen(w) #define Toolkit_Widget_Is_Realized(w) XtIsRealized (w) #define Toolkit_Clear_Area(d,wid,xs,ys,w,h,b) XClearArea ((d),(wid),(xs),(ys),(w),(h), b); #define Toolkit_Widget_Destroy(w) XtDestroyWidget (w) #define Toolkit_Widget_Colormap(w) (w)->core.colormap #define Toolkit_Parse_Color(dpy,cm,c,d) XParseColor((dpy),(cm),(c),(d)) #define Toolkit_Alloc_Color(dpy,cm,c) do{(c)->flags=DoRed|DoGreen|DoBlue;XAllocColor (dpy,cm,c)}while (0) #define Toolkit_Get_Visual(w, dest) XtVaGetValues((w),XmNvisual, &dest, NULL) #define Toolkit_Image_Destroy(i) XDestroyImage(i) #define Toolkit_Get_Image_Data(i) (i->data) #define Toolkit_Image_Bytes_Per_Line(i) (i->bytes_per_line) #define Toolkit_Timeout_Remove(t) XtRemoveTimeOut(t) #define Toolkit_Call_Callback(w,c,s,d) XtCallCallbackList ((w),(c),(d)) #define Toolkit_Undefine_Cursor(d,w) XUndefineCursor ((d), (w)) #define Toolkit_Define_Cursor(d,w,c) XDefineCursor ((d), (w),(c)) #define TALIGNMENT_END XmALIGNMENT_END #define TALIGNMENT_CENTER XmALIGNMENT_CENTER #define TALIGNMENT_BEGINNING XmALIGNMENT_BEGINNING #define XCCGetDepth(c) c->visualInfo->depth #endif #endif