18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 2dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Copyright (C) 2008 Alex Mathews <possessedpenguinbob@gmail.com> 3dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org> 4dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Copyright (C) 2004, 2005 Rob Buis <buis@kde.org> 5dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Copyright (C) 2005 Eric Seidel <eric@webkit.org> 6dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * 7dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * This library is free software; you can redistribute it and/or 8dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * modify it under the terms of the GNU Library General Public 9dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * License as published by the Free Software Foundation; either 10dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * version 2 of the License, or (at your option) any later version. 11dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * 12dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * This library is distributed in the hope that it will be useful, 13dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * but WITHOUT ANY WARRANTY; without even the implied warranty of 14dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Library General Public License for more details. 16dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * 17dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * You should have received a copy of the GNU Library General Public License 18dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * along with this library; see the file COPYING.LIB. If not, write to 19dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 20dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Boston, MA 02110-1301, USA. 21dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch */ 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 23bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#ifndef SpotLightSource_h 24bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#define SpotLightSource_h 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 26bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#if ENABLE(FILTERS) 27bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#include "LightSource.h" 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 316c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenclass SpotLightSource : public LightSource { 326c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenpublic: 336c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen static PassRefPtr<SpotLightSource> create(const FloatPoint3D& position, 346c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen const FloatPoint3D& direction, float specularExponent, float limitingConeAngle) 356c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen { 366c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen return adoptRef(new SpotLightSource(position, direction, specularExponent, limitingConeAngle)); 376c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen } 386c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 396c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen const FloatPoint3D& position() const { return m_position; } 402fc2651226baac27029e38c9d6ef883fa32084dbSteve Block bool setX(float); 412fc2651226baac27029e38c9d6ef883fa32084dbSteve Block bool setY(float); 422fc2651226baac27029e38c9d6ef883fa32084dbSteve Block bool setZ(float); 436c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen const FloatPoint3D& direction() const { return m_direction; } 442fc2651226baac27029e38c9d6ef883fa32084dbSteve Block bool setPointsAtX(float); 452fc2651226baac27029e38c9d6ef883fa32084dbSteve Block bool setPointsAtY(float); 462fc2651226baac27029e38c9d6ef883fa32084dbSteve Block bool setPointsAtZ(float); 476c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 486c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen float specularExponent() const { return m_specularExponent; } 492fc2651226baac27029e38c9d6ef883fa32084dbSteve Block bool setSpecularExponent(float); 506c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen float limitingConeAngle() const { return m_limitingConeAngle; } 512fc2651226baac27029e38c9d6ef883fa32084dbSteve Block bool setLimitingConeAngle(float); 526c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 536c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen virtual void initPaintingData(PaintingData&); 546c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen virtual void updatePaintingData(PaintingData&, int x, int y, float z); 556c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 566c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen virtual TextStream& externalRepresentation(TextStream&) const; 576c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 586c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenprivate: 596c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen SpotLightSource(const FloatPoint3D& position, const FloatPoint3D& direction, 606c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen float specularExponent, float limitingConeAngle) 616c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen : LightSource(LS_SPOT) 626c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen , m_position(position) 636c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen , m_direction(direction) 646c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen , m_specularExponent(specularExponent) 656c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen , m_limitingConeAngle(limitingConeAngle) 666c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen { 676c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen } 686c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 696c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen FloatPoint3D m_position; 706c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen FloatPoint3D m_direction; 716c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 726c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen float m_specularExponent; 736c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen float m_limitingConeAngle; 746c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen}; 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 78bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#endif // ENABLE(FILTERS) 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 80bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#endif // SpotLightSource_h 81