Home | History | Annotate | Download | only in filters
      1 /*
      2  * Copyright (C) 2008 Alex Mathews <possessedpenguinbob (at) gmail.com>
      3  * Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann (at) kde.org>
      4  * Copyright (C) 2004, 2005 Rob Buis <buis (at) kde.org>
      5  * Copyright (C) 2005 Eric Seidel <eric (at) webkit.org>
      6  *
      7  * This library is free software; you can redistribute it and/or
      8  * modify it under the terms of the GNU Library General Public
      9  * License as published by the Free Software Foundation; either
     10  * version 2 of the License, or (at your option) any later version.
     11  *
     12  * This library is distributed in the hope that it will be useful,
     13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     15  * Library General Public License for more details.
     16  *
     17  * You should have received a copy of the GNU Library General Public License
     18  * along with this library; see the file COPYING.LIB.  If not, write to
     19  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
     20  * Boston, MA 02110-1301, USA.
     21  */
     22 
     23 #ifndef SpotLightSource_h
     24 #define SpotLightSource_h
     25 
     26 #if ENABLE(FILTERS)
     27 #include "LightSource.h"
     28 
     29 namespace WebCore {
     30 
     31 class SpotLightSource : public LightSource {
     32 public:
     33     static PassRefPtr<SpotLightSource> create(const FloatPoint3D& position,
     34         const FloatPoint3D& direction, float specularExponent, float limitingConeAngle)
     35     {
     36         return adoptRef(new SpotLightSource(position, direction, specularExponent, limitingConeAngle));
     37     }
     38 
     39     const FloatPoint3D& position() const { return m_position; }
     40     bool setX(float);
     41     bool setY(float);
     42     bool setZ(float);
     43     const FloatPoint3D& direction() const { return m_direction; }
     44     bool setPointsAtX(float);
     45     bool setPointsAtY(float);
     46     bool setPointsAtZ(float);
     47 
     48     float specularExponent() const { return m_specularExponent; }
     49     bool setSpecularExponent(float);
     50     float limitingConeAngle() const { return m_limitingConeAngle; }
     51     bool setLimitingConeAngle(float);
     52 
     53     virtual void initPaintingData(PaintingData&);
     54     virtual void updatePaintingData(PaintingData&, int x, int y, float z);
     55 
     56     virtual TextStream& externalRepresentation(TextStream&) const;
     57 
     58 private:
     59     SpotLightSource(const FloatPoint3D& position, const FloatPoint3D& direction,
     60         float specularExponent, float limitingConeAngle)
     61         : LightSource(LS_SPOT)
     62         , m_position(position)
     63         , m_direction(direction)
     64         , m_specularExponent(specularExponent)
     65         , m_limitingConeAngle(limitingConeAngle)
     66     {
     67     }
     68 
     69     FloatPoint3D m_position;
     70     FloatPoint3D m_direction;
     71 
     72     float m_specularExponent;
     73     float m_limitingConeAngle;
     74 };
     75 
     76 } // namespace WebCore
     77 
     78 #endif // ENABLE(FILTERS)
     79 
     80 #endif // SpotLightSource_h
     81