22 #include <Alembic/Abc/All.h>
23 #include <Alembic/AbcGeom/All.h>
34 using Alembic::Abc::chrono_t;
41 class AbcObjectReader;
54 void split(
const std::string &s,
const char delim, std::vector<std::string> &tokens);
56 template<
class TContainer>
bool begins_with(
const TContainer &input,
const TContainer &match)
58 return input.size() >= match.size() && std::equal(match.begin(), match.end(), input.begin());
61 template<
typename Schema>
64 const Alembic::Abc::TimeSamplingPtr &time_samp = schema.getTimeSampling();
66 if (!schema.isConstant()) {
67 const size_t num_samps = schema.getNumSamples();
70 const chrono_t min_time = time_samp->getSampleTime(0);
73 const chrono_t max_time = time_samp->getSampleTime(num_samps - 1);
79 template<
typename Schema>
87 const Alembic::AbcGeom::IObject &parent =
object.getParent();
88 if (parent.valid() && Alembic::AbcGeom::IXform::matches(parent.getMetaData())) {
89 Alembic::AbcGeom::IXform xform(parent, Alembic::AbcGeom::kWrapExisting);
94 bool has_property(
const Alembic::Abc::ICompoundProperty &prop,
const std::string &name);
97 const Alembic::AbcCoreAbstract::TimeSamplingPtr &time_sampling,
99 Alembic::AbcGeom::index_t &i0,
100 Alembic::AbcGeom::index_t &
i1);
106 #undef ABC_DEBUG_TIME
109 const char *m_message;
117 #ifdef ABC_DEBUG_TIME
118 # define SCOPE_TIMER(message) ScopeTimer prof(message)
120 # define SCOPE_TIMER(message)
135 std::ostringstream m_stream;
141 std::string
str()
const;
152 std::ostringstream &
stream();
155 #define ABC_LOG(logger) logger.stream()
160 std::ostream &
operator<<(std::ostream &os,
const SimpleLogger &logger);
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint i1
ScopeTimer(const char *message)
std::ostringstream & stream()
static void get_weight_and_index(CDStreamConfig &config, Alembic::AbcCoreAbstract::TimeSamplingPtr time_sampling, size_t samples_number)
bool begins_with(const TContainer &input, const TContainer &match)
void get_min_max_time(const Alembic::AbcGeom::IObject &object, const Schema &schema, chrono_t &min, chrono_t &max)
std::string get_valid_abc_name(const char *name)
std::ostream & operator<<(std::ostream &os, const SimpleLogger &logger)
std::string get_object_dag_path_name(const Object *const ob, Object *dupli_parent)
get_object_dag_path_name returns the name under which the object will be exported in the Alembic file...
std::string get_id_name(const Object *const ob)
Imath::M44d convert_matrix_datatype(float mat[4][4])
bool has_property(const Alembic::Abc::ICompoundProperty &prop, const std::string &name)
void get_min_max_time_ex(const Schema &schema, chrono_t &min, chrono_t &max)
AbcObjectReader * create_reader(const Alembic::AbcGeom::IObject &object, ImportSettings &settings)
void split(const std::string &s, const char delim, std::vector< std::string > &tokens)
The CacheReader struct is only used for anonymous pointers, to interface between C and C++ code....