|
@@ -95,7 +95,7 @@ Type
|
|
|
function lineto(aID : TCanvasID;X : Longint; Y : Longint ): TCanvasError;
|
|
|
function stroke(aID : TCanvasID): TCanvasError;
|
|
|
function beginpath(aID : TCanvasID): TCanvasError;
|
|
|
- function arc(aID : TCanvasID;X : Longint;Y : Longint;Radius : Longint;StartAngle : Double;EndAngle : Double): TCanvasError;
|
|
|
+ function arc(aID : TCanvasID;X : Longint;Y : Longint;RadiusX,RadiusY : Longint;StartAngle : Longint;EndAngle : Longint; Rotate : Longint; Flags : Longint): TCanvasError;
|
|
|
function fillrect(aID : TCanvasID; X : Longint; Y : Longint; Width : Longint; Height : Longint): TCanvasError;
|
|
|
function strokerect(aID : TCanvasID;X : Longint;Y : Longint; Width : Longint; Height : Longint ): TCanvasError;
|
|
|
function clearrect(aID : TCanvasID;X : Longint;Y : Longint;Width : Longint; Height : Longint ): TCanvasError;
|
|
@@ -143,12 +143,6 @@ Implementation
|
|
|
|
|
|
uses sysutils;
|
|
|
|
|
|
-Function UnScale(aLen : Longint) : Double;
|
|
|
-
|
|
|
-begin
|
|
|
- Result:=aLen/100;
|
|
|
-end;
|
|
|
-
|
|
|
{ ---------------------------------------------------------------------
|
|
|
FresnelHelper
|
|
|
---------------------------------------------------------------------}
|
|
@@ -781,7 +775,7 @@ begin
|
|
|
Exit(ECANVAS_NOCANVAS);
|
|
|
Canv.shadowOffsetX:=aOffsetX;
|
|
|
Canv.shadowOffsetY:=aOffsetY;
|
|
|
- Canv.shadowBlur:=UnScale(aRadius);
|
|
|
+ Canv.shadowBlur:=FresnelUnScale(aRadius);
|
|
|
Canv.shadowColor:=TFresnelHelper.FresnelColorToHTMLColor(aRed,aGreen,aBlue,aAlpha);
|
|
|
Result:=ECANVAS_SUCCESS;
|
|
|
end;
|
|
@@ -833,13 +827,13 @@ begin
|
|
|
{$IFNDEF NOLOGAPICALLS}
|
|
|
If LogAPICalls then
|
|
|
begin
|
|
|
- LogCall('Canvas.SetLineWidth(%d,%g)',[aID,Unscale(aWidth)]);
|
|
|
+ LogCall('Canvas.SetLineWidth(%d,%g)',[aID,FresnelUnscale(aWidth)]);
|
|
|
end;
|
|
|
{$ENDIF}
|
|
|
Canv:=GetCanvas(aID);
|
|
|
if Not Assigned(Canv) then
|
|
|
Exit(ECANVAS_NOCANVAS);
|
|
|
- Canv.LineWidth:=UnScale(aWidth);
|
|
|
+ Canv.LineWidth:=FresnelUnScale(aWidth);
|
|
|
Result:=ECANVAS_SUCCESS;
|
|
|
end;
|
|
|
|
|
@@ -901,7 +895,7 @@ begin
|
|
|
Canv:=GetCanvas(aID);
|
|
|
if Not Assigned(Canv) then
|
|
|
Exit(ECANVAS_NOCANVAS);
|
|
|
- Canv.miterLimit:=Unscale(aWidth);
|
|
|
+ Canv.miterLimit:=FresnelUnscale(aWidth);
|
|
|
Result:=ECANVAS_SUCCESS;
|
|
|
LogCall('Canvas.SetLineMiterLimit not implemented');
|
|
|
end;
|
|
@@ -920,7 +914,7 @@ begin
|
|
|
{$IFNDEF NOLOGAPICALLS}
|
|
|
If LogAPICalls then
|
|
|
begin
|
|
|
- LogCall('Canvas.SetLineDash(%d,%g,%d,[%x])',[aID,Unscale(aOffset),aPatternCount,aPattern]);
|
|
|
+ LogCall('Canvas.SetLineDash(%d,%g,%d,[%x])',[aID,FresnelUnscale(aOffset),aPatternCount,aPattern]);
|
|
|
end;
|
|
|
{$ENDIF}
|
|
|
Canv:=GetCanvas(aID);
|
|
@@ -933,11 +927,11 @@ begin
|
|
|
P:=aPattern;
|
|
|
for I:=0 to APatternCount-1 do
|
|
|
begin
|
|
|
- Dashes.Push(UnScale(v.Getint32(P,env.IsLittleEndian)));
|
|
|
+ Dashes.Push(FresnelUnScale(v.Getint32(P,env.IsLittleEndian)));
|
|
|
Inc(P,4);
|
|
|
end;
|
|
|
end;
|
|
|
- Canv.lineDashOffset:=Unscale(aOffset);
|
|
|
+ Canv.lineDashOffset:=FresnelUnscale(aOffset);
|
|
|
Canv.setLineDash(Dashes);
|
|
|
end;
|
|
|
|
|
@@ -1144,7 +1138,7 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
-function TWasmFresnelApi.arc(aID : TCanvasID;X : Longint;Y : Longint;Radius : Longint;StartAngle : Double;EndAngle : Double): TCanvasError;
|
|
|
+function TWasmFresnelApi.Arc(aID : TCanvasID;X : Longint;Y : Longint;RadiusX,RadiusY : Longint;StartAngle : Longint;EndAngle : Longint; Rotate : Longint; Flags : Longint): TCanvasError;
|
|
|
|
|
|
Var
|
|
|
C : TJSCanvasRenderingContext2D;
|
|
@@ -1152,13 +1146,20 @@ Var
|
|
|
begin
|
|
|
{$IFNDEF NOLOGAPICALLS}
|
|
|
If LogAPICalls then
|
|
|
- LogCall('Canvas.Arc(%d,%d,%d,%d,%f,%f)',[aID,X,Y,Radius,StartAngle,EndAngle]);
|
|
|
+ LogCall('Canvas.Arc(%d,%d,%d,%d,%d,%f,%f)',[aID,X,Y,RadiusX,RadiusY,FresnelUnscale(StartAngle),FresnelUnscale(EndAngle)]);
|
|
|
{$ENDIF}
|
|
|
Result:=ECANVAS_NOCANVAS;
|
|
|
C:=GetCanvas(aID);
|
|
|
if Assigned(C) then
|
|
|
begin
|
|
|
- C.arc(X,y,radius,Startangle,EndAngle);
|
|
|
+ C.beginPath;
|
|
|
+ if RadiusX=RadiusY then
|
|
|
+ C.Arc(X,y,RadiusX,FresnelUnscale(Startangle),FresnelUnscale(EndAngle))
|
|
|
+ else
|
|
|
+ C.Ellipse(X,y,RadiusX,RadiusY,FresnelUnScale(Rotate),FresnelUnscale(Startangle),FresnelUnscale(EndAngle));
|
|
|
+ if ((Flags and ARC_FILL)<>0) then
|
|
|
+ C.fill();
|
|
|
+ C.stroke();
|
|
|
Result:=ECANVAS_SUCCESS;
|
|
|
end;
|
|
|
end;
|
|
@@ -1224,13 +1225,13 @@ function TWasmFresnelApi.RoundRect(aID: TCanvasID; Flags: Longint; Data: TWasmPo
|
|
|
Var
|
|
|
C : TJSCanvasRenderingContext2D;
|
|
|
V : TJSDataView;
|
|
|
- X,Y,W,H : Double;
|
|
|
+ X,Y,W,H : TFresnelFloat;
|
|
|
Radii : TJSArray;
|
|
|
Fill : Boolean;
|
|
|
|
|
|
- function GetElement(aOffset : Longint) : Double;
|
|
|
+ function GetElement(aOffset : Longint) : TFresnelFloat;
|
|
|
begin
|
|
|
- Result:=UnScale(V.getInt32(Data+(aOffset*4),Env.IsLittleEndian));
|
|
|
+ Result:=FresnelUnScale(V.getInt32(Data+(aOffset*4),Env.IsLittleEndian));
|
|
|
end;
|
|
|
|
|
|
Procedure AddRadius(aRX,aRY : Double);
|