18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 2dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Copyright (C) 2004, 2005, 2008 Nikolas Zimmermann <zimmermann@kde.org> 3dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Copyright (C) 2004, 2005, 2006, 2007 Rob Buis <buis@kde.org> 4dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * 5dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * This library is free software; you can redistribute it and/or 6dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * modify it under the terms of the GNU Library General Public 7dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * License as published by the Free Software Foundation; either 8dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * version 2 of the License, or (at your option) any later version. 9dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * 10dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * This library is distributed in the hope that it will be useful, 11dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * but WITHOUT ANY WARRANTY; without even the implied warranty of 12dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Library General Public License for more details. 14dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * 15dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * You should have received a copy of the GNU Library General Public License 16dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * along with this library; see the file COPYING.LIB. If not, write to 17dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 18dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Boston, MA 02110-1301, USA. 19dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch */ 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef SVGTransformable_h 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define SVGTransformable_h 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG) 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "PlatformString.h" 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "SVGLocatable.h" 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "SVGTransformList.h" 28dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include <wtf/Forward.h> 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 328a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Blockclass AffineTransform; 338a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Blockclass SVGTransform; 348a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Blockclass QualifiedName; 358a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block 368a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Blockclass SVGTransformable : virtual public SVGLocatable { 378a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Blockpublic: 388a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block enum TransformParsingMode { 398a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block ClearList, 408a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block DoNotClearList 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }; 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual ~SVGTransformable(); 4481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 456b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner static bool parseTransformAttribute(SVGTransformList&, const AtomicString& transform); 466b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner static bool parseTransformAttribute(SVGTransformList&, const UChar*& ptr, const UChar* end, TransformParsingMode mode = ClearList); 478a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block static bool parseTransformValue(unsigned type, const UChar*& ptr, const UChar* end, SVGTransform&); 48dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 49dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual AffineTransform localCoordinateSpaceTransform(SVGLocatable::CTMScope) const { return animatedLocalTransform(); } 508a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block virtual AffineTransform animatedLocalTransform() const = 0; 518a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block 528a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block bool isKnownAttribute(const QualifiedName&); 538a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block}; 548a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ENABLE(SVG) 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // SVGTransformable_h 59