1998-11-09 13:37:38 -05:00
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// 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];
|
|
|
|
|
1999-01-14 09:33:56 -05:00
|
|
|
part_str1[0] = mime_obj.BeforeFirst('/');
|
|
|
|
part_str1[1] = mime_obj.AfterFirst('/');
|
1998-11-09 13:37:38 -05:00
|
|
|
|
1999-01-14 09:33:56 -05:00
|
|
|
part_str2[0] = type.BeforeFirst('/');
|
|
|
|
part_str2[1] = type.AfterFirst('/');
|
1998-11-09 13:37:38 -05:00
|
|
|
|
|
|
|
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;
|
|
|
|
}
|