From 7d75650672a848428aaadb603b2814d33dfb479f Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Thu, 15 Mar 2018 19:27:17 +0000 Subject: Add a CFX_PathData::AppendRect() variant. One that takes a CFX_FloatRect instead of LBRT floats. Use it where appropriate. Change-Id: I8ba19e86c61c91d8b4ef685b5cb65c8fb717f013 Reviewed-on: https://pdfium-review.googlesource.com/28581 Reviewed-by: Henrique Nakashima Commit-Queue: Lei Zhang --- core/fpdfdoc/cpdf_annot.cpp | 7 ++++--- core/fxge/cfx_pathdata.cpp | 4 ++++ core/fxge/cfx_pathdata.h | 1 + core/fxge/cfx_renderdevice.cpp | 9 +++------ fpdfsdk/cpdfsdk_widget.cpp | 9 ++------- 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/core/fpdfdoc/cpdf_annot.cpp b/core/fpdfdoc/cpdf_annot.cpp index c74965c3e7..cc70a3087c 100644 --- a/core/fpdfdoc/cpdf_annot.cpp +++ b/core/fpdfdoc/cpdf_annot.cpp @@ -485,11 +485,12 @@ void CPDF_Annot::DrawBorder(CFX_RenderDevice* pDevice, graph_state.m_DashArray[0] = graph_state.m_DashArray[1] = 3 * 1.0f; } } + CFX_FloatRect rect = GetRect(); + rect.Deflate(width / 2, width / 2); CFX_PathData path; - width /= 2; - path.AppendRect(rect.left + width, rect.bottom + width, rect.right - width, - rect.top - width); + path.AppendRect(rect); + int fill_type = 0; if (pOptions && (pOptions->HasFlag(RENDER_NOPATHSMOOTH))) fill_type |= FXFILL_NOPATHSMOOTH; diff --git a/core/fxge/cfx_pathdata.cpp b/core/fxge/cfx_pathdata.cpp index 4ac5cf6a7a..ac1ff42629 100644 --- a/core/fxge/cfx_pathdata.cpp +++ b/core/fxge/cfx_pathdata.cpp @@ -210,6 +210,10 @@ void CFX_PathData::AppendLine(const CFX_PointF& pt1, const CFX_PointF& pt2) { AppendPoint(pt2, FXPT_TYPE::LineTo, false); } +void CFX_PathData::AppendRect(const CFX_FloatRect& rect) { + return AppendRect(rect.left, rect.bottom, rect.right, rect.top); +} + void CFX_PathData::AppendRect(float left, float bottom, float right, diff --git a/core/fxge/cfx_pathdata.h b/core/fxge/cfx_pathdata.h index d346ba0666..5c2be627bf 100644 --- a/core/fxge/cfx_pathdata.h +++ b/core/fxge/cfx_pathdata.h @@ -59,6 +59,7 @@ class CFX_PathData : public Retainable { bool IsRect(const CFX_Matrix* pMatrix, CFX_FloatRect* rect) const; void Append(const CFX_PathData* pSrc, const CFX_Matrix* pMatrix); + void AppendRect(const CFX_FloatRect& rect); void AppendRect(float left, float bottom, float right, float top); void AppendLine(const CFX_PointF& pt1, const CFX_PointF& pt2); void AppendPoint(const CFX_PointF& pos, FXPT_TYPE type, bool closeFigure); diff --git a/core/fxge/cfx_renderdevice.cpp b/core/fxge/cfx_renderdevice.cpp index 6c7e896b01..2e279d636f 100644 --- a/core/fxge/cfx_renderdevice.cpp +++ b/core/fxge/cfx_renderdevice.cpp @@ -1134,8 +1134,7 @@ void CFX_RenderDevice::DrawFillRect(const CFX_Matrix* pUser2Device, const CFX_FloatRect& rect, const FX_COLORREF& color) { CFX_PathData path; - CFX_FloatRect rcTemp(rect); - path.AppendRect(rcTemp.left, rcTemp.bottom, rcTemp.right, rcTemp.top); + path.AppendRect(rect); DrawPath(&path, pUser2Device, nullptr, color, 0, FXFILL_WINDING); } @@ -1155,13 +1154,11 @@ void CFX_RenderDevice::DrawStrokeRect(const CFX_Matrix* pUser2Device, const CFX_FloatRect& rect, const FX_COLORREF& color, float fWidth) { - CFX_PathData path; - CFX_FloatRect rcTemp(rect); - path.AppendRect(rcTemp.left, rcTemp.bottom, rcTemp.right, rcTemp.top); - CFX_GraphStateData gsd; gsd.m_LineWidth = fWidth; + CFX_PathData path; + path.AppendRect(rect); DrawPath(&path, pUser2Device, &gsd, 0, color, FXFILL_ALTERNATE); } diff --git a/fpdfsdk/cpdfsdk_widget.cpp b/fpdfsdk/cpdfsdk_widget.cpp index 20189ef4d6..0d765ed947 100644 --- a/fpdfsdk/cpdfsdk_widget.cpp +++ b/fpdfsdk/cpdfsdk_widget.cpp @@ -679,16 +679,11 @@ void CPDFSDK_Widget::DrawAppearance(CFX_RenderDevice* pDevice, fieldType == FormFieldType::kRadioButton) && mode == CPDF_Annot::Normal && !IsWidgetAppearanceValid(CPDF_Annot::Normal)) { - CFX_PathData pathData; - - CFX_FloatRect rcAnnot = GetRect(); - - pathData.AppendRect(rcAnnot.left, rcAnnot.bottom, rcAnnot.right, - rcAnnot.top); - CFX_GraphStateData gsd; gsd.m_LineWidth = 0.0f; + CFX_PathData pathData; + pathData.AppendRect(GetRect()); pDevice->DrawPath(&pathData, &mtUser2Device, &gsd, 0, 0xFFAAAAAA, FXFILL_ALTERNATE); } else { -- cgit v1.2.3