Пример #1
0
 void WorldCamera::
 ConfigureView(View & view)
 {
   shared_ptr<const BBox> bb(m_world.GetBounds());
   if( ! bb)
     view.SetBounds(0, 0, 1, 1);
   else
     view.SetBounds(*bb, 1);
 }
Пример #2
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));
         }
     }
 }
Пример #3
0
void OCamera::
ConfigureView(View & view)
{
  view.SetBounds (m_dwa.QdlMinIndex(),
		  m_dwa.QdrMinIndex(),
		  m_dwa.QdlMaxIndex() + 1,
		  m_dwa.QdrMaxIndex() + 1);
}
Пример #4
0
    void SingleSplitView::Layout()
    {
        if(GetChildViewCount() != 2)
        {
            return;
        }

        View* leading = GetChildViewAt(0);
        View* trailing = GetChildViewAt(1);

        if(!leading->IsVisible() && !trailing->IsVisible())
        {
            return;
        }

        if(width()==0 || height()==0)
        {
            // We are most likely minimized - do not touch divider offset.
            return;
        }
        else if(!trailing->IsVisible())
        {
            leading->SetBounds(0, 0, width(), height());
        }
        else if(!leading->IsVisible())
        {
            trailing->SetBounds(0, 0, width(), height());
        }
        else
        {
            if(divider_offset_ < 0)
            {
                divider_offset_ = (GetPrimaryAxisSize() - kDividerSize) / 2;
            }
            else
            {
                divider_offset_ = std::min(divider_offset_,
                    GetPrimaryAxisSize()-kDividerSize);
            }

            if(is_horizontal_)
            {
                leading->SetBounds(0, 0, divider_offset_, height());
                trailing->SetBounds(divider_offset_+kDividerSize, 0,
                    width()-divider_offset_-kDividerSize, height());
            }
            else
            {
                leading->SetBounds(0, 0, width(), divider_offset_);
                trailing->SetBounds(0, divider_offset_+kDividerSize,
                    width(), height()-divider_offset_-kDividerSize);
            }
        }

        SchedulePaint();

        // Invoke super's implementation so that the children are layed out.
        View::Layout();
    }
Пример #5
0
    void GridLayout::Layout(View* host)
    {
        DCHECK(host_ == host);
        // SizeRowsAndColumns sets the size and location of each row/column, but
        // not of the views.
        gfx::Size pref;
        SizeRowsAndColumns(true, host_->width(), host_->height(), &pref);

        // Size each view.
        for(std::vector<ViewState*>::iterator i=view_states_.begin();
            i!=view_states_.end(); ++i)
        {
            ViewState* view_state = *i;
            ColumnSet* column_set = view_state->column_set;
            View* view = (*i)->view;
            DCHECK(view);
            int x = column_set->columns_[view_state->start_col]->Location() +
                left_inset_;
            int width = column_set->GetColumnWidth(view_state->start_col,
                view_state->col_span);
            CalculateSize(view_state->pref_width, view_state->h_align,
                &x, &width);
            int y = rows_[view_state->start_row]->Location() + top_inset_;
            int height = LayoutElement::TotalSize(view_state->start_row,
                view_state->row_span, &rows_);
            if(view_state->v_align==BASELINE && view_state->baseline!=-1)
            {
                y += rows_[view_state->start_row]->max_ascent() - view_state->baseline;
                height = view_state->pref_height;
            }
            else
            {
                CalculateSize(view_state->pref_height, view_state->v_align, &y, &height);
            }
            view->SetBounds(x, y, width, height);
        }
    }