diff dwt/internal/gtk/OS.d @ 24:bc06000c0816

TextLayout and GC, graphics complete
author Frank Benoit <benoit@tionex.de>
date Mon, 07 Jan 2008 23:29:21 +0100
parents 55c4568a2bab
children 09f5459a5014
line wrap: on
line diff
--- a/dwt/internal/gtk/OS.d	Mon Jan 07 09:39:59 2008 +0100
+++ b/dwt/internal/gtk/OS.d	Mon Jan 07 23:29:21 2008 +0100
@@ -28,6 +28,81 @@
         dwt.internal.gtk.c.gdkpixbuf;
 
 // temporary added, because was not yet available
+
+struct XRenderPictureAttributes{
+    int repeat;
+    uint alpha_map;
+    int alpha_x_origin;
+    int alpha_y_origin;
+    int clip_x_origin;
+    int clip_y_origin;
+    uint clip_mask;
+    int graphics_exposures;
+    int subwindow_mode;
+    int poly_edge;
+    int poly_mode;
+    uint dither;
+    int component_alpha;
+}
+struct XRenderDirectFormat {
+    short red;
+    short redMask;
+    short green;
+    short greenMask;
+    short blue;
+    short blueMask;
+    short alpha;
+    short alphaMask;
+}
+struct XRenderPictFormat {
+    uint id;
+    int type;
+    int depth;
+    XRenderDirectFormat direct;
+    uint colormap;
+}
+
+struct XTransform {
+    int [3][3] matrix;
+}
+ struct XRectangle {
+ short x;
+ short y;
+ ushort width;
+ ushort height;
+ }
+private extern (C) uint                XRenderCreatePicture(void *, uint, XRenderPictFormat *, uint, XRenderPictureAttributes *);
+private extern (C) XRenderPictFormat * XRenderFindStandardFormat (dwt.internal.gtk.c.cairotypes.Display *dpy, int format);
+private extern (C) XRenderPictFormat * XRenderFindVisualFormat (dwt.internal.gtk.c.cairotypes.Display *dpy, void *visual);
+private extern (C) void XRenderSetPictureTransform (void     *dpy,uint picture, XTransform *transform);
+private extern (C) void XRenderSetPictureClipRectangles(void *, uint, int, int, XRectangle *, int);
+private extern (C) void XRenderFreePicture(void *, uint);
+private extern (C) void XRenderComposite(void *, int, uint, uint, uint, int, int, int, int, int, int, uint, uint);
+
+private extern (C) cairo_font_options_t * pango_cairo_context_get_font_options(void *);
+private extern (C) void pango_cairo_context_set_font_options(void *, cairo_font_options_t *);
+//void function(GtkWidget* widget, gchar* firstPropertyName, ... )gtk_widget_style_get;
+private void gtk_widget_style_get1( GtkWidget* widget, gchar* firstPropertyName, int* res ){
+    gtk_widget_style_get( widget, firstPropertyName, res, null );
+}
+
+
+private extern(C) PangoLayout *pango_cairo_create_layout (cairo_t     *cr);
+private extern(C) void pango_cairo_layout_path       (cairo_t          *cr,
+                    PangoLayout      *layout);
+
+private extern(C) void gdk_pango_context_set_colormap   (PangoContext *context,
+                                                GdkColormap  *colormap);
+
+private extern(C) void pango_cairo_show_layout(cairo_t *cr, PangoLayout *layout);
+
+private extern(C) GdkRegion *gdk_pango_layout_get_clip_region(PangoLayout     *layout,
+                                                     gint             x_origin,
+                                                     gint             y_origin,
+                                                     gint            *index_ranges,
+                                                     gint             n_ranges);
+
+
 private extern(C) GdkWindow* GDK_ROOT_PARENT();
 private extern(C) GdkPixbuf* gdk_pixbuf_new (GdkColorspace colorspace, gboolean has_alpha, int bits_per_sample,
                int width, int height);
@@ -62,6 +137,10 @@
 extern (C) XIOErrorHandler XSetIOErrorHandler(XIOErrorHandler);
 extern (C) XErrorHandler XSetErrorHandler(XErrorHandler);
 
+int PANGO_PIXELS( int v ){
+    return (v+512) >> 10;
+}
+
 
 template NameOfFunc(alias f) {
     // Note: highly dependent on the .stringof formatting
@@ -695,6 +774,17 @@
 public static const int VisibilityFullyObscured = 2;
 public static const int VisibilityNotify = 15;
 public static const int SYSTEM_TRAY_REQUEST_DOCK = 0;
+
+/** X render natives and constants */
+public static const int PictStandardARGB32 = 0;
+public static const int PictStandardRGB24 = 1;
+public static const int PictStandardA8 = 2;
+public static const int PictStandardA4 = 3;
+public static const int PictStandardA1 = 4;
+public static const int PictOpSrc = 1;
+public static const int PictOpOver = 3;
+
+
 /++
 //    mixin ForwardGtkOsCFunc!(localeconv_decimal_point);
 //    mixin ForwardGtkOsCFunc!(realpath);
@@ -735,10 +825,10 @@
     mixin ForwardGtkOsCFunc!(.gdk_x11_atom_to_xatom);
     mixin ForwardGtkOsCFunc!(.gdk_x11_colormap_get_xcolormap);
     mixin ForwardGtkOsCFunc!(.gdk_x11_drawable_get_xdisplay);
+    +/
     mixin ForwardGtkOsCFunc!(.gdk_x11_drawable_get_xid);
-    mixin ForwardGtkOsCFunc!(.gdk_x11_screen_lookup_visual);
-    mixin ForwardGtkOsCFunc!(.gdk_x11_screen_get_window_manager_name);
-    +/
+    //mixin ForwardGtkOsCFunc!(.gdk_x11_screen_lookup_visual);
+    //mixin ForwardGtkOsCFunc!(.gdk_x11_screen_get_window_manager_name);
     mixin ForwardGtkOsCFunc!(.gdk_x11_visual_get_xvisual);
     /+
     mixin ForwardGtkOsCFunc!(.gdk_pixmap_foreign_new);
@@ -751,7 +841,6 @@
  +/
     mixin ForwardGtkOsCFunc!(.XRenderQueryExtension);
     mixin ForwardGtkOsCFunc!(.XRenderQueryVersion);
-    /+
     mixin ForwardGtkOsCFunc!(.XRenderCreatePicture);
     mixin ForwardGtkOsCFunc!(.XRenderSetPictureClipRectangles);
     mixin ForwardGtkOsCFunc!(.XRenderSetPictureTransform);
@@ -759,8 +848,7 @@
     mixin ForwardGtkOsCFunc!(.XRenderComposite);
     mixin ForwardGtkOsCFunc!(.XRenderFindStandardFormat);
     mixin ForwardGtkOsCFunc!(.XRenderFindVisualFormat);
-//    mixin ForwardGtkOsCFunc!(Call );
-    +/
+    //mixin ForwardGtkOsCFunc!(Call );
     mixin ForwardGtkOsCFunc!(.GDK_DISPLAY);
     mixin ForwardGtkOsCFunc!(.GDK_ROOT_PARENT);
     /+
@@ -799,8 +887,9 @@
     mixin ForwardGtkOsCFunc!(.G_TYPE_INT);
     mixin ForwardGtkOsCFunc!(.G_OBJECT_TYPE );
     mixin ForwardGtkOsCFunc!(.G_TYPE_STRING);
+    +/
     mixin ForwardGtkOsCFunc!(.PANGO_PIXELS);
-    mixin ForwardGtkOsCFunc!(.PANGO_TYPE_FONT_DESCRIPTION); +/
+    //mixin ForwardGtkOsCFunc!(.PANGO_TYPE_FONT_DESCRIPTION);
 
     mixin ForwardGtkOsCFunc!(.g_cclosure_new);
     mixin ForwardGtkOsCFunc!(.g_closure_ref);
@@ -965,8 +1054,8 @@
     mixin ForwardGtkOsCFunc!(.gdk_keyval_to_lower);
     mixin ForwardGtkOsCFunc!(.gdk_keyval_to_unicode);
     mixin ForwardGtkOsCFunc!(.gdk_pango_context_get);
-//    mixin ForwardGtkOsCFunc!(.gdk_pango_context_set_colormap);
-//    mixin ForwardGtkOsCFunc!(.gdk_pango_layout_get_clip_region);
+    mixin ForwardGtkOsCFunc!(.gdk_pango_context_set_colormap);
+    mixin ForwardGtkOsCFunc!(.gdk_pango_layout_get_clip_region);
     mixin ForwardGtkOsCFunc!(.gdk_pixbuf_copy_area);
     mixin ForwardGtkOsCFunc!(.gdk_pixbuf_get_from_drawable);
     mixin ForwardGtkOsCFunc!(.gdk_pixbuf_get_has_alpha);
@@ -1660,8 +1749,7 @@
     mixin ForwardGtkOsCFunc!(.gtk_widget_show_now);
     mixin ForwardGtkOsCFunc!(.gtk_widget_size_allocate);
     mixin ForwardGtkOsCFunc!(.gtk_widget_size_request);
-    mixin ForwardGtkOsCFunc!(.gtk_widget_style_get);
-    mixin ForwardGtkOsCFunc!(.gtk_widget_style_get);
+    mixin ForwardGtkOsCFunc!(.gtk_widget_style_get1); // 1=get one property, see above
     mixin ForwardGtkOsCFunc!(.gtk_widget_translate_coordinates);
     mixin ForwardGtkOsCFunc!(.gtk_widget_unrealize);
     mixin ForwardGtkOsCFunc!(.gtk_window_activate_default);
@@ -1707,12 +1795,12 @@
 //    mixin ForwardGtkOsCFunc!(.pango_cairo_font_map_get_default);
 //    mixin ForwardGtkOsCFunc!(.pango_cairo_font_map_new);
 //    mixin ForwardGtkOsCFunc!(.pango_cairo_font_map_create_context);
-//    mixin ForwardGtkOsCFunc!(.pango_cairo_create_layout);
-//    mixin ForwardGtkOsCFunc!(.pango_cairo_context_get_font_options);
-//    mixin ForwardGtkOsCFunc!(.pango_cairo_context_set_font_options);
+    mixin ForwardGtkOsCFunc!(.pango_cairo_create_layout);
+    mixin ForwardGtkOsCFunc!(.pango_cairo_context_get_font_options);
+    mixin ForwardGtkOsCFunc!(.pango_cairo_context_set_font_options);
 //    mixin ForwardGtkOsCFunc!(.pango_cairo_font_map_set_resolution);
-//    mixin ForwardGtkOsCFunc!(.pango_cairo_layout_path);
-//    mixin ForwardGtkOsCFunc!(.pango_cairo_show_layout);
+    mixin ForwardGtkOsCFunc!(.pango_cairo_layout_path);
+    mixin ForwardGtkOsCFunc!(.pango_cairo_show_layout);
     mixin ForwardGtkOsCFunc!(.pango_context_get_base_dir);
     mixin ForwardGtkOsCFunc!(.pango_context_get_language);
     mixin ForwardGtkOsCFunc!(.pango_context_get_metrics);