summaryrefslogtreecommitdiff
path: root/xfa/fxfa/cxfa_ffwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fxfa/cxfa_ffwidget.cpp')
-rw-r--r--xfa/fxfa/cxfa_ffwidget.cpp98
1 files changed, 49 insertions, 49 deletions
diff --git a/xfa/fxfa/cxfa_ffwidget.cpp b/xfa/fxfa/cxfa_ffwidget.cpp
index 9367301175..4b5806f505 100644
--- a/xfa/fxfa/cxfa_ffwidget.cpp
+++ b/xfa/fxfa/cxfa_ffwidget.cpp
@@ -30,6 +30,8 @@
#include "xfa/fxfa/cxfa_ffpageview.h"
#include "xfa/fxfa/cxfa_textlayout.h"
#include "xfa/fxfa/cxfa_widgetacc.h"
+#include "xfa/fxfa/parser/cxfa_border.h"
+#include "xfa/fxfa/parser/cxfa_box.h"
#include "xfa/fxfa/parser/cxfa_cornerdata.h"
#include "xfa/fxfa/parser/cxfa_margin.h"
#include "xfa/fxfa/parser/cxfa_node.h"
@@ -41,14 +43,14 @@
namespace {
-void XFA_BOX_GetPath_Arc(const CXFA_BoxData& boxData,
+void XFA_BOX_GetPath_Arc(CXFA_Box* box,
CFX_RectF rtDraw,
CXFA_GEPath& fillPath,
uint32_t dwFlags) {
float a, b;
a = rtDraw.width / 2.0f;
b = rtDraw.height / 2.0f;
- if (boxData.IsCircular() || (dwFlags & XFA_DRAWBOX_ForceRound) != 0)
+ if (box->IsCircular() || (dwFlags & XFA_DRAWBOX_ForceRound) != 0)
a = b = std::min(a, b);
CFX_PointF center = rtDraw.Center();
@@ -56,8 +58,8 @@ void XFA_BOX_GetPath_Arc(const CXFA_BoxData& boxData,
rtDraw.top = center.y - b;
rtDraw.width = a + a;
rtDraw.height = b + b;
- pdfium::Optional<int32_t> startAngle = boxData.GetStartAngle();
- pdfium::Optional<int32_t> sweepAngle = boxData.GetSweepAngle();
+ pdfium::Optional<int32_t> startAngle = box->GetStartAngle();
+ pdfium::Optional<int32_t> sweepAngle = box->GetSweepAngle();
if (!startAngle && !sweepAngle) {
fillPath.AddEllipse(rtDraw);
return;
@@ -236,21 +238,21 @@ void XFA_BOX_GetPath(const std::vector<CXFA_StrokeData>& strokes,
}
}
-void XFA_BOX_GetFillPath(const CXFA_BoxData& boxData,
+void XFA_BOX_GetFillPath(CXFA_Box* box,
const std::vector<CXFA_StrokeData>& strokes,
CFX_RectF rtWidget,
CXFA_GEPath& fillPath,
uint16_t dwFlags) {
- if (boxData.IsArc() || (dwFlags & XFA_DRAWBOX_ForceRound) != 0) {
- float fThickness = std::fmax(0.0, boxData.GetEdgeData(0).GetThickness());
+ if (box->IsArc() || (dwFlags & XFA_DRAWBOX_ForceRound) != 0) {
+ float fThickness = std::fmax(0.0, box->GetEdgeData(0).GetThickness());
float fHalf = fThickness / 2;
- XFA_AttributeEnum iHand = boxData.GetHand();
+ XFA_AttributeEnum iHand = box->GetHand();
if (iHand == XFA_AttributeEnum::Left)
rtWidget.Inflate(fHalf, fHalf);
else if (iHand == XFA_AttributeEnum::Right)
rtWidget.Deflate(fHalf, fHalf);
- XFA_BOX_GetPath_Arc(boxData, rtWidget, fillPath, dwFlags);
+ XFA_BOX_GetPath_Arc(box, rtWidget, fillPath, dwFlags);
return;
}
@@ -386,12 +388,12 @@ void XFA_BOX_GetFillPath(const CXFA_BoxData& boxData,
}
}
-void XFA_BOX_Fill_Radial(const CXFA_BoxData& boxData,
+void XFA_BOX_Fill_Radial(CXFA_Box* box,
CXFA_Graphics* pGS,
CXFA_GEPath& fillPath,
CFX_RectF rtFill,
const CFX_Matrix& matrix) {
- CXFA_FillData fillData = boxData.GetFillData(false);
+ CXFA_FillData fillData = box->GetFillData(false);
FX_ARGB crStart = fillData.GetColor(false);
FX_ARGB crEnd = fillData.GetRadialColor();
if (!fillData.IsRadialToEdge())
@@ -406,12 +408,12 @@ void XFA_BOX_Fill_Radial(const CXFA_BoxData& boxData,
pGS->FillPath(&fillPath, FXFILL_WINDING, &matrix);
}
-void XFA_BOX_Fill_Pattern(const CXFA_BoxData& boxData,
+void XFA_BOX_Fill_Pattern(CXFA_Box* box,
CXFA_Graphics* pGS,
CXFA_GEPath& fillPath,
CFX_RectF rtFill,
const CFX_Matrix& matrix) {
- CXFA_FillData fillData = boxData.GetFillData(false);
+ CXFA_FillData fillData = box->GetFillData(false);
FX_ARGB crStart = fillData.GetColor(false);
FX_ARGB crEnd = fillData.GetPatternColor();
FX_HatchStyle iHatch = FX_HatchStyle::Cross;
@@ -440,12 +442,12 @@ void XFA_BOX_Fill_Pattern(const CXFA_BoxData& boxData,
pGS->FillPath(&fillPath, FXFILL_WINDING, &matrix);
}
-void XFA_BOX_Fill_Linear(const CXFA_BoxData& boxData,
+void XFA_BOX_Fill_Linear(CXFA_Box* box,
CXFA_Graphics* pGS,
CXFA_GEPath& fillPath,
CFX_RectF rtFill,
const CFX_Matrix& matrix) {
- CXFA_FillData fillData = boxData.GetFillData(false);
+ CXFA_FillData fillData = box->GetFillData(false);
FX_ARGB crStart = fillData.GetColor(false);
FX_ARGB crEnd = fillData.GetLinearColor();
@@ -477,31 +479,31 @@ void XFA_BOX_Fill_Linear(const CXFA_BoxData& boxData,
pGS->FillPath(&fillPath, FXFILL_WINDING, &matrix);
}
-void XFA_BOX_Fill(const CXFA_BoxData& boxData,
+void XFA_BOX_Fill(CXFA_Box* box,
const std::vector<CXFA_StrokeData>& strokes,
CXFA_Graphics* pGS,
const CFX_RectF& rtWidget,
const CFX_Matrix& matrix,
uint32_t dwFlags) {
- CXFA_FillData fillData = boxData.GetFillData(false);
+ CXFA_FillData fillData = box->GetFillData(false);
if (!fillData.HasValidNode() || !fillData.IsVisible())
return;
pGS->SaveGraphState();
CXFA_GEPath fillPath;
- XFA_BOX_GetFillPath(boxData, strokes, rtWidget, fillPath,
+ XFA_BOX_GetFillPath(box, strokes, rtWidget, fillPath,
(dwFlags & XFA_DRAWBOX_ForceRound) != 0);
fillPath.Close();
XFA_Element eType = fillData.GetFillType();
switch (eType) {
case XFA_Element::Radial:
- XFA_BOX_Fill_Radial(boxData, pGS, fillPath, rtWidget, matrix);
+ XFA_BOX_Fill_Radial(box, pGS, fillPath, rtWidget, matrix);
break;
case XFA_Element::Pattern:
- XFA_BOX_Fill_Pattern(boxData, pGS, fillPath, rtWidget, matrix);
+ XFA_BOX_Fill_Pattern(box, pGS, fillPath, rtWidget, matrix);
break;
case XFA_Element::Linear:
- XFA_BOX_Fill_Linear(boxData, pGS, fillPath, rtWidget, matrix);
+ XFA_BOX_Fill_Linear(box, pGS, fillPath, rtWidget, matrix);
break;
default: {
FX_ARGB cr;
@@ -549,19 +551,19 @@ void XFA_BOX_StrokePath(const CXFA_StrokeData& strokeData,
pGS->RestoreGraphState();
}
-void XFA_BOX_StrokeArc(const CXFA_BoxData& boxData,
+void XFA_BOX_StrokeArc(CXFA_Box* box,
CXFA_Graphics* pGS,
CFX_RectF rtWidget,
const CFX_Matrix& matrix,
uint32_t dwFlags) {
- CXFA_EdgeData edgeData = boxData.GetEdgeData(0);
+ CXFA_EdgeData edgeData = box->GetEdgeData(0);
if (!edgeData.HasValidNode() || !edgeData.IsVisible())
return;
bool bVisible;
float fThickness;
XFA_AttributeEnum i3DType;
- std::tie(i3DType, bVisible, fThickness) = boxData.Get3DStyle();
+ std::tie(i3DType, bVisible, fThickness) = box->Get3DStyle();
if (i3DType != XFA_AttributeEnum::Unknown) {
if (bVisible && fThickness >= 0.001f) {
dwFlags |= XFA_DRAWBOX_Lowered3D;
@@ -572,7 +574,7 @@ void XFA_BOX_StrokeArc(const CXFA_BoxData& boxData,
fHalf = 0;
}
- XFA_AttributeEnum iHand = boxData.GetHand();
+ XFA_AttributeEnum iHand = box->GetHand();
if (iHand == XFA_AttributeEnum::Left) {
rtWidget.Inflate(fHalf, fHalf);
} else if (iHand == XFA_AttributeEnum::Right) {
@@ -584,7 +586,7 @@ void XFA_BOX_StrokeArc(const CXFA_BoxData& boxData,
return;
CXFA_GEPath arcPath;
- XFA_BOX_GetPath_Arc(boxData, rtWidget, arcPath, dwFlags);
+ XFA_BOX_GetPath_Arc(box, rtWidget, arcPath, dwFlags);
XFA_BOX_StrokePath(edgeData, &arcPath, pGS, matrix);
return;
}
@@ -722,7 +724,7 @@ void XFA_BOX_Stroke_3DRect_Embossed(CXFA_Graphics* pGS,
XFA_Draw3DRect(pGS, rtInner, fHalfWidth, matrix, 0xFF000000, 0xFF808080);
}
-void XFA_BOX_Stroke_Rect(CXFA_BoxData boxData,
+void XFA_BOX_Stroke_Rect(CXFA_Box* box,
const std::vector<CXFA_StrokeData>& strokes,
CXFA_Graphics* pGS,
CFX_RectF rtWidget,
@@ -730,7 +732,7 @@ void XFA_BOX_Stroke_Rect(CXFA_BoxData boxData,
bool bVisible;
float fThickness;
XFA_AttributeEnum i3DType;
- std::tie(i3DType, bVisible, fThickness) = boxData.Get3DStyle();
+ std::tie(i3DType, bVisible, fThickness) = box->Get3DStyle();
if (i3DType != XFA_AttributeEnum::Unknown) {
if (!bVisible || fThickness < 0.001f) {
return;
@@ -815,14 +817,14 @@ void XFA_BOX_Stroke_Rect(CXFA_BoxData boxData,
}
}
-void XFA_BOX_Stroke(CXFA_BoxData boxData,
+void XFA_BOX_Stroke(CXFA_Box* box,
const std::vector<CXFA_StrokeData>& strokes,
CXFA_Graphics* pGS,
CFX_RectF rtWidget,
const CFX_Matrix& matrix,
uint32_t dwFlags) {
- if (boxData.IsArc() || (dwFlags & XFA_DRAWBOX_ForceRound) != 0) {
- XFA_BOX_StrokeArc(boxData, pGS, rtWidget, matrix, dwFlags);
+ if (box->IsArc() || (dwFlags & XFA_DRAWBOX_ForceRound) != 0) {
+ XFA_BOX_StrokeArc(box, pGS, rtWidget, matrix, dwFlags);
return;
}
bool bVisible = false;
@@ -839,7 +841,7 @@ void XFA_BOX_Stroke(CXFA_BoxData boxData,
float fThickness =
std::fmax(0.0, CXFA_EdgeData(strokes[i].GetNode()).GetThickness());
float fHalf = fThickness / 2;
- XFA_AttributeEnum iHand = boxData.GetHand();
+ XFA_AttributeEnum iHand = box->GetHand();
switch (i) {
case 1:
if (iHand == XFA_AttributeEnum::Left) {
@@ -875,30 +877,28 @@ void XFA_BOX_Stroke(CXFA_BoxData boxData,
break;
}
}
- XFA_BOX_Stroke_Rect(boxData, strokes, pGS, rtWidget, matrix);
+ XFA_BOX_Stroke_Rect(box, strokes, pGS, rtWidget, matrix);
}
-void XFA_DrawBox(CXFA_BoxData boxData,
+void XFA_DrawBox(CXFA_Box* box,
CXFA_Graphics* pGS,
const CFX_RectF& rtWidget,
const CFX_Matrix& matrix,
uint32_t dwFlags) {
- if (!boxData.HasValidNode() ||
- boxData.GetPresence() != XFA_AttributeEnum::Visible) {
+ if (!box || box->GetPresence() != XFA_AttributeEnum::Visible)
return;
- }
- XFA_Element eType = boxData.GetElementType();
+ XFA_Element eType = box->GetElementType();
if (eType != XFA_Element::Arc && eType != XFA_Element::Border &&
eType != XFA_Element::Rectangle) {
return;
}
std::vector<CXFA_StrokeData> strokes;
if (!(dwFlags & XFA_DRAWBOX_ForceRound) && eType != XFA_Element::Arc)
- strokes = boxData.GetStrokes();
+ strokes = box->GetStrokes();
- XFA_BOX_Fill(boxData, strokes, pGS, rtWidget, matrix, dwFlags);
- XFA_BOX_Stroke(boxData, strokes, pGS, rtWidget, matrix, dwFlags);
+ XFA_BOX_Fill(box, strokes, pGS, rtWidget, matrix, dwFlags);
+ XFA_BOX_Stroke(box, strokes, pGS, rtWidget, matrix, dwFlags);
}
bool IsFXCodecErrorStatus(FXCODEC_STATUS status) {
@@ -985,17 +985,17 @@ void CXFA_FFWidget::RenderWidget(CXFA_Graphics* pGS,
if (!IsMatchVisibleStatus(dwStatus))
return;
- CXFA_BorderData borderData = m_pDataAcc->GetBorderData(false);
- if (!borderData.HasValidNode())
+ CXFA_Border* border = m_pDataAcc->GetBorder(false);
+ if (!border)
return;
CFX_RectF rtBorder = GetRectWithoutRotate();
- CXFA_Margin* margin = borderData.GetMargin();
+ CXFA_Margin* margin = border->GetMargin();
if (margin)
XFA_RectWidthoutMargin(rtBorder, margin);
rtBorder.Normalize();
- DrawBorder(pGS, borderData, rtBorder, matrix);
+ DrawBorder(pGS, border, rtBorder, matrix);
}
bool CXFA_FFWidget::IsLoaded() {
@@ -1016,18 +1016,18 @@ bool CXFA_FFWidget::UpdateFWLData() {
void CXFA_FFWidget::UpdateWidgetProperty() {}
void CXFA_FFWidget::DrawBorder(CXFA_Graphics* pGS,
- const CXFA_BoxData& boxData,
+ CXFA_Box* box,
const CFX_RectF& rtBorder,
const CFX_Matrix& matrix) {
- XFA_DrawBox(boxData, pGS, rtBorder, matrix, 0);
+ XFA_DrawBox(box, pGS, rtBorder, matrix, 0);
}
void CXFA_FFWidget::DrawBorderWithFlags(CXFA_Graphics* pGS,
- const CXFA_BoxData& boxData,
+ CXFA_Box* box,
const CFX_RectF& rtBorder,
const CFX_Matrix& matrix,
uint32_t dwFlags) {
- XFA_DrawBox(boxData, pGS, rtBorder, matrix, dwFlags);
+ XFA_DrawBox(box, pGS, rtBorder, matrix, dwFlags);
}
void CXFA_FFWidget::AddInvalidateRect() {