1 /* 2 * Copyright (C) 2006, 2007, 2008 Apple Computer, Inc. All rights reserved. 3 * Copyright (C) 2007 Alp Toker <alp@atoker.com> 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 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 APPLE COMPUTER, INC. ``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 APPLE COMPUTER, INC. OR 18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 19 * EXEMPLARY, 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 THEORY 22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 */ 26 27 #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_CANVAS_CANVAS2D_CANVAS_GRADIENT_H_ 28 #define THIRD_PARTY_BLINK_RENDERER_MODULES_CANVAS_CANVAS2D_CANVAS_GRADIENT_H_ 29 30 #include "third_party/blink/renderer/modules/canvas/canvas2d/identifiability_study_helper.h" 31 #include "third_party/blink/renderer/modules/modules_export.h" 32 #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" 33 #include "third_party/blink/renderer/platform/graphics/gradient.h" 34 #include "third_party/blink/renderer/platform/heap/handle.h" 35 #include "third_party/blink/renderer/platform/wtf/forward.h" 36 37 namespace blink { 38 39 class ExceptionState; 40 41 class MODULES_EXPORT CanvasGradient final : public ScriptWrappable { 42 DEFINE_WRAPPERTYPEINFO(); 43 44 public: 45 // Linear Gradient 46 CanvasGradient(const FloatPoint& p0, const FloatPoint& p1); 47 // Radial Gradient 48 CanvasGradient(const FloatPoint& p0, 49 float r0, 50 const FloatPoint& p1, 51 float r1); 52 // Conic Gradient 53 CanvasGradient(float startAngle, const FloatPoint& center); 54 GetGradient()55 Gradient* GetGradient() const { return gradient_.get(); } 56 57 void addColorStop(double value, const String& color, ExceptionState&); 58 59 IdentifiableToken GetIdentifiableToken() const; 60 61 private: 62 scoped_refptr<Gradient> gradient_; 63 IdentifiabilityStudyHelper identifiability_study_helper_; 64 }; 65 66 } // namespace blink 67 68 #endif // THIRD_PARTY_BLINK_RENDERER_MODULES_CANVAS_CANVAS2D_CANVAS_GRADIENT_H_ 69