code: def get_cell_rect(self, row, col, tab):
          
  
          top_row = self.row_tb[0]
          left_col = self.col_rl[0]
  
          pos_x = self.x_offset
          pos_y = self.y_offset
  
          merge_area = self._get_merge_area((row, col, tab))
  
          for __row in xrange(top_row, row):
              __row_height = self.code_array.get_row_height(__row, tab)
              pos_y += __row_height
  
          for __col in xrange(left_col, col):
              __col_width = self.code_array.get_col_width(__col, tab)
              pos_x += __col_width
  
          if merge_area is None:
              height = self.code_array.get_row_height(row, tab)
              width = self.code_array.get_col_width(col, tab)
          else:
              # We have a merged cell
              top, left, bottom, right = merge_area
              # Are we drawing the top left cell?
              if top == row and left == col:
                  # Set rect to merge area
                  heights = (self.code_array.get_row_height(__row, tab)
                             for __row in xrange(top, bottom+1))
                  widths = (self.code_array.get_col_width(__col, tab)
                            for __col in xrange(left, right+1))
                  height = sum(heights)
                  width = sum(widths)
              else:
                  # Do not draw the cell because it is hidden
                  return
  
          return pos_x, pos_y, width, height
docs: Returns rectangle of cell on canvas