diff options
author | Graeme Geldenhuys <graeme@mastermaths.co.za> | 2009-10-16 17:09:54 +0200 |
---|---|---|
committer | Graeme Geldenhuys <graeme@mastermaths.co.za> | 2009-10-16 17:09:54 +0200 |
commit | a1fa41a283f974f546f7936f0e95eac146e7eaa4 (patch) | |
tree | 4d03e3bf2eb74a1795225094e798af0def01bb49 /components | |
parent | a8d0e1fa2aa408f02c82bae41f59c8b685d9cbb8 (diff) | |
download | fpGUI-a1fa41a283f974f546f7936f0e95eac146e7eaa4.tar.xz |
Table text draw character problem fixed.
The default characters used for table text-drawings are not
displayable under fpGUI. So just before they get drawn to the Canvas,
I replace all the old chars with Unicode Box Drawing characters.
The result is a much prettier looking table than the original VIEW
program showed. :-)
Signed-off-by: Graeme Geldenhuys <graeme@mastermaths.co.za>
Diffstat (limited to 'components')
-rw-r--r-- | components/richtext/CanvasFontManager.pas | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/components/richtext/CanvasFontManager.pas b/components/richtext/CanvasFontManager.pas index 819141fb..6327a4bb 100644 --- a/components/richtext/CanvasFontManager.pas +++ b/components/richtext/CanvasFontManager.pas @@ -140,6 +140,7 @@ uses SysUtils ,ACLStringUtility ,nvUtilities + ,fpg_stringutils ; @@ -1037,8 +1038,54 @@ end; procedure TCanvasFontManager.DrawString(var Point: TPoint; const Length: longint; const S: PChar); var t: string; + + // Seaches <AValue> and replaces <ADel> with <AIns>. Case sensitive. + function tiStrTran(AValue, ADel, AIns : string): string; + var + i : integer; + sToChange : string; + begin + result := ''; + sToChange := AValue; + i := UTF8Pos(ADel, sToChange); + while i <> 0 do + begin + result := result + UTF8Copy(sToChange, 1, i-1) + AIns; + UTF8Delete(sToChange, 1, i+UTF8length(ADel)-1); + i := UTF8Pos(ADel, sToChange); + end; + result := result + sToChange; + end; + begin t := s; + +// Hack Alert #2: replace strange table chars with something we can actually see + //s := SubstituteChar(s, Chr(218), Char('+') ); // top-left corner + //s := SubstituteChar(s, Chr(196), Char('-') ); // horz row deviders + //s := SubstituteChar(s, Chr(194), Char('-') ); // centre top T connection + //s := SubstituteChar(s, Chr(191), Char('+') ); // top-right corner + //s := SubstituteChar(s, Chr(192), Char('+') ); // bot-left corner + //s := SubstituteChar(s, Chr(193), Char('-') ); // centre bottom inverted T + //s := SubstituteChar(s, Chr(197), Char('+') ); + //s := SubstituteChar(s, Chr(179), Char('|') ); // + //s := SubstituteChar(s, Chr(195), Char('|') ); + //s := SubstituteChar(s, Chr(180), Char('|') ); + //s := SubstituteChar(s, Chr(217), Char('+') ); // bot-right corner + t := tiStrTran(t, Char(179), '│' ); + t := tiStrTran(t, Char(180), '┤' ); + t := tiStrTran(t, Char(191), '┐' ); + t := tiStrTran(t, Char(192), '└' ); + t := tiStrTran(t, Char(193), '┴' ); + t := tiStrTran(t, Char(194), '┬' ); + t := tiStrTran(t, Char(195), '├' ); + t := tiStrTran(t, Char(196), '─' ); + t := tiStrTran(t, Char(197), '┼' ); + t := tiStrTran(t, Char(217), '┘' ); + t := tiStrTran(t, Char(218), '┌' ); + + + FCanvas.DrawString(Point.X, Point.Y, t); Point.x := Point.X + Canvas.Font.TextWidth(t); end; |