// XTPMarkupPanel.cpp: implementation of the CXTPMarkupPanel class. // // This file is a part of the XTREME TOOLKIT PRO MFC class library. // (c)1998-2012 Codejock Software, All Rights Reserved. // // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN // CONSENT OF CODEJOCK SOFTWARE. // // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A // SINGLE COMPUTER. // // CONTACT INFORMATION: // support@codejock.com // http://www.codejock.com // ///////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "XTPMarkupObject.h" #include "XTPMarkupInputElement.h" #include "XTPMarkupUIElement.h" #include "XTPMarkupFrameworkElement.h" #include "XTPMarkupPanel.h" #include "XTPMarkupDrawingContext.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////////// // CXTPMarkupUIElementCollection CXTPMarkupUIElementCollection::CXTPMarkupUIElementCollection() { m_pElementType = MARKUP_TYPE(CXTPMarkupUIElement); } CXTPMarkupUIElementCollection::~CXTPMarkupUIElementCollection() { } void CXTPMarkupUIElementCollection::OnChanged() { CXTPMarkupUIElement* pPanel = MARKUP_DYNAMICCAST(CXTPMarkupUIElement, GetLogicalParent()); if (pPanel) { pPanel->InvalidateMeasure(); } } ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CXTPMarkupDependencyProperty* CXTPMarkupPanel::m_pBackgroundProperty = NULL; IMPLEMENT_MARKUPCLASS(L"Panel", CXTPMarkupPanel, CXTPMarkupFrameworkElement) void CXTPMarkupPanel::RegisterMarkupClass() { m_pBackgroundProperty = CXTPMarkupDependencyProperty::Register(L"Background", MARKUP_TYPE(CXTPMarkupBrush), MARKUP_TYPE(CXTPMarkupPanel), new CXTPMarkupPropertyMetadata(NULL, CXTPMarkupPropertyMetadata::flagAffectsRender)); } CXTPMarkupPanel::CXTPMarkupPanel() { m_pChildren = new CXTPMarkupUIElementCollection(); m_pChildren->SetLogicalParent(this); } CXTPMarkupPanel::~CXTPMarkupPanel() { if (m_pChildren) { m_pChildren->SetLogicalParent(NULL); m_pChildren->Release(); } } void CXTPMarkupPanel::SetContentObject(CXTPMarkupBuilder* pBuilder, CXTPMarkupObject* pContent) { m_pChildren->SetContentObject(pBuilder, pContent); } BOOL CXTPMarkupPanel::HasContentObject() const { return m_pChildren->HasContentObject(); } CXTPMarkupBrush* CXTPMarkupPanel::GetBackground() const { return MARKUP_STATICCAST(CXTPMarkupBrush, GetValue(m_pBackgroundProperty)); } void CXTPMarkupPanel::SetBackground(CXTPMarkupBrush* brush) { SetValue(m_pBackgroundProperty, brush); } void CXTPMarkupPanel::OnRender(CXTPMarkupDrawingContext* pDC) { CSize szRender = GetRenderSize(); if (szRender.cx <= 0 || szRender.cy <= 0) return; CXTPMarkupBrush* pBackground = GetBackground(); if (pBackground) { pDC->FillRectangle(CRect(0, 0, szRender.cx, szRender.cy), pBackground); } } CXTPMarkupInputElement* CXTPMarkupPanel::InputHitTestOverride(CPoint /*point*/) const { return GetBackground() != NULL ? (CXTPMarkupInputElement*)this : NULL; }