Changeset 266:b302f82224e1

Show
Ignore:
Timestamp:
07/06/08 09:34:54 (2 months ago)
Author:
Frank Benoit <benoit@tionex.de>
branch:
default
Message:

Fix: bitfield access for PangoLayoutLine?

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • dwt/internal/c/pango.d

    r260 r266  
    77import dwt.dwthelper.utils; 
    88 
     9//version=DYNLINK; 
     10 
    911public import dwt.internal.c.glib_object; 
     12 
     13version(DYNLINK){ 
     14    import tango.sys.SharedLib : SharedLib; 
     15    import tango.util.log.Trace; 
     16    struct Symbol{ 
     17        String name; 
     18        void** symbol; 
     19    } 
     20} 
     21 
     22void loadLib(){ 
     23    version(DYNLINK){ 
     24        String libname = "libpango-1.0.so"; 
     25 
     26        SharedLib lib = SharedLib.load( libname ); 
     27        if( lib is null ){ 
     28            lib = SharedLib.load( libname ~ ".0" ); 
     29        } 
     30        int loaded; 
     31        if ( lib !is null ) { 
     32            foreach( s; symbols ){ 
     33                try{ 
     34                    *s.symbol = lib.getSymbol( s.name.ptr ); 
     35                } 
     36                catch(Exception e){} 
     37                if( *s.symbol is null ){ 
     38                    Trace.formatln( "{}: Symbol '{}' not found", libname, s.name ); 
     39                } 
     40                else{ 
     41                    loaded++; 
     42                } 
     43            } 
     44        } else { 
     45            Trace.formatln( "Could not load the library {}", libname ); 
     46        } 
     47    } 
     48} 
     49 
     50 
     51 
    1052 
    1153extern(C): 
     
    372414// uint is_paragraph_start // bits 0 .. 1 
    373415// uint resolved_dir // bits 1 .. 4 
     416uint is_paragraph_start(){ return ( bitfield0 >> 0 ) & 0x01; } 
     417uint resolved_dir      (){ return ( bitfield0 >> 1 ) & 0x07; } 
     418 
     419uint is_paragraph_start( uint v ){ bitfield0 &= ~( 0x01 << 0 ); bitfield0 |= ( v & 0x01 ) << 0; return is_paragraph_start(); } 
     420uint resolved_dir      ( uint v ){ bitfield0 &= ~( 0x07 << 1 ); bitfield0 |= ( v & 0x07 ) << 1; return resolved_dir      (); } 
     421 
    374422} 
    375423struct _PangoGlyphItem { 
     
    498546} 
    499547version(DYNLINK){ 
    500 extern (C) int function(_PangoLayoutLine*) pango_layout_line_get_resolved_dir; // manually added 
    501548extern (C) char * function(int, int, int)pango_version_check; 
    502549extern (C) char * function()pango_version_string; 
     
    850897 
    851898Symbol[] symbols = [ 
    852     { "pango_layout_line_get_resolved_dir",  cast(void**)& pango_layout_line_get_resolved_dir}, // manually added 
    853899    { "pango_version_check",  cast(void**)& pango_version_check}, 
    854900    { "pango_version_string",  cast(void**)& pango_version_string}, 
     
    12021248 
    12031249} else { // version(DYNLINK) 
    1204 extern (C) int pango_layout_line_get_resolved_dir(_PangoLayoutLine*); // manually added 
    12051250extern (C) char * pango_version_check(int, int, int); 
    12061251extern (C) char * pango_version_string(); 
  • dwt/internal/gtk/OS.d

    r259 r266  
    655655    static this(){ 
    656656        dwt.internal.c.gtk.loadLib(); 
     657        dwt.internal.c.pango.loadLib(); 
    657658        if (OS.GTK_VERSION >= OS.buildVERSION (2, 10, 0)){ 
    658659//            dwt.internal.c.gtk_unix_print_2_0.loadLib(); 
     
    22412242    mixin ForwardGtkOsCFunc!(.pango_layout_line_get_extents); 
    22422243    mixin ForwardGtkOsCFunc!(.pango_layout_line_x_to_index); 
    2243     mixin ForwardGtkOsCFunc!(.pango_layout_line_get_resolved_dir); 
    22442244    mixin ForwardGtkOsCFunc!(.pango_layout_new); 
    22452245    mixin ForwardGtkOsCFunc!(.pango_layout_set_alignment ); 
     
    22642264 
    22652265    /* Field accessors */ 
     2266 
     2267    public static uint pango_layout_line_get_resolved_dir( PangoLayoutLine* line ){ 
     2268        return line.resolved_dir(); 
     2269    } 
    22662270 
    22672271    static void    GTK_ACCEL_LABEL_SET_ACCEL_STRING( void *arg0, gchar * arg1 )