(self)
| 81 | |
| 82 | |
| 83 | def init_window(self): |
| 84 | cv2.namedWindow(self.window_name) |
| 85 | max_i, max_j = 0, 0 |
| 86 | if len(self.settings.window_panes) == 0: |
| 87 | raise ImproperlyConfigured('settings.window_panes is empty.') |
| 88 | self.panes = OrderedDict() |
| 89 | for pane_name, pane_dimensions in self.settings.window_panes: |
| 90 | if len(pane_dimensions) != 4: |
| 91 | raise ImproperlyConfigured('pane dimensions should be a tuple of length 4, but it is "%s"' % repr(pane_dimensions)) |
| 92 | i_begin, j_begin, i_size, j_size = pane_dimensions |
| 93 | max_i = max(max_i, i_begin + i_size) |
| 94 | max_j = max(max_j, j_begin + j_size) |
| 95 | if pane_name in self.panes: |
| 96 | raise Exception('Duplicate pane name in settings: %s' % pane_name) |
| 97 | self.panes[pane_name] = Pane(i_begin, j_begin, i_size, j_size) |
| 98 | self.buffer_height = max_i |
| 99 | self.buffer_width = max_j |
| 100 | |
| 101 | self.window_buffer = np.tile(np.array(np.array(self.settings.window_background) * 255, 'uint8'), |
| 102 | (max_i,max_j,1)) |
| 103 | #print 'BUFFER IS:', self.window_buffer.shape, self.window_buffer.min(), self.window_buffer.max() |
| 104 | |
| 105 | for _,pane in self.panes.iteritems(): |
| 106 | pane.data = self.window_buffer[pane.i_begin:pane.i_end, pane.j_begin:pane.j_end] |
| 107 | |
| 108 | # Allocate help pane |
| 109 | for ll in self.settings.help_pane_loc: |
| 110 | assert ll >= 0 and ll <= 1, 'help_pane_loc values should be in [0,1]' |
| 111 | self.help_pane = Pane(int(self.settings.help_pane_loc[0]*max_i), |
| 112 | int(self.settings.help_pane_loc[1]*max_j), |
| 113 | int(self.settings.help_pane_loc[2]*max_i), |
| 114 | int(self.settings.help_pane_loc[3]*max_j)) |
| 115 | self.help_buffer = self.window_buffer.copy() # For rendering help mode |
| 116 | self.help_pane.data = self.help_buffer[self.help_pane.i_begin:self.help_pane.i_end, self.help_pane.j_begin:self.help_pane.j_end] |
| 117 | |
| 118 | def run_loop(self): |
| 119 | self.quit = False |
no test coverage detected