code: def _prepare_draw(self, view):
      xform = view.get_transform()
      tr = view.get_transform("document", "render")
      logical_scale = np.diff(tr.map(([0, 1], [1, 0])), axis=0)[0, :2]
      tr = view.get_transform("document", "framebuffer")
      log_to_phy = np.mean(
          np.diff(tr.map(([0, 1], [1, 0])), axis=0)[0, :2]
      )
      n_pix = (self.font_size / 72.0) * 92.0  # num of pixels tall
      # The -2 here is because the char_height has a gap built in
      font_scale = max(n_pix / float((self._char_height - 2)), 1)
      self._resize_buffers(font_scale)
      self._do_pending_writes()
      self._program["u_origin"] = xform.map((0, 0, 0, 1))
      self._program["u_logical_scale"] = font_scale * logical_scale
      self._program["u_color"] = self.text_color.rgba
      self._program["u_physical_scale"] = font_scale * log_to_phy
      self._program["a_position"] = self._position
      self._program["a_bytes_012"] = VertexBuffer(self._bytes_012)
      self._program["a_bytes_345"] = VertexBuffer(self._bytes_345)
  
imports: import numpy
  from .widget import Widget
  from ...visuals import Visual
  from ...gloo import VertexBuffer
  from ...color import Color
label_desc: Use image node_id 9 for calling the ConsoleVisual obj's underlying member method code with example usage: obj._prepare_draw(view) without return types