void IFWL_Widget::TransformTo(IFWL_Widget* pWidget, FX_FLOAT& fx, FX_FLOAT& fy) { if (m_pWidgetMgr->IsFormDisabled()) { CFX_SizeF szOffset; if (IsParent(pWidget)) { szOffset = GetOffsetFromParent(pWidget); } else { szOffset = pWidget->GetOffsetFromParent(this); szOffset.x = -szOffset.x; szOffset.y = -szOffset.y; } fx += szOffset.x; fy += szOffset.y; return; } CFX_RectF r; CFX_Matrix m; IFWL_Widget* parent = GetParent(); if (parent) { GetWidgetRect(r); fx += r.left; fy += r.top; GetMatrix(m, true); m.TransformPoint(fx, fy); } IFWL_Widget* form1 = m_pWidgetMgr->GetSystemFormWidget(this); if (!form1) return; if (!pWidget) { form1->GetWidgetRect(r); fx += r.left; fy += r.top; return; } IFWL_Widget* form2 = m_pWidgetMgr->GetSystemFormWidget(pWidget); if (!form2) return; if (form1 != form2) { form1->GetWidgetRect(r); fx += r.left; fy += r.top; form2->GetWidgetRect(r); fx -= r.left; fy -= r.top; } parent = pWidget->GetParent(); if (parent) { pWidget->GetMatrix(m, true); CFX_Matrix m1; m1.SetIdentity(); m1.SetReverse(m); m1.TransformPoint(fx, fy); pWidget->GetWidgetRect(r); fx -= r.left; fy -= r.top; } }
void CFWL_CaretImp::DrawCaretBK(CFX_Graphics* pGraphics, IFWL_ThemeProvider* pTheme, const CFX_Matrix* pMatrix) { CFX_RectF rect; GetWidgetRect(rect); rect.Set(0, 0, rect.width, rect.height); CFWL_ThemeBackground param; param.m_pWidget = m_pInterface; param.m_pGraphics = pGraphics; param.m_rtPart = rect; if (m_bSetColor) param.m_pData = &m_crFill; if (!(m_pProperties->m_dwStates & FWL_STATE_CAT_HightLight)) return; param.m_iPart = CFWL_Part::Background; param.m_dwStates = CFWL_PartState_HightLight; if (pMatrix) param.m_matrix.Concat(*pMatrix); pTheme->DrawBackground(¶m); }