]> 4ch.mooo.com Git - 16.git/blob - 16/adplug/adplug/src/imf.h
compy4 sync
[16.git] / 16 / adplug / adplug / src / imf.h
1 /*
2  * Adplug - Replayer for many OPL2/OPL3 audio file formats.
3  * Copyright (C) 1999 - 2005 Simon Peter <dn.tlp@gmx.net>, et al.
4  * 
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  * 
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  * 
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  *
19  * imf.h - IMF Player by Simon Peter <dn.tlp@gmx.net>
20  */
21
22 #ifndef H_ADPLUG_IMFPLAYER
23 #define H_ADPLUG_IMFPLAYER
24
25 #include "player.h"
26
27 class CimfPlayer: public CPlayer
28 {
29 public:
30   static CPlayer *factory(Copl *newopl);
31
32         CimfPlayer(Copl *newopl)
33           : CPlayer(newopl), footer(0), data(0)
34           { }
35         ~CimfPlayer()
36           { if(data) delete [] data; if(footer) delete [] footer; };
37
38         bool load(const std::string &filename, const CFileProvider &fp);
39         bool update();
40         void rewind(int subsong);
41         float getrefresh()
42           { return timer; };
43
44         std::string gettype()
45           { return std::string("IMF File Format"); }
46         std::string gettitle();
47         std::string getauthor()
48           { return author_name; }
49         std::string getdesc();
50
51 protected:
52         unsigned long   pos, size;
53         unsigned short  del;
54         bool            songend;
55         float           rate, timer;
56         char            *footer;
57         std::string     track_name, game_name, author_name, remarks;
58
59         struct Sdata {
60                 unsigned char   reg, val;
61                 unsigned short  time;
62         } *data;
63
64 private:
65         float getrate(const std::string &filename, const CFileProvider &fp, binistream *f);
66 };
67
68 #endif