コード例 #1
0
ファイル: tcb.c プロジェクト: MTolba/mrpt
/*!
 * \ingroup tcb
 */
Lib3dsBool
lib3ds_tcb_write(Lib3dsTcb *tcb, Lib3dsIo *io)
{
    lib3ds_io_write_intd(io, tcb->frame);
    lib3ds_io_write_word(io, tcb->flags);
    if (tcb->flags&LIB3DS_USE_TENSION) {
        lib3ds_io_write_float(io, tcb->tens);
    }
    if (tcb->flags&LIB3DS_USE_CONTINUITY) {
        lib3ds_io_write_float(io, tcb->cont);
    }
    if (tcb->flags&LIB3DS_USE_BIAS) {
        lib3ds_io_write_float(io, tcb->bias);
    }
    if (tcb->flags&LIB3DS_USE_EASE_TO) {
        lib3ds_io_write_float(io, tcb->ease_to);
    }
    if (tcb->flags&LIB3DS_USE_EASE_FROM) {
        lib3ds_io_write_float(io, tcb->ease_from);
    }
    if (lib3ds_io_error(io)) {
        return(LIB3DS_FALSE);
    }
    return(LIB3DS_TRUE);
}
コード例 #2
0
ファイル: tcb.c プロジェクト: MTolba/mrpt
/*!
 * \ingroup tcb
 */
Lib3dsBool
lib3ds_tcb_read(Lib3dsTcb *tcb, Lib3dsIo *io)
{
    Lib3dsWord flags;

    tcb->frame=lib3ds_io_read_intd(io);
    tcb->flags=flags=lib3ds_io_read_word(io);
    if (flags&LIB3DS_USE_TENSION) {
        tcb->tens=lib3ds_io_read_float(io);
    }
    if (flags&LIB3DS_USE_CONTINUITY) {
        tcb->cont=lib3ds_io_read_float(io);
    }
    if (flags&LIB3DS_USE_BIAS) {
        tcb->bias=lib3ds_io_read_float(io);
    }
    if (flags&LIB3DS_USE_EASE_TO) {
        tcb->ease_to=lib3ds_io_read_float(io);
    }
    if (flags&LIB3DS_USE_EASE_FROM) {
        tcb->ease_from=lib3ds_io_read_float(io);
    }
    if (lib3ds_io_error(io)) {
        return(LIB3DS_FALSE);
    }
    return(LIB3DS_TRUE);
}
コード例 #3
0
ファイル: io.c プロジェクト: BackupTheBerlios/gltron-svn
/*!
 * \ingroup io
 *
 * Writes a zero-terminated string into a file stream.
 */
Lib3dsBool
lib3ds_io_write_string(Lib3dsIo *io, const char *s)
{
  ASSERT(s);
  ASSERT(io);
  lib3ds_io_write(io, s, strlen(s)+1);
  return(!lib3ds_io_error(io));
}
コード例 #4
0
ファイル: io.c プロジェクト: BackupTheBerlios/gltron-svn
/*!
 * \ingroup io
 */
Lib3dsBool
lib3ds_io_read_rgb(Lib3dsIo *io, Lib3dsRgb rgb)
{
  ASSERT(io);

  rgb[0]=lib3ds_io_read_float(io);
  rgb[1]=lib3ds_io_read_float(io);
  rgb[2]=lib3ds_io_read_float(io);

  return(!lib3ds_io_error(io));
}
コード例 #5
0
ファイル: io.c プロジェクト: BackupTheBerlios/gltron-svn
/*!
 * \ingroup io
 * \ingroup vector
 *
 * Read a vector from a file stream in little endian format.   
 *
 * \param io IO input handle. 
 * \param v  The vector to store the data. 
 */
Lib3dsBool
lib3ds_io_read_vector(Lib3dsIo *io, Lib3dsVector v)
{
  ASSERT(io);
  
  v[0]=lib3ds_io_read_float(io);
  v[1]=lib3ds_io_read_float(io);
  v[2]=lib3ds_io_read_float(io);

  return(!lib3ds_io_error(io));
}
コード例 #6
0
/*!
 * \ingroup chunk
 *
 * Reads a 3d-Studio chunk header from a little endian file stream.
 *
 * \param c  The chunk to store the data.
 * \param io The file stream.
 *
 * \return   True on success, False otherwise.
 */
Lib3dsBool
lib3ds_chunk_read(Lib3dsChunk *c, Lib3dsIo *io)
{
  ASSERT(c);
  ASSERT(io);
  c->cur=lib3ds_io_tell(io);
  c->chunk=lib3ds_io_read_word(io);
  c->size=lib3ds_io_read_dword(io);
  c->end=c->cur+c->size;
  c->cur+=6;
  if (lib3ds_io_error(io) || (c->size<6)) {
    return(LIB3DS_FALSE);
  }
  return(LIB3DS_TRUE);
  
}
コード例 #7
0
/*!
 * \ingroup chunk
 */
Lib3dsBool
lib3ds_chunk_write_end(Lib3dsChunk *c, Lib3dsIo *io)
{
  ASSERT(c);
  c->size=lib3ds_io_tell(io) - c->cur;
  lib3ds_io_seek(io, c->cur+2, LIB3DS_SEEK_SET);
  if (!lib3ds_io_write_dword(io, c->size)) {
    LIB3DS_ERROR_LOG;
    return(LIB3DS_FALSE);
  }

  c->cur+=c->size;
  lib3ds_io_seek(io, c->cur, LIB3DS_SEEK_SET);
  if (lib3ds_io_error(io)) {
    LIB3DS_ERROR_LOG;
    return(LIB3DS_FALSE);
  }
  return(LIB3DS_TRUE);
}
コード例 #8
0
ファイル: io.c プロジェクト: BackupTheBerlios/gltron-svn
/*!
 * \ingroup io
 *
 * Read a zero-terminated string from a file stream.
 *
 * \param io      IO input handle. 
 * \param s       The buffer to store the read string.
 * \param buflen  Buffer length.
 *
 * \return        True on success, False otherwise.
 */
Lib3dsBool
lib3ds_io_read_string(Lib3dsIo *io, char *s, int buflen)
{
  char c;
  int k=0;

  ASSERT(io);
  for (;;) {
    if (lib3ds_io_read(io, &c, 1)!=1) {
      return LIB3DS_FALSE;
    }
    *s++ = c;
    if (!c) {
      break;
    }
    ++k;
    if (k>=buflen) {
      return(LIB3DS_FALSE);
    }
  }

  return(!lib3ds_io_error(io));
}