mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-18 11:59:20 +02:00
implemented gtk GetTextExtentPoint for UTF8
git-svn-id: trunk@6454 -
This commit is contained in:
parent
0b6defabbf
commit
3ed44e9dd9
@ -104,7 +104,7 @@ var
|
|||||||
CurToken:=copy(AKey,TokenStart,TokenEnd-TokenStart);
|
CurToken:=copy(AKey,TokenStart,TokenEnd-TokenStart);
|
||||||
ACanvas.TextOut(x+1, y, CurToken);
|
ACanvas.TextOut(x+1, y, CurToken);
|
||||||
x := x + ACanvas.TextWidth(CurToken);
|
x := x + ACanvas.TextWidth(CurToken);
|
||||||
//debugln('Paint A Text="',CurToken,'" x=',dbgs(x),' y=',dbgs(y),' "',ACanvas.Font.Name,'" ',dbgs(ACanvas.Font.Height));
|
//debugln('Paint A Text="',CurToken,'" x=',dbgs(x),' y=',dbgs(y),' "',ACanvas.Font.Name,'" ',dbgs(ACanvas.Font.Height),' ',dbgs(ACanvas.TextWidth(CurToken)));
|
||||||
TokenStart:=0;
|
TokenStart:=0;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -132,8 +132,8 @@ function GetSystemPaletteEntries(DC: HDC; StartIndex, NumEntries: UINT;
|
|||||||
function GetSystemMetrics(nIndex: Integer): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
function GetSystemMetrics(nIndex: Integer): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||||
function GetTextColor(DC: HDC) : TColorRef; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
function GetTextColor(DC: HDC) : TColorRef; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||||
function GetTextExtentExPoint(DC: HDC; Str: PChar; Count, MaxWidth: Integer; MaxCount, PartialWidths: PInteger; var Size: TSize): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
function GetTextExtentExPoint(DC: HDC; Str: PChar; Count, MaxWidth: Integer; MaxCount, PartialWidths: PInteger; var Size: TSize): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||||
function GetTextExtentPoint(DC: HDC; Str: PChar; Count: Integer; var Size: TSize): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
function GetTextExtentPoint(DC: HDC; Str: PChar; Count: Integer; var Size: LCLType.TSize): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||||
function GetTextExtentPoint32(DC: HDC; Str: PChar; Count: Integer; var Size: TSize): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
function GetTextExtentPoint32(DC: HDC; Str: PChar; Count: Integer; var Size: LCLType.TSize): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||||
function GetTextMetrics(DC: HDC; var TM: TTextMetric): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
function GetTextMetrics(DC: HDC; var TM: TTextMetric): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||||
function GetWindowLong(Handle : hwnd; int : Integer): Longint; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
function GetWindowLong(Handle : hwnd; int : Integer): Longint; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||||
function GetWindowRect(Handle : hwnd; var Rect : TRect): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
function GetWindowRect(Handle : hwnd; var Rect : TRect): Integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||||
@ -295,6 +295,9 @@ function RGB(R, G, B : Byte) : TColorRef;
|
|||||||
{ =============================================================================
|
{ =============================================================================
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.101 2005/01/01 20:17:30 mattias
|
||||||
|
implemented gtk GetTextExtentPoint for UTF8
|
||||||
|
|
||||||
Revision 1.100 2004/04/10 17:58:57 mattias
|
Revision 1.100 2004/04/10 17:58:57 mattias
|
||||||
implemented mainunit hints for include files
|
implemented mainunit hints for include files
|
||||||
|
|
||||||
|
@ -5409,6 +5409,8 @@ var
|
|||||||
lbearing, rbearing, width, ascent,descent: LongInt;
|
lbearing, rbearing, width, ascent,descent: LongInt;
|
||||||
UseFont : PGDKFont;
|
UseFont : PGDKFont;
|
||||||
UnRef : Boolean;
|
UnRef : Boolean;
|
||||||
|
IsDBCSFont: Boolean;
|
||||||
|
NewCount: Integer;
|
||||||
begin
|
begin
|
||||||
Result := IsValidDC(DC);
|
Result := IsValidDC(DC);
|
||||||
if Result
|
if Result
|
||||||
@ -5427,10 +5429,23 @@ begin
|
|||||||
DebugLn('WARNING: [TGtkWidgetSet.GetTextExtentPoint] Missing font')
|
DebugLn('WARNING: [TGtkWidgetSet.GetTextExtentPoint] Missing font')
|
||||||
else begin
|
else begin
|
||||||
descent:=0;
|
descent:=0;
|
||||||
gdk_text_extents(UseFont, Str, Count,
|
UpdateDCTextMetric(TDeviceContext(DC));
|
||||||
@lbearing, @rBearing, @width, @ascent, @descent);
|
IsDBCSFont:=TDeviceContext(DC).DCTextMetric.IsDoubleByteChar;
|
||||||
|
if IsDBCSFont then begin
|
||||||
|
NewCount:=Count*2;
|
||||||
|
if FExtUTF8OutCacheSize<NewCount then begin
|
||||||
|
ReAllocMem(FExtUTF8OutCache,NewCount);
|
||||||
|
FExtUTF8OutCacheSize:=NewCount;
|
||||||
|
end;
|
||||||
|
NewCount:=UTF8ToDoubleByte(Str,Count,FExtUTF8OutCache)*2;
|
||||||
|
gdk_text_extents(UseFont, FExtUTF8OutCache, NewCount,
|
||||||
|
@lbearing, @rBearing, @width, @ascent, @descent);
|
||||||
|
end else begin
|
||||||
|
gdk_text_extents(UseFont, Str, Count,
|
||||||
|
@lbearing, @rBearing, @width, @ascent, @descent);
|
||||||
|
end;
|
||||||
Size.cX := Width;
|
Size.cX := Width;
|
||||||
//I THINK this is accurate...
|
// I THINK this is accurate...
|
||||||
Size.cY := GDK_String_Height(UseFont, Str)
|
Size.cY := GDK_String_Height(UseFont, Str)
|
||||||
{$IfNDef Win32} + descent div 2{$EndIf};
|
{$IfNDef Win32} + descent div 2{$EndIf};
|
||||||
If UnRef then
|
If UnRef then
|
||||||
@ -8811,6 +8826,9 @@ end;
|
|||||||
{ =============================================================================
|
{ =============================================================================
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.382 2005/01/01 20:17:32 mattias
|
||||||
|
implemented gtk GetTextExtentPoint for UTF8
|
||||||
|
|
||||||
Revision 1.381 2005/01/01 16:04:13 mattias
|
Revision 1.381 2005/01/01 16:04:13 mattias
|
||||||
implemented CodeExplorer auto update on switching source editor page
|
implemented CodeExplorer auto update on switching source editor page
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user