mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-08 20:38:16 +02:00
LazUtils: added UTF8WrapText overload which indents text similar to BreakString function from LazStringUtils unit
This commit is contained in:
parent
f0eb9b849d
commit
86e979c239
@ -147,6 +147,7 @@ function UTF8ReverseString(p: PChar; const ByteCount: LongInt): string;
|
|||||||
function UTF8ReverseString(const AText: string): string; inline;
|
function UTF8ReverseString(const AText: string): string; inline;
|
||||||
function UTF8RPos(const Substr, Source: string): PtrInt;
|
function UTF8RPos(const Substr, Source: string): PtrInt;
|
||||||
|
|
||||||
|
function UTF8WrapText(S, BreakStr: string; BreakChars: TSysCharSet; MaxCol, Indent: integer): string; overload;
|
||||||
function UTF8WrapText(S, BreakStr: string; BreakChars: TSysCharSet; MaxCol: integer): string; overload;
|
function UTF8WrapText(S, BreakStr: string; BreakChars: TSysCharSet; MaxCol: integer): string; overload;
|
||||||
function UTF8WrapText(S: string; MaxCol: integer): string; overload;
|
function UTF8WrapText(S: string; MaxCol: integer): string; overload;
|
||||||
|
|
||||||
@ -3237,9 +3238,10 @@ begin
|
|||||||
Result := UTF8Length(PChar(Source), pRev); // Length of the leading part.
|
Result := UTF8Length(PChar(Source), pRev); // Length of the leading part.
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function UTF8WrapText(S, BreakStr: string; BreakChars: TSysCharSet; MaxCol: integer): string;
|
function UTF8WrapText(S, BreakStr: string; BreakChars: TSysCharSet; MaxCol, Indent: integer): string;
|
||||||
var
|
var
|
||||||
P : PChar;
|
P : PChar;
|
||||||
|
IndentStr: string;
|
||||||
RightSpace : integer = 0;
|
RightSpace : integer = 0;
|
||||||
N : integer = 0;
|
N : integer = 0;
|
||||||
Len : integer = 0;
|
Len : integer = 0;
|
||||||
@ -3248,7 +3250,12 @@ var
|
|||||||
begin
|
begin
|
||||||
Result := '';
|
Result := '';
|
||||||
if (S = '') or (MaxCol = 0) or (BreakStr = '') or (BreakChars = []) then Exit;
|
if (S = '') or (MaxCol = 0) or (BreakStr = '') or (BreakChars = []) then Exit;
|
||||||
|
if Indent > MaxCol - 2 then
|
||||||
|
Indent := MaxCol - 2;
|
||||||
|
if Indent < 0 then
|
||||||
|
Indent := 0;
|
||||||
P := PChar(S);
|
P := PChar(S);
|
||||||
|
IndentStr := StringOfChar(' ', Indent);
|
||||||
while P^ <> #0 do
|
while P^ <> #0 do
|
||||||
begin
|
begin
|
||||||
CharLen := UTF8CodepointSize(P);
|
CharLen := UTF8CodepointSize(P);
|
||||||
@ -3265,7 +3272,7 @@ begin
|
|||||||
Inc(N);
|
Inc(N);
|
||||||
if P^ = BreakStr[Length(BreakStr)] then
|
if P^ = BreakStr[Length(BreakStr)] then
|
||||||
N := 0;
|
N := 0;
|
||||||
if N > MaxCol then
|
if N > MaxCol - Indent then
|
||||||
begin
|
begin
|
||||||
Len := Length(Result);
|
Len := Length(Result);
|
||||||
RP := Len;
|
RP := Len;
|
||||||
@ -3280,10 +3287,17 @@ begin
|
|||||||
Result := Result + BreakStr;
|
Result := Result + BreakStr;
|
||||||
N := 0;
|
N := 0;
|
||||||
end;
|
end;
|
||||||
|
if N = 0 then
|
||||||
|
Result := Result + IndentStr;
|
||||||
Inc(P, CharLen);
|
Inc(P, CharLen);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function UTF8WrapText(S, BreakStr: string; BreakChars: TSysCharSet; MaxCol: integer): string;
|
||||||
|
begin
|
||||||
|
Result := UTF8WrapText(S, BreakStr, BreakChars, MaxCol, 0);
|
||||||
|
end;
|
||||||
|
|
||||||
function UTF8WrapText(S: string; MaxCol: integer): string;
|
function UTF8WrapText(S: string; MaxCol: integer): string;
|
||||||
begin
|
begin
|
||||||
Result := UTF8WrapText(S, LineEnding, [' ', '-', #9], MaxCol);
|
Result := UTF8WrapText(S, LineEnding, [' ', '-', #9], MaxCol);
|
||||||
|
Loading…
Reference in New Issue
Block a user