147 lines
5.2 KiB
C++
147 lines
5.2 KiB
C++
//-*****************************************************************************
|
|
//
|
|
// Copyright (c) 2012-2016,
|
|
// Sony Pictures Imageworks Inc. and
|
|
// Industrial Light & Magic, a division of Lucasfilm Entertainment Company Ltd.
|
|
//
|
|
// 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 Sony Pictures Imageworks, nor
|
|
// Industrial Light & Magic, nor the names of their 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.
|
|
//
|
|
//-*****************************************************************************
|
|
|
|
#include <Foundation.h>
|
|
|
|
using namespace boost::python;
|
|
|
|
//-*****************************************************************************
|
|
static Abc::OArchive CreateArchiveWithInfoWrapper(
|
|
const std::string &iFileName,
|
|
const std::string &iApplicationWriter,
|
|
const std::string &iUserDescription,
|
|
const Abc::Argument &iArg0,
|
|
const Abc::Argument &iArg1,
|
|
bool asOgawa = true )
|
|
{
|
|
if ( asOgawa == true )
|
|
{
|
|
return Abc::CreateArchiveWithInfo(
|
|
::Alembic::AbcCoreOgawa::WriteArchive(),
|
|
iFileName,
|
|
iApplicationWriter,
|
|
iUserDescription,
|
|
iArg0,
|
|
iArg1 );
|
|
}
|
|
else
|
|
{
|
|
#ifdef ALEMBIC_WITH_HDF5
|
|
return Abc::CreateArchiveWithInfo(
|
|
::Alembic::AbcCoreHDF5::WriteArchive(),
|
|
iFileName,
|
|
iApplicationWriter,
|
|
iUserDescription,
|
|
iArg0,
|
|
iArg1 );
|
|
#else
|
|
throwPythonException( "Unsupported core type: HDF5" );
|
|
#endif
|
|
}
|
|
|
|
return Abc::OArchive();
|
|
}
|
|
|
|
//-*****************************************************************************
|
|
static dict GetArchiveInfoWrapper( Abc::IArchive& iArchive )
|
|
{
|
|
std::string appName;
|
|
std::string libraryVersionString;
|
|
AbcU::uint32_t libraryVersion;
|
|
std::string whenWritten;
|
|
std::string userDescription;
|
|
double dccFPS;
|
|
|
|
Abc::GetArchiveInfo( iArchive,
|
|
appName,
|
|
libraryVersionString,
|
|
libraryVersion,
|
|
whenWritten,
|
|
userDescription,
|
|
dccFPS );
|
|
dict info;
|
|
info["appName"] = appName;
|
|
info["libraryVersionString"] = libraryVersionString;
|
|
info["libraryVersion"] = libraryVersion;
|
|
info["whenWritten"] = whenWritten;
|
|
info["userDescription"] = userDescription;
|
|
if ( dccFPS > 0.0 )
|
|
{
|
|
info["dccFPS"] = dccFPS;
|
|
}
|
|
|
|
return info;
|
|
}
|
|
|
|
//-*****************************************************************************
|
|
static tuple GetArchiveStartAndEndTimeWrapper( Abc::IArchive& iArchive )
|
|
{
|
|
double oStart;
|
|
double oEnd;
|
|
Abc::GetArchiveStartAndEndTime( iArchive, oStart, oEnd );
|
|
|
|
return make_tuple( oStart, oEnd );
|
|
}
|
|
|
|
//-*****************************************************************************
|
|
void register_archiveinfo()
|
|
{
|
|
def( "CreateArchiveWithInfo",
|
|
CreateArchiveWithInfoWrapper,
|
|
( arg( "fileName" ), arg( "ApplicationWriter" ),
|
|
arg( "UserDescription" ), arg( "argument" ) = Abc::Argument(),
|
|
arg( "argument" ) = Abc::Argument(), arg( "asOgawa" ) = true ),
|
|
"Create an OArchive with the passed arguments" );
|
|
def( "GetArchiveInfo",
|
|
GetArchiveInfoWrapper,
|
|
( arg( "IArchive" ) ),
|
|
"Return a dictionary that contains info of the given IArchive" );
|
|
def( "GetArchiveStartAndEndTime",
|
|
GetArchiveStartAndEndTimeWrapper,
|
|
( arg( "IArchive" ) ),
|
|
"Return tuple of start and end time for the IArchive using only the "
|
|
"TimeSamplings" );
|
|
|
|
def( "GetLibraryVersionShort",
|
|
AbcA::GetLibraryVersionShort,
|
|
"Return the version number of Alembic Library and date built in a "
|
|
"string"
|
|
);
|
|
def( "GetLibraryVersion",
|
|
AbcA::GetLibraryVersion,
|
|
"Return the version number of Alembic Library in a string" );
|
|
}
|