Watchface: El Primero

Classic Zenith analog watchface with anti-aliasing, always-on second hand and powersafe mode.

Connect IQ Store link | Source code link


  • Nice design
  • Battery level and heart rate display
  • UTC timezone and device state icons
  • Move meter
  • Steps counter
  • Active minutes counter
  • Current date display
  • Auto power safe mode

Powersafe mode

There are 3 operating modes for this watchface:

  • Active mode (10 seconds after "what's time" gesture)
    • Current heart rate is shown
    • Second hand is updated in 2Hz
  • Background mode
    • Second hand is updated in 1Hz
    • All data is updated once a minute, differences are re-drawn to screen buffer
  • Powersafe mode (activated at specific conditions)
    • Second hand is not shown
    • Minute hand is drawn once a minute, everything else is drawn to screen buffer
    • When hour hand moves (once in 12 minutes), all data is updated, differences are re-drawn in screen buffer
    • Anti-aliased custom-font hour and minute hands are replaced with vector hands

Powersafe mode is activated in a minute after entering background mode, if:

  • Do-not-disturb mode is on (usually it is activated in sleep mode)
  • Move bar is full (if you are too busy to make some steps, you don't look at watch)
  • Heart rate data is missing (watches are not on your hand)
  • Heart rate is less than 1.2x of resting heart rate (you are actually sleeping)

Technical details

  • There is huge full-color buffered bitmap to simplify redrawing of second hand
  • This buffer is also used in powersafe mode to handle minute hand updates
  • Elements in buffer are redrawn on-demand (background parts shaded by minute/hour hands or changed value for HR gauge)
  • Background actually is a custom font (it appears that font texture is stored in compressed format, because even 2bit paletted bitmaps are far bigger)
  • Hands are drawn from custom fonts also (60 positions for each hand are split to tiles and packed into a set of fonts to save free memory)
  • Fonts for hands are constantly reloading from storage while every single font is cached until next is needed; this happens every ~5 minutes in background mode and consumes lots of power, so powersafe mode uses ugly vector hands representation