Real Screen Width / Height on round watches

Hello, is it possible to get the real screen width on a y position or the real screen height on a x position on round watches?

  • You have to calculate it yourself (for semiround watches this will be an approximation ofc).

    This is my (terrible) code:

    (:round) private function getWidth(y)
    {
        var radius = deviceWidth / 2;
        //var angle = 2 * Math.toDegrees(Math.acos(1 - (y.toFloat() / radius))); // Angle = 2 * arccos(1 - height(y) / radius)
        //return (2 * radius * Math.sin(Math.toRadians(angle) / 2)).toNumber();
        return (2 * radius * Math.sin(Math.toRadians(2 * Math.toDegrees(Math.acos(1 - (y.toFloat() / radius)))) / 2)).toNumber();
    }
    
    (:semiround) private function getWidth(y)
    {
        if (y == 0)
        {
            return 121; //biggest hack in the world
        }
    
        // not quite right
        var radius = deviceWidth / 2;
        //var angle = 2 * Math.toDegrees(Math.acos(1 - (y.toFloat() / radius))); // Angle = 2 * arccos(1 - height(y) / radius)
        //return (2 * radius * Math.sin(Math.toRadians(angle) / 2)).toNumber();
        return (2 * radius * Math.sin(Math.toRadians(2 * Math.toDegrees(Math.acos(1 - (y.toFloat() / radius)))) / 2)).toNumber();
    }
    

  • Thanks, the calculation work.

    But (:round) and (:semiround) does not work. I've get the error "Duplicate declaration of symbol 'getWidth' in class 'SingleBikeFieldView'."

  • (:round) and (:semiround) are excludes annotations,

    you have to set them in your jungle file.

    developer.garmin.com/.../

  • I try that, but it does not work:

        (:roundVersion) function getWidth(y) {
            var radius = deviceWidth / 2;
            return (2 * radius * Math.sin(Math.toRadians(2 * Math.toDegrees(Math.acos(1 - (y.toFloat() / radius)))) / 2)).toNumber();
        }
        (:regularVersion) function getWidth(y) {
            return deviceWidth;
        }
    # Configure paths based on screen shape
    round.resourcePath = $(base.resourcePath);resource-round
    semiround.resourcePath = $(base.resourcePath);resource-semiround
    rectangle.resourcePath = $(base.resourcePath);resource-rectangle
    
    # Say that all products exclude declarations
    # with the annotation :roundVersion
    base.excludeAnnotations = roundVersion
    # Now say that the round products exclude
    # the regular version
    round.excludeAnnotations = regularVersion

    Where is my mistake?