KHtml

SMILTime.cpp
1 /*
2  * Copyright (C) 2008 Apple Inc. All Rights Reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25 
26 #if ENABLE(SVG)
27 #include "SMILTime.h"
28 
29 #include <float.h>
30 
31 using namespace WebCore;
32 
33 const double SMILTime::unresolvedValue = DBL_MAX;
34 // Just a big value smaller than DBL_MAX. Our times are relative to 0, we don't really need the full range.
35 const double SMILTime::indefiniteValue = FLT_MAX;
36 
37 SMILTime WebCore::operator+(const SMILTime &a, const SMILTime &b)
38 {
39  if (a.isUnresolved() || b.isUnresolved()) {
40  return SMILTime::unresolved();
41  }
42  if (a.isIndefinite() || b.isIndefinite()) {
43  return SMILTime::indefinite();
44  }
45  return a.value() + b.value();
46 }
47 
48 SMILTime WebCore::operator-(const SMILTime &a, const SMILTime &b)
49 {
50  if (a.isUnresolved() || b.isUnresolved()) {
51  return SMILTime::unresolved();
52  }
53  if (a.isIndefinite() || b.isIndefinite()) {
54  return SMILTime::indefinite();
55  }
56  return a.value() - b.value();
57 }
58 
59 SMILTime WebCore::operator*(const SMILTime &a, const SMILTime &b)
60 {
61  if (a.isUnresolved() || b.isUnresolved()) {
62  return SMILTime::unresolved();
63  }
64  if (a.value() == 0 || b.value() == 0) {
65  return SMILTime(0);
66  }
67  if (a.isIndefinite() || b.isIndefinite()) {
68  return SMILTime::indefinite();
69  }
70  return a.value() * b.value();
71 }
72 #endif
73 
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Sat Oct 16 2021 22:48:01 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.