Added truncating of rows and columns that are not fully visible
This commit is contained in:
parent
7043911cb8
commit
ad07a03283
1 changed files with 33 additions and 11 deletions
|
@ -3,16 +3,21 @@ from TextDesign import TextDesign
|
|||
class TableTextDesign (TextDesign):
|
||||
"""Gets a matrix with text that is than
|
||||
displayed in a table without borders."""
|
||||
def __init__(self, size, text_matrix, max_col_size=None, font = None, fontsize = 12, horizontalalignment = "left", verticalalignment = "top", mask = True, line_spacing = 0, col_spacing = 0):
|
||||
def __init__ (self, size, text_matrix, max_col_size = None, font = None, fontsize = 12, horizontalalignment = "left", verticalalignment = "top", mask = True, line_spacing = 0, col_spacing = 0, truncate_rows = True, truncate_cols = True):
|
||||
super(TableTextDesign, self).__init__(size, font=font, fontsize=fontsize, horizontalalignment=horizontalalignment, verticalalignment=verticalalignment, mask=mask)
|
||||
self.matrix = text_matrix
|
||||
self.max_col_size = max_col_size
|
||||
self.line_spacing = line_spacing
|
||||
self.col_spacing = col_spacing
|
||||
self.truncate_rows = truncate_rows
|
||||
self.truncate_cols = truncate_cols
|
||||
self.max_row = None
|
||||
self.max_col = None
|
||||
|
||||
def __finish_image__ (self):
|
||||
self.__reform_col_size__()
|
||||
self.cell_sizes = self.__get_cell_sizes__()
|
||||
self.max_col, self.max_row = self.__get_truncated_counts__()
|
||||
self.__print_table__(self.matrix)
|
||||
|
||||
|
||||
|
@ -32,9 +37,26 @@ class TableTextDesign(TextDesign):
|
|||
|
||||
self.max_col_size = col_sizes
|
||||
|
||||
def __get_truncated_counts__ (self):
|
||||
max_col = 0
|
||||
if self.truncate_cols:
|
||||
while max_col < len(self.matrix[0]) and self.__get_cell_pos__(0, max_col + 1)[0] <= self.size[0]:
|
||||
max_col += 1
|
||||
else:
|
||||
max_col = len(self.matrix[0])
|
||||
|
||||
max_row = 0
|
||||
if self.truncate_rows:
|
||||
while max_row < len(self.matrix) and self.__get_cell_pos__(max_row + 1,0)[1] <= self.size[1]:
|
||||
max_row += 1
|
||||
else:
|
||||
max_row = len(self.matrix)
|
||||
|
||||
return (max_col, max_row)
|
||||
|
||||
def __print_table__ (self, matrix):
|
||||
for r, row in enumerate(matrix):
|
||||
for c, cell in enumerate(row):
|
||||
for r in range(self.max_row):
|
||||
for c in range(self.max_col):
|
||||
size = self.cell_sizes[r][c]
|
||||
pos = self.__get_cell_pos__(r,c)
|
||||
self.__draw_text__(pos, size, self.matrix[r][c])
|
||||
|
@ -59,6 +81,6 @@ class TableTextDesign(TextDesign):
|
|||
for r in range(len(self.matrix)):
|
||||
size_matrix.append([])
|
||||
for c in range(len(self.matrix[0])):
|
||||
size = (self.max_col_size[c], self.font_size)
|
||||
size = (self.max_col_size[c], int(self.font_size * 1.1))
|
||||
size_matrix[r].append(size)
|
||||
return size_matrix
|
Loading…
Reference in a new issue