Exemplo n.º 1
0
// virtual
LDraw::SizeD DockPanel::MeasureOverride(LDraw::SizeD availSize)
{
    LDraw::BBoxD layoutRect(0, 0, availSize.Width, availSize.Height);

    double minWidth = 0;
    double minHeight = 0;
    double totalWidth = 0;
    double totalHeight = 0;

    unsigned int ncount = get_InternalChildren()->GetCount();

#if 0
    for (unsigned int i = 0; i < ncount; i++)
    {
        UIElement* pVisual = get_InternalChildren()->GetItem(i);//(*get_rchildList())[i];

        // TODO remove this
        //	pVisual->SetRParent(this);
    }
#endif

    for (unsigned int i = 0; i < ncount; i++)
    {
        UIElement* pVisual = get_InternalChildren()->get_Item(i);//(*get_rchildList())[i];

        ASSERT(pVisual->GetRParent() == this);

        if (pVisual->get_Visibility() != Collapsed)
        {
            DockEnum dock = GetDock(pVisual);

            if (dock == Fill || ((i == ncount-1) && get_LastChildFill()))
            {
                pVisual->Measure(LDraw::SizeD(layoutRect.GetWidth(), layoutRect.GetHeight()));
                totalWidth += pVisual->get_DesiredSize().Width;
                totalHeight += pVisual->get_DesiredSize().Height;
                break;
            }
            else if (dock == Left)
            {
                pVisual->Measure(LDraw::SizeD(0, layoutRect.GetHeight()));
                layoutRect.left += pVisual->get_DesiredSize().Width;
                totalWidth += pVisual->get_DesiredSize().Width;
                //	totalHeight = max(totalHeight, pVisual->m_desiredHeight);
                minHeight = MAX(minHeight, pVisual->get_DesiredSize().Height);
            }
            else if (dock == Top)
            {
                pVisual->Measure(LDraw::SizeD(layoutRect.GetWidth(), 0));
                layoutRect.top += pVisual->get_DesiredSize().Height;
                totalHeight += pVisual->get_DesiredSize().Height;
                //	totalWidth = max(totalWidth, pVisual->m_desiredWidth);
                minWidth = MAX(minWidth, pVisual->get_DesiredSize().Width);
            }
            else if (dock == Right)
            {
                pVisual->Measure(LDraw::SizeD(0, layoutRect.GetHeight()));
                layoutRect.right -= pVisual->get_DesiredSize().Width;
                totalWidth += pVisual->get_DesiredSize().Width;
                //	totalHeight = max(totalHeight, pVisual->m_desiredHeight);
                minHeight = MAX(minHeight, pVisual->get_DesiredSize().Height);
            }
            else if (dock == Bottom)
            {
                pVisual->Measure(LDraw::SizeD(layoutRect.GetWidth(), 0));
                layoutRect.bottom -= pVisual->get_DesiredSize().Height;
                totalHeight += pVisual->get_DesiredSize().Height;
                //	totalWidth = max(totalWidth, pVisual->m_desiredWidth);
                minWidth = MAX(minWidth, pVisual->get_DesiredSize().Width);
            }
            else
                ASSERT(0);

            //	pVisual->SetLayoutOffset(fLeft, fTop);
            //	pVisual->Arrange(LDraw::SizeF(pVisual->m_computedWidth, pVisual->m_computedHeight));

            /*
            if (dock == Fill ||

            	layoutRect.GetWidth() <= 0 ||
            	layoutRect.GetHeight() <= 0)
            {
            	break;
            }
            */
        }
    }

    return LDraw::SizeD(MAX(minWidth, totalWidth), MAX(minHeight, totalHeight));
}
Exemplo n.º 2
0
void TreeItem::OnArrange(LDraw::SizeD finalSize)
{
	m_ExpandButton->Arrange(LDraw::RectD(LDraw::PointD(0, 0), m_ExpandButton->get_DesiredSize()/*LDraw::SizeD(1, 14)*/));
	//m_ExpandButton->SetLayoutOffset(0, 0);
	//	pCell->m_computedLeft = x;
	double height = m_ExpandButton->m_computedSize.Height;
	double x = m_ExpandButton->m_computedSize.Width;

	if (m_Span)
	{
		m_Span->Arrange(LDraw::RectD(x, 0, finalSize.Width-x, height/*m_Span->get_DesiredSize().Height*/));
		//m_Span->SetLayoutOffset(x, 0);
		m_Span->m_computedLeft = x;
		height = MAX(height, m_Span->get_ActualSize().Height);
	}

	if (m_cells.GetSize())
	{
		double totalWidth = m_ownerCtl->get_ActualSize().Width;
		{
			ColumnHeader* pColumn = m_ownerCtl->get_ColumnHeaderList()->m_columns[0];
		//	if (pColumn->get_Visibility() != Collapsed)
			totalWidth -= pColumn->get_ActualSize().Width;
		}

		for (int i = 0; i < m_cells.GetSize(); i++)
		{
			ColumnHeader* pColumn = m_ownerCtl->get_ColumnHeaderList()->m_columns[i];
			UIElement* pCell = m_cells[i];

			double columnWidth;

			if (pColumn->get_Visibility() != Collapsed)
			{
				if (i == 0)
					columnWidth = finalSize.Width - totalWidth - 16;
				else
					columnWidth = pColumn->get_ActualSize().Width;
			}
			else
				columnWidth = 0;

			pCell->Arrange(LDraw::RectD(x, 0, columnWidth/*pCell->m_availSize.Width*/, pCell->get_DesiredSize().Height));
			//pCell->SetLayoutOffset(x, 0);
			pCell->m_computedLeft = x;
			if (pColumn->get_Visibility() != Collapsed)
			{
				height = MAX(height, pCell->get_ActualSize().Height);
			}

			x += columnWidth;
		}
	}

#if 0
	m_Button->m_expandedBBox.Width = finalSize.Width;
	m_Button->m_expandedBBox.Height = finalSize.Height;
#endif

//	m_VisualTree->Arrange(finalSize);
	//Control::OnArrange(finalSize);

	if (m_Children)
	{
		//double x, y;

		if (m_Children->get_Visibility() != Collapsed)
		{
			//m_Children->SetLayoutOffset(16, height);
		//	x = 16;
		//	y = height;
			//m_Children->m_transformMatrix *= gmMatrix3::translate(16, 0);

			m_Children->Arrange(LDraw::RectD(16, height, finalSize.Width-16, m_Children->get_DesiredSize().Height));
		}
	}
}
Exemplo n.º 3
0
// virtual
LDraw::SizeD DockPanel::ArrangeOverride(LDraw::SizeD finalSize)
{
    LDraw::BBoxD layoutRect(0, 0, finalSize.Width, finalSize.Height);

    unsigned int ncount = get_InternalChildren()->GetCount();//get_rchildList()->get_Size();
    for (unsigned int i = 0; i < ncount; i++)
    {
        UIElement* pVisual = get_InternalChildren()->get_Item(i);//(*get_rchildList())[i];

        if (pVisual->get_Visibility() != Collapsed)
        {
            //	long dockValue;
            DockEnum dock = GetDock(pVisual);

            ASSERT(pVisual->get_DesiredSize().Width >= 0 && pVisual->get_DesiredSize().Height >= 0);

            //	double fLeft;
            //	double fTop;

            if (dock == Fill || ((i == ncount-1) && get_LastChildFill()))
            {
                pVisual->Arrange(layoutRect);//LDraw::RectD(layoutRect.GetWidth(), layoutRect.GetHeight()));
                //	fLeft = layoutRect.left;
                //	fTop = layoutRect.top;
            }
            else if (dock == Left)
            {
                pVisual->Arrange(LDraw::RectD(layoutRect.left, layoutRect.top, pVisual->get_DesiredSize().Width, layoutRect.GetHeight()));
                //	fLeft = layoutRect.left;
                //	fTop = layoutRect.top;
                layoutRect.left += pVisual->get_ActualSize().Width;
            }
            else if (dock == Top)
            {
                pVisual->Arrange(LDraw::RectD(layoutRect.left, layoutRect.top, layoutRect.GetWidth(), pVisual->get_DesiredSize().Height));
                //	fLeft = layoutRect.left;
                //	fTop = layoutRect.top;
                layoutRect.top += pVisual->get_ActualSize().Height;
            }
            else if (dock == Right)
            {
                pVisual->Arrange(LDraw::RectD(layoutRect.right - pVisual->get_DesiredSize().Width, layoutRect.top, pVisual->get_DesiredSize().Width, layoutRect.GetHeight()));
                //	fLeft = layoutRect.right - pVisual->get_ActualSize().Width;
                //	fTop = layoutRect.top;
                layoutRect.right -= pVisual->get_ActualSize().Width;
            }
            else if (dock == Bottom)
            {
                pVisual->Arrange(LDraw::RectD(layoutRect.left, layoutRect.bottom - pVisual->get_DesiredSize().Height, layoutRect.GetWidth(), pVisual->get_DesiredSize().Height));
                //	fLeft = layoutRect.left;
                //	fTop = layoutRect.bottom - pVisual->get_ActualSize().Height;
                layoutRect.bottom -= pVisual->get_ActualSize().Height;
            }
            else
                ASSERT(0);

            //	pVisual->SetLayoutOffset(fLeft, fTop);

            if (dock == Fill ||

                    layoutRect.GetWidth() <= 0 ||
                    layoutRect.GetHeight() <= 0)
            {
                break;
            }
        }
    }

    return finalSize;
}
Exemplo n.º 4
0
LDraw::SizeD TreeItem::OnMeasure(LDraw::SizeD availSize)
{
	double height = 0;
	double width = 0;

	if (true)//m_Button->get_Visibility() != Collapsed)
	{
	//	m_Button->Measure(LDraw::SizeD(availSize.Width, 0));
	//	height = MAX(height, m_Button->m_desiredSize.Height);

		m_ExpandButton->Measure(LDraw::SizeD(0, 0));
		height = m_ExpandButton->get_DesiredSize().Height;
/*
		double totalWidth = m_ownerCtl->get_ActualSize().Width;
		{
			ColumnHeader* pColumn = m_ownerCtl->get_ColumnHeaderList()->m_columns[0];
		//	if (pColumn->get_Visibility() != Collapsed)
			totalWidth -= pColumn->get_ActualSize().Width;
		}
*/
		if (m_Span)
		{
			m_Span->Measure(LDraw::SizeD(0, 0));	// TODO??
		}
		for (int i = 0; i < m_cells.GetSize(); i++)
		{
			ColumnHeader* pColumn = m_ownerCtl->get_ColumnHeaderList()->m_columns[i];
			UIElement* pCell = m_cells[i];

			double columnWidth;
			if (pColumn->get_Visibility() != Collapsed)
			{
				/*
				if (i == 0)
					columnWidth = availSize.Width - totalWidth - 16;
				else
				*/
					columnWidth = pColumn->get_ActualSize().Width;
			}
			else
			{
				columnWidth = 0;
			}

			pCell->Measure(LDraw::SizeD(0/*columnWidth-16*/, 0));
			if (pColumn->get_Visibility() != Collapsed)
			{
				height = MAX(height, pCell->get_DesiredSize().Height);
			}
		}

		width = MAX(width, m_ExpandButton->get_DesiredSize().Width);
	}

	if (m_Children)
	{
		if (m_Children->get_Visibility() != Collapsed)
		{
			m_Children->Measure(LDraw::SizeD(availSize.Width-16, availSize.Height - height));
			height += m_Children->get_DesiredSize().Height;
			width = MAX(width, m_Children->get_DesiredSize().Width+16);
		}
	}

	return LDraw::SizeD(width, height);
}