diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2017-07-24 10:52:57 -0400 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-07-24 18:29:54 +0000 |
commit | 24ef63300f167ac63fb1f7fe8d3323ed6bce1695 (patch) | |
tree | f33867ff05da0f1ca16860721814da9400352599 /xfa/fxfa/cxfa_ffline.cpp | |
parent | beef5e45e5431c04c09d8ac61093aca34e29f90c (diff) | |
download | pdfium-24ef63300f167ac63fb1f7fe8d3323ed6bce1695.tar.xz |
Move xfa/fxfa/app to xfa/fxfachromium/3166
There currently exists a weird split where some files exist in xfa/fxfa
and some files exist in xfa/fxfa/app. This CL removes the app/ folder
and moves all files up to the parent directory.
Change-Id: I00c87851a1ebc5a7a636eb9a17b58ba3f1708a84
Reviewed-on: https://pdfium-review.googlesource.com/8810
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'xfa/fxfa/cxfa_ffline.cpp')
-rw-r--r-- | xfa/fxfa/cxfa_ffline.cpp | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/xfa/fxfa/cxfa_ffline.cpp b/xfa/fxfa/cxfa_ffline.cpp new file mode 100644 index 0000000000..e371034d79 --- /dev/null +++ b/xfa/fxfa/cxfa_ffline.cpp @@ -0,0 +1,99 @@ +// Copyright 2017 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "xfa/fxfa/cxfa_ffline.h" + +#include "xfa/fxgraphics/cxfa_color.h" +#include "xfa/fxgraphics/cxfa_graphics.h" +#include "xfa/fxgraphics/cxfa_path.h" + +CXFA_FFLine::CXFA_FFLine(CXFA_WidgetAcc* pDataAcc) : CXFA_FFDraw(pDataAcc) {} + +CXFA_FFLine::~CXFA_FFLine() {} + +void CXFA_FFLine::GetRectFromHand(CFX_RectF& rect, + int32_t iHand, + float fLineWidth) { + float fHalfWidth = fLineWidth / 2.0f; + if (rect.height < 1.0f) { + switch (iHand) { + case XFA_ATTRIBUTEENUM_Left: + rect.top -= fHalfWidth; + break; + case XFA_ATTRIBUTEENUM_Right: + rect.top += fHalfWidth; + } + } else if (rect.width < 1.0f) { + switch (iHand) { + case XFA_ATTRIBUTEENUM_Left: + rect.left += fHalfWidth; + break; + case XFA_ATTRIBUTEENUM_Right: + rect.left += fHalfWidth; + break; + } + } else { + switch (iHand) { + case XFA_ATTRIBUTEENUM_Left: + rect.Inflate(fHalfWidth, fHalfWidth); + break; + case XFA_ATTRIBUTEENUM_Right: + rect.Deflate(fHalfWidth, fHalfWidth); + break; + } + } +} + +void CXFA_FFLine::RenderWidget(CXFA_Graphics* pGS, + CFX_Matrix* pMatrix, + uint32_t dwStatus) { + if (!IsMatchVisibleStatus(dwStatus)) + return; + + CXFA_Value value = m_pDataAcc->GetFormValue(); + if (!value) + return; + + CXFA_Line lineObj = value.GetLine(); + FX_ARGB lineColor = 0xFF000000; + int32_t iStrokeType = 0; + float fLineWidth = 1.0f; + int32_t iCap = 0; + CXFA_Edge edge = lineObj.GetEdge(); + if (edge) { + if (edge.GetPresence() != XFA_ATTRIBUTEENUM_Visible) + return; + + lineColor = edge.GetColor(); + iStrokeType = edge.GetStrokeType(); + fLineWidth = edge.GetThickness(); + iCap = edge.GetCapType(); + } + + CFX_Matrix mtRotate = GetRotateMatrix(); + if (pMatrix) + mtRotate.Concat(*pMatrix); + + CFX_RectF rtLine = GetRectWithoutRotate(); + if (CXFA_Margin mgWidget = m_pDataAcc->GetMargin()) + XFA_RectWidthoutMargin(rtLine, mgWidget); + + GetRectFromHand(rtLine, lineObj.GetHand(), fLineWidth); + CXFA_Path linePath; + if (lineObj.GetSlope() && rtLine.right() > 0.0f && rtLine.bottom() > 0.0f) + linePath.AddLine(rtLine.TopRight(), rtLine.BottomLeft()); + else + linePath.AddLine(rtLine.TopLeft(), rtLine.BottomRight()); + + CXFA_Color color(lineColor); + pGS->SaveGraphState(); + pGS->SetLineWidth(fLineWidth, true); + XFA_StrokeTypeSetLineDash(pGS, iStrokeType, iCap); + pGS->SetStrokeColor(&color); + pGS->SetLineCap(XFA_LineCapToFXGE(iCap)); + pGS->StrokePath(&linePath, &mtRotate); + pGS->RestoreGraphState(); +} |