1f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick/* 2f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * Copyright (C) 2007 Eric Seidel <eric@webkit.org> 3f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * Copyright (C) Research In Motion Limited 2010. All rights reserved. 4f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * 5f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * This library is free software; you can redistribute it and/or 6f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * modify it under the terms of the GNU Library General Public 7f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * License as published by the Free Software Foundation; either 8f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * version 2 of the License, or (at your option) any later version. 9f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * 10f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * This library is distributed in the hope that it will be useful, 11f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * but WITHOUT ANY WARRANTY; without even the implied warranty of 12f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * Library General Public License for more details. 14f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * 15f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * You should have received a copy of the GNU Library General Public License 16f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * along with this library; see the file COPYING.LIB. If not, write to 17f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 18f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * Boston, MA 02110-1301, USA. 19f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick */ 20f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 21f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#ifndef SVGPathTraversalStateBuilder_h 22f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#define SVGPathTraversalStateBuilder_h 23f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 24f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#if ENABLE(SVG) 25f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include "FloatPoint.h" 26f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include "PathTraversalState.h" 27f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include "SVGPathConsumer.h" 28f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 29f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merricknamespace WebCore { 30f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 31f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickclass SVGPathTraversalStateBuilder : public SVGPathConsumer { 32f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickpublic: 33f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick SVGPathTraversalStateBuilder(); 34f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 35f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick unsigned long pathSegmentIndex(); 36f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick void setCurrentTraversalState(PathTraversalState* traversalState) { m_traversalState = traversalState; } 37f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick void setDesiredLength(float); 38f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick virtual void incrementPathSegmentCount(); 39f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick virtual bool continueConsuming(); 40f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick virtual void cleanup() { m_traversalState = 0; } 41f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 42f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickprivate: 43f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick // Used in UnalteredParisng/NormalizedParsing modes. 44f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick virtual void moveTo(const FloatPoint&, bool closed, PathCoordinateMode); 45f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick virtual void lineTo(const FloatPoint&, PathCoordinateMode); 46f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick virtual void curveToCubic(const FloatPoint&, const FloatPoint&, const FloatPoint&, PathCoordinateMode); 47f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick virtual void closePath(); 48f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 49f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrickprivate: 50f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick // Not used for PathTraversalState. 51f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick virtual void lineToHorizontal(float, PathCoordinateMode) { ASSERT_NOT_REACHED(); } 52f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick virtual void lineToVertical(float, PathCoordinateMode) { ASSERT_NOT_REACHED(); } 53f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick virtual void curveToCubicSmooth(const FloatPoint&, const FloatPoint&, PathCoordinateMode) { ASSERT_NOT_REACHED(); } 54f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick virtual void curveToQuadratic(const FloatPoint&, const FloatPoint&, PathCoordinateMode) { ASSERT_NOT_REACHED(); } 55f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick virtual void curveToQuadraticSmooth(const FloatPoint&, PathCoordinateMode) { ASSERT_NOT_REACHED(); } 56f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick virtual void arcTo(float, float, float, bool, bool, const FloatPoint&, PathCoordinateMode) { ASSERT_NOT_REACHED(); } 57f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 58f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick PathTraversalState* m_traversalState; 59f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick float m_desiredLength; 60f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick}; 61f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 62f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick} // namespace WebCore 63f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 64f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#endif // ENABLE(SVG) 65f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#endif // SVGPathTraversalStateBuilder_h 66