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

Side by Side Diff: Source/core/svg/SVGPathParser.cpp

Issue 678163002: Oilpan: move SVG property hierarchy to the heap. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebased upto r185213 Created 6 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/svg/SVGPathParser.h ('k') | Source/core/svg/SVGPathSeg.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 /* 1 /*
2 * Copyright (C) 2002, 2003 The Karbon Developers 2 * Copyright (C) 2002, 2003 The Karbon Developers
3 * Copyright (C) 2006 Alexander Kellett <lypanov@kde.org> 3 * Copyright (C) 2006 Alexander Kellett <lypanov@kde.org>
4 * Copyright (C) 2006, 2007 Rob Buis <buis@kde.org> 4 * Copyright (C) 2006, 2007 Rob Buis <buis@kde.org>
5 * Copyright (C) 2007, 2009 Apple Inc. All rights reserved. 5 * Copyright (C) 2007, 2009 Apple Inc. All rights reserved.
6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 15 matching lines...) Expand all
26 26
27 #include "core/svg/SVGPathSource.h" 27 #include "core/svg/SVGPathSource.h"
28 #include "platform/transforms/AffineTransform.h" 28 #include "platform/transforms/AffineTransform.h"
29 #include "wtf/MathExtras.h" 29 #include "wtf/MathExtras.h"
30 30
31 static const float gOneOverThree = 1 / 3.f; 31 static const float gOneOverThree = 1 / 3.f;
32 32
33 namespace blink { 33 namespace blink {
34 34
35 SVGPathParser::SVGPathParser() 35 SVGPathParser::SVGPathParser()
36 : m_consumer(0) 36 : m_source(nullptr)
37 , m_consumer(nullptr)
37 { 38 {
38 } 39 }
39 40
41 void SVGPathParser::trace(Visitor* visitor)
42 {
43 visitor->trace(m_source);
44 visitor->trace(m_consumer);
45 }
46
40 void SVGPathParser::parseClosePathSegment() 47 void SVGPathParser::parseClosePathSegment()
41 { 48 {
42 // Reset m_currentPoint for the next path. 49 // Reset m_currentPoint for the next path.
43 if (m_pathParsingMode == NormalizedParsing) 50 if (m_pathParsingMode == NormalizedParsing)
44 m_currentPoint = m_subPathPoint; 51 m_currentPoint = m_subPathPoint;
45 m_closePath = true; 52 m_closePath = true;
46 m_consumer->closePath(); 53 m_consumer->closePath();
47 } 54 }
48 55
49 bool SVGPathParser::parseMoveToSegment() 56 bool SVGPathParser::parseMoveToSegment()
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 402
396 return false; 403 return false;
397 } 404 }
398 405
399 void SVGPathParser::cleanup() 406 void SVGPathParser::cleanup()
400 { 407 {
401 ASSERT(m_source); 408 ASSERT(m_source);
402 ASSERT(m_consumer); 409 ASSERT(m_consumer);
403 410
404 m_consumer->cleanup(); 411 m_consumer->cleanup();
405 m_source = 0; 412 m_source = nullptr;
406 m_consumer = 0; 413 m_consumer = nullptr;
407 } 414 }
408 415
409 // This works by converting the SVG arc to "simple" beziers. 416 // This works by converting the SVG arc to "simple" beziers.
410 // Partly adapted from Niko's code in kdelibs/kdecore/svgicons. 417 // Partly adapted from Niko's code in kdelibs/kdecore/svgicons.
411 // See also SVG implementation notes: http://www.w3.org/TR/SVG/implnote.html#Arc ConversionEndpointToCenter 418 // See also SVG implementation notes: http://www.w3.org/TR/SVG/implnote.html#Arc ConversionEndpointToCenter
412 bool SVGPathParser::decomposeArcToCubic(float angle, float rx, float ry, FloatPo int& point1, FloatPoint& point2, bool largeArcFlag, bool sweepFlag) 419 bool SVGPathParser::decomposeArcToCubic(float angle, float rx, float ry, FloatPo int& point1, FloatPoint& point2, bool largeArcFlag, bool sweepFlag)
413 { 420 {
414 FloatSize midPointDistance = point1 - point2; 421 FloatSize midPointDistance = point1 - point2;
415 midPointDistance.scale(0.5f); 422 midPointDistance.scale(0.5f);
416 423
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 point2 = targetPoint; 493 point2 = targetPoint;
487 point2.move(t * sinEndTheta, -t * cosEndTheta); 494 point2.move(t * sinEndTheta, -t * cosEndTheta);
488 495
489 m_consumer->curveToCubic(pointTransform.mapPoint(point1), pointTransform .mapPoint(point2), 496 m_consumer->curveToCubic(pointTransform.mapPoint(point1), pointTransform .mapPoint(point2),
490 pointTransform.mapPoint(targetPoint), AbsoluteC oordinates); 497 pointTransform.mapPoint(targetPoint), AbsoluteC oordinates);
491 } 498 }
492 return true; 499 return true;
493 } 500 }
494 501
495 } 502 }
OLDNEW
« no previous file with comments | « Source/core/svg/SVGPathParser.h ('k') | Source/core/svg/SVGPathSeg.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698