diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2018-01-17 16:29:15 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-01-17 16:29:15 +0000 |
commit | f855489794ffd575d073eb575b04ac1ca1f286c2 (patch) | |
tree | 692d54fa51fa882873a9fbb296f0f031c92046ea /xfa/fxfa/parser/cxfa_pattern.cpp | |
parent | 181ffee7dd19906f9eee175627a9e6d0abb2e881 (diff) | |
download | pdfium-f855489794ffd575d073eb575b04ac1ca1f286c2.tar.xz |
Move fill draw code to fill classes
This CL moves the code related to drawing fills and the various types of
fill to the specific fill classes.
Change-Id: Ie151089b00ca96c5fa88d22ab5f697d9425297cd
Reviewed-on: https://pdfium-review.googlesource.com/23071
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'xfa/fxfa/parser/cxfa_pattern.cpp')
-rw-r--r-- | xfa/fxfa/parser/cxfa_pattern.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/xfa/fxfa/parser/cxfa_pattern.cpp b/xfa/fxfa/parser/cxfa_pattern.cpp index 3102f77beb..4cd32cced8 100644 --- a/xfa/fxfa/parser/cxfa_pattern.cpp +++ b/xfa/fxfa/parser/cxfa_pattern.cpp @@ -9,6 +9,7 @@ #include "fxjs/xfa/cjx_pattern.h" #include "third_party/base/ptr_util.h" #include "xfa/fxfa/parser/cxfa_color.h" +#include "xfa/fxgraphics/cxfa_gepattern.h" namespace { @@ -47,3 +48,40 @@ CXFA_Color* CXFA_Pattern::GetColorIfExists() { XFA_AttributeEnum CXFA_Pattern::GetType() { return JSObject()->GetEnum(XFA_Attribute::Type); } + +void CXFA_Pattern::Draw(CXFA_Graphics* pGS, + CXFA_GEPath* fillPath, + FX_ARGB crStart, + const CFX_RectF& rtFill, + const CFX_Matrix& matrix) { + CXFA_Color* pColor = GetColorIfExists(); + FX_ARGB crEnd = pColor ? pColor->GetValue() : CXFA_Color::kBlackColor; + + FX_HatchStyle iHatch = FX_HatchStyle::Cross; + switch (GetType()) { + case XFA_AttributeEnum::CrossDiagonal: + iHatch = FX_HatchStyle::DiagonalCross; + break; + case XFA_AttributeEnum::DiagonalLeft: + iHatch = FX_HatchStyle::ForwardDiagonal; + break; + case XFA_AttributeEnum::DiagonalRight: + iHatch = FX_HatchStyle::BackwardDiagonal; + break; + case XFA_AttributeEnum::Horizontal: + iHatch = FX_HatchStyle::Horizontal; + break; + case XFA_AttributeEnum::Vertical: + iHatch = FX_HatchStyle::Vertical; + break; + default: + break; + } + + CXFA_GEPattern pattern(iHatch, crEnd, crStart); + + pGS->SaveGraphState(); + pGS->SetFillColor(CXFA_GEColor(&pattern, 0x0)); + pGS->FillPath(fillPath, FXFILL_WINDING, &matrix); + pGS->RestoreGraphState(); +} |