Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: xfa/fxfa/app/xfa_ffwidget.cpp

Issue 2648773003: Replace CXFA_StrokeArray and CXFA_WidgetArray with std::vector (Closed)
Patch Set: remove if Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/fxfa/app/xfa_ffpageview.cpp ('k') | xfa/fxfa/parser/cxfa_box.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "xfa/fxfa/xfa_ffwidget.h" 7 #include "xfa/fxfa/xfa_ffwidget.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 1199 matching lines...) Expand 10 before | Expand all | Expand 10 after
1210 if (!bStart && !bEnd) { 1210 if (!bStart && !bEnd) {
1211 fillPath.AddEllipse(rtDraw); 1211 fillPath.AddEllipse(rtDraw);
1212 return; 1212 return;
1213 } 1213 }
1214 startAngle = -startAngle * FX_PI / 180.0f; 1214 startAngle = -startAngle * FX_PI / 180.0f;
1215 sweepAngle = -sweepAngle * FX_PI / 180.0f; 1215 sweepAngle = -sweepAngle * FX_PI / 180.0f;
1216 fillPath.AddArc(rtDraw.left, rtDraw.top, rtDraw.width, rtDraw.height, 1216 fillPath.AddArc(rtDraw.left, rtDraw.top, rtDraw.width, rtDraw.height,
1217 startAngle, sweepAngle); 1217 startAngle, sweepAngle);
1218 } 1218 }
1219 static void XFA_BOX_GetPath(CXFA_Box box, 1219 static void XFA_BOX_GetPath(CXFA_Box box,
1220 const CXFA_StrokeArray& strokes, 1220 const std::vector<CXFA_Stroke>& strokes,
1221 CFX_RectF rtWidget, 1221 CFX_RectF rtWidget,
1222 CFX_Path& path, 1222 CFX_Path& path,
1223 int32_t nIndex, 1223 int32_t nIndex,
1224 bool bStart, 1224 bool bStart,
1225 bool bCorner) { 1225 bool bCorner) {
1226 ASSERT(nIndex >= 0 && nIndex < 8); 1226 ASSERT(nIndex >= 0 && nIndex < 8);
1227 int32_t n = (nIndex & 1) ? nIndex - 1 : nIndex; 1227 int32_t n = (nIndex & 1) ? nIndex - 1 : nIndex;
1228 CXFA_Corner corner1(strokes[n].GetNode()); 1228 CXFA_Corner corner1(strokes[n].GetNode());
1229 CXFA_Corner corner2(strokes[(n + 2) % 8].GetNode()); 1229 CXFA_Corner corner2(strokes[(n + 2) % 8].GetNode());
1230 FX_FLOAT fRadius1 = bCorner ? corner1.GetRadius() : 0.0f; 1230 FX_FLOAT fRadius1 = bCorner ? corner1.GetRadius() : 0.0f;
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
1378 cp.x = cp1.x + fRadius1 * vx, cp.y = cp1.y + fRadius1 * vy; 1378 cp.x = cp1.x + fRadius1 * vx, cp.y = cp1.y + fRadius1 * vy;
1379 } else { 1379 } else {
1380 cp = cp1; 1380 cp = cp1;
1381 } 1381 }
1382 path.LineTo(cp.x, cp.y); 1382 path.LineTo(cp.x, cp.y);
1383 path.LineTo(cp1.x + fRadius1 * sx + offsetX, 1383 path.LineTo(cp1.x + fRadius1 * sx + offsetX,
1384 cp1.y + fRadius1 * sy + offsetY); 1384 cp1.y + fRadius1 * sy + offsetY);
1385 } 1385 }
1386 } 1386 }
1387 static void XFA_BOX_GetFillPath(CXFA_Box box, 1387 static void XFA_BOX_GetFillPath(CXFA_Box box,
1388 const CXFA_StrokeArray& strokes, 1388 const std::vector<CXFA_Stroke>& strokes,
1389 CFX_RectF rtWidget, 1389 CFX_RectF rtWidget,
1390 CFX_Path& fillPath, 1390 CFX_Path& fillPath,
1391 uint16_t dwFlags) { 1391 uint16_t dwFlags) {
1392 if (box.IsArc() || (dwFlags & XFA_DRAWBOX_ForceRound) != 0) { 1392 if (box.IsArc() || (dwFlags & XFA_DRAWBOX_ForceRound) != 0) {
1393 CXFA_Edge edge = box.GetEdge(0); 1393 CXFA_Edge edge = box.GetEdge(0);
1394 FX_FLOAT fThickness = edge.GetThickness(); 1394 FX_FLOAT fThickness = edge.GetThickness();
1395 if (fThickness < 0) { 1395 if (fThickness < 0) {
1396 fThickness = 0; 1396 fThickness = 0;
1397 } 1397 }
1398 FX_FLOAT fHalf = fThickness / 2; 1398 FX_FLOAT fHalf = fThickness / 2;
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
1624 break; 1624 break;
1625 default: 1625 default:
1626 break; 1626 break;
1627 } 1627 }
1628 CFX_Shading shading(ptStart, ptEnd, false, false, crStart, crEnd); 1628 CFX_Shading shading(ptStart, ptEnd, false, false, crStart, crEnd);
1629 CFX_Color cr(&shading); 1629 CFX_Color cr(&shading);
1630 pGS->SetFillColor(&cr); 1630 pGS->SetFillColor(&cr);
1631 pGS->FillPath(&fillPath, FXFILL_WINDING, pMatrix); 1631 pGS->FillPath(&fillPath, FXFILL_WINDING, pMatrix);
1632 } 1632 }
1633 static void XFA_BOX_Fill(CXFA_Box box, 1633 static void XFA_BOX_Fill(CXFA_Box box,
1634 const CXFA_StrokeArray& strokes, 1634 const std::vector<CXFA_Stroke>& strokes,
1635 CFX_Graphics* pGS, 1635 CFX_Graphics* pGS,
1636 const CFX_RectF& rtWidget, 1636 const CFX_RectF& rtWidget,
1637 CFX_Matrix* pMatrix, 1637 CFX_Matrix* pMatrix,
1638 uint32_t dwFlags) { 1638 uint32_t dwFlags) {
1639 CXFA_Fill fill = box.GetFill(); 1639 CXFA_Fill fill = box.GetFill();
1640 if (!fill || fill.GetPresence() != XFA_ATTRIBUTEENUM_Visible) { 1640 if (!fill || fill.GetPresence() != XFA_ATTRIBUTEENUM_Visible) {
1641 return; 1641 return;
1642 } 1642 }
1643 pGS->SaveGraphState(); 1643 pGS->SaveGraphState();
1644 CFX_Path fillPath; 1644 CFX_Path fillPath;
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
1863 CFX_RectF rt, 1863 CFX_RectF rt,
1864 FX_FLOAT fThickness, 1864 FX_FLOAT fThickness,
1865 CFX_Matrix* pMatrix) { 1865 CFX_Matrix* pMatrix) {
1866 FX_FLOAT fHalfWidth = fThickness / 2.0f; 1866 FX_FLOAT fHalfWidth = fThickness / 2.0f;
1867 XFA_Draw3DRect(pGS, rt, fThickness, pMatrix, 0xFF808080, 0xFF000000); 1867 XFA_Draw3DRect(pGS, rt, fThickness, pMatrix, 0xFF808080, 0xFF000000);
1868 CFX_RectF rtInner(rt); 1868 CFX_RectF rtInner(rt);
1869 rtInner.Deflate(fHalfWidth, fHalfWidth); 1869 rtInner.Deflate(fHalfWidth, fHalfWidth);
1870 XFA_Draw3DRect(pGS, rtInner, fHalfWidth, pMatrix, 0xFF000000, 0xFF808080); 1870 XFA_Draw3DRect(pGS, rtInner, fHalfWidth, pMatrix, 0xFF000000, 0xFF808080);
1871 } 1871 }
1872 static void XFA_BOX_Stroke_Rect(CXFA_Box box, 1872 static void XFA_BOX_Stroke_Rect(CXFA_Box box,
1873 const CXFA_StrokeArray& strokes, 1873 const std::vector<CXFA_Stroke>& strokes,
1874 CFX_Graphics* pGS, 1874 CFX_Graphics* pGS,
1875 CFX_RectF rtWidget, 1875 CFX_RectF rtWidget,
1876 CFX_Matrix* pMatrix) { 1876 CFX_Matrix* pMatrix) {
1877 bool bVisible = false; 1877 bool bVisible = false;
1878 FX_FLOAT fThickness = 0; 1878 FX_FLOAT fThickness = 0;
1879 int32_t i3DType = box.Get3DStyle(bVisible, fThickness); 1879 int32_t i3DType = box.Get3DStyle(bVisible, fThickness);
1880 if (i3DType) { 1880 if (i3DType) {
1881 if (!bVisible || fThickness < 0.001f) { 1881 if (!bVisible || fThickness < 0.001f) {
1882 return; 1882 return;
1883 } 1883 }
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1954 } 1954 }
1955 bool bEmpty = path.IsEmpty(); 1955 bool bEmpty = path.IsEmpty();
1956 if (!bEmpty) { 1956 if (!bEmpty) {
1957 if (bClose) { 1957 if (bClose) {
1958 path.Close(); 1958 path.Close();
1959 } 1959 }
1960 XFA_BOX_StrokePath(strokes[7], &path, pGS, pMatrix); 1960 XFA_BOX_StrokePath(strokes[7], &path, pGS, pMatrix);
1961 } 1961 }
1962 } 1962 }
1963 static void XFA_BOX_Stroke(CXFA_Box box, 1963 static void XFA_BOX_Stroke(CXFA_Box box,
1964 const CXFA_StrokeArray& strokes, 1964 const std::vector<CXFA_Stroke>& strokes,
1965 CFX_Graphics* pGS, 1965 CFX_Graphics* pGS,
1966 CFX_RectF rtWidget, 1966 CFX_RectF rtWidget,
1967 CFX_Matrix* pMatrix, 1967 CFX_Matrix* pMatrix,
1968 uint32_t dwFlags) { 1968 uint32_t dwFlags) {
1969 if (box.IsArc() || (dwFlags & XFA_DRAWBOX_ForceRound) != 0) { 1969 if (box.IsArc() || (dwFlags & XFA_DRAWBOX_ForceRound) != 0) {
1970 XFA_BOX_StrokeArc(box, pGS, rtWidget, pMatrix, dwFlags); 1970 XFA_BOX_StrokeArc(box, pGS, rtWidget, pMatrix, dwFlags);
1971 return; 1971 return;
1972 } 1972 }
1973 bool bVisible = false; 1973 bool bVisible = false;
1974 for (int32_t j = 0; j < 4; j++) { 1974 for (int32_t j = 0; j < 4; j++) {
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
2031 CFX_Matrix* pMatrix, 2031 CFX_Matrix* pMatrix,
2032 uint32_t dwFlags) { 2032 uint32_t dwFlags) {
2033 if (!box || box.GetPresence() != XFA_ATTRIBUTEENUM_Visible) 2033 if (!box || box.GetPresence() != XFA_ATTRIBUTEENUM_Visible)
2034 return; 2034 return;
2035 2035
2036 XFA_Element eType = box.GetElementType(); 2036 XFA_Element eType = box.GetElementType();
2037 if (eType != XFA_Element::Arc && eType != XFA_Element::Border && 2037 if (eType != XFA_Element::Arc && eType != XFA_Element::Border &&
2038 eType != XFA_Element::Rectangle) { 2038 eType != XFA_Element::Rectangle) {
2039 return; 2039 return;
2040 } 2040 }
2041 CXFA_StrokeArray strokes; 2041 std::vector<CXFA_Stroke> strokes;
2042 if (!(dwFlags & XFA_DRAWBOX_ForceRound) && eType != XFA_Element::Arc) { 2042 if (!(dwFlags & XFA_DRAWBOX_ForceRound) && eType != XFA_Element::Arc)
2043 box.GetStrokes(strokes); 2043 box.GetStrokes(&strokes);
2044 } 2044
2045 XFA_BOX_Fill(box, strokes, pGS, rtWidget, pMatrix, dwFlags); 2045 XFA_BOX_Fill(box, strokes, pGS, rtWidget, pMatrix, dwFlags);
2046 XFA_BOX_Stroke(box, strokes, pGS, rtWidget, pMatrix, dwFlags); 2046 XFA_BOX_Stroke(box, strokes, pGS, rtWidget, pMatrix, dwFlags);
2047 } 2047 }
2048 2048
2049 CXFA_CalcData::CXFA_CalcData() : m_iRefCount(0) {} 2049 CXFA_CalcData::CXFA_CalcData() : m_iRefCount(0) {}
2050 2050
2051 CXFA_CalcData::~CXFA_CalcData() { 2051 CXFA_CalcData::~CXFA_CalcData() {
2052 m_Globals.RemoveAll(); 2052 m_Globals.RemoveAll();
2053 } 2053 }
OLDNEW
« no previous file with comments | « xfa/fxfa/app/xfa_ffpageview.cpp ('k') | xfa/fxfa/parser/cxfa_box.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698