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

Side by Side Diff: core/src/fxge/ge/fx_ge_path.cpp

Issue 1513363002: Remove CFX_AffineMatrix/CPDF_Matrix (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Nits Created 5 years 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 | « core/src/fxge/ge/fx_ge_device.cpp ('k') | core/src/fxge/ge/fx_ge_ps.cpp » ('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 "core/include/fxcrt/fx_system.h" 7 #include "core/include/fxcrt/fx_system.h"
8 #include "core/include/fxge/fx_ge.h" 8 #include "core/include/fxge/fx_ge.h"
9 #include "third_party/base/numerics/safe_math.h" 9 #include "third_party/base/numerics/safe_math.h"
10 10
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 } 149 }
150 SetPointCount(nPoints); 150 SetPointCount(nPoints);
151 } 151 }
152 void CFX_PathData::AddPointCount(int addPoints) { 152 void CFX_PathData::AddPointCount(int addPoints) {
153 pdfium::base::CheckedNumeric<int> safe_new_count = m_PointCount; 153 pdfium::base::CheckedNumeric<int> safe_new_count = m_PointCount;
154 safe_new_count += addPoints; 154 safe_new_count += addPoints;
155 int new_count = safe_new_count.ValueOrDie(); 155 int new_count = safe_new_count.ValueOrDie();
156 AllocPointCount(new_count); 156 AllocPointCount(new_count);
157 m_PointCount = new_count; 157 m_PointCount = new_count;
158 } 158 }
159 void CFX_PathData::Append(const CFX_PathData* pSrc, 159 void CFX_PathData::Append(const CFX_PathData* pSrc, const CFX_Matrix* pMatrix) {
160 const CFX_AffineMatrix* pMatrix) {
161 int old_count = m_PointCount; 160 int old_count = m_PointCount;
162 AddPointCount(pSrc->m_PointCount); 161 AddPointCount(pSrc->m_PointCount);
163 FXSYS_memcpy(m_pPoints + old_count, pSrc->m_pPoints, 162 FXSYS_memcpy(m_pPoints + old_count, pSrc->m_pPoints,
164 pSrc->m_PointCount * sizeof(FX_PATHPOINT)); 163 pSrc->m_PointCount * sizeof(FX_PATHPOINT));
165 if (pMatrix) { 164 if (pMatrix) {
166 for (int i = 0; i < pSrc->m_PointCount; i++) { 165 for (int i = 0; i < pSrc->m_PointCount; i++) {
167 pMatrix->Transform(m_pPoints[old_count + i].m_PointX, 166 pMatrix->Transform(m_pPoints[old_count + i].m_PointX,
168 m_pPoints[old_count + i].m_PointY); 167 m_pPoints[old_count + i].m_PointY);
169 } 168 }
170 } 169 }
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 FX_FLOAT middle_y = m_pPoints[iMiddlePoint].m_PointY; 376 FX_FLOAT middle_y = m_pPoints[iMiddlePoint].m_PointY;
378 _UpdateLineJoinPoints(rect, start_x, start_y, middle_x, middle_y, end_x, 377 _UpdateLineJoinPoints(rect, start_x, start_y, middle_x, middle_y, end_x,
379 end_y, half_width, miter_limit); 378 end_y, half_width, miter_limit);
380 } else { 379 } else {
381 _UpdateLineEndPoints(rect, start_x, start_y, end_x, end_y, half_width); 380 _UpdateLineEndPoints(rect, start_x, start_y, end_x, end_y, half_width);
382 } 381 }
383 iPoint++; 382 iPoint++;
384 } 383 }
385 return rect; 384 return rect;
386 } 385 }
387 void CFX_PathData::Transform(const CFX_AffineMatrix* pMatrix) { 386 void CFX_PathData::Transform(const CFX_Matrix* pMatrix) {
388 if (pMatrix == NULL) { 387 if (pMatrix == NULL) {
389 return; 388 return;
390 } 389 }
391 for (int i = 0; i < m_PointCount; i++) { 390 for (int i = 0; i < m_PointCount; i++) {
392 pMatrix->Transform(m_pPoints[i].m_PointX, m_pPoints[i].m_PointY); 391 pMatrix->Transform(m_pPoints[i].m_PointX, m_pPoints[i].m_PointY);
393 } 392 }
394 } 393 }
395 FX_BOOL CFX_PathData::GetZeroAreaPath(CFX_PathData& NewPath, 394 FX_BOOL CFX_PathData::GetZeroAreaPath(CFX_PathData& NewPath,
396 CFX_AffineMatrix* pMatrix, 395 CFX_Matrix* pMatrix,
397 FX_BOOL& bThin, 396 FX_BOOL& bThin,
398 FX_BOOL bAdjust) const { 397 FX_BOOL bAdjust) const {
399 if (m_PointCount < 3) { 398 if (m_PointCount < 3) {
400 return FALSE; 399 return FALSE;
401 } 400 }
402 if (m_PointCount == 3 && (m_pPoints[0].m_Flag & FXPT_TYPE) == FXPT_MOVETO && 401 if (m_PointCount == 3 && (m_pPoints[0].m_Flag & FXPT_TYPE) == FXPT_MOVETO &&
403 (m_pPoints[1].m_Flag & FXPT_TYPE) == FXPT_LINETO && 402 (m_pPoints[1].m_Flag & FXPT_TYPE) == FXPT_LINETO &&
404 (m_pPoints[2].m_Flag & FXPT_TYPE) == FXPT_LINETO && 403 (m_pPoints[2].m_Flag & FXPT_TYPE) == FXPT_LINETO &&
405 m_pPoints[0].m_PointX == m_pPoints[2].m_PointX && 404 m_pPoints[0].m_PointX == m_pPoints[2].m_PointX &&
406 m_pPoints[0].m_PointY == m_pPoints[2].m_PointY) { 405 m_pPoints[0].m_PointY == m_pPoints[2].m_PointY) {
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 if ((m_pPoints[i].m_Flag & FXPT_TYPE) != FXPT_LINETO) { 555 if ((m_pPoints[i].m_Flag & FXPT_TYPE) != FXPT_LINETO) {
557 return FALSE; 556 return FALSE;
558 } 557 }
559 if (m_pPoints[i].m_PointX != m_pPoints[i - 1].m_PointX && 558 if (m_pPoints[i].m_PointX != m_pPoints[i - 1].m_PointX &&
560 m_pPoints[i].m_PointY != m_pPoints[i - 1].m_PointY) { 559 m_pPoints[i].m_PointY != m_pPoints[i - 1].m_PointY) {
561 return FALSE; 560 return FALSE;
562 } 561 }
563 } 562 }
564 return m_PointCount == 5 || (m_pPoints[3].m_Flag & FXPT_CLOSEFIGURE); 563 return m_PointCount == 5 || (m_pPoints[3].m_Flag & FXPT_CLOSEFIGURE);
565 } 564 }
566 FX_BOOL CFX_PathData::IsRect(const CFX_AffineMatrix* pMatrix, 565 FX_BOOL CFX_PathData::IsRect(const CFX_Matrix* pMatrix,
567 CFX_FloatRect* pRect) const { 566 CFX_FloatRect* pRect) const {
568 if (pMatrix == NULL) { 567 if (pMatrix == NULL) {
569 if (!IsRect()) { 568 if (!IsRect()) {
570 return FALSE; 569 return FALSE;
571 } 570 }
572 if (pRect) { 571 if (pRect) {
573 pRect->left = m_pPoints[0].m_PointX; 572 pRect->left = m_pPoints[0].m_PointX;
574 pRect->right = m_pPoints[2].m_PointX; 573 pRect->right = m_pPoints[2].m_PointX;
575 pRect->bottom = m_pPoints[0].m_PointY; 574 pRect->bottom = m_pPoints[0].m_PointY;
576 pRect->top = m_pPoints[2].m_PointY; 575 pRect->top = m_pPoints[2].m_PointY;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
649 } 648 }
650 void CFX_GraphStateData::SetDashCount(int count) { 649 void CFX_GraphStateData::SetDashCount(int count) {
651 FX_Free(m_DashArray); 650 FX_Free(m_DashArray);
652 m_DashArray = NULL; 651 m_DashArray = NULL;
653 m_DashCount = count; 652 m_DashCount = count;
654 if (count == 0) { 653 if (count == 0) {
655 return; 654 return;
656 } 655 }
657 m_DashArray = FX_Alloc(FX_FLOAT, count); 656 m_DashArray = FX_Alloc(FX_FLOAT, count);
658 } 657 }
OLDNEW
« no previous file with comments | « core/src/fxge/ge/fx_ge_device.cpp ('k') | core/src/fxge/ge/fx_ge_ps.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698