00001 // Filename: iffGenericChunk.cxx 00002 // Created by: drose (23Apr01) 00003 // 00004 //////////////////////////////////////////////////////////////////// 00005 // 00006 // PANDA 3D SOFTWARE 00007 // Copyright (c) 2001, Disney Enterprises, Inc. All rights reserved 00008 // 00009 // All use of this software is subject to the terms of the Panda 3d 00010 // Software license. You should have received a copy of this license 00011 // along with this source code; you will also find a current copy of 00012 // the license at http://www.panda3d.org/license.txt . 00013 // 00014 // To contact the maintainers of this program write to 00015 // panda3d@yahoogroups.com . 00016 // 00017 //////////////////////////////////////////////////////////////////// 00018 00019 #include "iffGenericChunk.h" 00020 #include "iffInputFile.h" 00021 00022 #include <indent.h> 00023 00024 TypeHandle IffGenericChunk::_type_handle; 00025 00026 00027 //////////////////////////////////////////////////////////////////// 00028 // Function: IffGenericChunk::read_iff 00029 // Access: Public, Virtual 00030 // Description: Reads the data of the chunk in from the given input 00031 // file, if possible. The ID and length of the chunk 00032 // have already been read. stop_at is the byte position 00033 // of the file to stop at (based on the current position 00034 // at in->get_bytes_read()). Returns true on success, 00035 // false otherwise. 00036 //////////////////////////////////////////////////////////////////// 00037 bool IffGenericChunk:: 00038 read_iff(IffInputFile *in, size_t stop_at) { 00039 size_t length = stop_at - in->get_bytes_read(); 00040 bool result = in->read_bytes(_data, length); 00041 in->align(); 00042 return result; 00043 } 00044 00045 //////////////////////////////////////////////////////////////////// 00046 // Function: IffGenericChunk::write 00047 // Access: Public, Virtual 00048 // Description: 00049 //////////////////////////////////////////////////////////////////// 00050 void IffGenericChunk:: 00051 write(ostream &out, int indent_level) const { 00052 indent(out, indent_level) 00053 << get_id() << " { " << _data.get_length() << " bytes }\n"; 00054 } 00055