]> git.saurik.com Git - wxWidgets.git/blob - utils/wxMMedia/mmsolve.h
fixed somebody's poorly done StreamSize-->GetSize transition
[wxWidgets.git] / utils / wxMMedia / mmsolve.h
1 // /////////////////////////////////////////////////////////////////////////////
2 // Name: mmsolve.h
3 // Purpose: wxMMedia
4 // Author: Guilhem Lavaux
5 // Created: 1997
6 // Updated: 1998
7 // Copyright: (C) 1997, 1998, Guilhem Lavaux
8 // License: wxWindows license
9 // /////////////////////////////////////////////////////////////////////////////
10 #ifndef __MMD_solve_H__
11 #define __MMD_solve_H__
12 #ifdef __GNUG__
13 #pragma interface
14 #endif
15
16 #ifdef WX_PRECOMP
17 #include "wx/wxprec.h"
18 #else
19 #include "wx/wx.h"
20 #endif
21 #include "mmfile.h"
22
23 /** @name Solver classes */
24 //@{
25
26 typedef wxMMediaFile *(*wxMediaFileCreator)();
27
28 /** wxMediaFileSolve is a class to do name resolution on multimedia files
29 * @memo Multimedia file solver
30 * @author Guilhem Lavaux
31 */
32 class WXDLLEXPORT wxMediaFileSolve : public wxObject {
33 protected:
34 typedef struct wxMFileList {
35 wxMediaFileCreator creator;
36 wxString mime_type, name, ext;
37 wxMFileList *next;
38 } wxMFileList;
39
40 static wxMFileList *m_first;
41 static wxUint8 m_devnum;
42
43 friend class wxMMDfileRegister;
44 public:
45 wxMediaFileSolve() : wxObject() {}
46 ~wxMediaFileSolve() {}
47
48 /** It resolves using the extension of the specified filename
49 * @memo
50 * @return the multimedia codec
51 * @param filename
52 */
53 static wxMMediaFile *ByExtension(const wxString& filename);
54
55 /** It resolves using the real name of a codec
56 * @memo
57 * @return the multimedia codec
58 * @param devname
59 */
60 static wxMMediaFile *ByName(const wxString& devname);
61
62 /** It resolves using a mime type
63 * @memo
64 * @return the multimedia codec
65 * @param mimetype
66 */
67 static wxMMediaFile *ByType(const wxString& mimetype);
68
69 /** It lists all codecs currently registered in "names". "names" is allocated
70 * by it and devices returns the number of codecs the list contains
71 * @memo
72 * @return nothing
73 * @param names an array
74 * @param devices
75 */
76 static void ListMDevice(wxString*& names, wxUint8& devices);
77 };
78
79 ///
80 class wxMMDfileRegister {
81 public:
82 ///
83 wxMMDfileRegister(wxMediaFileCreator cbk, char *mtype, char *ext, char *name);
84 };
85
86 #define MMD_REGISTER_FILE(mtype, name, class, ext) \
87 static wxMMediaFile *wxMediaFileConstructor_##class() { return new class(); } \
88 wxMMDfileRegister mmd_##class(wxMediaFileConstructor_##class, mtype, ext, name);
89
90 //@}
91
92 #endif