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