code: def is_overlapping_viewport(self, hotspot, xy):
          
          l1, t1, r1, b1 = calc_bounds(xy, hotspot)
          l2, t2, r2, b2 = calc_bounds(self._position, self._device)
          return range_overlap(l1, r1, l2, r2) and range_overlap(t1, b1, t2, b2)
docs: Checks to see if the hotspot at position ``(x, y)``
          is (at least partially) visible according to the
          position of the viewport.