summaryrefslogtreecommitdiff
path: root/xfa/fxfa/parser/cxfa_stroke.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fxfa/parser/cxfa_stroke.cpp')
-rw-r--r--xfa/fxfa/parser/cxfa_stroke.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/xfa/fxfa/parser/cxfa_stroke.cpp b/xfa/fxfa/parser/cxfa_stroke.cpp
index 45634b26e3..c581a96303 100644
--- a/xfa/fxfa/parser/cxfa_stroke.cpp
+++ b/xfa/fxfa/parser/cxfa_stroke.cpp
@@ -15,6 +15,51 @@
#include "xfa/fxfa/parser/xfa_utils.h"
#include "xfa/fxgraphics/cxfa_graphics.h"
+void XFA_StrokeTypeSetLineDash(CXFA_Graphics* pGraphics,
+ XFA_AttributeEnum iStrokeType,
+ XFA_AttributeEnum iCapType) {
+ switch (iStrokeType) {
+ case XFA_AttributeEnum::DashDot: {
+ float dashArray[] = {4, 1, 2, 1};
+ if (iCapType != XFA_AttributeEnum::Butt) {
+ dashArray[1] = 2;
+ dashArray[3] = 2;
+ }
+ pGraphics->SetLineDash(0, dashArray, 4);
+ break;
+ }
+ case XFA_AttributeEnum::DashDotDot: {
+ float dashArray[] = {4, 1, 2, 1, 2, 1};
+ if (iCapType != XFA_AttributeEnum::Butt) {
+ dashArray[1] = 2;
+ dashArray[3] = 2;
+ dashArray[5] = 2;
+ }
+ pGraphics->SetLineDash(0, dashArray, 6);
+ break;
+ }
+ case XFA_AttributeEnum::Dashed: {
+ float dashArray[] = {5, 1};
+ if (iCapType != XFA_AttributeEnum::Butt)
+ dashArray[1] = 2;
+
+ pGraphics->SetLineDash(0, dashArray, 2);
+ break;
+ }
+ case XFA_AttributeEnum::Dotted: {
+ float dashArray[] = {2, 1};
+ if (iCapType != XFA_AttributeEnum::Butt)
+ dashArray[1] = 2;
+
+ pGraphics->SetLineDash(0, dashArray, 2);
+ break;
+ }
+ default:
+ pGraphics->SetSolidLineDash();
+ break;
+ }
+}
+
CXFA_Stroke::CXFA_Stroke(CXFA_Document* pDoc,
XFA_PacketType ePacket,
uint32_t validPackets,