static void TXT_TableLayout(TXT_UNCAST_ARG(table)) { TXT_CAST_ARG(txt_table_t, table); unsigned int *column_widths; unsigned int *row_heights; int draw_x, draw_y; int x, y; int i; int rows; // Work out the column widths and row heights rows = TableRows(table); column_widths = malloc(sizeof(int) * table->columns); row_heights = malloc(sizeof(int) * rows); CalcRowColSizes(table, row_heights, column_widths); // If this table only has one column, expand column size to fit // the display width. Ensures that separators reach the window edges // when drawing windows. if (table->columns == 1) { column_widths[0] = table->widget.w; } // Draw all cells draw_y = table->widget.y; for (y=0; y<rows; ++y) { draw_x = table->widget.x; for (x=0; x<table->columns; ++x) { i = y * table->columns + x; if (i >= table->num_widgets) break; if (table->widgets[i] != NULL) { LayoutCell(table, x, y, column_widths[x], draw_x, draw_y); } draw_x += column_widths[x]; } draw_y += row_heights[y]; } free(row_heights); free(column_widths); }
bool HtmlText::SetFont(const wxFont & font) { if (! wxControl::SetFont(font)) return false; if (m_parser) m_parser->SetStandardFonts(font.GetPointSize(), font.GetFaceName()); LayoutCell(); Refresh(); return true; }