summaryrefslogtreecommitdiff
path: root/xfa
diff options
context:
space:
mode:
Diffstat (limited to 'xfa')
-rw-r--r--xfa/fwl/core/ifwl_barcode.cpp76
-rw-r--r--xfa/fwl/core/ifwl_barcode.h2
-rw-r--r--xfa/fwl/core/ifwl_caret.cpp12
-rw-r--r--xfa/fwl/core/ifwl_checkbox.cpp290
-rw-r--r--xfa/fwl/core/ifwl_checkbox.h8
5 files changed, 189 insertions, 199 deletions
diff --git a/xfa/fwl/core/ifwl_barcode.cpp b/xfa/fwl/core/ifwl_barcode.cpp
index c918b3bc8c..d055a4bcd1 100644
--- a/xfa/fwl/core/ifwl_barcode.cpp
+++ b/xfa/fwl/core/ifwl_barcode.cpp
@@ -26,9 +26,9 @@ FWL_Type IFWL_Barcode::GetClassID() const {
}
void IFWL_Barcode::Update() {
- if (IsLocked()) {
+ if (IsLocked())
return;
- }
+
IFWL_Edit::Update();
GenerateBarcodeImageCache();
}
@@ -41,15 +41,15 @@ void IFWL_Barcode::DrawWidget(CFX_Graphics* pGraphics,
return;
if ((m_pProperties->m_dwStates & FWL_WGTSTATE_Focused) == 0) {
GenerateBarcodeImageCache();
- if (!m_pBarcodeEngine || (m_dwStatus & XFA_BCS_EncodeSuccess) == 0) {
+ if (!m_pBarcodeEngine || (m_dwStatus & XFA_BCS_EncodeSuccess) == 0)
return;
- }
+
CFX_Matrix mt;
mt.e = GetRTClient().left;
mt.f = GetRTClient().top;
- if (pMatrix) {
+ if (pMatrix)
mt.Concat(*pMatrix);
- }
+
int32_t errorCode = 0;
m_pBarcodeEngine->RenderDevice(pGraphics->GetRenderDevice(), pMatrix,
errorCode);
@@ -57,9 +57,11 @@ void IFWL_Barcode::DrawWidget(CFX_Graphics* pGraphics,
}
IFWL_Edit::DrawWidget(pGraphics, pMatrix);
}
+
void IFWL_Barcode::GenerateBarcodeImageCache() {
if ((m_dwStatus & XFA_BCS_NeedUpdate) == 0)
return;
+
m_dwStatus = 0;
CreateBarcodeEngine();
IFWL_BarcodeDP* pData =
@@ -68,70 +70,60 @@ void IFWL_Barcode::GenerateBarcodeImageCache() {
return;
if (!m_pBarcodeEngine)
return;
+
CFX_WideString wsText;
GetText(wsText);
CFWL_ThemePart part;
part.m_pWidget = this;
+
IFWL_ThemeProvider* pTheme = GetAvailableTheme();
CFGAS_GEFont* pFont = static_cast<CFGAS_GEFont*>(
pTheme->GetCapacity(&part, CFWL_WidgetCapacity::Font));
CFX_Font* pCXFont = pFont ? pFont->GetDevFont() : nullptr;
- if (pCXFont) {
+ if (pCXFont)
m_pBarcodeEngine->SetFont(pCXFont);
- }
+
FX_FLOAT* pFontSize = static_cast<FX_FLOAT*>(
pTheme->GetCapacity(&part, CFWL_WidgetCapacity::FontSize));
- if (pFontSize) {
+ if (pFontSize)
m_pBarcodeEngine->SetFontSize(*pFontSize);
- }
+
FX_ARGB* pFontColor = static_cast<FX_ARGB*>(
pTheme->GetCapacity(&part, CFWL_WidgetCapacity::TextColor));
- if (pFontColor) {
+ if (pFontColor)
m_pBarcodeEngine->SetFontColor(*pFontColor);
- }
+
m_pBarcodeEngine->SetHeight(int32_t(GetRTClient().height));
m_pBarcodeEngine->SetWidth(int32_t(GetRTClient().width));
uint32_t dwAttributeMask = pData->GetBarcodeAttributeMask();
- if (dwAttributeMask & FWL_BCDATTRIBUTE_CHARENCODING) {
+ if (dwAttributeMask & FWL_BCDATTRIBUTE_CHARENCODING)
m_pBarcodeEngine->SetCharEncoding(pData->GetCharEncoding());
- }
- if (dwAttributeMask & FWL_BCDATTRIBUTE_MODULEHEIGHT) {
+ if (dwAttributeMask & FWL_BCDATTRIBUTE_MODULEHEIGHT)
m_pBarcodeEngine->SetModuleHeight(pData->GetModuleHeight());
- }
- if (dwAttributeMask & FWL_BCDATTRIBUTE_MODULEWIDTH) {
+ if (dwAttributeMask & FWL_BCDATTRIBUTE_MODULEWIDTH)
m_pBarcodeEngine->SetModuleWidth(pData->GetModuleWidth());
- }
- if (dwAttributeMask & FWL_BCDATTRIBUTE_DATALENGTH) {
+ if (dwAttributeMask & FWL_BCDATTRIBUTE_DATALENGTH)
m_pBarcodeEngine->SetDataLength(pData->GetDataLength());
- }
- if (dwAttributeMask & FWL_BCDATTRIBUTE_CALCHECKSUM) {
+ if (dwAttributeMask & FWL_BCDATTRIBUTE_CALCHECKSUM)
m_pBarcodeEngine->SetCalChecksum(pData->GetCalChecksum());
- }
- if (dwAttributeMask & FWL_BCDATTRIBUTE_PRINTCHECKSUM) {
+ if (dwAttributeMask & FWL_BCDATTRIBUTE_PRINTCHECKSUM)
m_pBarcodeEngine->SetPrintChecksum(pData->GetPrintChecksum());
- }
- if (dwAttributeMask & FWL_BCDATTRIBUTE_TEXTLOCATION) {
+ if (dwAttributeMask & FWL_BCDATTRIBUTE_TEXTLOCATION)
m_pBarcodeEngine->SetTextLocation(pData->GetTextLocation());
- }
- if (dwAttributeMask & FWL_BCDATTRIBUTE_WIDENARROWRATIO) {
+ if (dwAttributeMask & FWL_BCDATTRIBUTE_WIDENARROWRATIO)
m_pBarcodeEngine->SetWideNarrowRatio(pData->GetWideNarrowRatio());
- }
- if (dwAttributeMask & FWL_BCDATTRIBUTE_STARTCHAR) {
+ if (dwAttributeMask & FWL_BCDATTRIBUTE_STARTCHAR)
m_pBarcodeEngine->SetStartChar(pData->GetStartChar());
- }
- if (dwAttributeMask & FWL_BCDATTRIBUTE_ENDCHAR) {
+ if (dwAttributeMask & FWL_BCDATTRIBUTE_ENDCHAR)
m_pBarcodeEngine->SetEndChar(pData->GetEndChar());
- }
- if (dwAttributeMask & FWL_BCDATTRIBUTE_VERSION) {
+ if (dwAttributeMask & FWL_BCDATTRIBUTE_VERSION)
m_pBarcodeEngine->SetVersion(pData->GetVersion());
- }
- if (dwAttributeMask & FWL_BCDATTRIBUTE_ECLEVEL) {
+ if (dwAttributeMask & FWL_BCDATTRIBUTE_ECLEVEL)
m_pBarcodeEngine->SetErrorCorrectionLevel(pData->GetErrorCorrectionLevel());
- }
- if (dwAttributeMask & FWL_BCDATTRIBUTE_TRUNCATED) {
+ if (dwAttributeMask & FWL_BCDATTRIBUTE_TRUNCATED)
m_pBarcodeEngine->SetTruncated(pData->GetTruncated());
- }
+
int32_t errorCode = 0;
m_dwStatus = m_pBarcodeEngine->Encode(wsText.AsStringC(), true, errorCode)
? XFA_BCS_EncodeSuccess
@@ -155,15 +147,17 @@ void IFWL_Barcode::SetType(BC_TYPE type) {
m_type = type;
m_dwStatus = XFA_BCS_NeedUpdate;
}
+
void IFWL_Barcode::SetText(const CFX_WideString& wsText) {
m_pBarcodeEngine.reset();
m_dwStatus = XFA_BCS_NeedUpdate;
IFWL_Edit::SetText(wsText);
}
-bool IFWL_Barcode::IsProtectedType() {
- if (!m_pBarcodeEngine) {
+
+bool IFWL_Barcode::IsProtectedType() const {
+ if (!m_pBarcodeEngine)
return true;
- }
+
BC_TYPE tEngineType = m_pBarcodeEngine->GetType();
if (tEngineType == BC_QR_CODE || tEngineType == BC_PDF417 ||
tEngineType == BC_DATAMATRIX) {
diff --git a/xfa/fwl/core/ifwl_barcode.h b/xfa/fwl/core/ifwl_barcode.h
index d69cd23fcb..09ec1f3e7d 100644
--- a/xfa/fwl/core/ifwl_barcode.h
+++ b/xfa/fwl/core/ifwl_barcode.h
@@ -73,7 +73,7 @@ class IFWL_Barcode : public IFWL_Edit {
void SetText(const CFX_WideString& wsText) override;
void SetType(BC_TYPE type);
- bool IsProtectedType();
+ bool IsProtectedType() const;
private:
void GenerateBarcodeImageCache();
diff --git a/xfa/fwl/core/ifwl_caret.cpp b/xfa/fwl/core/ifwl_caret.cpp
index f333fdd94c..0b84cdf53b 100644
--- a/xfa/fwl/core/ifwl_caret.cpp
+++ b/xfa/fwl/core/ifwl_caret.cpp
@@ -65,21 +65,21 @@ void IFWL_Caret::ShowCaret(bool bFlag) {
void IFWL_Caret::DrawCaretBK(CFX_Graphics* pGraphics,
IFWL_ThemeProvider* pTheme,
const CFX_Matrix* pMatrix) {
+ if (!(m_pProperties->m_dwStates & FWL_STATE_CAT_HightLight))
+ return;
+
CFX_RectF rect;
GetWidgetRect(rect);
rect.Set(0, 0, rect.width, rect.height);
+
CFWL_ThemeBackground param;
param.m_pWidget = this;
param.m_pGraphics = pGraphics;
param.m_rtPart = rect;
- 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(&param);
}
@@ -94,8 +94,8 @@ IFWL_Caret::Timer::Timer(IFWL_Caret* pCaret) : IFWL_Timer(pCaret) {}
void IFWL_Caret::Timer::Run(IFWL_TimerInfo* pTimerInfo) {
IFWL_Caret* pCaret = static_cast<IFWL_Caret*>(m_pWidget);
- bool toggle = !(pCaret->GetStates() & FWL_STATE_CAT_HightLight);
- pCaret->SetStates(FWL_STATE_CAT_HightLight, toggle);
+ pCaret->SetStates(FWL_STATE_CAT_HightLight,
+ !(pCaret->GetStates() & FWL_STATE_CAT_HightLight));
CFX_RectF rt;
pCaret->GetWidgetRect(rt);
diff --git a/xfa/fwl/core/ifwl_checkbox.cpp b/xfa/fwl/core/ifwl_checkbox.cpp
index e309a35cd0..6c548014f5 100644
--- a/xfa/fwl/core/ifwl_checkbox.cpp
+++ b/xfa/fwl/core/ifwl_checkbox.cpp
@@ -44,43 +44,43 @@ FWL_Type IFWL_CheckBox::GetClassID() const {
}
void IFWL_CheckBox::GetWidgetRect(CFX_RectF& rect, bool bAutoSize) {
- if (bAutoSize) {
- rect.Set(0, 0, 0, 0);
- if (!m_pProperties->m_pThemeProvider)
- m_pProperties->m_pThemeProvider = GetAvailableTheme();
- if (!m_pProperties->m_pThemeProvider)
- return;
- if (!m_pProperties->m_pDataProvider)
- return;
- CFX_WideString wsCaption;
- m_pProperties->m_pDataProvider->GetCaption(this, wsCaption);
- if (wsCaption.GetLength() > 0) {
- CFX_SizeF sz = CalcTextSize(
- wsCaption, m_pProperties->m_pThemeProvider,
- !!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_MultiLine));
- rect.Set(0, 0, sz.x, sz.y);
- }
- rect.Inflate(kCaptionMargin, kCaptionMargin);
- IFWL_CheckBoxDP* pData =
- static_cast<IFWL_CheckBoxDP*>(m_pProperties->m_pDataProvider);
- FX_FLOAT fCheckBox = pData->GetBoxSize(this);
- rect.width += fCheckBox;
- if (rect.height < fCheckBox) {
- rect.height = fCheckBox;
- }
- IFWL_Widget::GetWidgetRect(rect, true);
- } else {
+ if (!bAutoSize) {
rect = m_pProperties->m_rtWidget;
+ return;
+ }
+
+ rect.Set(0, 0, 0, 0);
+ if (!m_pProperties->m_pThemeProvider)
+ m_pProperties->m_pThemeProvider = GetAvailableTheme();
+ if (!m_pProperties->m_pThemeProvider)
+ return;
+ if (!m_pProperties->m_pDataProvider)
+ return;
+
+ CFX_WideString wsCaption;
+ m_pProperties->m_pDataProvider->GetCaption(this, wsCaption);
+ if (wsCaption.GetLength() > 0) {
+ CFX_SizeF sz = CalcTextSize(
+ wsCaption, m_pProperties->m_pThemeProvider,
+ !!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_MultiLine));
+ rect.Set(0, 0, sz.x, sz.y);
}
+ rect.Inflate(kCaptionMargin, kCaptionMargin);
+
+ IFWL_CheckBoxDP* pData =
+ static_cast<IFWL_CheckBoxDP*>(m_pProperties->m_pDataProvider);
+ FX_FLOAT fCheckBox = pData->GetBoxSize(this);
+ rect.width += fCheckBox;
+ rect.height = std::max(rect.height, fCheckBox);
+ IFWL_Widget::GetWidgetRect(rect, true);
}
void IFWL_CheckBox::Update() {
- if (IsLocked()) {
+ if (IsLocked())
return;
- }
- if (!m_pProperties->m_pThemeProvider) {
+ if (!m_pProperties->m_pThemeProvider)
m_pProperties->m_pThemeProvider = GetAvailableTheme();
- }
+
UpdateTextOutStyles();
Layout();
}
@@ -91,56 +91,53 @@ void IFWL_CheckBox::DrawWidget(CFX_Graphics* pGraphics,
return;
if (!m_pProperties->m_pThemeProvider)
return;
+
IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider;
if (HasBorder()) {
DrawBorder(pGraphics, CFWL_Part::Border, m_pProperties->m_pThemeProvider,
pMatrix);
}
- if (HasEdge()) {
+ if (HasEdge())
DrawEdge(pGraphics, CFWL_Part::Edge, pTheme, pMatrix);
- }
+
int32_t dwStates = GetPartStates();
- {
- CFWL_ThemeBackground param;
- param.m_pWidget = this;
- param.m_iPart = CFWL_Part::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(&param);
- param.m_iPart = CFWL_Part::CheckBox;
- param.m_rtPart = m_rtBox;
- pTheme->DrawBackground(&param);
- }
+
+ CFWL_ThemeBackground param;
+ param.m_pWidget = this;
+ param.m_iPart = CFWL_Part::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(&param);
+
+ param.m_iPart = CFWL_Part::CheckBox;
+ param.m_rtPart = m_rtBox;
+ pTheme->DrawBackground(&param);
+
if (!m_pProperties->m_pDataProvider)
return;
- {
- CFX_WideString wsCaption;
- m_pProperties->m_pDataProvider->GetCaption(this, wsCaption);
- int32_t iLen = wsCaption.GetLength();
- if (iLen <= 0)
- return;
- CFWL_ThemeText textParam;
- textParam.m_pWidget = this;
- textParam.m_iPart = CFWL_Part::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);
- }
+ CFX_WideString wsCaption;
+ m_pProperties->m_pDataProvider->GetCaption(this, wsCaption);
+ if (wsCaption.GetLength() <= 0)
+ return;
+
+ CFWL_ThemeText textParam;
+ textParam.m_pWidget = this;
+ textParam.m_iPart = CFWL_Part::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);
}
void IFWL_CheckBox::SetCheckState(int32_t iCheck) {
@@ -160,26 +157,24 @@ void IFWL_CheckBox::SetCheckState(int32_t iCheck) {
}
void IFWL_CheckBox::Layout() {
- int32_t width = int32_t(m_pProperties->m_rtWidget.width + 0.5f);
- int32_t height = int32_t(m_pProperties->m_rtWidget.height + 0.5f);
- m_pProperties->m_rtWidget.width = (FX_FLOAT)width;
- m_pProperties->m_rtWidget.height = (FX_FLOAT)height;
+ m_pProperties->m_rtWidget.width =
+ FXSYS_round(m_pProperties->m_rtWidget.width);
+ m_pProperties->m_rtWidget.height =
+ FXSYS_round(m_pProperties->m_rtWidget.height);
GetClientRect(m_rtClient);
- FX_FLOAT fBoxTop = m_rtClient.top;
- FX_FLOAT fBoxLeft = m_rtClient.left;
- FX_FLOAT fTextLeft = 0.0, fTextRight = 0.0;
- FX_FLOAT fClientRight = m_rtClient.right();
- FX_FLOAT fClientBottom = m_rtClient.bottom();
+
if (!m_pProperties->m_pDataProvider)
return;
+
+ FX_FLOAT fBoxTop = m_rtClient.top;
+ FX_FLOAT fClientBottom = m_rtClient.bottom();
+
IFWL_CheckBoxDP* pData =
static_cast<IFWL_CheckBoxDP*>(m_pProperties->m_pDataProvider);
FX_FLOAT fCheckBox = pData->GetBoxSize(this);
switch (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_VLayoutMask) {
- case FWL_STYLEEXT_CKB_Top: {
- fBoxTop = m_rtClient.top;
+ case FWL_STYLEEXT_CKB_Top:
break;
- }
case FWL_STYLEEXT_CKB_Bottom: {
fBoxTop = fClientBottom - fCheckBox;
break;
@@ -188,8 +183,14 @@ void IFWL_CheckBox::Layout() {
default: {
fBoxTop = m_rtClient.top + (m_rtClient.height - fCheckBox) / 2;
fBoxTop = FXSYS_floor(fBoxTop);
+ break;
}
}
+
+ FX_FLOAT fBoxLeft = m_rtClient.left;
+ FX_FLOAT fTextLeft = 0.0;
+ FX_FLOAT fTextRight = 0.0;
+ FX_FLOAT fClientRight = m_rtClient.right();
if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_LeftText) {
fBoxLeft = fClientRight - fCheckBox;
fTextLeft = m_rtClient.left;
@@ -202,44 +203,47 @@ void IFWL_CheckBox::Layout() {
m_rtCaption.Set(fTextLeft, m_rtClient.top, fTextRight - fTextLeft,
m_rtClient.height);
m_rtCaption.Inflate(-kCaptionMargin, -kCaptionMargin);
+
CFX_RectF rtFocus;
rtFocus.Set(m_rtCaption.left, m_rtCaption.top, m_rtCaption.width,
m_rtCaption.height);
+
CFX_WideString wsCaption;
m_pProperties->m_pDataProvider->GetCaption(this, wsCaption);
if (wsCaption.IsEmpty()) {
m_rtFocus.Set(0, 0, 0, 0);
- } else {
- CalcTextRect(wsCaption, m_pProperties->m_pThemeProvider, m_dwTTOStyles,
- m_iTTOAlign, rtFocus);
- if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_MultiLine) == 0) {
- FX_FLOAT fWidth = std::max(m_rtCaption.width, rtFocus.width);
- FX_FLOAT fHeight = std::min(m_rtCaption.height, rtFocus.height);
- FX_FLOAT fLeft = m_rtCaption.left;
- FX_FLOAT fTop = m_rtCaption.top;
- if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_HLayoutMask) ==
- FWL_STYLEEXT_CKB_Center) {
- fLeft = m_rtCaption.left + (m_rtCaption.width - fWidth) / 2;
- } else if ((m_pProperties->m_dwStyleExes &
- FWL_STYLEEXT_CKB_HLayoutMask) == FWL_STYLEEXT_CKB_Right) {
- fLeft = m_rtCaption.right() - fWidth;
- }
- if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_VLayoutMask) ==
- FWL_STYLEEXT_CKB_VCenter) {
- fTop = m_rtCaption.top + (m_rtCaption.height - fHeight) / 2;
- } else if ((m_pProperties->m_dwStyleExes &
- FWL_STYLEEXT_CKB_VLayoutMask) == FWL_STYLEEXT_CKB_Bottom) {
- fTop = m_rtCaption.bottom() - fHeight;
- }
- m_rtFocus.Set(fLeft, fTop, fWidth, fHeight);
- } else {
- m_rtFocus.Set(rtFocus.left, rtFocus.top, rtFocus.width, rtFocus.height);
+ return;
+ }
+
+ CalcTextRect(wsCaption, m_pProperties->m_pThemeProvider, m_dwTTOStyles,
+ m_iTTOAlign, rtFocus);
+ if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_MultiLine) == 0) {
+ FX_FLOAT fWidth = std::max(m_rtCaption.width, rtFocus.width);
+ FX_FLOAT fHeight = std::min(m_rtCaption.height, rtFocus.height);
+ FX_FLOAT fLeft = m_rtCaption.left;
+ FX_FLOAT fTop = m_rtCaption.top;
+ if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_HLayoutMask) ==
+ FWL_STYLEEXT_CKB_Center) {
+ fLeft = m_rtCaption.left + (m_rtCaption.width - fWidth) / 2;
+ } else if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_HLayoutMask) ==
+ FWL_STYLEEXT_CKB_Right) {
+ fLeft = m_rtCaption.right() - fWidth;
}
- m_rtFocus.Inflate(1, 1);
+ if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_VLayoutMask) ==
+ FWL_STYLEEXT_CKB_VCenter) {
+ fTop = m_rtCaption.top + (m_rtCaption.height - fHeight) / 2;
+ } else if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_VLayoutMask) ==
+ FWL_STYLEEXT_CKB_Bottom) {
+ fTop = m_rtCaption.bottom() - fHeight;
+ }
+ m_rtFocus.Set(fLeft, fTop, fWidth, fHeight);
+ } else {
+ m_rtFocus.Set(rtFocus.left, rtFocus.top, rtFocus.width, rtFocus.height);
}
+ m_rtFocus.Inflate(1, 1);
}
-uint32_t IFWL_CheckBox::GetPartStates() {
+uint32_t IFWL_CheckBox::GetPartStates() const {
int32_t dwStates = CFWL_PartState_Normal;
if ((m_pProperties->m_dwStates & FWL_STATE_CKB_CheckMask) ==
FWL_STATE_CKB_Neutral) {
@@ -248,23 +252,20 @@ uint32_t IFWL_CheckBox::GetPartStates() {
FWL_STATE_CKB_Checked) {
dwStates = CFWL_PartState_Checked;
}
- if (m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled) {
+ if (m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled)
dwStates |= CFWL_PartState_Disabled;
- } else if (m_pProperties->m_dwStates & FWL_STATE_CKB_Hovered) {
+ else if (m_pProperties->m_dwStates & FWL_STATE_CKB_Hovered)
dwStates |= CFWL_PartState_Hovered;
- } else if (m_pProperties->m_dwStates & FWL_STATE_CKB_Pressed) {
+ else if (m_pProperties->m_dwStates & FWL_STATE_CKB_Pressed)
dwStates |= CFWL_PartState_Pressed;
- } else {
+ else
dwStates |= CFWL_PartState_Normal;
- }
- if (m_pProperties->m_dwStates & FWL_WGTSTATE_Focused) {
+ if (m_pProperties->m_dwStates & FWL_WGTSTATE_Focused)
dwStates |= CFWL_PartState_Focused;
- }
return dwStates;
}
void IFWL_CheckBox::UpdateTextOutStyles() {
- m_iTTOAlign = FDE_TTOALIGNMENT_Center;
switch (m_pProperties->m_dwStyleExes &
(FWL_STYLEEXT_CKB_HLayoutMask | FWL_STYLEEXT_CKB_VLayoutMask)) {
case FWL_STYLEEXT_CKB_Left | FWL_STYLEEXT_CKB_Top: {
@@ -283,10 +284,6 @@ void IFWL_CheckBox::UpdateTextOutStyles() {
m_iTTOAlign = FDE_TTOALIGNMENT_CenterLeft;
break;
}
- case FWL_STYLEEXT_CKB_Center | FWL_STYLEEXT_CKB_VCenter: {
- m_iTTOAlign = FDE_TTOALIGNMENT_Center;
- break;
- }
case FWL_STYLEEXT_CKB_Right | FWL_STYLEEXT_CKB_VCenter: {
m_iTTOAlign = FDE_TTOALIGNMENT_CenterRight;
break;
@@ -303,17 +300,19 @@ void IFWL_CheckBox::UpdateTextOutStyles() {
m_iTTOAlign = FDE_TTOALIGNMENT_BottomRight;
break;
}
- default: {}
+ case FWL_STYLEEXT_CKB_Center | FWL_STYLEEXT_CKB_VCenter:
+ default: {
+ m_iTTOAlign = FDE_TTOALIGNMENT_Center;
+ break;
+ }
}
m_dwTTOStyles = 0;
- if (m_pProperties->m_dwStyleExes & FWL_WGTSTYLE_RTLReading) {
+ if (m_pProperties->m_dwStyleExes & FWL_WGTSTYLE_RTLReading)
m_dwTTOStyles |= FDE_TTOSTYLE_RTL;
- }
- if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_MultiLine) {
+ if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_MultiLine)
m_dwTTOStyles |= FDE_TTOSTYLE_LineWrap;
- } else {
+ else
m_dwTTOStyles |= FDE_TTOSTYLE_SingleLine;
- }
}
void IFWL_CheckBox::NextStates() {
@@ -346,23 +345,21 @@ void IFWL_CheckBox::NextStates() {
if ((m_pProperties->m_dwStates & FWL_STATE_CKB_CheckMask) ==
FWL_STATE_CKB_Neutral) {
m_pProperties->m_dwStates &= ~FWL_STATE_CKB_CheckMask;
- if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_3State) {
+ if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_3State)
m_pProperties->m_dwStates |= FWL_STATE_CKB_Checked;
- }
} else if ((m_pProperties->m_dwStates & FWL_STATE_CKB_CheckMask) ==
FWL_STATE_CKB_Checked) {
m_pProperties->m_dwStates &= ~FWL_STATE_CKB_CheckMask;
} else {
- if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_3State) {
+ if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_3State)
m_pProperties->m_dwStates |= FWL_STATE_CKB_Neutral;
- } else {
+ else
m_pProperties->m_dwStates |= FWL_STATE_CKB_Checked;
- }
}
}
+
Repaint(&m_rtClient);
- uint32_t dwLaststate = m_pProperties->m_dwStates;
- if (dwFirststate != dwLaststate) {
+ if (dwFirststate != m_pProperties->m_dwStates) {
CFWL_EvtCkbCheckStateChanged wmCheckBoxState;
wmCheckBoxState.m_pSrcTarget = this;
DispatchEvent(&wmCheckBoxState);
@@ -375,16 +372,16 @@ void IFWL_CheckBox::OnProcessMessage(CFWL_Message* pMessage) {
switch (pMessage->GetClassID()) {
case CFWL_MessageType::SetFocus:
- OnFocusChanged(pMessage, true);
+ OnFocusChanged(true);
break;
case CFWL_MessageType::KillFocus:
- OnFocusChanged(pMessage, false);
+ OnFocusChanged(false);
break;
case CFWL_MessageType::Mouse: {
CFWL_MsgMouse* pMsg = static_cast<CFWL_MsgMouse*>(pMessage);
switch (pMsg->m_dwCmd) {
case FWL_MouseCommand::LeftButtonDown:
- OnLButtonDown(pMsg);
+ OnLButtonDown();
break;
case FWL_MouseCommand::LeftButtonUp:
OnLButtonUp(pMsg);
@@ -393,7 +390,7 @@ void IFWL_CheckBox::OnProcessMessage(CFWL_Message* pMessage) {
OnMouseMove(pMsg);
break;
case FWL_MouseCommand::Leave:
- OnMouseLeave(pMsg);
+ OnMouseLeave();
break;
default:
break;
@@ -418,16 +415,16 @@ void IFWL_CheckBox::OnDrawWidget(CFX_Graphics* pGraphics,
DrawWidget(pGraphics, pMatrix);
}
-void IFWL_CheckBox::OnFocusChanged(CFWL_Message* pMsg, bool bSet) {
+void IFWL_CheckBox::OnFocusChanged(bool bSet) {
if (bSet)
m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused;
else
m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused;
- Repaint(&(m_rtClient));
+ Repaint(&m_rtClient);
}
-void IFWL_CheckBox::OnLButtonDown(CFWL_MsgMouse* pMsg) {
+void IFWL_CheckBox::OnLButtonDown() {
if (m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled)
return;
if ((m_pProperties->m_dwStates & FWL_WGTSTATE_Focused) == 0)
@@ -436,7 +433,7 @@ void IFWL_CheckBox::OnLButtonDown(CFWL_MsgMouse* pMsg) {
m_bBtnDown = true;
m_pProperties->m_dwStates &= ~FWL_STATE_CKB_Hovered;
m_pProperties->m_dwStates |= FWL_STATE_CKB_Pressed;
- Repaint(&(m_rtClient));
+ Repaint(&m_rtClient);
}
void IFWL_CheckBox::OnLButtonUp(CFWL_MsgMouse* pMsg) {
@@ -485,18 +482,17 @@ void IFWL_CheckBox::OnMouseMove(CFWL_MsgMouse* pMsg) {
}
}
}
- if (bRepaint) {
- Repaint(&(m_rtBox));
- }
+ if (bRepaint)
+ Repaint(&m_rtBox);
}
-void IFWL_CheckBox::OnMouseLeave(CFWL_MsgMouse* pMsg) {
+void IFWL_CheckBox::OnMouseLeave() {
if (m_bBtnDown)
m_pProperties->m_dwStates |= FWL_STATE_CKB_Hovered;
else
m_pProperties->m_dwStates &= ~FWL_STATE_CKB_Hovered;
- Repaint(&(m_rtBox));
+ Repaint(&m_rtBox);
}
void IFWL_CheckBox::OnKeyDown(CFWL_MsgKey* pMsg) {
diff --git a/xfa/fwl/core/ifwl_checkbox.h b/xfa/fwl/core/ifwl_checkbox.h
index 06e8f703af..0b38e777b8 100644
--- a/xfa/fwl/core/ifwl_checkbox.h
+++ b/xfa/fwl/core/ifwl_checkbox.h
@@ -74,14 +74,14 @@ class IFWL_CheckBox : public IFWL_Widget {
private:
void SetCheckState(int32_t iCheck);
void Layout();
- uint32_t GetPartStates();
+ uint32_t GetPartStates() const;
void UpdateTextOutStyles();
void NextStates();
- void OnFocusChanged(CFWL_Message* pMsg, bool bSet);
- void OnLButtonDown(CFWL_MsgMouse* pMsg);
+ void OnFocusChanged(bool bSet);
+ void OnLButtonDown();
void OnLButtonUp(CFWL_MsgMouse* pMsg);
void OnMouseMove(CFWL_MsgMouse* pMsg);
- void OnMouseLeave(CFWL_MsgMouse* pMsg);
+ void OnMouseLeave();
void OnKeyDown(CFWL_MsgKey* pMsg);
CFX_RectF m_rtClient;