1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| if Pos('matrix(',transform)>0 then
begin
// SVG Theory https://developer.mozilla.org/fr/docs/Web/API/SVGMatrix
// Beaucoup d'opération graphiques de SVG utilisent des matrices 2x3 de la forme :
// [a c e]
// [b d f]
// laquelle, quand étendue en une matrice 3x3 à des fins d'arithmétique matricielle, devient
// [a c e]
// [b d f]
// [0 0 1]
PS:=Pos('matrix(',transform)+Length('matrix(');
GetNumbers(Copy(transform,PS,Pos(')',transform,PS)-PS), Numbers);
var ma : single :=Numbers.Dequeue;
var mc : Single :=Numbers.Dequeue;
var me : Single :=Numbers.Dequeue;
var mb : Single :=Numbers.Dequeue;
var md : Single :=Numbers.Dequeue;
var mf : Single :=Numbers.Dequeue;
M.m11:=ma;
M.m12:=mb;
M.m21:=mc;
M.m22:=md;
M.m31:=me;
M.m32:=mf;
Cible.Data.ApplyMatrix(M);
end; |
Partager