KHTML
SMILTime.h
Go to the documentation of this file.
00001 /* 00002 * Copyright (C) 2008 Apple Inc. All Rights Reserved. 00003 * 00004 * Redistribution and use in source and binary forms, with or without 00005 * modification, are permitted provided that the following conditions 00006 * are met: 00007 * 1. Redistributions of source code must retain the above copyright 00008 * notice, this list of conditions and the following disclaimer. 00009 * 2. Redistributions in binary form must reproduce the above copyright 00010 * notice, this list of conditions and the following disclaimer in the 00011 * documentation and/or other materials provided with the distribution. 00012 * 00013 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 00014 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00015 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00016 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 00017 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00018 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00019 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00020 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 00021 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00022 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00023 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00024 */ 00025 00026 #ifndef SMILTime_h 00027 #define SMILTime_h 00028 00029 #if ENABLE(SVG) 00030 00031 #include <algorithm> 00032 00033 namespace WebCore { 00034 00035 class SMILTime { 00036 public: 00037 SMILTime() : m_time(0) { } 00038 SMILTime(double time) : m_time(time) { } 00039 SMILTime(const SMILTime& o) : m_time(o.m_time) { } 00040 00041 static SMILTime unresolved() { return unresolvedValue; } 00042 static SMILTime indefinite() { return indefiniteValue; } 00043 00044 SMILTime& operator=(const SMILTime& o) { m_time = o.m_time; return *this; } 00045 double value() const { return m_time; } 00046 00047 bool isFinite() const { return m_time < indefiniteValue; } 00048 bool isIndefinite() const { return m_time == indefiniteValue; } 00049 bool isUnresolved() const { return m_time == unresolvedValue; } 00050 00051 private: 00052 static const double unresolvedValue; 00053 static const double indefiniteValue; 00054 00055 double m_time; 00056 }; 00057 00058 inline bool operator==(const SMILTime& a, const SMILTime& b) { return a.isFinite() && a.value() == b.value(); } 00059 inline bool operator!=(const SMILTime& a, const SMILTime& b) { return !operator==(a, b); } 00060 inline bool operator>(const SMILTime& a, const SMILTime& b) { return a.value() > b.value(); } 00061 inline bool operator<(const SMILTime& a, const SMILTime& b) { return a.value() < b.value(); } 00062 inline bool operator>=(const SMILTime& a, const SMILTime& b) { return a.value() > b.value() || operator==(a, b); } 00063 inline bool operator<=(const SMILTime& a, const SMILTime& b) { return a.value() < b.value() || operator==(a, b); } 00064 00065 inline SMILTime max(const SMILTime& a, const SMILTime& b) { return std::max(a.value(), b.value()); } 00066 inline SMILTime min(const SMILTime& a, const SMILTime& b) { return std::min(a.value(), b.value()); } 00067 SMILTime operator+(const SMILTime&, const SMILTime&); 00068 SMILTime operator-(const SMILTime&, const SMILTime&); 00069 // So multiplying times does not make too much sense but SMIL defines it for duration * repeatCount 00070 SMILTime operator*(const SMILTime&, const SMILTime&); 00071 } 00072 00073 #endif 00074 #endif
KDE 4.6 API Reference