LCOV - code coverage report
Current view: top level - dom/smil - nsSMILTimeValue.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 42 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 16 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
       2             : /* vim: set ts=8 sts=2 et sw=2 tw=80: */
       3             : /* This Source Code Form is subject to the terms of the Mozilla Public
       4             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       5             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       6             : 
       7             : #ifndef NS_SMILTIMEVALUE_H_
       8             : #define NS_SMILTIMEVALUE_H_
       9             : 
      10             : #include "nsSMILTypes.h"
      11             : #include "nsDebug.h"
      12             : 
      13             : /*----------------------------------------------------------------------
      14             :  * nsSMILTimeValue class
      15             :  *
      16             :  * A tri-state time value.
      17             :  *
      18             :  * First a quick overview of the SMIL time data types:
      19             :  *
      20             :  * nsSMILTime          -- a timestamp in milliseconds.
      21             :  * nsSMILTimeValue     -- (this class) a timestamp that can take the additional
      22             :  *                        states 'indefinite' and 'unresolved'
      23             :  * nsSMILInstanceTime  -- an nsSMILTimeValue used for constructing intervals. It
      24             :  *                        contains additional fields to govern reset behavior
      25             :  *                        and track timing dependencies (e.g. syncbase timing).
      26             :  * nsSMILInterval      -- a pair of nsSMILInstanceTimes that defines a begin and
      27             :  *                        an end time for animation.
      28             :  * nsSMILTimeValueSpec -- a component of a begin or end attribute, such as the
      29             :  *                        '5s' or 'a.end+2m' in begin="5s; a.end+2m". Acts as
      30             :  *                        a broker between an nsSMILTimedElement and its
      31             :  *                        nsSMILInstanceTimes by generating new instance times
      32             :  *                        and handling changes to existing times.
      33             :  *
      34             :  * Objects of this class may be in one of three states:
      35             :  *
      36             :  * 1) The time is resolved and has a definite millisecond value
      37             :  * 2) The time is resolved and indefinite
      38             :  * 3) The time is unresolved
      39             :  *
      40             :  * In summary:
      41             :  *
      42             :  * State      | GetMillis       | IsDefinite | IsIndefinite | IsResolved
      43             :  * -----------+-----------------+------------+--------------+------------
      44             :  * Definite   | nsSMILTimeValue | true       | false        | true
      45             :  * -----------+-----------------+------------+--------------+------------
      46             :  * Indefinite | --              | false      | true         | true
      47             :  * -----------+-----------------+------------+--------------+------------
      48             :  * Unresolved | --              | false      | false        | false
      49             :  *
      50             :  */
      51             : 
      52             : class nsSMILTimeValue
      53             : {
      54             : public:
      55             :   // Creates an unresolved time value
      56           0 :   nsSMILTimeValue()
      57           0 :   : mMilliseconds(kUnresolvedMillis),
      58           0 :     mState(STATE_UNRESOLVED)
      59           0 :   { }
      60             : 
      61             :   // Creates a resolved time value
      62           0 :   explicit nsSMILTimeValue(nsSMILTime aMillis)
      63           0 :   : mMilliseconds(aMillis),
      64           0 :     mState(STATE_DEFINITE)
      65           0 :   { }
      66             : 
      67             :   // Named constructor to create an indefinite time value
      68           0 :   static nsSMILTimeValue Indefinite()
      69             :   {
      70           0 :     nsSMILTimeValue value;
      71           0 :     value.SetIndefinite();
      72           0 :     return value;
      73             :   }
      74             : 
      75           0 :   bool IsIndefinite() const { return mState == STATE_INDEFINITE; }
      76           0 :   void SetIndefinite()
      77             :   {
      78           0 :     mState = STATE_INDEFINITE;
      79           0 :     mMilliseconds = kUnresolvedMillis;
      80           0 :   }
      81             : 
      82           0 :   bool IsResolved() const { return mState != STATE_UNRESOLVED; }
      83           0 :   void SetUnresolved()
      84             :   {
      85           0 :     mState = STATE_UNRESOLVED;
      86           0 :     mMilliseconds = kUnresolvedMillis;
      87           0 :   }
      88             : 
      89           0 :   bool IsDefinite() const { return mState == STATE_DEFINITE; }
      90           0 :   nsSMILTime GetMillis() const
      91             :   {
      92           0 :     MOZ_ASSERT(mState == STATE_DEFINITE,
      93             :                "GetMillis() called for unresolved or indefinite time");
      94             : 
      95           0 :     return mState == STATE_DEFINITE ? mMilliseconds : kUnresolvedMillis;
      96             :   }
      97             : 
      98           0 :   void SetMillis(nsSMILTime aMillis)
      99             :   {
     100           0 :     mState = STATE_DEFINITE;
     101           0 :     mMilliseconds = aMillis;
     102           0 :   }
     103             : 
     104             :   int8_t CompareTo(const nsSMILTimeValue& aOther) const;
     105             : 
     106           0 :   bool operator==(const nsSMILTimeValue& aOther) const
     107           0 :   { return CompareTo(aOther) == 0; }
     108             : 
     109           0 :   bool operator!=(const nsSMILTimeValue& aOther) const
     110           0 :   { return CompareTo(aOther) != 0; }
     111             : 
     112           0 :   bool operator<(const nsSMILTimeValue& aOther) const
     113           0 :   { return CompareTo(aOther) < 0; }
     114             : 
     115           0 :   bool operator>(const nsSMILTimeValue& aOther) const
     116           0 :   { return CompareTo(aOther) > 0; }
     117             : 
     118           0 :   bool operator<=(const nsSMILTimeValue& aOther) const
     119           0 :   { return CompareTo(aOther) <= 0; }
     120             : 
     121           0 :   bool operator>=(const nsSMILTimeValue& aOther) const
     122           0 :   { return CompareTo(aOther) >= 0; }
     123             : 
     124             : private:
     125             :   static const nsSMILTime kUnresolvedMillis;
     126             : 
     127             :   nsSMILTime mMilliseconds;
     128             :   enum {
     129             :     STATE_DEFINITE,
     130             :     STATE_INDEFINITE,
     131             :     STATE_UNRESOLVED
     132             :   } mState;
     133             : };
     134             : 
     135             : #endif // NS_SMILTIMEVALUE_H_

Generated by: LCOV version 1.13