void CFWL_Form::Layout() { m_rtRelative = GetRelativeRect(); #if _FX_OS_ == _FX_OS_MACOSX_ IFWL_ThemeProvider* theme = GetAvailableTheme(); m_fCXBorder = theme ? theme->GetCXBorderSize() : 0.0f; m_fCYBorder = theme ? theme->GetCYBorderSize() : 0.0f; #endif }
FWL_ERR CFWL_CheckBoxImp::DrawWidget(CFX_Graphics* pGraphics, const CFX_Matrix* pMatrix) { if (!pGraphics) return FWL_ERR_Indefinite; if (!m_pProperties->m_pThemeProvider) return FWL_ERR_Indefinite; IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; if (HasBorder()) { DrawBorder(pGraphics, FWL_PART_CKB_Border, m_pProperties->m_pThemeProvider, pMatrix); } if (HasEdge()) { DrawEdge(pGraphics, FWL_PART_CKB_Edge, pTheme, pMatrix); } int32_t dwStates = GetPartStates(); { CFWL_ThemeBackground param; param.m_pWidget = m_pInterface; param.m_iPart = FWL_PART_CKB_Background; param.m_dwStates = dwStates; param.m_pGraphics = pGraphics; if (pMatrix) { param.m_matrix.Concat(*pMatrix); } param.m_rtPart = m_rtClient; if (m_pProperties->m_dwStates & FWL_WGTSTATE_Focused) { param.m_pData = &m_rtFocus; } pTheme->DrawBackground(¶m); param.m_iPart = FWL_PART_CKB_CheckBox; param.m_rtPart = m_rtBox; pTheme->DrawBackground(¶m); } if (!m_pProperties->m_pDataProvider) return FWL_ERR_Indefinite; { CFX_WideString wsCaption; m_pProperties->m_pDataProvider->GetCaption(m_pInterface, wsCaption); int32_t iLen = wsCaption.GetLength(); if (iLen <= 0) return FWL_ERR_Indefinite; CFWL_ThemeText textParam; textParam.m_pWidget = m_pInterface; textParam.m_iPart = FWL_PART_CKB_Caption; textParam.m_dwStates = dwStates; textParam.m_pGraphics = pGraphics; if (pMatrix) { textParam.m_matrix.Concat(*pMatrix); } textParam.m_rtPart = m_rtCaption; textParam.m_wsText = wsCaption; textParam.m_dwTTOStyles = m_dwTTOStyles; textParam.m_iTTOAlign = m_iTTOAlign; pTheme->DrawText(&textParam); } return FWL_ERR_Succeeded; }
void* IFWL_Widget::GetThemeCapacity(CFWL_WidgetCapacity dwCapacity) { IFWL_ThemeProvider* pTheme = GetAvailableTheme(); if (!pTheme) return nullptr; CFWL_ThemePart part; part.m_pWidget = this; return pTheme->GetCapacity(&part, dwCapacity); }
static void FWL_SetChildThemeID(IFWL_Widget* pParent, uint32_t dwThemeID) { CFWL_WidgetMgr* pWidgetMgr = CFWL_WidgetMgr::GetInstance(); IFWL_Widget* pChild = pWidgetMgr->GetFirstChildWidget(pParent); while (pChild) { IFWL_ThemeProvider* pTheme = pChild->GetThemeProvider(); if (pTheme) { pTheme->SetThemeID(pChild, dwThemeID, FALSE); } FWL_SetChildThemeID(pChild, dwThemeID); pChild = pWidgetMgr->GetNextSiblingWidget(pChild); } }
static void FWL_SetChildThemeID(IFWL_Widget* pParent, FX_DWORD dwThemeID) { IFWL_WidgetMgr* pWidgetMgr = FWL_GetWidgetMgr(); IFWL_Widget* pChild = pWidgetMgr->GetWidget(pParent, FWL_WGTRELATION_FirstChild); while (pChild) { IFWL_ThemeProvider* pTheme = pChild->GetThemeProvider(); if (pTheme) { pTheme->SetThemeID(pChild, dwThemeID, FALSE); } FWL_SetChildThemeID(pChild, dwThemeID); pChild = pWidgetMgr->GetWidget(pChild, FWL_WGTRELATION_NextSibling); } }
void CFWL_ScrollBarImp::Layout() { IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; CFWL_ThemePart part; part.m_pWidget = m_pInterface; m_fMinThumb = *static_cast<FX_FLOAT*>( pTheme->GetCapacity(&part, FWL_CAPACITY_SCB_Size)); m_bCustomLayout = pTheme->IsCustomizedLayout(m_pInterface); GetClientRect(m_rtClient); CalcButtonLen(); CalcMinButtonRect(m_rtMinBtn); CalcMaxButtonRect(m_rtMaxBtn); CalcThumbButtonRect(m_rtThumb); CalcMinTrackRect(m_rtMinTrack); CalcMaxTrackRect(m_rtMaxTrack); }
void CFWL_ScrollBarImp::CalcMinButtonRect(CFX_RectF& rect) { if (m_bCustomLayout) { IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; CFWL_ThemePart pPart; pPart.m_rtPart = m_rtMinBtn; pPart.m_pWidget = m_pInterface; pPart.m_iPart = FWL_PART_SCB_ForeArrow; pPart.m_dwStates = (m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled) ? FWL_PARTSTATE_SCB_Disabled : m_iMinButtonState; pTheme->GetPartRect(&pPart, rect); } else { rect.left = m_rtClient.left; rect.top = m_rtClient.top; rect.width = IsVertical() ? m_rtClient.width : m_fButtonLen; rect.height = IsVertical() ? m_fButtonLen : m_rtClient.height; } }
FWL_ERR CFWL_ToolTipImp::GetClientRect(CFX_RectF& rect) { FX_FLOAT x = 0; FX_FLOAT y = 0; FX_FLOAT t = 0; IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; if (pTheme) { CFWL_ThemePart part; part.m_pWidget = m_pInterface; x = *static_cast<FX_FLOAT*>( pTheme->GetCapacity(&part, FWL_WGTCAPACITY_CXBorder)); y = *static_cast<FX_FLOAT*>( pTheme->GetCapacity(&part, FWL_WGTCAPACITY_CYBorder)); } rect = m_pProperties->m_rtWidget; rect.Offset(-rect.left, -rect.top); rect.Deflate(x, t, x, y); return FWL_ERR_Succeeded; }
void CFWL_Form::DrawWidget(CXFA_Graphics* pGraphics, const CFX_Matrix& matrix) { if (!pGraphics) return; IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider.Get(); if (!pTheme) return; DrawBackground(pGraphics, pTheme); #if _FX_OS_ != _FX_OS_MACOSX_ CFWL_ThemeBackground param; param.m_pWidget = this; param.m_dwStates = CFWL_PartState_Normal; param.m_pGraphics = pGraphics; param.m_rtPart = m_rtRelative; param.m_matrix.Concat(matrix); if (m_pProperties->m_dwStyles & FWL_WGTSTYLE_Border) { param.m_iPart = CFWL_Part::Border; pTheme->DrawBackground(¶m); } #endif }