Changeset 266:b302f82224e1
- 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
| r260 |
r266 |
|
| 7 | 7 | import dwt.dwthelper.utils; |
|---|
| 8 | 8 | |
|---|
| | 9 | //version=DYNLINK; |
|---|
| | 10 | |
|---|
| 9 | 11 | public import dwt.internal.c.glib_object; |
|---|
| | 12 | |
|---|
| | 13 | version(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 | |
|---|
| | 22 | void 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 | |
|---|
| 10 | 52 | |
|---|
| 11 | 53 | extern(C): |
|---|
| … | … | |
| 372 | 414 | // uint is_paragraph_start // bits 0 .. 1 |
|---|
| 373 | 415 | // uint resolved_dir // bits 1 .. 4 |
|---|
| | 416 | uint is_paragraph_start(){ return ( bitfield0 >> 0 ) & 0x01; } |
|---|
| | 417 | uint resolved_dir (){ return ( bitfield0 >> 1 ) & 0x07; } |
|---|
| | 418 | |
|---|
| | 419 | uint is_paragraph_start( uint v ){ bitfield0 &= ~( 0x01 << 0 ); bitfield0 |= ( v & 0x01 ) << 0; return is_paragraph_start(); } |
|---|
| | 420 | uint resolved_dir ( uint v ){ bitfield0 &= ~( 0x07 << 1 ); bitfield0 |= ( v & 0x07 ) << 1; return resolved_dir (); } |
|---|
| | 421 | |
|---|
| 374 | 422 | } |
|---|
| 375 | 423 | struct _PangoGlyphItem { |
|---|
| … | … | |
| 498 | 546 | } |
|---|
| 499 | 547 | version(DYNLINK){ |
|---|
| 500 | | extern (C) int function(_PangoLayoutLine*) pango_layout_line_get_resolved_dir; // manually added |
|---|
| 501 | 548 | extern (C) char * function(int, int, int)pango_version_check; |
|---|
| 502 | 549 | extern (C) char * function()pango_version_string; |
|---|
| … | … | |
| 850 | 897 | |
|---|
| 851 | 898 | Symbol[] symbols = [ |
|---|
| 852 | | { "pango_layout_line_get_resolved_dir", cast(void**)& pango_layout_line_get_resolved_dir}, // manually added |
|---|
| 853 | 899 | { "pango_version_check", cast(void**)& pango_version_check}, |
|---|
| 854 | 900 | { "pango_version_string", cast(void**)& pango_version_string}, |
|---|
| … | … | |
| 1202 | 1248 | |
|---|
| 1203 | 1249 | } else { // version(DYNLINK) |
|---|
| 1204 | | extern (C) int pango_layout_line_get_resolved_dir(_PangoLayoutLine*); // manually added |
|---|
| 1205 | 1250 | extern (C) char * pango_version_check(int, int, int); |
|---|
| 1206 | 1251 | extern (C) char * pango_version_string(); |
|---|
| r259 |
r266 |
|
| 655 | 655 | static this(){ |
|---|
| 656 | 656 | dwt.internal.c.gtk.loadLib(); |
|---|
| | 657 | dwt.internal.c.pango.loadLib(); |
|---|
| 657 | 658 | if (OS.GTK_VERSION >= OS.buildVERSION (2, 10, 0)){ |
|---|
| 658 | 659 | // dwt.internal.c.gtk_unix_print_2_0.loadLib(); |
|---|
| … | … | |
| 2241 | 2242 | mixin ForwardGtkOsCFunc!(.pango_layout_line_get_extents); |
|---|
| 2242 | 2243 | mixin ForwardGtkOsCFunc!(.pango_layout_line_x_to_index); |
|---|
| 2243 | | mixin ForwardGtkOsCFunc!(.pango_layout_line_get_resolved_dir); |
|---|
| 2244 | 2244 | mixin ForwardGtkOsCFunc!(.pango_layout_new); |
|---|
| 2245 | 2245 | mixin ForwardGtkOsCFunc!(.pango_layout_set_alignment ); |
|---|
| … | … | |
| 2264 | 2264 | |
|---|
| 2265 | 2265 | /* Field accessors */ |
|---|
| | 2266 | |
|---|
| | 2267 | public static uint pango_layout_line_get_resolved_dir( PangoLayoutLine* line ){ |
|---|
| | 2268 | return line.resolved_dir(); |
|---|
| | 2269 | } |
|---|
| 2266 | 2270 | |
|---|
| 2267 | 2271 | static void GTK_ACCEL_LABEL_SET_ACCEL_STRING( void *arg0, gchar * arg1 ) |
|---|