comparison org.eclipse.swt.gtk.linux.x86/src/org/eclipse/swt/internal/cairo/Cairo.d @ 26:f589fc20a5f9

work on linux phobos
author Frank Benoit <benoit@tionex.de>
date Sat, 21 Mar 2009 11:22:55 +0100
parents f713da8bc051
children
comparison
equal deleted inserted replaced
25:f713da8bc051 26:f589fc20a5f9
30 import org.eclipse.swt.internal.c.cairo_ps; 30 import org.eclipse.swt.internal.c.cairo_ps;
31 import org.eclipse.swt.internal.c.cairo_pdf; 31 import org.eclipse.swt.internal.c.cairo_pdf;
32 import org.eclipse.swt.internal.c.Xlib; 32 import org.eclipse.swt.internal.c.Xlib;
33 import org.eclipse.swt.internal.Platform; 33 import org.eclipse.swt.internal.Platform;
34 34
35 import tango.core.Traits; 35 version(Tango){
36 import tango.core.Traits;
37 } else { // Phobos
38 import std.traits;
39 }
36 40
37 public alias org.eclipse.swt.internal.c.cairo.cairo_t cairo_t; 41 public alias org.eclipse.swt.internal.c.cairo.cairo_t cairo_t;
38 public alias org.eclipse.swt.internal.c.cairo.cairo_pattern_t cairo_pattern_t; 42 public alias org.eclipse.swt.internal.c.cairo.cairo_pattern_t cairo_pattern_t;
39 public alias org.eclipse.swt.internal.c.cairo.cairo_surface_t cairo_surface_t; 43 public alias org.eclipse.swt.internal.c.cairo.cairo_surface_t cairo_surface_t;
40 public alias org.eclipse.swt.internal.c.cairo.cairo_text_extents_t cairo_text_extents_t; 44 public alias org.eclipse.swt.internal.c.cairo.cairo_text_extents_t cairo_text_extents_t;
72 const char[] NameOfFunc = (&f).stringof[2 .. $]; 76 const char[] NameOfFunc = (&f).stringof[2 .. $];
73 } 77 }
74 } 78 }
75 79
76 template ForwardGtkCairoCFunc( alias cFunc ) { 80 template ForwardGtkCairoCFunc( alias cFunc ) {
77 alias ParameterTupleOf!(cFunc) P; 81 version(Tango){
78 alias ReturnTypeOf!(cFunc) R; 82 alias ParameterTupleOf!(cFunc) P;
79 mixin("public static R " ~ NameOfFunc!(cFunc) ~ "( P p ){ 83 alias ReturnTypeOf!(cFunc) R;
80 lock.lock(); 84 mixin("public static R " ~ NameOfFunc!(cFunc) ~ "( P p ){
81 scope(exit) lock.unlock(); 85 lock.lock();
82 return cFunc(p); 86 scope(exit) lock.unlock();
83 }"); 87 return cFunc(p);
88 }");
89 } else { // Phobos
90 alias ParameterTypeTuple!(cFunc) P;
91 alias ReturnType!(cFunc) R;
92 mixin("public static R " ~ NameOfFunc!(cFunc) ~ "( P p ){
93 lock.lock();
94 scope(exit) lock.unlock();
95 return cFunc(p);
96 }");
97 }
84 } 98 }
85 99
86 public class Cairo : Platform { 100 public class Cairo : Platform {
87 101
88 /** Constants */ 102 /** Constants */