| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 // Copyright 2014 PDFium Authors. All rights reserved. |  | 
| 2 // Use of this source code is governed by a BSD-style license that can be |  | 
| 3 // found in the LICENSE file. |  | 
| 4 |  | 
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |  | 
| 6 |  | 
| 7 #include "xfa/src/fxfa/app/xfa_ffpath.h" |  | 
| 8 |  | 
| 9 #include "xfa/include/fxgraphics/fx_graphics.h" |  | 
| 10 #include "xfa/src/fxfa/app/xfa_ffapp.h" |  | 
| 11 #include "xfa/src/fxfa/app/xfa_ffdoc.h" |  | 
| 12 #include "xfa/src/fxfa/app/xfa_ffdraw.h" |  | 
| 13 #include "xfa/src/fxfa/app/xfa_ffpageview.h" |  | 
| 14 #include "xfa/src/fxfa/app/xfa_ffwidget.h" |  | 
| 15 |  | 
| 16 CXFA_FFLine::CXFA_FFLine(CXFA_FFPageView* pPageView, CXFA_WidgetAcc* pDataAcc) |  | 
| 17     : CXFA_FFDraw(pPageView, pDataAcc) {} |  | 
| 18 CXFA_FFLine::~CXFA_FFLine() {} |  | 
| 19 void CXFA_FFLine::GetRectFromHand(CFX_RectF& rect, |  | 
| 20                                   int32_t iHand, |  | 
| 21                                   FX_FLOAT fLineWidth) { |  | 
| 22   FX_FLOAT fHalfWidth = fLineWidth / 2.0f; |  | 
| 23   if (rect.height < 1.0f) { |  | 
| 24     switch (iHand) { |  | 
| 25       case XFA_ATTRIBUTEENUM_Left: |  | 
| 26         rect.top -= fHalfWidth; |  | 
| 27         break; |  | 
| 28       case XFA_ATTRIBUTEENUM_Right: |  | 
| 29         rect.top += fHalfWidth; |  | 
| 30     } |  | 
| 31   } else if (rect.width < 1.0f) { |  | 
| 32     switch (iHand) { |  | 
| 33       case XFA_ATTRIBUTEENUM_Left: |  | 
| 34         rect.left += fHalfWidth; |  | 
| 35         break; |  | 
| 36       case XFA_ATTRIBUTEENUM_Right: |  | 
| 37         rect.left += fHalfWidth; |  | 
| 38         break; |  | 
| 39     } |  | 
| 40   } else { |  | 
| 41     switch (iHand) { |  | 
| 42       case XFA_ATTRIBUTEENUM_Left: |  | 
| 43         rect.Inflate(fHalfWidth, fHalfWidth); |  | 
| 44         break; |  | 
| 45       case XFA_ATTRIBUTEENUM_Right: |  | 
| 46         rect.Deflate(fHalfWidth, fHalfWidth); |  | 
| 47         break; |  | 
| 48     } |  | 
| 49   } |  | 
| 50 } |  | 
| 51 void CXFA_FFLine::RenderWidget(CFX_Graphics* pGS, |  | 
| 52                                CFX_Matrix* pMatrix, |  | 
| 53                                FX_DWORD dwStatus, |  | 
| 54                                int32_t iRotate) { |  | 
| 55   if (!IsMatchVisibleStatus(dwStatus)) { |  | 
| 56     return; |  | 
| 57   } |  | 
| 58   CXFA_Value value = m_pDataAcc->GetFormValue(); |  | 
| 59   if (!value) { |  | 
| 60     return; |  | 
| 61   } |  | 
| 62   CXFA_Line lineObj = value.GetLine(); |  | 
| 63   FX_ARGB lineColor = 0xFF000000; |  | 
| 64   int32_t iStrokeType = 0; |  | 
| 65   FX_FLOAT fLineWidth = 1.0f; |  | 
| 66   FX_BOOL bSlope = lineObj.GetSlop(); |  | 
| 67   int32_t iCap = 0; |  | 
| 68   CXFA_Edge edge = lineObj.GetEdge(); |  | 
| 69   if (edge) { |  | 
| 70     if (edge.GetPresence() != XFA_ATTRIBUTEENUM_Visible) { |  | 
| 71       return; |  | 
| 72     } |  | 
| 73     lineColor = edge.GetColor(); |  | 
| 74     iStrokeType = edge.GetStrokeType(); |  | 
| 75     fLineWidth = edge.GetThickness(); |  | 
| 76     iCap = edge.GetCapType(); |  | 
| 77   } |  | 
| 78   CFX_Matrix mtRotate; |  | 
| 79   GetRotateMatrix(mtRotate); |  | 
| 80   if (pMatrix) { |  | 
| 81     mtRotate.Concat(*pMatrix); |  | 
| 82   } |  | 
| 83   CFX_RectF rtLine; |  | 
| 84   GetRectWithoutRotate(rtLine); |  | 
| 85   if (CXFA_Margin mgWidget = m_pDataAcc->GetMargin()) { |  | 
| 86     XFA_RectWidthoutMargin(rtLine, mgWidget); |  | 
| 87   } |  | 
| 88   GetRectFromHand(rtLine, lineObj.GetHand(), fLineWidth); |  | 
| 89   CFX_Path linePath; |  | 
| 90   linePath.Create(); |  | 
| 91   if (bSlope && rtLine.right() > 0.0f && rtLine.bottom() > 0.0f) { |  | 
| 92     linePath.AddLine(rtLine.right(), rtLine.top, rtLine.left, rtLine.bottom()); |  | 
| 93   } else { |  | 
| 94     linePath.AddLine(rtLine.left, rtLine.top, rtLine.right(), rtLine.bottom()); |  | 
| 95   } |  | 
| 96   CFX_Color color(lineColor); |  | 
| 97   pGS->SaveGraphState(); |  | 
| 98   pGS->SetLineWidth(fLineWidth, TRUE); |  | 
| 99   XFA_StrokeTypeSetLineDash(pGS, iStrokeType, iCap); |  | 
| 100   pGS->SetStrokeColor(&color); |  | 
| 101   pGS->SetLineCap(XFA_LineCapToFXGE(iCap)); |  | 
| 102   pGS->StrokePath(&linePath, &mtRotate); |  | 
| 103   pGS->RestoreGraphState(); |  | 
| 104 } |  | 
| 105 CXFA_FFArc::CXFA_FFArc(CXFA_FFPageView* pPageView, CXFA_WidgetAcc* pDataAcc) |  | 
| 106     : CXFA_FFDraw(pPageView, pDataAcc) {} |  | 
| 107 CXFA_FFArc::~CXFA_FFArc() {} |  | 
| 108 void CXFA_FFArc::RenderWidget(CFX_Graphics* pGS, |  | 
| 109                               CFX_Matrix* pMatrix, |  | 
| 110                               FX_DWORD dwStatus, |  | 
| 111                               int32_t iRotate) { |  | 
| 112   if (!IsMatchVisibleStatus(dwStatus)) { |  | 
| 113     return; |  | 
| 114   } |  | 
| 115   CXFA_Value value = m_pDataAcc->GetFormValue(); |  | 
| 116   if (!value) { |  | 
| 117     return; |  | 
| 118   } |  | 
| 119   CXFA_Arc arcObj = value.GetArc(); |  | 
| 120   CFX_Matrix mtRotate; |  | 
| 121   GetRotateMatrix(mtRotate); |  | 
| 122   if (pMatrix) { |  | 
| 123     mtRotate.Concat(*pMatrix); |  | 
| 124   } |  | 
| 125   CFX_RectF rtArc; |  | 
| 126   GetRectWithoutRotate(rtArc); |  | 
| 127   if (CXFA_Margin mgWidget = m_pDataAcc->GetMargin()) { |  | 
| 128     XFA_RectWidthoutMargin(rtArc, mgWidget); |  | 
| 129   } |  | 
| 130   DrawBorder(pGS, arcObj, rtArc, &mtRotate); |  | 
| 131 } |  | 
| 132 CXFA_FFRectangle::CXFA_FFRectangle(CXFA_FFPageView* pPageView, |  | 
| 133                                    CXFA_WidgetAcc* pDataAcc) |  | 
| 134     : CXFA_FFDraw(pPageView, pDataAcc) {} |  | 
| 135 CXFA_FFRectangle::~CXFA_FFRectangle() {} |  | 
| 136 void CXFA_FFRectangle::RenderWidget(CFX_Graphics* pGS, |  | 
| 137                                     CFX_Matrix* pMatrix, |  | 
| 138                                     FX_DWORD dwStatus, |  | 
| 139                                     int32_t iRotate) { |  | 
| 140   if (!IsMatchVisibleStatus(dwStatus)) { |  | 
| 141     return; |  | 
| 142   } |  | 
| 143   CXFA_Value value = m_pDataAcc->GetFormValue(); |  | 
| 144   if (!value) { |  | 
| 145     return; |  | 
| 146   } |  | 
| 147   CXFA_Rectangle rtObj = value.GetRectangle(); |  | 
| 148   CFX_RectF rect; |  | 
| 149   GetRectWithoutRotate(rect); |  | 
| 150   if (CXFA_Margin mgWidget = m_pDataAcc->GetMargin()) { |  | 
| 151     XFA_RectWidthoutMargin(rect, mgWidget); |  | 
| 152   } |  | 
| 153   CFX_Matrix mtRotate; |  | 
| 154   GetRotateMatrix(mtRotate); |  | 
| 155   if (pMatrix) { |  | 
| 156     mtRotate.Concat(*pMatrix); |  | 
| 157   } |  | 
| 158   DrawBorder(pGS, rtObj, rect, &mtRotate); |  | 
| 159 } |  | 
| OLD | NEW | 
|---|