diff --git a/aegisub/build/aegisub_vs2008/aegisub_vs2008.vcproj b/aegisub/build/aegisub_vs2008/aegisub_vs2008.vcproj index bce166e1e..5342cf9b8 100644 --- a/aegisub/build/aegisub_vs2008/aegisub_vs2008.vcproj +++ b/aegisub/build/aegisub_vs2008/aegisub_vs2008.vcproj @@ -611,6 +611,14 @@ RelativePath="..\..\src\mkv_wrap.h" > + + + + diff --git a/aegisub/src/Makefile.am b/aegisub/src/Makefile.am index fff9beeda..5102961a2 100644 --- a/aegisub/src/Makefile.am +++ b/aegisub/src/Makefile.am @@ -250,6 +250,7 @@ aegisub_2_2_SOURCES = \ mythes.cxx \ options.cpp \ plugin_manager.cpp \ + quicktime_common.cpp \ scintilla_text_ctrl.cpp \ spellchecker.cpp \ spline.cpp \ diff --git a/aegisub/src/quicktime_common.cpp b/aegisub/src/quicktime_common.cpp new file mode 100644 index 000000000..7a7214a81 --- /dev/null +++ b/aegisub/src/quicktime_common.cpp @@ -0,0 +1,62 @@ +// Copyright (c) 2009, Karl Blomster +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Aegisub Group nor the names of its contributors +// may be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// ----------------------------------------------------------------------------- +// +// AEGISUB +// +// Website: http://aegisub.cellosoft.com +// Contact: mailto:zeratul@cellosoft.com +// + + +#include +#include "config.h" + +#ifdef WITH_QUICKTIME +#include "quicktime_common.h" + + +void QuickTimeProvider::wxStringToDataRef(const wxString &string, Handle *dataref, OSType *dataref_type) { + // convert filename, first to a CFStringRef... + wxString wx_filename = wxFileName(string).GetShortPath(); + CFStringRef qt_filename = CFStringCreateWithCString(NULL, wx_filename.utf8_str(), kCFStringEncodingUTF8); + + // and then to a data reference + OSErr qt_err = QTNewDataReferenceFromFullPathCFString(qt_filename, kQTNativeDefaultPathStyle, 0, + dataref, dataref_type); + QTCheckError(qt_err, wxString(_T("Failed to convert filename to data reference"))); +} + + +void QuickTimeProvider::QTCheckError(OSErr err, wxString errmsg) { + if (err != noErr) + throw errmsg; + /* CheckError(err, errmsg.c_str()); // I wonder if this actually works on Mac, and if so, what it does */ +} + +#endif /* WITH_QUICKTIME */ diff --git a/aegisub/src/quicktime_common.h b/aegisub/src/quicktime_common.h new file mode 100644 index 000000000..08cf7d434 --- /dev/null +++ b/aegisub/src/quicktime_common.h @@ -0,0 +1,73 @@ +// Copyright (c) 2009, Karl Blomster +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Aegisub Group nor the names of its contributors +// may be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// ----------------------------------------------------------------------------- +// +// AEGISUB +// +// Website: http://aegisub.cellosoft.com +// Contact: mailto:zeratul@cellosoft.com +// + + +#pragma once + +#include "config.h" +#include + +#ifdef WITH_QUICKTIME + +#ifdef _MSC_VER +// avoid conflicts between MSVC's stdint.h and QT's stdint.h +#define _STDINT_H +// get MSVC to shut up about a macro redefinition in QT's ConditionalMacros.h +#pragma warning(disable: 4004) +#endif + +#include "include/aegisub/aegisub.h" +extern "C" { +#ifdef WIN32 +#include +#include +#include +#include +#else +#include // not sure about this path, someone on mac needs to test it +#endif +} + + +class QuickTimeProvider { +public: + void wxStringToDataRef(const wxString &string, Handle *dataref, OSType *dataref_type); + void QTCheckError(OSErr err, wxString errmsg); + + virtual ~QuickTimeProvider() {}; +}; + +#endif /* WITH_QUICKTIME */ +