1 /* 2 * Copyright (C) 2012, 2013 Adobe Systems Incorporated. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY 15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE 18 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 19 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 23 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 24 * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 */ 27 28 #ifndef DOMPath_h 29 #define DOMPath_h 30 31 #include "bindings/v8/ScriptWrappable.h" 32 #include "core/html/canvas/CanvasPathMethods.h" 33 #include "core/svg/SVGPathUtilities.h" 34 #include "wtf/PassRefPtr.h" 35 #include "wtf/RefCounted.h" 36 37 namespace WebCore { 38 39 class DOMPath : public RefCounted<DOMPath>, public CanvasPathMethods, public ScriptWrappable { 40 WTF_MAKE_NONCOPYABLE(DOMPath); WTF_MAKE_FAST_ALLOCATED; 41 public: 42 static PassRefPtr<DOMPath> create() { return adoptRef(new DOMPath); } 43 static PassRefPtr<DOMPath> create(const String& pathData) { return adoptRef(new DOMPath(pathData)); } 44 static PassRefPtr<DOMPath> create(DOMPath* path) { return adoptRef(new DOMPath(path)); } 45 46 static PassRefPtr<DOMPath> create(const Path& path) { return adoptRef(new DOMPath(path)); } 47 48 const Path& path() const { return m_path; } 49 50 virtual ~DOMPath() { } 51 private: 52 DOMPath() : CanvasPathMethods() 53 { 54 ScriptWrappable::init(this); 55 } 56 57 DOMPath(const Path& path) 58 : CanvasPathMethods() 59 { 60 ScriptWrappable::init(this); 61 m_path = path; 62 } 63 64 DOMPath(DOMPath* path) 65 : CanvasPathMethods() 66 { 67 ScriptWrappable::init(this); 68 m_path = path->path(); 69 } 70 71 DOMPath(const String& pathData) 72 : CanvasPathMethods() 73 { 74 ScriptWrappable::init(this); 75 buildPathFromString(pathData, m_path); 76 } 77 }; 78 79 } 80 #endif 81