Example #1
0
 gfx::Size BoxLayout::GetPreferredSize(View* host)
 {
     gfx::Rect bounds;
     int position = 0;
     for(int i=0; i<host->GetChildViewCount(); ++i)
     {
         View* child = host->GetChildViewAt(i);
         if(child->IsVisible())
         {
             gfx::Size size(child->GetPreferredSize());
             if(orientation_ == kHorizontal)
             {
                 gfx::Rect child_bounds(position, 0, size.width(), size.height());
                 bounds = bounds.Union(child_bounds);
                 position += size.width();
             }
             else
             {
                 gfx::Rect child_bounds(0, position, size.width(), size.height());
                 bounds = bounds.Union(child_bounds);
                 position += size.height();
             }
             position += between_child_spacing_;
         }
     }
     gfx::Insets insets(host->GetInsets());
     return gfx::Size(
         bounds.width()+insets.width()+2*inside_border_horizontal_spacing_,
         bounds.height()+insets.height()+2*inside_border_vertical_spacing_);
 }
 gfx::Size SingleSplitView::GetPreferredSize()
 {
     int width = 0;
     int height = 0;
     for(int i=0; i<2&&i<GetChildViewCount(); ++i)
     {
         View* view = GetChildViewAt(i);
         gfx::Size pref = view->GetPreferredSize();
         if(is_horizontal_)
         {
             width += pref.width();
             height = std::max(height, pref.height());
         }
         else
         {
             width = std::max(width, pref.width());
             height += pref.height();
         }
     }
     if(is_horizontal_)
     {
         width += kDividerSize;
     }
     else
     {
         height += kDividerSize;
     }
     return gfx::Size(width, height);
 }
Example #3
0
 void BoxLayout::Layout(View* host)
 {
     gfx::Rect childArea(gfx::Rect(host->size()));
     childArea.Inset(host->GetInsets());
     childArea.Inset(inside_border_horizontal_spacing_,
         inside_border_vertical_spacing_);
     int x = childArea.x();
     int y = childArea.y();
     for(int i=0; i<host->GetChildViewCount(); ++i)
     {
         View* child = host->GetChildViewAt(i);
         if(child->IsVisible())
         {
             gfx::Rect bounds(x, y, childArea.width(), childArea.height());
             gfx::Size size(child->GetPreferredSize());
             if(orientation_ == kHorizontal)
             {
                 bounds.set_width(size.width());
                 x += size.width() + between_child_spacing_;
             }
             else
             {
                 bounds.set_height(size.height());
                 y += size.height() + between_child_spacing_;
             }
             // Clamp child view bounds to |childArea|.
             child->SetBounds(bounds.Intersect(childArea));
         }
     }
 }
 virtual gfx::Size GetPreferredSize(View* host)
 {
     // First, query the preferred sizes to determine a good width.
     int width = 0;
     for(int i=0; i<host->child_count(); ++i)
     {
         View* page = host->child_at(i);
         width = std::max(width, page->GetPreferredSize().width());
     }
     // After we know the width, decide on the height.
     return gfx::Size(width, GetPreferredHeightForWidth(host, width));
 }