Dimension FlowLayout::preferredLayoutSize(Widget *container) { Dimension preferred_size(borders * 2 + padding, borders * 2 + padding); Widget::const_iterator widgetI = container->begin(); while(widgetI != container->end()) { Widget *currentWidget = *widgetI; Dimension cpref = currentWidget->getPreferredSize(); if(layout_orientation == VERTICAL) { int preferred_width = cpref.w + borders * 2 + padding * 2; if(preferred_width > preferred_size.w) preferred_size.w = preferred_width; preferred_size.h += cpref.h + padding; } else { int preferred_height = cpref.h + borders * 2 + padding * 2; if(preferred_height > preferred_size.h) preferred_size.h = preferred_height; preferred_size.w += cpref.w + padding; } ++widgetI; } return preferred_size; }
static void init(grib_accessor* a, const long len, grib_arguments*arg ) { grib_accessor_pad* self = (grib_accessor_pad*)a; self->expression = grib_arguments_get_expression(a->parent->h, arg,0); a->length = preferred_size(a,1); }