TFPCanvas should have coordinate translation routines
<h3><details><summary>Original Reporter info from Mantis: <small>AntonK</small></summary><small>
- **Reporter name:** Anton Kavalenka
</small></details></h3>
## Description:
All modern graphic layers like Windows GDI, QT, (not sure about GTK and Carbon) has the coordinate translation functions using matrix arithmetic.<br/>
The FPCanvas can have abstraction layer to allow to the programmer Rotate and Translate World.<br/>
For example QT Painter has <br/>
QPainter::rotate() and Qpainter:translate() either with setting transformation marix routines.
Windows GDI have SetWorldTransform() function
## Steps to reproduce:
Nothing, this just feature suggestion.
## Additional information:
QT Example drawing rotated text<br/>
QPainterH(fCanvas.Handle).translate(X,Y);<br/>
QPainterH(fCanvas.Handle).rotate(-gFontAngle);
fCanvas.TextOut(0,0,Buf);
QPainterH(fCanvas.Handle).rotate(gFontAngle);<br/>
QPainterH(fCanvas.Handle).translate(-X,-Y);
GDI Example drawing rotated text<br/>
const m:TXForm=(0,0,0,0,0,0);<br/>
m.eM11:=cos(gFontAngle);<br/>
m.eM12:=sin(gFontAngle);<br/>
m.eM21:=-m.eM12;<br/>
m.eM22:=eM11;<br/>
SetWorldTransform(fCanvas.handle,matrix);<br/>
fCanvas.TextOut(0,0,Buf);
Anyway even if underlying graphic layer cannot do transformations - there can be generic transformation using matrix multiplication
## Mantis conversion info:
- **Mantis ID:** 9761
- **Platform:** All
issue