int BC_WidgetGrid::guess_y(int colno){ calculate_maxs(); int y = y_t; for (int i = 0; i < colno; i++) y += maxh[i] + rowgaps; return (y); }
int BC_WidgetGrid::guess_x(int colno){ calculate_maxs(); int x = x_l; for (int i = 0; i < colno; i++) x += maxw[i] + colgaps; return (x); }
int BC_WidgetGrid::get_w(){ calculate_maxs(); int x = 0; for (int i = 0; i < BC_WG_Cols; i++) if (maxw[i] > 0) x += maxw[i] + colgaps; return (x); }
int BC_WidgetGrid::get_h(){ calculate_maxs(); int y = 0; for (int i = 0; i < BC_WG_Rows; i++) if (maxh[i] > 0) y += maxh[i] + rowgaps; return (y); }
void BC_WidgetGrid::print(){ printf("\nWidget Grid: Widths: x_l=%d y_t=%d x_r=%d y_b=%d\n",x_l,y_t,x_r,y_b); calculate_maxs(); for (int r = 0; r < BC_WG_Rows; r++) { for (int c = 0; c < BC_WG_Cols; c++) { printf("%d,%d\t",getw_w(r,c),getw_h(r,c)); } printf("MAX: %d\n",maxh[r]); } printf("---------------------------------------------\n"); for (int c = 0; c < BC_WG_Cols; c++) printf("%d\t",maxw[c]); printf("\n\n"); }
void BC_WidgetGrid::move_widgets(){ calculate_maxs(); int r,c,x,y; int xn,yn; y = y_t; for (r = 0; r < BC_WG_Rows; r++) { x = x_l; for (c = 0; c < BC_WG_Cols; c++) { switch (widget_valign[r][c]){ default: case VALIGN_TOP: yn = y; break; case VALIGN_CENTER: yn = y + (maxh[r] - getw_h(r,c))/2; break; case VALIGN_BOTTOM: yn = y + (maxh[r] - getw_h(r,c)); break; } switch (widget_halign[r][c]){ default: case HALIGN_LEFT: xn = x; break; case HALIGN_CENTER: xn = x + (maxw[c] - getw_w(r,c))/2; break; case HALIGN_RIGHT: xn = x + (maxw[c] - getw_w(r,c)); break; } setw_position(r,c,xn,yn); // + (maxh[r] - getw_h(r,c))/2); x += colgaps + maxw[c]; } y += rowgaps + maxh[r]; } }