void LayoutSetDisplayEdgesRelative( Layout layout, double left, double bottom, double right, double top ) { int row, column; double x, y; View view; double width = (right - left) / (double) layout->columns; double height = (top - bottom) / (double) layout->rows; double x_space = layout->x_space; double y_space = layout->y_space; for ( row = 0; row < layout->rows; row++ ) { for ( column = 0; column < layout->columns; column++ ) { x = left + column * width; y = top - row * height; ViewSetDisplayEdgesRelative( LayoutView( layout, row, column ), x + x_space, y - height + y_space, x + width - x_space, y - y_space ); } } view = LayoutView( layout, 0, 0 ); layout->display_left = view->display_left; layout->display_top = view->display_top; view = LayoutView( layout, layout->rows - 1, layout->columns - 1 ); layout->display_right = view->display_right; layout->display_bottom = view->display_bottom; }
View LayoutViewNT( Layout layout, int n ) { int row, column; if ( n >= layout->rows * layout->columns ) { fprintf( stderr, "Invalid layout number: %d (%d)\n", n, layout->rows * layout->columns ); n = 0; } column = n / layout->rows; row = n % layout->rows; return( LayoutView( layout, row, column ) ); }
// SetVisibleItem void BCardLayout::SetVisibleItem(BLayoutItem* item) { if (item == fVisibleItem) return; if (item != NULL && IndexOfItem(item) < 0) return; if (fVisibleItem != NULL) fVisibleItem->SetVisible(false); fVisibleItem = item; if (fVisibleItem != NULL) { fVisibleItem->SetVisible(true); LayoutView(); } }
int LayoutProcessInput( Layout layout, float display_x, float display_y, int *row, int *column ) { View view; int lrow, lcolumn; for ( lrow = 0; lrow < layout->rows; lrow++ ) { for ( lcolumn = 0; lcolumn < layout->columns; lcolumn++ ) { view = LayoutView( layout, lrow, lcolumn ); if ( ViewDisplayPointInside( view, display_x, display_y ) ) { *row = lrow; *column = lcolumn; return( TRUE ); } } } return( FALSE ); }
int LayoutInput( Layout layout, View *view, int *row, int *column ) { float ix, iy; int event; event = DisplayInput( layout->display, &ix, &iy ); for ( *row = 0; *row < layout->rows; (*row)++ ) { for ( *column = 0; *column < layout->columns; (*column)++ ) { *view = LayoutView( layout, *row, *column ); if ( ViewDisplayPointInside( *view, ix, iy ) ) { return( event ); } } } *view = 0; return( event ); }