inconvenience: instinct2s dc.getWidth: 163 vs 156

This is probably not a bug, and maybe only I am surprised (others might have noticed), but I was expecting the "full screen" dc to return the same value for width whether I'm in a datafield or watch-app. But it turns out, that at least in the simulator (SDK 8.1.1):

datafield: dc.getWidth() => 156

watch-app: dc.getWidth() => 163

I did notice the strange screen-size: 163x156, while all the other semi-octagon devices have similar height and width.

It turns out that the reason for this is that the sub-screen has a 7 pixel bump on the right compared to the right side of the "big screen" area.

This has a funky effect when some of the visuals are positioned relative to the width, because in the watch-app the right side is "missing":

datafield (right side of the time (88:88) and the mount icon are correctly positioned):

watch-app (right side of the time (88:88) and the mount icon are IN-correctly positioned):

  •  I just use 156 for both the width and height on the i2s and it works fine on the real device.  If I recall. one of the newer instincts is similar and the 164 vs 162 occurs..  On real I2 devices, you can't set a 1 field layout for data fields.  The minimum is 2, with the subscreen being one of the fields, and you can only set it for native data field, not CIQ ones.

    This is where having the real device helps.

  • datafield: dc.getWidth() => 156

    watch-app: dc.getWidth() => 163

    I see that the datafield example is for a 2 field layout (it's not like it could be anything else), with the 1st field (big) covering the entire screen except the subscreen, and the 2nd field (small) covering the subscreen.

    It turns out that the reason for this is that the sub-screen has a 7 pixel bump on the right compared to the right side of the "big screen" area.

    As annoying as this inconsistency is, it kinda makes sense given that a DF can't draw on the I2 subscreen but a device app can.

    There's two cases here:

    - data field => big/top field of 2 field layout: the top field cannot draw on the subscreen. (CIQ data fields can't be assigned to the small field, despite what the sim shows. But even if they could, it doesn't matter since we are talking about the top field's width in the first place.)

    - device app: able to draw on the entire screen, including the subscreen

    If both cases had a 156-pixel wide dc, then device apps wouldn't be able to make full use of the subscreen.

    If both cases had a 163-pixel wide dc, then devs would complain that the data field dc is too wide, since there's no reason for the top field to include the subscreen "bump" if it can't draw to the subscreen.

    I don't think Garmin has any good choices here, except (as I've argued) to explicitly document and explain these quirks (which they really haven't).

    To get around this problem, perhaps for device apps they could've chosen to present the subscreen as a completely separate dc, but obviously they decided not to do that. (And it seems there might be several good reasons for not doing that: it would be a lot of work, it would complicate things for both Garmin and CIQ devs, it's arguably unnecessary, etc.)

  • Yeah, I never said it's a bug, that's why I called it an inconvenience. After realizing what's going on it was clear that I will need to deal with it (as Jim, I also added a constant for the width, that I use now instead of dc.getWidth(), which wasn't too complicated as I anyway have a separate file with constants for each screen size)

  • Oh for sure I'm not saying you said it was a bug.

    Just saying that I recognize it's inconvenient but I understand why Garmin did it. They probably could've documented it better but who knows. Should devs really have to reverse engineer the reasons for why Garmin does things a certain way? (See also: removal of onMenu from VA6.)

    A lot of these questions / quirks that come up for Instinct devices could've used notes in the docs (like the device reference section).

    And as mentioned elsewhere, it would've been nice if the I2 simulator made it clear that CIQ fields cannot be assigned to the subscreen, as opposed to implying that they can be. Garmin obviously addressed with I3 Solar and Instinct E, where the subscreen is blacked out in the sim.