nativescript-community / ui-canvas

Implement Canvas into your NativeScript apps.
https://nativescript-community.github.io/ui-canvas/
Apache License 2.0
31 stars 9 forks source link

Missing Matrix.mapPoints one parameter version iOS #32

Open stemyke opened 3 years ago

stemyke commented 3 years ago

@farfromrefug Can you please modify the function this way in canvas.ios.ts?


public mapPoints(...args) {
        let src: number[];
        let dstIndex: number = 0,
            srcIndex: number = 0,
            pointCount: number;
        const pts: number[] = args[0];
        if (args.length <= 2) {
            src = args[args.length-1];
        } else {
            dstIndex = args[1] || 0;
            srcIndex = args[3] || 0;
            pointCount = args[4];
            src = args[2];
        }
        src = src || pts;
        pointCount = Math.floor(pointCount || src.length);
        for (let index = 0; index < pointCount; index += 2) {
            const cgPoint = CGPointApplyAffineTransform(CGPointMake(src[index + srcIndex], src[index + srcIndex + 1]), this._transform);
            pts[index + dstIndex] = cgPoint.x;
            pts[index + dstIndex + 1] = cgPoint.y;
        }
    }
stemyke commented 3 years ago

@farfromrefug And I think actually the pointCount variable should be treated as actual count of x,y points, not the separated numeric values.


pointCount = Math.floor(pointCount || (src.length / 2));
for (let index = 0; index < pointCount; index++) {
    const cgPoint = CGPointApplyAffineTransform(CGPointMake(src[index + srcIndex], src[index + srcIndex + 1]), this._transform);
    pts[index * 2 + dstIndex] = cgPoint.x;
    pts[index * 2 + dstIndex + 1] = cgPoint.y;
}