Hallo zusammen,
hat jemand Erfahrung mit bitpacked record unter FPC ?
Bin gerade am übersetzen der DWrite.h und dabei gibt es folgende Struktur:
Code:
struct DWRITE_LINE_BREAKPOINT
{
UINT8 breakConditionBefore : 2;
UINT8 breakConditionAfter : 2;
UINT8 isWhitespace : 1;
UINT8 isSoftHyphen : 1;
UINT8 padding : 2;
};
Das zu übersetzen ist ja unter Delphi problematisch. J. S. Bladen hat das in seiner Translation so gelöst
Delphi-Quellcode:
TDWrite_LineBreakpoint=record
LineBreakpointConditions:Byte;
end;
Da ich mein Projekt mit FPC machen will, die Lib aber auch unter Delphi verwendbar sein soll, würde ich folgende Translation anstreben:
Delphi-Quellcode:
{$IFDEF FPC}
type
Unsigned_Bit2 = 0 .. (1 shl 2) - 1;
{$ENDIF}
type
TDWRITE_LINE_BREAKPOINT = {$IFDEF FPC} bitpacked {$ENDIF} record
{$IFDEF FPC}
case Integer of
0:(
breakConditionBefore: Unsigned_Bit2;
breakConditionAfter: Unsigned_Bit2;
isWhitespace: boolean;
isSoftHyphen: boolean;
padding: Unsigned_Bit2);
1: (LineBreakpointConditions: UINT8);
{$ELSE}
LineBreakpointConditions: UINT8;
{$ENDIF}
end;
DWRITE_LINE_BREAKPOINT = TDWRITE_LINE_BREAKPOINT;
PDWRITE_LINE_BREAKPOINT = ^TDWRITE_LINE_BREAKPOINT;
Ist das so korrekt? Ich hab ein kleines Test-programm geschrieben, dort funktioniert das Setzen und Lesen der Bits, aber funktioniert das in Kombination mit der
WinAPI/DirectDraw ? Hat da jemand Erfahrung?
bg