7#include "xfa/fxfa/cxfa_fwltheme.h"
9#include "core/fxcrt/fx_codepage.h"
10#include "xfa/fde/cfde_textout.h"
11#include "xfa/fgas/font/cfgas_fontmgr.h"
12#include "xfa/fgas/font/cfgas_gefont.h"
13#include "xfa/fgas/font/cfgas_gemodule.h"
14#include "xfa/fgas/graphics/cfgas_gecolor.h"
15#include "xfa/fwl/cfwl_barcode.h"
16#include "xfa/fwl/cfwl_caret.h"
17#include "xfa/fwl/cfwl_checkbox.h"
18#include "xfa/fwl/cfwl_combobox.h"
19#include "xfa/fwl/cfwl_datetimepicker.h"
20#include "xfa/fwl/cfwl_edit.h"
21#include "xfa/fwl/cfwl_listbox.h"
22#include "xfa/fwl/cfwl_monthcalendar.h"
23#include "xfa/fwl/cfwl_picturebox.h"
24#include "xfa/fwl/cfwl_pushbutton.h"
25#include "xfa/fwl/cfwl_scrollbar.h"
26#include "xfa/fwl/cfwl_themebackground.h"
27#include "xfa/fwl/cfwl_themetext.h"
28#include "xfa/fwl/theme/cfwl_widgettp.h"
29#include "xfa/fxfa/cxfa_ffapp.h"
30#include "xfa/fxfa/cxfa_ffwidget.h"
31#include "xfa/fxfa/cxfa_fontmgr.h"
32#include "xfa/fxfa/parser/cxfa_para.h"
36constexpr const wchar_t* kFWLThemeCalFonts[] = {
42const float kLineHeight = 12.0f;
52CXFA_FWLTheme::CXFA_FWLTheme(
cppgc::Heap* pHeap, CXFA_FFApp* pApp)
54 m_pTextOut(std::make_unique<CFDE_TextOut>()),
63void CXFA_FWLTheme::Trace(
cppgc::Visitor* visitor)
const {
64 IFWL_ThemeProvider::Trace(visitor);
65 visitor->Trace(m_pApp);
72 for (
const wchar_t* font : kFWLThemeCalFonts) {
73 m_pCalendarFont = m_pApp->GetXFAFontMgr()->GetFont(doc, font, 0);
78 m_pCalendarFont = CFGAS_GEModule::Get()->GetFontMgr()->GetFontByCodePage(
79 FX_CodePage::kMSWin_WesternEuropean, 0,
nullptr);
80 return !!m_pCalendarFont;
87void CXFA_FWLTheme::
DrawText(
const CFWL_ThemeText& pParams) {
88 if (pParams.m_wsText.IsEmpty())
96 m_pTextOut->SetStyles(pParams.m_dwTTOStyles);
97 m_pTextOut->SetAlignment(pParams.m_iTTOAlign);
98 m_pTextOut->SetFont(m_pCalendarFont);
103 (pParams.m_dwStates &
106 m_pTextOut->SetTextColor(0xFF888888);
108 if (pParams.GetPart() == CFWL_ThemePart::Part::kCaption)
109 m_pTextOut->SetTextColor(ArgbEncode(0xff, 0, 153, 255));
118 m_pTextOut->SetMatrix(mtPart);
119 m_pTextOut->DrawLogicText(pRenderDevice, pParams.m_wsText,
130 m_pTextOut->SetStyles(pParams.m_dwTTOStyles);
131 m_pTextOut->SetAlignment(pParams.m_iTTOAlign);
132 m_pTextOut->SetFont(pNode->GetFGASFont(pWidget->GetDoc()));
133 m_pTextOut->SetFontSize(pNode->GetFontSize());
134 m_pTextOut->SetTextColor(pNode->GetTextColor());
140 m_pTextOut->SetMatrix(mtPart);
141 m_pTextOut->DrawLogicText(pRenderDevice, pParams.m_wsText,
195 m_pFWLFont = CFGAS_GEFont::LoadFont(L"Helvetica", 0, FX_CodePage::kDefANSI);
219 CFX_SizeF sizeAboveBelow;
227 return sizeAboveBelow;
237 m_pTextOut->SetFont(m_pCalendarFont);
240 m_pTextOut->SetAlignment(pParams.m_iTTOAlign);
241 m_pTextOut->SetStyles(pParams.m_dwTTOStyles);
242 m_pTextOut->CalcLogicSize(pParams.m_wsText.AsStringView(), pRect);
247 m_pTextOut->SetFont(pNode->GetFGASFont(pWidget->GetDoc()));
248 m_pTextOut->SetFontSize(pNode->GetFontSize());
249 m_pTextOut->SetTextColor(pNode->GetTextColor());
250 m_pTextOut->SetAlignment(pParams.m_iTTOAlign);
251 m_pTextOut->SetStyles(pParams.m_dwTTOStyles);
252 m_pTextOut->CalcLogicSize(pParams.m_wsText.AsStringView(), pRect);
#define FWLTHEME_CAPACITY_TextColor
#define FWLTHEME_CAPACITY_FontSize
CFX_RenderDevice * GetRenderDevice()
const CFX_Matrix * GetMatrix() const
CFWL_Widget * GetWidget() const
CFGAS_GEGraphics * GetGraphics() const
void Concat(const CFX_Matrix &right)
constexpr CFX_RectF()=default
CXFA_ContentLayoutItem * GetPrev() const
CXFA_ContentLayoutItem * GetNext() const
RetainPtr< CFGAS_GEFont > GetFont(const CFWL_ThemePart &pThemePart) override
float GetLineHeight(const CFWL_ThemePart &pThemePart) const override
RetainPtr< CFGAS_GEFont > GetFWLFont() override
~CXFA_FWLTheme() override
float GetScrollBarWidth() const override
FX_COLORREF GetTextColor(const CFWL_ThemePart &pThemePart) const override
float GetCYBorderSize() const override
void CalcTextRect(const CFWL_ThemeText &pParams, CFX_RectF *pRect) override
CFX_RectF GetUIMargin(const CFWL_ThemePart &pThemePart) const override
void DrawText(const CFWL_ThemeText &pParams) override
void DrawBackground(const CFWL_ThemeBackground &pParams) override
float GetCXBorderSize() const override
float GetFontSize(const CFWL_ThemePart &pThemePart) const override
CFX_SizeF GetSpaceAboveBelow(const CFWL_ThemePart &pThemePart) const override
bool LoadCalendarFont(CXFA_FFDoc *doc)
FX_ARGB GetTextColor() const
float GetFontSize() const
CXFA_Para * GetParaIfExists() const
float GetLineHeight() const
RetainPtr< CFGAS_GEFont > GetFGASFont(CXFA_FFDoc *doc)
CFWL_WidgetTP * GetTheme(const CFWL_Widget *pWidget) const
IFWL_ThemeProvider(cppgc::Heap *pHeap)