diff options
Diffstat (limited to 'Source/WebCore/html/TimeRanges.h')
-rw-r--r-- | Source/WebCore/html/TimeRanges.h | 105 |
1 files changed, 26 insertions, 79 deletions
diff --git a/Source/WebCore/html/TimeRanges.h b/Source/WebCore/html/TimeRanges.h index 72233be83..893c7935e 100644 --- a/Source/WebCore/html/TimeRanges.h +++ b/Source/WebCore/html/TimeRanges.h @@ -10,10 +10,10 @@ * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR @@ -23,98 +23,45 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef TimeRanges_h -#define TimeRanges_h +#pragma once -#include <algorithm> -#include <wtf/PassRefPtr.h> -#include <wtf/RefCounted.h> -#include <wtf/Vector.h> +#include "ExceptionOr.h" +#include "PlatformTimeRanges.h" namespace WebCore { -typedef int ExceptionCode; - class TimeRanges : public RefCounted<TimeRanges> { public: - static PassRefPtr<TimeRanges> create() - { - return adoptRef(new TimeRanges); - } - static PassRefPtr<TimeRanges> create(double start, double end) - { - return adoptRef(new TimeRanges(start, end)); - } - - PassRefPtr<TimeRanges> copy() const; - void invert(); - void intersectWith(const TimeRanges*); - void unionWith(const TimeRanges*); + WEBCORE_EXPORT static Ref<TimeRanges> create(); + WEBCORE_EXPORT static Ref<TimeRanges> create(double start, double end); + static Ref<TimeRanges> create(const PlatformTimeRanges&); - unsigned length() const { return m_ranges.size(); } - double start(unsigned index, ExceptionCode&) const; - double end(unsigned index, ExceptionCode&) const; + WEBCORE_EXPORT ExceptionOr<double> start(unsigned index) const; + WEBCORE_EXPORT ExceptionOr<double> end(unsigned index) const; - void add(double start, double end); + WEBCORE_EXPORT Ref<TimeRanges> copy() const; + void invert(); + WEBCORE_EXPORT void intersectWith(const TimeRanges&); + void unionWith(const TimeRanges&); - bool contain(double time) const; + WEBCORE_EXPORT unsigned length() const; - size_t find(double time) const; + WEBCORE_EXPORT void add(double start, double end); + bool contain(double time) const; - double nearest(double time) const; - + size_t find(double time) const; + WEBCORE_EXPORT double nearest(double time) const; double totalDuration() const; -private: - TimeRanges() { } - TimeRanges(double start, double end); - TimeRanges(const TimeRanges&); - - // We consider all the Ranges to be semi-bounded as follow: [start, end[ - struct Range { - Range() { } - Range(double start, double end) - { - m_start = start; - m_end = end; - } - double m_start; - double m_end; - - inline bool isPointInRange(double point) const - { - return m_start <= point && point < m_end; - } - - inline bool isOverlappingRange(const Range& range) const - { - return isPointInRange(range.m_start) || isPointInRange(range.m_end) || range.isPointInRange(m_start); - } - - inline bool isContiguousWithRange(const Range& range) const - { - return range.m_start == m_end || range.m_end == m_start; - } - - inline Range unionWithOverlappingOrContiguousRange(const Range& range) const - { - Range ret; + const PlatformTimeRanges& ranges() const { return m_ranges; } + PlatformTimeRanges& ranges() { return m_ranges; } - ret.m_start = std::min(m_start, range.m_start); - ret.m_end = std::max(m_end, range.m_end); - - return ret; - } +private: + WEBCORE_EXPORT TimeRanges(); + WEBCORE_EXPORT TimeRanges(double start, double end); + explicit TimeRanges(const PlatformTimeRanges&); - inline bool isBeforeRange(const Range& range) const - { - return range.m_start >= m_end; - } - }; - - Vector<Range> m_ranges; + PlatformTimeRanges m_ranges; }; } // namespace WebCore - -#endif |