12fc2651226baac27029e38c9d6ef883fa32084dbSteve Block/* 22fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Copyright (C) 2004, 2005, 2006, 2007 Nikolas Zimmermann <zimmermann@kde.org> 32fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Copyright (C) 2004, 2005 Rob Buis <buis@kde.org> 42fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Copyright (C) 2005 Eric Seidel <eric@webkit.org> 52fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Copyright (C) 2010 Zoltan Herczeg <zherczeg@webkit.org> 62fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Copyright (C) 2011 University of Szeged 72fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Copyright (C) 2011 Renata Hodovan <reni@webkit.org> 82fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 92fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Redistribution and use in source and binary forms, with or without 102fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * modification, are permitted provided that the following conditions 112fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * are met: 122fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 1. Redistributions of source code must retain the above copyright 132fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * notice, this list of conditions and the following disclaimer. 142fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 2. Redistributions in binary form must reproduce the above copyright 152fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * notice, this list of conditions and the following disclaimer in the 162fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * documentation and/or other materials provided with the distribution. 172fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 182fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF SZEGED ``AS IS'' AND ANY 192fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 202fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 212fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL UNIVERSITY OF SZEGED OR 222fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 232fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 242fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 252fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 262fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 272fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 282fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 292fc2651226baac27029e38c9d6ef883fa32084dbSteve Block */ 302fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 312fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "config.h" 322fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 332fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(FILTERS) 342fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "DistantLightSource.h" 352fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 362fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "RenderTreeAsText.h" 372fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 382fc2651226baac27029e38c9d6ef883fa32084dbSteve Blocknamespace WebCore { 392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 402fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid DistantLightSource::initPaintingData(PaintingData& paintingData) 412fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 422fc2651226baac27029e38c9d6ef883fa32084dbSteve Block float azimuth = deg2rad(m_azimuth); 432fc2651226baac27029e38c9d6ef883fa32084dbSteve Block float elevation = deg2rad(m_elevation); 442fc2651226baac27029e38c9d6ef883fa32084dbSteve Block paintingData.lightVector.setX(cosf(azimuth) * cosf(elevation)); 452fc2651226baac27029e38c9d6ef883fa32084dbSteve Block paintingData.lightVector.setY(sinf(azimuth) * cosf(elevation)); 462fc2651226baac27029e38c9d6ef883fa32084dbSteve Block paintingData.lightVector.setZ(sinf(elevation)); 472fc2651226baac27029e38c9d6ef883fa32084dbSteve Block paintingData.lightVectorLength = 1; 482fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 492fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 502fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid DistantLightSource::updatePaintingData(PaintingData&, int, int, float) 512fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 522fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 532fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 542fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockbool DistantLightSource::setAzimuth(float azimuth) 552fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 562fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (m_azimuth == azimuth) 572fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return false; 582fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_azimuth = azimuth; 592fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return true; 602fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 612fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 622fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockbool DistantLightSource::setElevation(float elevation) 632fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 642fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (m_elevation == elevation) 652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return false; 662fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_elevation = elevation; 672fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return true; 682fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 692fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 702fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockTextStream& DistantLightSource::externalRepresentation(TextStream& ts) const 712fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 722fc2651226baac27029e38c9d6ef883fa32084dbSteve Block ts << "[type=DISTANT-LIGHT] "; 732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block ts << "[azimuth=\"" << azimuth() << "\"]"; 742fc2651226baac27029e38c9d6ef883fa32084dbSteve Block ts << "[elevation=\"" << elevation() << "\"]"; 752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return ts; 762fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 772fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 782fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} // namespace WebCore 792fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 802fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif // ENABLE(FILTERS) 81