Ejemplo n.º 1
0
/*!
 * Read a signed byte from a file stream.
 */
int8_t
lib3ds_io_read_intb(Lib3dsIo *io) {
    int8_t b;

    assert(io);
    lib3ds_io_read(io, &b, 1);
    return(b);
}
Ejemplo n.º 2
0
/*!
 * Read a byte from a file stream.
 */
uint8_t
lib3ds_io_read_byte(Lib3dsIo *io) {
    uint8_t b;

    assert(io);
    lib3ds_io_read(io, &b, 1);
    return(b);
}
Ejemplo n.º 3
0
/*!
 * \ingroup io
 *
 * Read a signed byte from a file stream.   
 */
Lib3dsIntb
lib3ds_io_read_intb(Lib3dsIo *io)
{
  Lib3dsIntb b;

  ASSERT(io);
  lib3ds_io_read(io, &b, 1);
  return(b);
}
Ejemplo n.º 4
0
/*!
 * \ingroup io
 *
 * Read a byte from a file stream.  
 */
Lib3dsByte
lib3ds_io_read_byte(Lib3dsIo *io)
{
  Lib3dsByte b;

  ASSERT(io);
  lib3ds_io_read(io, &b, 1);
  return(b);
}
Ejemplo n.º 5
0
/*!
 * Read a signed word from a file stream in little endian format.
 */
int16_t
lib3ds_io_read_intw(Lib3dsIo *io) {
    uint8_t b[2];
    uint16_t w;

    assert(io);
    lib3ds_io_read(io, b, 2);
    w = ((uint16_t)b[1] << 8) |
        ((uint16_t)b[0]);
    return((int16_t)w);
}
Ejemplo n.º 6
0
/*!
 * \ingroup io
 *
 * Read a signed word from a file stream in little endian format.   
 */
Lib3dsIntw
lib3ds_io_read_intw(Lib3dsIo *io)
{
  Lib3dsByte b[2];
  Lib3dsWord w;

  ASSERT(io);
  lib3ds_io_read(io, b, 2);
  w=((Lib3dsWord)b[1] << 8) |
    ((Lib3dsWord)b[0]);
  return((Lib3dsIntw)w);
}
Ejemplo n.º 7
0
/**
 * Read a word from a file stream in little endian format.   
 */
Lib3dsWord
lib3ds_io_read_word(Lib3dsIo *io)
{
  Lib3dsByte b[2];
  Lib3dsWord w;

  ASSERT(io);
  lib3ds_io_read(io, b, 2);
  w=((Lib3dsWord)b[1] << 8) |
    ((Lib3dsWord)b[0]);
  return(w);
}
Ejemplo n.º 8
0
/*!
 * Read a float from a file stream in little endian format.
 */
float
lib3ds_io_read_float(Lib3dsIo *io) {
    uint8_t b[4];
    Lib3dsDwordFloat d;

    assert(io);
    lib3ds_io_read(io, b, 4);
    d.dword_value = ((uint32_t)b[3] << 24) |
                    ((uint32_t)b[2] << 16) |
                    ((uint32_t)b[1] << 8) |
                    ((uint32_t)b[0]);
    return d.float_value;
}
Ejemplo n.º 9
0
/*!
 * Read a signed dword a from file stream in little endian format.
 */
int32_t
lib3ds_io_read_intd(Lib3dsIo *io) {
    uint8_t b[4];
    uint32_t d;

    assert(io);
    lib3ds_io_read(io, b, 4);
    d = ((uint32_t)b[3] << 24) |
        ((uint32_t)b[2] << 16) |
        ((uint32_t)b[1] << 8) |
        ((uint32_t)b[0]);
    return((int32_t)d);
}
Ejemplo n.º 10
0
/*!
 * \ingroup io
 *
 * Read a float from a file stream in little endian format.   
 */
Lib3dsFloat
lib3ds_io_read_float(Lib3dsIo *io)
{
  Lib3dsByte b[4];
  Lib3dsDword d;

  ASSERT(io);
  lib3ds_io_read(io, b, 4);
  d=((Lib3dsDword)b[3] << 24) |
    ((Lib3dsDword)b[2] << 16) |
    ((Lib3dsDword)b[1] << 8) |
    ((Lib3dsDword)b[0]);
  return(*((Lib3dsFloat*)&d));
}
Ejemplo n.º 11
0
/*!
 * \ingroup io
 *
 * Read a signed dword a from file stream in little endian format.   
 */
Lib3dsIntd
lib3ds_io_read_intd(Lib3dsIo *io)
{
  Lib3dsByte b[4];
  Lib3dsDword d;        
                         
  ASSERT(io);
  lib3ds_io_read(io, b, 4);
  d=((Lib3dsDword)b[3] << 24) |
    ((Lib3dsDword)b[2] << 16) |
    ((Lib3dsDword)b[1] << 8) |
    ((Lib3dsDword)b[0]);
  return((Lib3dsIntd)d);
}
Ejemplo n.º 12
0
Archivo: io.c Proyecto: 3660628/mrpt
/*!
 * \ingroup io
 *
 * Read a float from a file stream in little endian format.   
 */
Lib3dsFloat
lib3ds_io_read_float(Lib3dsIo *io)
{
  Lib3dsByte b[4];
  Lib3dsDwordFloat d;

  ASSERT(io);
  lib3ds_io_read(io, b, 4);
  d.dword_value=((Lib3dsDword)b[3] << 24) |
    ((Lib3dsDword)b[2] << 16) |
    ((Lib3dsDword)b[1] << 8) |
    ((Lib3dsDword)b[0]);
  return d.float_value;
}
Ejemplo n.º 13
0
/*!
 * 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.
 */
void
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) {
            lib3ds_io_read_error(io);
        }
        *s++ = c;
        if (!c) {
            break;
        }
        ++k;
        if (k >= buflen) {
            lib3ds_io_log(io, LIB3DS_LOG_ERROR, "Invalid string in input stream.");
        }
    }
}
Ejemplo n.º 14
0
/*!
 * \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));
}
Ejemplo n.º 15
0
/*!
 * \ingroup viewport 
 */
Lib3dsBool
lib3ds_viewport_read(Lib3dsViewport *viewport, Lib3dsIo *io)
{
  Lib3dsChunk c;
  Lib3dsWord chunk;

  if (!lib3ds_chunk_read_start(&c, 0, io)) {
    return(LIB3DS_FALSE);
  }
  
  switch (c.chunk) {
    case LIB3DS_VIEWPORT_LAYOUT:
      {
        int cur=0;
        viewport->layout.style=lib3ds_io_read_word(io);
        viewport->layout.active=lib3ds_io_read_intw(io);
        lib3ds_io_read_intw(io);
        viewport->layout.swap=lib3ds_io_read_intw(io);
        lib3ds_io_read_intw(io);
        viewport->layout.swap_prior=lib3ds_io_read_intw(io);
        viewport->layout.swap_view=lib3ds_io_read_intw(io);
        lib3ds_chunk_read_tell(&c, io);
        while ((chunk=lib3ds_chunk_read_next(&c, io))!=0) {
          switch (chunk) {
            case LIB3DS_VIEWPORT_SIZE:
              {
                viewport->layout.position[0]=lib3ds_io_read_word(io);
                viewport->layout.position[1]=lib3ds_io_read_word(io);
                viewport->layout.size[0]=lib3ds_io_read_word(io);
                viewport->layout.size[1]=lib3ds_io_read_word(io);
              }
              break;
            case LIB3DS_VIEWPORT_DATA_3:
              {
                lib3ds_viewport_set_views(viewport,cur+1);
                lib3ds_io_read_intw(io);
                viewport->layout.viewL[cur].axis_lock=lib3ds_io_read_word(io);
                viewport->layout.viewL[cur].position[0]=lib3ds_io_read_intw(io);
                viewport->layout.viewL[cur].position[1]=lib3ds_io_read_intw(io);
                viewport->layout.viewL[cur].size[0]=lib3ds_io_read_intw(io);
                viewport->layout.viewL[cur].size[1]=lib3ds_io_read_intw(io);
                viewport->layout.viewL[cur].type=lib3ds_io_read_word(io);
                viewport->layout.viewL[cur].zoom=lib3ds_io_read_float(io);
                lib3ds_io_read_vector(io, viewport->layout.viewL[cur].center);
                viewport->layout.viewL[cur].horiz_angle=lib3ds_io_read_float(io);
                viewport->layout.viewL[cur].vert_angle=lib3ds_io_read_float(io);
                lib3ds_io_read(io, viewport->layout.viewL[cur].camera, 11);
                ++cur;
              }
              break;
            case LIB3DS_VIEWPORT_DATA:
              /* 3DS R2 & R3 chunk
                 unsupported */
              break;
            default:
              lib3ds_chunk_unknown(chunk);
          }
        }
      }
      break;
    case LIB3DS_DEFAULT_VIEW:
      {
        memset(&viewport->default_view,0,sizeof(Lib3dsDefaultView));
        while ((chunk=lib3ds_chunk_read_next(&c, io))!=0) {
          switch (chunk) {
            case LIB3DS_VIEW_TOP:
              {
                viewport->default_view.type=LIB3DS_VIEW_TYPE_TOP;
                lib3ds_io_read_vector(io, viewport->default_view.position);
                viewport->default_view.width=lib3ds_io_read_float(io);
              }
              break;
            case LIB3DS_VIEW_BOTTOM:
              {
                viewport->default_view.type=LIB3DS_VIEW_TYPE_BOTTOM;
                lib3ds_io_read_vector(io, viewport->default_view.position);
                viewport->default_view.width=lib3ds_io_read_float(io);
              }
              break;
            case LIB3DS_VIEW_LEFT:
              {
                viewport->default_view.type=LIB3DS_VIEW_TYPE_LEFT;
                lib3ds_io_read_vector(io, viewport->default_view.position);
                viewport->default_view.width=lib3ds_io_read_float(io);
              }
              break;
            case LIB3DS_VIEW_RIGHT:
              {
                viewport->default_view.type=LIB3DS_VIEW_TYPE_RIGHT;
                lib3ds_io_read_vector(io, viewport->default_view.position);
                viewport->default_view.width=lib3ds_io_read_float(io);
              }
              break;
            case LIB3DS_VIEW_FRONT:
              {
                viewport->default_view.type=LIB3DS_VIEW_TYPE_FRONT;
                lib3ds_io_read_vector(io, viewport->default_view.position);
                viewport->default_view.width=lib3ds_io_read_float(io);
              }
              break;
            case LIB3DS_VIEW_BACK:
              {
                viewport->default_view.type=LIB3DS_VIEW_TYPE_BACK;
                lib3ds_io_read_vector(io, viewport->default_view.position);
                viewport->default_view.width=lib3ds_io_read_float(io);
              }
              break;
            case LIB3DS_VIEW_USER:
              {
                viewport->default_view.type=LIB3DS_VIEW_TYPE_USER;
                lib3ds_io_read_vector(io, viewport->default_view.position);
                viewport->default_view.width=lib3ds_io_read_float(io);
                viewport->default_view.horiz_angle=lib3ds_io_read_float(io);
                viewport->default_view.vert_angle=lib3ds_io_read_float(io);
                viewport->default_view.roll_angle=lib3ds_io_read_float(io);
              }
              break;
            case LIB3DS_VIEW_CAMERA:
              {
                viewport->default_view.type=LIB3DS_VIEW_TYPE_CAMERA;
                lib3ds_io_read(io, viewport->default_view.camera, 11);
              }
              break;
            default:
              lib3ds_chunk_unknown(chunk);
          }
        }
      }
      break;
  }

  lib3ds_chunk_read_end(&c, io);
  return(LIB3DS_TRUE);
}