contrib: rav1e: update to v0.4.1
[vlc.git] / modules / gui / skins2 / vars / time.hpp
1 /*****************************************************************************
2  * time.hpp
3  *****************************************************************************
4  * Copyright (C) 2003 the VideoLAN team
5  *
6  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
7  *          Olivier Teulière <ipkiss@via.ecp.fr>
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License along
20  * with this program; if not, write to the Free Software Foundation, Inc.,
21  * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22  *****************************************************************************/
23
24 #ifndef TIME_HPP
25 #define TIME_HPP
26
27 #include "../utils/var_percent.hpp"
28 #include <string>
29
30 /// Variable for VLC stream time
31 class StreamTime: public VarPercent
32 {
33 public:
34     StreamTime( intf_thread_t *pIntf ): VarPercent( pIntf ) { }
35     virtual ~StreamTime() { }
36
37     virtual void set( float percentage, bool updateVLC );
38
39     virtual void set( float percentage ) { set( percentage, true ); }
40
41     /// Return a string containing a value from 0 to 100
42     virtual std::string getAsStringPercent() const;
43     /// Return the current time formatted as a time display (h:mm:ss)
44     virtual std::string getAsStringCurrTime( bool bShortFormat = false ) const;
45     /// Return the time left formatted as a time display (h:mm:ss)
46     virtual std::string getAsStringTimeLeft( bool bShortFormat = false ) const;
47     /// Return the duration formatted as a time display (h:mm:ss)
48     virtual std::string getAsStringDuration( bool bShortFormat = false ) const;
49
50 private:
51     /// Convert a number of seconds into "h:mm:ss" format
52     std::string formatTime( int seconds, bool bShortFormat ) const;
53     /// Return true when there is a non-null input and its position is not 0.0.
54     bool havePosition() const;
55 };
56
57 #endif