Show
Ignore:
Timestamp:
04/22/09 17:46:24 (6 years ago)
Author:
robert
Message:

From Neil Hughes, converted across to use istream for reading data from file to enable reading .3ds files over http (use OSG's libcurl plugin).

From Robert Osfield, ammendments of the above to better support reading of files from local directories.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/src/osgPlugins/3ds/shadow.cpp

    r1563 r10076  
    3838 */ 
    3939Lib3dsBool 
    40 lib3ds_shadow_read(Lib3dsShadow *shadow, FILE *f) 
     40lib3ds_shadow_read(Lib3dsShadow *shadow, iostream *strm) 
    4141{ 
    4242  Lib3dsChunk c; 
    4343 
    44   if (!lib3ds_chunk_read(&c, f)) { 
     44  if (!lib3ds_chunk_read(&c, strm)) { 
    4545    return(LIB3DS_FALSE); 
    4646  } 
     
    4949    case LIB3DS_SHADOW_MAP_SIZE: 
    5050      { 
    51         shadow->map_size=lib3ds_intw_read(f); 
     51        shadow->map_size=lib3ds_intw_read(strm); 
    5252      } 
    5353      break; 
    5454    case LIB3DS_LO_SHADOW_BIAS: 
    5555      { 
    56           shadow->lo_bias=lib3ds_float_read(f); 
     56          shadow->lo_bias=lib3ds_float_read(strm); 
    5757      } 
    5858      break; 
    5959    case LIB3DS_HI_SHADOW_BIAS: 
    6060      { 
    61         shadow->hi_bias=lib3ds_float_read(f); 
     61        shadow->hi_bias=lib3ds_float_read(strm); 
    6262      } 
    6363      break; 
    6464    case LIB3DS_SHADOW_SAMPLES: 
    6565      { 
    66         shadow->samples=lib3ds_intw_read(f); 
     66        shadow->samples=lib3ds_intw_read(strm); 
    6767      } 
    6868      break; 
    6969    case LIB3DS_SHADOW_RANGE: 
    7070      { 
    71         shadow->range=lib3ds_intd_read(f); 
     71        shadow->range=lib3ds_intd_read(strm); 
    7272      } 
    7373      break; 
    7474    case LIB3DS_SHADOW_FILTER: 
    7575      { 
    76         shadow->filter=lib3ds_float_read(f); 
     76        shadow->filter=lib3ds_float_read(strm); 
    7777      } 
    7878      break; 
    7979    case LIB3DS_RAY_BIAS: 
    8080      { 
    81         shadow->ray_bias=lib3ds_float_read(f); 
     81        shadow->ray_bias=lib3ds_float_read(strm); 
    8282      } 
    8383      break; 
     
    9292 */ 
    9393Lib3dsBool 
    94 lib3ds_shadow_write(Lib3dsShadow *shadow, FILE *f) 
     94lib3ds_shadow_write(Lib3dsShadow *shadow, iostream *strm) 
    9595{ 
    9696  if (fabs(shadow->lo_bias)>LIB3DS_EPSILON) { /*---- LIB3DS_LO_SHADOW_BIAS ----*/ 
     
    9898    c.chunk=LIB3DS_LO_SHADOW_BIAS; 
    9999    c.size=10; 
    100     lib3ds_chunk_write(&c,f); 
    101     lib3ds_float_write(shadow->lo_bias,f); 
     100    lib3ds_chunk_write(&c,strm); 
     101    lib3ds_float_write(shadow->lo_bias,strm); 
    102102  } 
    103103 
     
    106106    c.chunk=LIB3DS_HI_SHADOW_BIAS; 
    107107    c.size=10; 
    108     lib3ds_chunk_write(&c,f); 
    109     lib3ds_float_write(shadow->hi_bias,f); 
     108    lib3ds_chunk_write(&c,strm); 
     109    lib3ds_float_write(shadow->hi_bias,strm); 
    110110  } 
    111111 
     
    114114    c.chunk=LIB3DS_SHADOW_MAP_SIZE; 
    115115    c.size=8; 
    116     lib3ds_chunk_write(&c,f); 
    117     lib3ds_intw_write(shadow->map_size,f); 
     116    lib3ds_chunk_write(&c,strm); 
     117    lib3ds_intw_write(shadow->map_size,strm); 
    118118  } 
    119119   
     
    122122    c.chunk=LIB3DS_SHADOW_SAMPLES; 
    123123    c.size=8; 
    124     lib3ds_chunk_write(&c,f); 
    125     lib3ds_intw_write(shadow->samples,f); 
     124    lib3ds_chunk_write(&c,strm); 
     125    lib3ds_intw_write(shadow->samples,strm); 
    126126  } 
    127127 
     
    130130    c.chunk=LIB3DS_SHADOW_RANGE; 
    131131    c.size=10; 
    132     lib3ds_chunk_write(&c,f); 
    133     lib3ds_intd_write(shadow->range,f); 
     132    lib3ds_chunk_write(&c,strm); 
     133    lib3ds_intd_write(shadow->range,strm); 
    134134  } 
    135135 
     
    138138    c.chunk=LIB3DS_SHADOW_FILTER; 
    139139    c.size=10; 
    140     lib3ds_chunk_write(&c,f); 
    141     lib3ds_float_write(shadow->filter,f); 
     140    lib3ds_chunk_write(&c,strm); 
     141    lib3ds_float_write(shadow->filter,strm); 
    142142  } 
    143143  if (fabs(shadow->ray_bias)>LIB3DS_EPSILON) { /*---- LIB3DS_RAY_BIAS ----*/ 
     
    145145    c.chunk=LIB3DS_RAY_BIAS; 
    146146    c.size=10; 
    147     lib3ds_chunk_write(&c,f); 
    148     lib3ds_float_write(shadow->ray_bias,f); 
     147    lib3ds_chunk_write(&c,strm); 
     148    lib3ds_float_write(shadow->ray_bias,strm); 
    149149  } 
    150150  return(LIB3DS_TRUE);