Replace PassRef with Ref/Ref&& across the board.
[WebKit-https.git] / Source / WebCore / platform / graphics / Gradient.h
index 265e982..a421346 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007, 2008, 2011, 2012, 2013 Apple Inc. All rights reserved.
  * Copyright (C) 2007 Alp Toker <alp@atoker.com>
  * Copyright (C) 2008 Torch Mobile, Inc.
  *
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
  *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
@@ -30,9 +30,9 @@
 
 #include "AffineTransform.h"
 #include "FloatPoint.h"
-#include "Generator.h"
 #include "GraphicsTypes.h"
 #include <wtf/PassRefPtr.h>
+#include <wtf/RefCounted.h>
 #include <wtf/Vector.h>
 
 #if USE(CG)
@@ -42,21 +42,9 @@ typedef struct CGContext* CGContextRef;
 typedef struct CGGradient* CGGradientRef;
 typedef CGGradientRef PlatformGradient;
 
-#elif PLATFORM(QT)
-QT_BEGIN_NAMESPACE
-class QGradient;
-QT_END_NAMESPACE
-typedef QGradient* PlatformGradient;
 #elif USE(CAIRO)
 typedef struct _cairo_pattern cairo_pattern_t;
 typedef cairo_pattern_t* PlatformGradient;
-#elif USE(SKIA)
-class SkShader;
-typedef class SkShader* PlatformGradient;
-typedef class SkShader* PlatformPattern;
-#elif PLATFORM(WX)
-class wxGraphicsBrush;
-typedef wxGraphicsBrush* PlatformGradient;
 #else
 typedef void* PlatformGradient;
 #endif
@@ -64,24 +52,25 @@ typedef void* PlatformGradient;
 namespace WebCore {
 
     class Color;
+    class FloatRect;
+    class GraphicsContext;
 
-    class Gradient : public Generator {
+    class Gradient : public RefCounted<Gradient> {
     public:
-        static PassRefPtr<Gradient> create(const FloatPoint& p0, const FloatPoint& p1)
+        static Ref<Gradient> create(const FloatPoint& p0, const FloatPoint& p1)
         {
-            return adoptRef(new Gradient(p0, p1));
+            return adoptRef(*new Gradient(p0, p1));
         }
-        static PassRefPtr<Gradient> create(const FloatPoint& p0, float r0, const FloatPoint& p1, float r1, float aspectRatio = 1)
+        static Ref<Gradient> create(const FloatPoint& p0, float r0, const FloatPoint& p1, float r1, float aspectRatio = 1)
         {
-            return adoptRef(new Gradient(p0, r0, p1, r1, aspectRatio));
+            return adoptRef(*new Gradient(p0, r0, p1, r1, aspectRatio));
         }
-        virtual ~Gradient();
+        WEBCORE_EXPORT ~Gradient();
 
         struct ColorStop;
-        void addColorStop(const ColorStop&);
-        void addColorStop(float, const Color&);
+        WEBCORE_EXPORT void addColorStop(const ColorStop&);
+        WEBCORE_EXPORT void addColorStop(float, const Color&);
 
-        void getColor(float value, float* r, float* g, float* b, float* a) const;
         bool hasAlpha() const;
 
         bool isRadial() const { return m_radial; }
@@ -135,7 +124,7 @@ namespace WebCore {
 
         float aspectRatio() const { return m_aspectRatio; }
 
-#if OS(WINCE) && !PLATFORM(QT)
+#if USE(WINGDI)
         const Vector<ColorStop, 2>& getStops() const;
 #else
         PlatformGradient platformGradient();
@@ -160,12 +149,12 @@ namespace WebCore {
         // Qt and CG transform the gradient at draw time
         AffineTransform gradientSpaceTransform() { return m_gradientSpaceTransformation; }
 
-        virtual void fill(GraphicsContext*, const FloatRect&);
-        virtual void adjustParametersForTiledDrawing(IntSize& size, FloatRect& srcRect);
+        void fill(GraphicsContext*, const FloatRect&);
+        void adjustParametersForTiledDrawing(FloatSize&, FloatRect&);
 
         void setPlatformGradientSpaceTransform(const AffineTransform& gradientSpaceTransformation);
 
-        virtual unsigned hash() const OVERRIDE;
+        unsigned hash() const;
         void invalidateHash() { m_cachedHash = 0; }
 
 #if USE(CG)
@@ -176,13 +165,12 @@ namespace WebCore {
 #endif
 
     private:
-        Gradient(const FloatPoint& p0, const FloatPoint& p1);
+        WEBCORE_EXPORT Gradient(const FloatPoint& p0, const FloatPoint& p1);
         Gradient(const FloatPoint& p0, float r0, const FloatPoint& p1, float r1, float aspectRatio);
 
         void platformInit() { m_gradient = 0; }
         void platformDestroy();
 
-        int findStop(float value) const;
         void sortStopsIfNecessary();
 
         // Keep any parameters relevant to rendering in sync with the structure in Gradient::hash().
@@ -194,7 +182,6 @@ namespace WebCore {
         float m_aspectRatio; // For elliptical gradient, width / height.
         mutable Vector<ColorStop, 2> m_stops;
         mutable bool m_stopsSorted;
-        mutable int m_lastStop;
         GradientSpreadMethod m_spreadMethod;
         AffineTransform m_gradientSpaceTransformation;