--- /dev/null
+////////////////////////////////////////////////////////////////////////////////
+// Name: mmsolve.h
+// Purpose: wxMMedia
+// Author: Guilhem Lavaux
+// Created: 1997
+// Updated: 1998
+// Copyright: (C) 1997, 1998, Guilhem Lavaux
+// License: wxWindows license
+////////////////////////////////////////////////////////////////////////////////
+#ifdef __GNUG__
+#pragma implementation
+#endif
+#include "mmsolve.h"
+
+wxMMediaFile *wxMediaFileSolve::ByExtension(const wxString& filename)
+{
+ wxMFileList *list = m_first;
+ wxString tmp, f_ext;
+ int pos = filename.Find('.', TRUE)+1;
+
+ tmp = filename;
+ f_ext = tmp(pos, filename.Length()-pos);
+
+ printf("f_ext = %s\n", f_ext.GetData());
+ while (list) {
+ printf("list->ext = %s\n", list->ext.GetData());
+ if (list->ext.CompareTo(f_ext) == 0) {
+ wxMMediaFile *mmf = list->creator();
+ return mmf;
+ }
+ list = list->next;
+ }
+ return NULL;
+}
+
+wxMMediaFile *wxMediaFileSolve::ByName(const wxString& name)
+{
+ wxMFileList *list = m_first;
+
+ while (list) {
+ if (list->name == name)
+ return (wxMMediaFile *)(list->creator());
+ list = list->next;
+ }
+ return NULL;
+}
+
+bool wxMatchMimeType(const wxString& mime_obj, const wxString& type)
+{
+#ifdef USE_GNU_WXSTRING
+ wxString mime2_obj = mime_obj;
+ wxString type2 = type;
+#define mime_obj mime2_obj
+#define type type2
+#endif
+
+ if (mime_obj.Find('*') != -1) {
+ wxString part_str1[2], part_str2[2];
+
+ part_str1[0] = mime_obj.Left('/');
+ part_str1[1] = mime_obj.After('/');
+
+ part_str2[0] = type.Left('/');
+ part_str2[1] = type.After('/');
+
+ if (part_str1[0] == "*" && part_str1[1] == "*")
+ return TRUE;
+
+ if (part_str1[0] == "*" && part_str1[1] == part_str2[1])
+ return TRUE;
+
+ if (part_str1[1] == "*" && part_str1[0] == part_str2[1])
+ return TRUE;
+
+ return FALSE;
+ }
+ if (mime_obj == type)
+ return TRUE;
+ return FALSE;
+}
+
+wxMMediaFile *wxMediaFileSolve::ByType(const wxString& type)
+{
+ wxMFileList *list = m_first;
+
+ while (list) {
+ if (wxMatchMimeType(*(list->mime_type), type))
+ return (wxMMediaFile *)(list->creator());
+ list = list->next;
+ }
+ return NULL;
+}
+
+void wxMediaFileSolve::ListMDevice(wxString*& names, wxUint8& devices)
+{
+ wxMFileList *list = m_first;
+ wxUint8 d = 0;
+
+ if (!m_devnum) {
+ names = NULL;
+ return;
+ }
+ devices = m_devnum;
+ names = new wxString[devices];
+
+ while (list) {
+ names[d++] = list->name;
+ list = list->next;
+ }
+}
+
+wxMMDfileRegister::wxMMDfileRegister(wxMediaFileCreator cbk,
+ char *mtype, char *ext, char *name)
+{
+ wxMediaFileSolve::wxMFileList *entry = new wxMediaFileSolve::wxMFileList;
+
+ entry->next = wxMediaFileSolve::m_first;
+ entry->creator = cbk;
+ entry->mime_type = wxString(mtype);
+ entry->name = wxString(name);
+ entry->ext = wxString(ext);
+ wxMediaFileSolve::m_devnum++;
+ wxMediaFileSolve::m_first = entry;
+}