class_docstr: Two dimensional buffer of :class:`.Char` instances.
code: def __init__(
      self,
      default_char: Char | None = None,
      initial_width: int = 0,
      initial_height: int = 0,
  ) -> None:
      if default_char is None:
          default_char2 = _CHAR_CACHE[" ", Transparent]
      else:
          default_char2 = default_char
  
      self.data_buffer: defaultdict[
          int, defaultdict[int, Char]
      ] = defaultdict(lambda: defaultdict(lambda: default_char2))
  
      #: Escape sequences to be injected.
      self.zero_width_escapes: defaultdict[
          int, defaultdict[int, str]
      ] = defaultdict(lambda: defaultdict(lambda: ""))
  
      #: Position of the cursor.
      self.cursor_positions: dict[
          Window, Point
      ] = {}  # Map `Window` objects to `Point` objects.
  
      #: Visibility of the cursor.
      self.show_cursor = True
  
      #: (Optional) Where to position the menu. E.g. at the start of a completion.
      #: (We can't use the cursor position, because we don't want the
      #: completion menu to change its position when we browse through all the
      #: completions.)
      self.menu_positions: dict[
          Window, Point
      ] = {}  # Map `Window` objects to `Point` objects.
  
      #: Currently used width/height of the screen. This will increase when
      #: data is written to the screen.
      self.width = initial_width or 0
      self.height = initial_height or 0
  
      # Windows that have been drawn. (Each `Window` class will add itself to
      # this list.)
      self.visible_windows_to_write_positions: dict[
          Window, WritePosition
      ] = {}
  
      # List of (z_index, draw_func)
      self._draw_float_functions: list[
          tuple[int, Callable[[], None]]
      ] = []
  
imports: from __future__ import annotations
  from collections import defaultdict
  from typing import TYPE_CHECKING, Callable
  from prompt_toolkit.cache import FastDictCache
  from prompt_toolkit.data_structures import Point
  from prompt_toolkit.utils import get_cwidth
label_desc: Use image node_id 1 to create a new Screen object  with example: obj = Screen(default_char, initial_width, initial_height)