lwo2read.h
来自「最新osg包」· C头文件 代码 · 共 156 行
H
156 行
/**************************************************************************** Functions for reading basic data types from LWO2 files Copyright (C) 2002 by Marco Jez****************************************************************************/#ifndef LWO2READ_#define LWO2READ_#include "lwo2types.h"namespace lwo2 {template<class Iter>I1 read_I1(Iter &it){ return static_cast<I1>(*(it++));}template<class Iter>I2 read_I2(Iter &it){ I2 i2(((static_cast<I2>(*(it)) & 0xFF) << 8) | (static_cast<I2>(*(it+1)) & 0xFF)); it += 2; return i2;}template<class Iter>I4 read_I4(Iter &it){ I4 i4(((static_cast<I4>(*(it)) & 0xFF) << 24) | ((static_cast<I4>(*(it+1)) & 0xFF) << 16) | ((static_cast<I4>(*(it+2)) & 0xFF) << 8) | (static_cast<I4>(*(it+3)) & 0xFF)); it += 4; return i4;}template<class Iter>U1 read_U1(Iter &it){ return static_cast<U1>(*(it++));}template<class Iter>U2 read_U2(Iter &it){ U2 u2(((static_cast<U2>(*(it)) & 0xFF) << 8) | (static_cast<U2>(*(it+1)) & 0xFF)); it += 2; return u2;}template<class Iter>U4 read_U4(Iter &it){ U4 u4(((static_cast<U4>(*(it)) & 0xFF) << 24) | ((static_cast<U4>(*(it+1)) & 0xFF) << 16) | ((static_cast<U4>(*(it+2)) & 0xFF) << 8) | (static_cast<U4>(*(it+3)) & 0xFF)); it += 4; return u4;}template<class Iter>F4 read_F4(Iter &it){ U4 u4 = read_U4(it); return *reinterpret_cast<F4 *>(&u4);}template<class Iter>ID4 read_ID4(Iter &it){ ID4 value; for (int i=0; i<4; ++i) value.id[i] = *(it++); return value;}template<class Iter>S0 read_S0(Iter &it){ S0 value; while (*it) { value += *(it++); } ++it; if (value.length() % 2 == 0) ++it; return value;}template<class Iter>VX read_VX(Iter &it){ VX vx; if ((*it & 0xFF) == 0xFF) { vx.index = read_U4(it) & 0x00FFFFFF; } else { vx.index = static_cast<U4>(read_U2(it)); } return vx;}template<class Iter>COL12 read_COL12(Iter &it){ COL12 value; value.red = read_F4(it); value.green = read_F4(it); value.blue = read_F4(it); return value;}template<class Iter>VEC12 read_VEC12(Iter &it){ VEC12 value; value.X = read_F4(it); value.Y = read_F4(it); value.Z = read_F4(it); return value;}template<class Iter>FP4 read_FP4(Iter &it){ FP4 value; value.fraction = read_F4(it); return value;}template<class Iter>ANG4 read_ANG4(Iter &it){ ANG4 value; value.radians = read_F4(it); return value;}template<class Iter>FNAM0 read_FNAM0(Iter &it){ FNAM0 value; value.name = read_S0(it); return value;}}#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?