1 /*****************************************************************************
3 *****************************************************************************
4 * Copyright (C) 2003 VideoLAN
5 * $Id: time.cpp,v 1.1 2004/01/03 23:31:34 asmax Exp $
7 * Authors: Cyril Deguet <asmax@via.ecp.fr>
8 * Olivier Teulière <ipkiss@via.ecp.fr>
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
23 *****************************************************************************/
25 #include <stdio.h> // snprintf
28 #include <vlc/input.h>
31 void Time::set( double percentage, bool updateVLC )
33 if( getIntf()->p_sys->p_input == NULL )
38 VarPercent::set( percentage );
40 // Avoid looping forever...
44 pos.f_float = percentage;
46 var_Set( getIntf()->p_sys->p_input, "position", pos );
51 string Time::getAsStringPercent() const
53 int value = (int)(100. * get());
54 // 0 <= value <= 100, so we need 4 chars
55 char *str = new char[4];
56 snprintf( str, 4, "%d", value );
64 string Time::getAsStringTime() const
66 if( getIntf()->p_sys->p_input == NULL ||
67 !getIntf()->p_sys->p_input->stream.b_seekable )
73 char *psz_time = new char[MSTRTIME_MAX_SIZE];
74 var_Get( getIntf()->p_sys->p_input, "time", &time );
76 int i_seconds = time.i_time / 1000000;
77 snprintf( psz_time, MSTRTIME_MAX_SIZE, "%d:%02d:%02d",
78 (int) (i_seconds / (60 * 60)),
79 (int) (i_seconds / 60 % 60),
80 (int) (i_seconds % 60) );
82 string ret = psz_time;