diff -up assimp--2.0.863-sdk/code/ACLoader.cpp.fastatof assimp--2.0.863-sdk/code/ACLoader.cpp --- assimp--2.0.863-sdk/code/ACLoader.cpp.fastatof 2011-03-22 12:50:18.223759084 -0400 +++ assimp--2.0.863-sdk/code/ACLoader.cpp 2011-03-22 12:57:56.949758999 -0400 @@ -199,7 +199,7 @@ void AC3DImporter::LoadObjectSection(std if (TokenMatch(buffer,"kids",4)) { SkipSpaces(&buffer); - unsigned int num = strtol10(buffer,&buffer); + unsigned int num = strtoul10(buffer,&buffer); GetNextLine(); if (num) { @@ -252,7 +252,7 @@ void AC3DImporter::LoadObjectSection(std else if (TokenMatch(buffer,"subdiv",6)) { SkipSpaces(&buffer); - obj.subDiv = strtol10(buffer,&buffer); + obj.subDiv = strtoul10(buffer,&buffer); } else if (TokenMatch(buffer,"crease",6)) { @@ -263,7 +263,7 @@ void AC3DImporter::LoadObjectSection(std { SkipSpaces(&buffer); - unsigned int t = strtol10(buffer,&buffer); + unsigned int t = strtoul10(buffer,&buffer); obj.vertices.reserve(t); for (unsigned int i = 0; i < t;++i) { @@ -289,7 +289,7 @@ void AC3DImporter::LoadObjectSection(std bool Q3DWorkAround = false; - const unsigned int t = strtol10(buffer,&buffer); + const unsigned int t = strtoul10(buffer,&buffer); obj.surfaces.reserve(t); for (unsigned int i = 0; i < t;++i) { @@ -311,7 +311,7 @@ void AC3DImporter::LoadObjectSection(std SkipSpaces(&buffer); obj.surfaces.push_back(Surface()); Surface& surf = obj.surfaces.back(); - surf.flags = strtol_cppstyle(buffer); + surf.flags = strtoul_cppstyle(buffer); while (1) { @@ -323,7 +323,7 @@ void AC3DImporter::LoadObjectSection(std if (TokenMatch(buffer,"mat",3)) { SkipSpaces(&buffer); - surf.mat = strtol10(buffer); + surf.mat = strtoul10(buffer); } else if (TokenMatch(buffer,"refs",4)) { @@ -338,7 +338,7 @@ void AC3DImporter::LoadObjectSection(std } SkipSpaces(&buffer); - const unsigned int m = strtol10(buffer); + const unsigned int m = strtoul10(buffer); surf.entries.reserve(m); obj.numRefs += m; @@ -353,7 +353,7 @@ void AC3DImporter::LoadObjectSection(std surf.entries.push_back(Surface::SurfaceEntry()); Surface::SurfaceEntry& entry = surf.entries.back(); - entry.first = strtol10(buffer,&buffer); + entry.first = strtoul10(buffer,&buffer); SkipSpaces(&buffer); AI_AC_CHECKED_LOAD_FLOAT_ARRAY("",0,2,&entry.second); } diff -up assimp--2.0.863-sdk/code/ASEParser.cpp.fastatof assimp--2.0.863-sdk/code/ASEParser.cpp --- assimp--2.0.863-sdk/code/ASEParser.cpp.fastatof 2011-03-22 12:58:18.762759015 -0400 +++ assimp--2.0.863-sdk/code/ASEParser.cpp 2011-03-22 12:58:58.858758986 -0400 @@ -1563,7 +1563,7 @@ void Parser::ParseLV4MeshBones(unsigned // parse an index ... if(SkipSpaces(&filePtr)) { - unsigned int iIndex = strtol10(filePtr,&filePtr); + unsigned int iIndex = strtoul10(filePtr,&filePtr); if (iIndex >= iNumBones) { continue; @@ -1593,7 +1593,7 @@ void Parser::ParseLV4MeshBonesVertices(u if (TokenMatch(filePtr,"MESH_BONE_VERTEX" ,16)) { // read the vertex index - unsigned int iIndex = strtol10(filePtr,&filePtr); + unsigned int iIndex = strtoul10(filePtr,&filePtr); if (iIndex >= mesh.mPositions.size()) { iIndex = (unsigned int)mesh.mPositions.size()-1; @@ -1610,7 +1610,7 @@ void Parser::ParseLV4MeshBonesVertices(u { // first parse the bone index ... if (!SkipSpaces(&filePtr))break; - pairOut.first = strtol10(filePtr,&filePtr); + pairOut.first = strtoul10(filePtr,&filePtr); // then parse the vertex weight if (!SkipSpaces(&filePtr))break; @@ -1951,7 +1951,7 @@ void Parser::ParseLV4MeshFace(ASE::Face& } // parse the face index - out.iFace = strtol10(filePtr,&filePtr); + out.iFace = strtoul10(filePtr,&filePtr); // next character should be ':' if(!SkipSpaces(&filePtr)) @@ -2012,7 +2012,7 @@ void Parser::ParseLV4MeshFace(ASE::Face& SkipToNextToken(); return; } - out.mIndices[iIndex] = strtol10(filePtr,&filePtr); + out.mIndices[iIndex] = strtoul10(filePtr,&filePtr); } // now we need to skip the AB, BC, CA blocks. @@ -2044,7 +2044,7 @@ void Parser::ParseLV4MeshFace(ASE::Face& { if (*filePtr < '9' && *filePtr >= '0') { - out.iSmoothGroup |= (1 << strtol10(filePtr,&filePtr)); + out.iSmoothGroup |= (1 << strtoul10(filePtr,&filePtr)); } SkipSpaces(&filePtr); if (',' != *filePtr) @@ -2076,7 +2076,7 @@ void Parser::ParseLV4MeshFace(ASE::Face& SkipToNextToken(); return; } - out.iMaterial = strtol10(filePtr,&filePtr); + out.iMaterial = strtoul10(filePtr,&filePtr); } return; } @@ -2146,5 +2146,5 @@ void Parser::ParseLV4MeshLong(unsigned i return; } // parse the value - iOut = strtol10(filePtr,&filePtr); + iOut = strtoul10(filePtr,&filePtr); } diff -up assimp--2.0.863-sdk/code/BlenderDNA.cpp.fastatof assimp--2.0.863-sdk/code/BlenderDNA.cpp --- assimp--2.0.863-sdk/code/BlenderDNA.cpp.fastatof 2011-03-22 12:59:09.499759003 -0400 +++ assimp--2.0.863-sdk/code/BlenderDNA.cpp 2011-03-22 12:59:24.887759015 -0400 @@ -260,13 +260,13 @@ void DNA :: DumpToFile() if (pos++ == std::string::npos) { return; } - array_sizes[0] = strtol10(&out[pos]); + array_sizes[0] = strtoul10(&out[pos]); pos = out.find('[',pos); if (pos++ == std::string::npos) { return; } - array_sizes[1] = strtol10(&out[pos]); + array_sizes[1] = strtoul10(&out[pos]); } // ------------------------------------------------------------------------------------------------ diff -up assimp--2.0.863-sdk/code/COBLoader.cpp.fastatof assimp--2.0.863-sdk/code/COBLoader.cpp --- assimp--2.0.863-sdk/code/COBLoader.cpp.fastatof 2011-03-22 12:59:34.539758996 -0400 +++ assimp--2.0.863-sdk/code/COBLoader.cpp 2011-03-22 13:11:01.585759000 -0400 @@ -440,9 +440,9 @@ void COBImporter::ReadChunkInfo_Ascii(Ch splitter.get_tokens(all_tokens); out.version = (all_tokens[1][1]-'0')*100+(all_tokens[1][3]-'0')*10+(all_tokens[1][4]-'0'); - out.id = strtol10(all_tokens[3]); - out.parent_id = strtol10(all_tokens[5]); - out.size = strtol10s(all_tokens[7]); + out.id = strtoul10(all_tokens[3]); + out.parent_id = strtoul10(all_tokens[5]); + out.size = strtol10(all_tokens[7]); } // ------------------------------------------------------------------------------------------------ @@ -563,7 +563,7 @@ void COBImporter::ReadMat1_Ascii(Scene& Material& mat = out.materials.back(); mat = nfo; - mat.matnum = strtol10(splitter[1]); + mat.matnum = strtoul10(splitter[1]); ++splitter; if (!splitter.match_start("shader: ")) { @@ -627,7 +627,7 @@ void COBImporter::ReadUnit_Ascii(Scene& // corresponding chunk already. for_each(boost::shared_ptr< Node >& nd, out.nodes) { if (nd->id == nfo.parent_id) { - const unsigned int t=strtol10(splitter[1]); + const unsigned int t=strtoul10(splitter[1]); nd->unit_scale = t>=sizeof(units)/sizeof(units[0])?( LogWarn_Ascii(splitter,format()<c_str(); for(size_t i = 0; i < face.indices.size(); ++i) { @@ -829,11 +829,11 @@ void COBImporter::ReadPolH_Ascii(Scene& if ('<' != *s++) { ThrowException("Expected < token in Face entry"); } - face.indices[i].pos_idx = strtol10(s,&s); + face.indices[i].pos_idx = strtoul10(s,&s); if (',' != *s++) { ThrowException("Expected , token in Face entry"); } - face.indices[i].uv_idx = strtol10(s,&s); + face.indices[i].uv_idx = strtoul10(s,&s); if ('>' != *s++) { ThrowException("Expected < token in Face entry"); } @@ -844,7 +844,7 @@ void COBImporter::ReadPolH_Ascii(Scene& } } else if (splitter.match_start("DrawFlags")) { - msh.draw_flags = strtol10(splitter[1]); + msh.draw_flags = strtoul10(splitter[1]); break; } } @@ -864,7 +864,7 @@ void COBImporter::ReadBitM_Ascii(Scene& "\nZippedThumbnail: %02hx 02hx %02hx " */ - const unsigned int head = strtol10((++splitter)[1]); + const unsigned int head = strtoul10((++splitter)[1]); if (head != sizeof(Bitmap::BitmapHeader)) { LogWarn_Ascii(splitter,"Unexpected ThumbNailHdrSize, skipping this chunk"); return; diff -up assimp--2.0.863-sdk/code/ColladaLoader.cpp.fastatof assimp--2.0.863-sdk/code/ColladaLoader.cpp --- assimp--2.0.863-sdk/code/ColladaLoader.cpp.fastatof 2011-03-22 13:00:57.539758925 -0400 +++ assimp--2.0.863-sdk/code/ColladaLoader.cpp 2011-03-22 13:01:16.647759001 -0400 @@ -1166,7 +1166,7 @@ void ColladaLoader::AddTexture ( Assimp: map = -1; for (std::string::const_iterator it = sampler.mUVChannel.begin();it != sampler.mUVChannel.end(); ++it){ if (IsNumeric(*it)) { - map = strtol10(&(*it)); + map = strtoul10(&(*it)); break; } } diff -up assimp--2.0.863-sdk/code/ColladaParser.cpp.fastatof assimp--2.0.863-sdk/code/ColladaParser.cpp --- assimp--2.0.863-sdk/code/ColladaParser.cpp.fastatof 2011-03-22 13:01:27.772759000 -0400 +++ assimp--2.0.863-sdk/code/ColladaParser.cpp 2011-03-22 13:11:08.254759002 -0400 @@ -639,7 +639,7 @@ void ColladaParser::ReadControllerWeight if( *text == 0) ThrowException( "Out of data while reading vcount"); - *it = strtol10( text, &text); + *it = strtoul10( text, &text); numWeights += *it; SkipSpacesAndLineEnd( &text); } @@ -658,11 +658,11 @@ void ColladaParser::ReadControllerWeight { if( *text == 0) ThrowException( "Out of data while reading vertex_weights"); - it->first = strtol10( text, &text); + it->first = strtoul10( text, &text); SkipSpacesAndLineEnd( &text); if( *text == 0) ThrowException( "Out of data while reading vertex_weights"); - it->second = strtol10( text, &text); + it->second = strtoul10( text, &text); SkipSpacesAndLineEnd( &text); } @@ -1888,7 +1888,7 @@ void ColladaParser::ReadIndexData( Mesh* if( *content == 0) ThrowException( "Expected more values while reading vcount contents."); // read a number - vcount.push_back( (size_t) strtol10( content, &content)); + vcount.push_back( (size_t) strtoul10( content, &content)); // skip whitespace after it SkipSpacesAndLineEnd( &content); } @@ -2008,7 +2008,7 @@ void ColladaParser::ReadPrimitives( Mesh { // read a value. // Hack: (thom) Some exporters put negative indices sometimes. We just try to carry on anyways. - int value = std::max( 0, strtol10s( content, &content)); + int value = std::max( 0, strtol10( content, &content)); indices.push_back( size_t( value)); // skip whitespace after it SkipSpacesAndLineEnd( &content); diff -up assimp--2.0.863-sdk/code/CSMLoader.cpp.fastatof assimp--2.0.863-sdk/code/CSMLoader.cpp --- assimp--2.0.863-sdk/code/CSMLoader.cpp.fastatof 2011-03-22 13:01:42.823758987 -0400 +++ assimp--2.0.863-sdk/code/CSMLoader.cpp 2011-03-22 13:11:16.544759001 -0400 @@ -126,11 +126,11 @@ void CSMImporter::InternReadFile( const ++buffer; if (TokenMatchI(buffer,"firstframe",10)) { SkipSpaces(&buffer); - first = strtol10s(buffer,&buffer); + first = strtol10(buffer,&buffer); } else if (TokenMatchI(buffer,"lastframe",9)) { SkipSpaces(&buffer); - last = strtol10s(buffer,&buffer); + last = strtol10(buffer,&buffer); } else if (TokenMatchI(buffer,"rate",4)) { SkipSpaces(&buffer); @@ -190,7 +190,7 @@ void CSMImporter::InternReadFile( const } // read frame - const int frame = ::strtol10(buffer,&buffer); + const int frame = ::strtoul10(buffer,&buffer); last = std::max(frame,last); first = std::min(frame,last); for (unsigned int i = 0; i < anim->mNumChannels;++i) { diff -up assimp--2.0.863-sdk/code/DXFLoader.cpp.fastatof assimp--2.0.863-sdk/code/DXFLoader.cpp --- assimp--2.0.863-sdk/code/DXFLoader.cpp.fastatof 2011-03-22 13:02:02.973759113 -0400 +++ assimp--2.0.863-sdk/code/DXFLoader.cpp 2011-03-22 13:11:23.282759000 -0400 @@ -140,7 +140,7 @@ bool DXFImporter::GetNextToken() } SkipSpaces(&buffer); - groupCode = strtol10s(buffer,&buffer); + groupCode = strtol10(buffer,&buffer); if(!GetNextLine()) return false; @@ -417,7 +417,7 @@ bool DXFImporter::ParsePolyLine() case 70: { if (!flags) { - flags = strtol10(cursor); + flags = strtoul10(cursor); } break; }; @@ -425,14 +425,14 @@ bool DXFImporter::ParsePolyLine() // optional number of vertices case 71: { - positions.reserve(strtol10(cursor)); + positions.reserve(strtoul10(cursor)); break; } // optional number of faces case 72: { - indices.reserve(strtol10(cursor)); + indices.reserve(strtoul10(cursor)); break; } @@ -500,13 +500,13 @@ bool DXFImporter::ParsePolyLineVertex(ai case 30: out.z = fast_atof(cursor);break; // POLYFACE vertex indices - case 71: outIdx[0] = strtol10(cursor);break; - case 72: outIdx[1] = strtol10(cursor);break; - case 73: outIdx[2] = strtol10(cursor);break; - // case 74: outIdx[3] = strtol10(cursor);break; + case 71: outIdx[0] = strtoul10(cursor);break; + case 72: outIdx[1] = strtoul10(cursor);break; + case 73: outIdx[2] = strtoul10(cursor);break; + // case 74: outIdx[3] = strtoul10(cursor);break; // color - case 62: clr = g_aclrDxfIndexColors[strtol10(cursor) % AI_DXF_NUM_INDEX_COLORS]; break; + case 62: clr = g_aclrDxfIndexColors[strtoul10(cursor) % AI_DXF_NUM_INDEX_COLORS]; break; }; if (ret) { break; @@ -582,7 +582,7 @@ bool DXFImporter::Parse3DFace() bThird = true;break; // color - case 62: clr = g_aclrDxfIndexColors[strtol10(cursor) % AI_DXF_NUM_INDEX_COLORS]; break; + case 62: clr = g_aclrDxfIndexColors[strtoul10(cursor) % AI_DXF_NUM_INDEX_COLORS]; break; }; if (ret) break; diff -up assimp--2.0.863-sdk/code/IRRLoader.cpp.fastatof assimp--2.0.863-sdk/code/IRRLoader.cpp --- assimp--2.0.863-sdk/code/IRRLoader.cpp.fastatof 2011-03-22 13:02:23.766759006 -0400 +++ assimp--2.0.863-sdk/code/IRRLoader.cpp 2011-03-22 13:02:28.569759002 -0400 @@ -1074,7 +1074,7 @@ void IRRImporter::InternReadFile( const // and parse its properties key.mValue = prop.value; - key.mTime = strtol10(&prop.name[5]); + key.mTime = strtoul10(&prop.name[5]); } } else if (curAnim->type == Animator::FLY_CIRCLE) { diff -up assimp--2.0.863-sdk/code/IRRMeshLoader.cpp.fastatof assimp--2.0.863-sdk/code/IRRMeshLoader.cpp --- assimp--2.0.863-sdk/code/IRRMeshLoader.cpp.fastatof 2011-03-22 12:48:44.866759259 -0400 +++ assimp--2.0.863-sdk/code/IRRMeshLoader.cpp 2011-03-22 13:03:10.595759001 -0400 @@ -321,7 +321,7 @@ void IRRMeshImporter::InternReadFile( co curNormals.push_back(temp); // read the vertex colors - uint32_t clr = strtol16(sz,&sz); + uint32_t clr = strtoul16(sz,&sz); ColorFromARGBPacked(clr,c); if (!curColors.empty() && c != *(curColors.end()-1)) @@ -412,7 +412,7 @@ void IRRMeshImporter::InternReadFile( co curFace->mIndices = new unsigned int[3]; } - unsigned int idx = strtol10(sz,&sz); + unsigned int idx = strtoul10(sz,&sz); if (idx >= curVertices.size()) { DefaultLogger::get()->error("IRRMESH: Index out of range"); idx = 0; diff -up assimp--2.0.863-sdk/code/IRRShared.cpp.fastatof assimp--2.0.863-sdk/code/IRRShared.cpp --- assimp--2.0.863-sdk/code/IRRShared.cpp.fastatof 2011-03-22 12:49:27.613759017 -0400 +++ assimp--2.0.863-sdk/code/IRRShared.cpp 2011-03-22 12:52:04.792759007 -0400 @@ -74,7 +74,7 @@ void IrrlichtBase::ReadHexProperty (H else if (!ASSIMP_stricmp(reader->getAttributeName(i),"value")) { // parse the hexadecimal value - out.value = strtol16(reader->getAttributeValue(i)); + out.value = strtoul16(reader->getAttributeValue(i)); } } } @@ -92,7 +92,7 @@ void IrrlichtBase::ReadIntProperty (I else if (!ASSIMP_stricmp(reader->getAttributeName(i),"value")) { // parse the ecimal value - out.value = strtol10s(reader->getAttributeValue(i)); + out.value = strtol10(reader->getAttributeValue(i)); } } } diff -up assimp--2.0.863-sdk/code/LWSLoader.cpp.fastatof assimp--2.0.863-sdk/code/LWSLoader.cpp --- assimp--2.0.863-sdk/code/LWSLoader.cpp.fastatof 2011-03-22 12:47:18.221758995 -0400 +++ assimp--2.0.863-sdk/code/LWSLoader.cpp 2011-03-22 13:04:00.242759002 -0400 @@ -178,7 +178,7 @@ void LWSImporter::ReadEnvelope(const LWS // reserve enough storage std::list< LWS::Element >::const_iterator it = dad.children.begin();; - fill.keys.reserve(strtol10(it->tokens[1].c_str())); + fill.keys.reserve(strtoul10(it->tokens[1].c_str())); for (++it; it != dad.children.end(); ++it) { const char* c = (*it).tokens[1].c_str(); @@ -195,7 +195,7 @@ void LWSImporter::ReadEnvelope(const LWS key.time = f; - unsigned int span = strtol10(c,&c), num = 0; + unsigned int span = strtoul10(c,&c), num = 0; switch (span) { case 0: @@ -229,9 +229,9 @@ void LWSImporter::ReadEnvelope(const LWS } else if ((*it).tokens[0] == "Behaviors") { SkipSpaces(&c); - fill.pre = (LWO::PrePostBehaviour) strtol10(c,&c); + fill.pre = (LWO::PrePostBehaviour) strtoul10(c,&c); SkipSpaces(&c); - fill.post = (LWO::PrePostBehaviour) strtol10(c,&c); + fill.post = (LWO::PrePostBehaviour) strtoul10(c,&c); } } } @@ -247,7 +247,7 @@ void LWSImporter::ReadEnvelope_Old( unsigned int num,sub_num; if (++it == end)goto unexpected_end; - num = strtol10((*it).tokens[0].c_str()); + num = strtoul10((*it).tokens[0].c_str()); for (unsigned int i = 0; i < num; ++i) { nodes.channels.push_back(LWO::Envelope()); @@ -257,7 +257,7 @@ void LWSImporter::ReadEnvelope_Old( envl.type = (LWO::EnvelopeType)(i+1); if (++it == end)goto unexpected_end; - sub_num = strtol10((*it).tokens[0].c_str()); + sub_num = strtoul10((*it).tokens[0].c_str()); for (unsigned int n = 0; n < sub_num;++n) { @@ -505,7 +505,7 @@ void LWSImporter::InternReadFile( const // get file format version and print to log ++it; - unsigned int version = strtol10((*it).tokens[0].c_str()); + unsigned int version = strtoul10((*it).tokens[0].c_str()); DefaultLogger::get()->info("LWS file format version is " + (*it).tokens[0]); first = 0.; last = 60.; @@ -518,25 +518,25 @@ void LWSImporter::InternReadFile( const // 'FirstFrame': begin of animation slice if ((*it).tokens[0] == "FirstFrame") { if (150392. != first /* see SetupProperties() */) - first = strtol10(c,&c)-1.; /* we're zero-based */ + first = strtoul10(c,&c)-1.; /* we're zero-based */ } // 'LastFrame': end of animation slice else if ((*it).tokens[0] == "LastFrame") { if (150392. != last /* see SetupProperties() */) - last = strtol10(c,&c)-1.; /* we're zero-based */ + last = strtoul10(c,&c)-1.; /* we're zero-based */ } // 'FramesPerSecond': frames per second else if ((*it).tokens[0] == "FramesPerSecond") { - fps = strtol10(c,&c); + fps = strtoul10(c,&c); } // 'LoadObjectLayer': load a layer of a specific LWO file else if ((*it).tokens[0] == "LoadObjectLayer") { // get layer index - const int layer = strtol10(c,&c); + const int layer = strtoul10(c,&c); // setup the layer to be loaded BatchLoader::PropertyMap props; @@ -547,7 +547,7 @@ void LWSImporter::InternReadFile( const d.type = LWS::NodeDesc::OBJECT; if (version >= 4) { // handle LWSC 4 explicit ID SkipSpaces(&c); - d.number = strtol16(c,&c) & AI_LWS_MASK; + d.number = strtoul16(c,&c) & AI_LWS_MASK; } else d.number = cur_object++; @@ -568,7 +568,7 @@ void LWSImporter::InternReadFile( const d.type = LWS::NodeDesc::OBJECT; if (version >= 4) { // handle LWSC 4 explicit ID - d.number = strtol16(c,&c) & AI_LWS_MASK; + d.number = strtoul16(c,&c) & AI_LWS_MASK; SkipSpaces(&c); } else d.number = cur_object++; @@ -587,7 +587,7 @@ void LWSImporter::InternReadFile( const d.type = LWS::NodeDesc::OBJECT; d.name = c; if (version >= 4) { // handle LWSC 4 explicit ID - d.number = strtol16(c,&c) & AI_LWS_MASK; + d.number = strtoul16(c,&c) & AI_LWS_MASK; } else d.number = cur_object++; nodes.push_back(d); @@ -617,7 +617,7 @@ void LWSImporter::InternReadFile( const nodes.back().channels.push_back(LWO::Envelope()); LWO::Envelope& env = nodes.back().channels.back(); - env.index = strtol10(c); + env.index = strtoul10(c); // currently we can just interpret the standard channels 0...9 // (hack) assume that index-i yields the binary channel type from LWO @@ -651,8 +651,8 @@ void LWSImporter::InternReadFile( const for (std::list::iterator it = nodes.back().channels.begin(); it != nodes.back().channels.end(); ++it) { // two ints per envelope LWO::Envelope& env = *it; - env.pre = (LWO::PrePostBehaviour) strtol10(c,&c); SkipSpaces(&c); - env.post = (LWO::PrePostBehaviour) strtol10(c,&c); SkipSpaces(&c); + env.pre = (LWO::PrePostBehaviour) strtoul10(c,&c); SkipSpaces(&c); + env.post = (LWO::PrePostBehaviour) strtoul10(c,&c); SkipSpaces(&c); } } } @@ -661,7 +661,7 @@ void LWSImporter::InternReadFile( const if (nodes.empty()) DefaultLogger::get()->error("LWS: Unexpected keyword: \'ParentItem\'"); - else nodes.back().parent = strtol16(c,&c); + else nodes.back().parent = strtoul16(c,&c); } // 'ParentObject': deprecated one for older formats else if (version < 3 && (*it).tokens[0] == "ParentObject") { @@ -669,7 +669,7 @@ void LWSImporter::InternReadFile( const DefaultLogger::get()->error("LWS: Unexpected keyword: \'ParentObject\'"); else { - nodes.back().parent = strtol10(c,&c) | (1u << 28u); + nodes.back().parent = strtoul10(c,&c) | (1u << 28u); } } // 'AddCamera': add a camera to the scenegraph @@ -680,7 +680,7 @@ void LWSImporter::InternReadFile( const d.type = LWS::NodeDesc::CAMERA; if (version >= 4) { // handle LWSC 4 explicit ID - d.number = strtol16(c,&c) & AI_LWS_MASK; + d.number = strtoul16(c,&c) & AI_LWS_MASK; } else d.number = cur_camera++; nodes.push_back(d); @@ -702,7 +702,7 @@ void LWSImporter::InternReadFile( const d.type = LWS::NodeDesc::LIGHT; if (version >= 4) { // handle LWSC 4 explicit ID - d.number = strtol16(c,&c) & AI_LWS_MASK; + d.number = strtoul16(c,&c) & AI_LWS_MASK; } else d.number = cur_light++; nodes.push_back(d); @@ -729,7 +729,7 @@ void LWSImporter::InternReadFile( const if (nodes.empty() || nodes.back().type != LWS::NodeDesc::LIGHT) DefaultLogger::get()->error("LWS: Unexpected keyword: \'LightType\'"); - else nodes.back().lightType = strtol10(c); + else nodes.back().lightType = strtoul10(c); } // 'LightFalloffType': set falloff type of currently active light @@ -737,7 +737,7 @@ void LWSImporter::InternReadFile( const if (nodes.empty() || nodes.back().type != LWS::NodeDesc::LIGHT) DefaultLogger::get()->error("LWS: Unexpected keyword: \'LightFalloffType\'"); - else nodes.back().lightFalloffType = strtol10(c); + else nodes.back().lightFalloffType = strtoul10(c); } // 'LightConeAngle': set cone angle of currently active light diff -up assimp--2.0.863-sdk/code/MaterialSystem.cpp.fastatof assimp--2.0.863-sdk/code/MaterialSystem.cpp --- assimp--2.0.863-sdk/code/MaterialSystem.cpp.fastatof 2011-03-22 12:51:17.410759006 -0400 +++ assimp--2.0.863-sdk/code/MaterialSystem.cpp 2011-03-22 12:51:44.551759140 -0400 @@ -210,7 +210,7 @@ aiReturn aiGetMaterialIntegerArray(const const char* cur = prop->mData+4; ai_assert(prop->mDataLength>=5 && !prop->mData[prop->mDataLength-1]); for (unsigned int a = 0; ;++a) { - pOut[a] = strtol10s(cur,&cur); + pOut[a] = strtol10(cur,&cur); if(a==iWrite-1) { break; } diff -up assimp--2.0.863-sdk/code/MD5Parser.cpp.fastatof assimp--2.0.863-sdk/code/MD5Parser.cpp --- assimp--2.0.863-sdk/code/MD5Parser.cpp.fastatof 2011-03-22 13:04:20.583759004 -0400 +++ assimp--2.0.863-sdk/code/MD5Parser.cpp 2011-03-22 13:11:30.208759001 -0400 @@ -115,7 +115,7 @@ void MD5Parser::ParseHeader() ReportError("Invalid MD5 file: MD5Version tag has not been found"); } SkipSpaces(); - unsigned int iVer = ::strtol10(buffer,(const char**)&buffer); + unsigned int iVer = ::strtoul10(buffer,(const char**)&buffer); if (10 != iVer) { ReportError("MD5 version tag is unknown (10 is expected)"); } @@ -234,10 +234,10 @@ MD5MeshParser::MD5MeshParser(SectionList // now parse all sections for (SectionList::const_iterator iter = mSections.begin(), iterEnd = mSections.end();iter != iterEnd;++iter){ if ( (*iter).mName == "numMeshes") { - mMeshes.reserve(::strtol10((*iter).mGlobalValue.c_str())); + mMeshes.reserve(::strtoul10((*iter).mGlobalValue.c_str())); } else if ( (*iter).mName == "numJoints") { - mJoints.reserve(::strtol10((*iter).mGlobalValue.c_str())); + mJoints.reserve(::strtoul10((*iter).mGlobalValue.c_str())); } else if ((*iter).mName == "joints") { // "origin" -1 ( -0.000000 0.016430 -0.006044 ) ( 0.707107 0.000000 0.707107 ) @@ -250,7 +250,7 @@ MD5MeshParser::MD5MeshParser(SectionList AI_MD5_SKIP_SPACES(); // negative values, at least -1, is allowed here - desc.mParentIndex = (int)strtol10s(sz,&sz); + desc.mParentIndex = (int)strtol10(sz,&sz); AI_MD5_READ_TRIPLE(desc.mPositionXYZ); AI_MD5_READ_TRIPLE(desc.mRotationQuat); // normalized quaternion, so w is not there @@ -271,23 +271,23 @@ MD5MeshParser::MD5MeshParser(SectionList // numverts attribute else if (TokenMatch(sz,"numverts",8)) { AI_MD5_SKIP_SPACES(); - desc.mVertices.resize(strtol10(sz)); + desc.mVertices.resize(strtoul10(sz)); } // numtris attribute else if (TokenMatch(sz,"numtris",7)) { AI_MD5_SKIP_SPACES(); - desc.mFaces.resize(strtol10(sz)); + desc.mFaces.resize(strtoul10(sz)); } // numweights attribute else if (TokenMatch(sz,"numweights",10)) { AI_MD5_SKIP_SPACES(); - desc.mWeights.resize(strtol10(sz)); + desc.mWeights.resize(strtoul10(sz)); } // vert attribute // "vert 0 ( 0.394531 0.513672 ) 0 1" else if (TokenMatch(sz,"vert",4)) { AI_MD5_SKIP_SPACES(); - const unsigned int idx = ::strtol10(sz,&sz); + const unsigned int idx = ::strtoul10(sz,&sz); AI_MD5_SKIP_SPACES(); if (idx >= desc.mVertices.size()) desc.mVertices.resize(idx+1); @@ -303,15 +303,15 @@ MD5MeshParser::MD5MeshParser(SectionList if (')' != *sz++) MD5Parser::ReportWarning("Unexpected token: ) was expected",(*eit).iLineNumber); AI_MD5_SKIP_SPACES(); - vert.mFirstWeight = ::strtol10(sz,&sz); + vert.mFirstWeight = ::strtoul10(sz,&sz); AI_MD5_SKIP_SPACES(); - vert.mNumWeights = ::strtol10(sz,&sz); + vert.mNumWeights = ::strtoul10(sz,&sz); } // tri attribute // "tri 0 15 13 12" else if (TokenMatch(sz,"tri",3)) { AI_MD5_SKIP_SPACES(); - const unsigned int idx = strtol10(sz,&sz); + const unsigned int idx = strtoul10(sz,&sz); if (idx >= desc.mFaces.size()) desc.mFaces.resize(idx+1); @@ -319,20 +319,20 @@ MD5MeshParser::MD5MeshParser(SectionList face.mIndices = new unsigned int[face.mNumIndices = 3]; for (unsigned int i = 0; i < 3;++i) { AI_MD5_SKIP_SPACES(); - face.mIndices[i] = strtol10(sz,&sz); + face.mIndices[i] = strtoul10(sz,&sz); } } // weight attribute // "weight 362 5 0.500000 ( -3.553583 11.893474 9.719339 )" else if (TokenMatch(sz,"weight",6)) { AI_MD5_SKIP_SPACES(); - const unsigned int idx = strtol10(sz,&sz); + const unsigned int idx = strtoul10(sz,&sz); AI_MD5_SKIP_SPACES(); if (idx >= desc.mWeights.size()) desc.mWeights.resize(idx+1); WeightDesc& weight = desc.mWeights[idx]; - weight.mBone = strtol10(sz,&sz); + weight.mBone = strtoul10(sz,&sz); AI_MD5_SKIP_SPACES(); sz = fast_atof_move(sz,weight.mWeight); AI_MD5_READ_TRIPLE(weight.vOffsetPosition); @@ -363,17 +363,17 @@ MD5AnimParser::MD5AnimParser(SectionList AI_MD5_SKIP_SPACES(); // parent index - negative values are allowed (at least -1) - desc.mParentIndex = ::strtol10s(sz,&sz); + desc.mParentIndex = ::strtol10(sz,&sz); // flags (highest is 2^6-1) AI_MD5_SKIP_SPACES(); - if(63 < (desc.iFlags = ::strtol10(sz,&sz))){ + if(63 < (desc.iFlags = ::strtoul10(sz,&sz))){ MD5Parser::ReportWarning("Invalid flag combination in hierarchy section",(*eit).iLineNumber); } AI_MD5_SKIP_SPACES(); // index of the first animation keyframe component for this joint - desc.iFirstKeyIndex = ::strtol10(sz,&sz); + desc.iFirstKeyIndex = ::strtoul10(sz,&sz); } } else if((*iter).mName == "baseframe") { @@ -396,7 +396,7 @@ MD5AnimParser::MD5AnimParser(SectionList mFrames.push_back ( FrameDesc () ); FrameDesc& desc = mFrames.back(); - desc.iIndex = strtol10((*iter).mGlobalValue.c_str()); + desc.iIndex = strtoul10((*iter).mGlobalValue.c_str()); // we do already know how much storage we will presumably need if (0xffffffff != mNumAnimatedComponents) @@ -412,10 +412,10 @@ MD5AnimParser::MD5AnimParser(SectionList } } else if((*iter).mName == "numFrames") { - mFrames.reserve(strtol10((*iter).mGlobalValue.c_str())); + mFrames.reserve(strtoul10((*iter).mGlobalValue.c_str())); } else if((*iter).mName == "numJoints") { - const unsigned int num = strtol10((*iter).mGlobalValue.c_str()); + const unsigned int num = strtoul10((*iter).mGlobalValue.c_str()); mAnimatedBones.reserve(num); // try to guess the number of animated components if that element is not given @@ -423,7 +423,7 @@ MD5AnimParser::MD5AnimParser(SectionList mNumAnimatedComponents = num * 6; } else if((*iter).mName == "numAnimatedComponents") { - mAnimatedBones.reserve( strtol10((*iter).mGlobalValue.c_str())); + mAnimatedBones.reserve( strtoul10((*iter).mGlobalValue.c_str())); } else if((*iter).mName == "frameRate") { fast_atof_move((*iter).mGlobalValue.c_str(),fFrameRate); @@ -441,17 +441,17 @@ MD5CameraParser::MD5CameraParser(Section for (SectionList::const_iterator iter = mSections.begin(), iterEnd = mSections.end();iter != iterEnd;++iter) { if ((*iter).mName == "numFrames") { - frames.reserve(strtol10((*iter).mGlobalValue.c_str())); + frames.reserve(strtoul10((*iter).mGlobalValue.c_str())); } else if ((*iter).mName == "frameRate") { fFrameRate = fast_atof ((*iter).mGlobalValue.c_str()); } else if ((*iter).mName == "numCuts") { - cuts.reserve(strtol10((*iter).mGlobalValue.c_str())); + cuts.reserve(strtoul10((*iter).mGlobalValue.c_str())); } else if ((*iter).mName == "cuts") { for (ElementList::const_iterator eit = (*iter).mElements.begin(), eitEnd = (*iter).mElements.end(); eit != eitEnd; ++eit){ - cuts.push_back(strtol10((*eit).szStart)+1); + cuts.push_back(strtoul10((*eit).szStart)+1); } } else if ((*iter).mName == "camera") { diff -up assimp--2.0.863-sdk/code/NFFLoader.cpp.fastatof assimp--2.0.863-sdk/code/NFFLoader.cpp --- assimp--2.0.863-sdk/code/NFFLoader.cpp.fastatof 2011-03-22 12:48:16.842758895 -0400 +++ assimp--2.0.863-sdk/code/NFFLoader.cpp 2011-03-22 13:05:01.100759001 -0400 @@ -360,7 +360,7 @@ void NFFImporter::InternReadFile( const } // read the numbr of vertices - unsigned int num = ::strtol10(sz,&sz); + unsigned int num = ::strtoul10(sz,&sz); // temporary storage std::vector tempColors; @@ -389,7 +389,7 @@ void NFFImporter::InternReadFile( const if (TokenMatch(sz,"0x",2)) { hasColor = true; - register unsigned int numIdx = ::strtol16(sz,&sz); + register unsigned int numIdx = ::strtoul16(sz,&sz); aiColor4D clr; clr.a = 1.f; @@ -430,7 +430,7 @@ void NFFImporter::InternReadFile( const AI_NFF2_GET_NEXT_TOKEN(); if (!num)throw DeadlyImportError("NFF2: There are zero vertices"); - num = ::strtol10(sz,&sz); + num = ::strtoul10(sz,&sz); std::vector tempIdx; tempIdx.reserve(10); @@ -438,7 +438,7 @@ void NFFImporter::InternReadFile( const { AI_NFF2_GET_NEXT_TOKEN(); SkipSpaces(line,&sz); - unsigned int numIdx = ::strtol10(sz,&sz); + unsigned int numIdx = ::strtoul10(sz,&sz); // read all faces indices if (numIdx) @@ -450,7 +450,7 @@ void NFFImporter::InternReadFile( const for (unsigned int a = 0; a < numIdx;++a) { SkipSpaces(sz,&sz); - m = ::strtol10(sz,&sz); + m = ::strtoul10(sz,&sz); if (m >= (unsigned int)tempPositions.size()) { DefaultLogger::get()->error("NFF2: Vertex index overflow"); @@ -478,7 +478,7 @@ void NFFImporter::InternReadFile( const { hasColor = true; const char* sz2 = sz; - numIdx = ::strtol16(sz,&sz); + numIdx = ::strtoul16(sz,&sz); const unsigned int diff = (unsigned int)(sz-sz2); // 0xRRGGBB @@ -556,7 +556,7 @@ void NFFImporter::InternReadFile( const else if (!materialTable.empty() && TokenMatch(sz,"matid",5)) { SkipSpaces(&sz); - matIdx = ::strtol10(sz,&sz); + matIdx = ::strtoul10(sz,&sz); if (matIdx >= materialTable.size()) { DefaultLogger::get()->error("NFF2: Material index overflow."); @@ -719,7 +719,7 @@ void NFFImporter::InternReadFile( const sz = &line[1];out = currentMesh; } SkipSpaces(sz,&sz); - m = strtol10(sz); + m = strtoul10(sz); // ---- flip the face order out->vertices.resize(out->vertices.size()+m); @@ -978,7 +978,7 @@ void NFFImporter::InternReadFile( const else if (TokenMatch(sz,"tess",4)) { SkipSpaces(&sz); - iTesselation = strtol10(sz); + iTesselation = strtoul10(sz); } // 'from' - camera position else if (TokenMatch(sz,"from",4)) diff -up assimp--2.0.863-sdk/code/OFFLoader.cpp.fastatof assimp--2.0.863-sdk/code/OFFLoader.cpp --- assimp--2.0.863-sdk/code/OFFLoader.cpp.fastatof 2011-03-22 13:05:17.639759001 -0400 +++ assimp--2.0.863-sdk/code/OFFLoader.cpp 2011-03-22 13:05:21.475759018 -0400 @@ -112,8 +112,8 @@ void OFFImporter::InternReadFile( const } const char* sz = line; SkipSpaces(&sz); - const unsigned int numVertices = strtol10(sz,&sz);SkipSpaces(&sz); - const unsigned int numFaces = strtol10(sz,&sz); + const unsigned int numVertices = strtoul10(sz,&sz);SkipSpaces(&sz); + const unsigned int numFaces = strtoul10(sz,&sz); pScene->mMeshes = new aiMesh*[ pScene->mNumMeshes = 1 ]; aiMesh* mesh = pScene->mMeshes[0] = new aiMesh(); @@ -148,7 +148,7 @@ void OFFImporter::InternReadFile( const break; } sz = line;SkipSpaces(&sz); - if(!(faces->mNumIndices = strtol10(sz,&sz)) || faces->mNumIndices > 9) + if(!(faces->mNumIndices = strtoul10(sz,&sz)) || faces->mNumIndices > 9) { DefaultLogger::get()->error("OFF: Faces with zero indices aren't allowed"); --mesh->mNumFaces; @@ -172,14 +172,14 @@ void OFFImporter::InternReadFile( const unsigned int idx; sz = line;SkipSpaces(&sz); - if(!(idx = strtol10(sz,&sz)) || idx > 9) + if(!(idx = strtoul10(sz,&sz)) || idx > 9) continue; faces->mIndices = new unsigned int [faces->mNumIndices]; for (unsigned int m = 0; m < faces->mNumIndices;++m) { SkipSpaces(&sz); - if ((idx = strtol10(sz,&sz)) >= numVertices) + if ((idx = strtoul10(sz,&sz)) >= numVertices) { DefaultLogger::get()->error("OFF: Vertex index is out of range"); idx = numVertices-1; diff -up assimp--2.0.863-sdk/code/PlyParser.cpp.fastatof assimp--2.0.863-sdk/code/PlyParser.cpp --- assimp--2.0.863-sdk/code/PlyParser.cpp.fastatof 2011-03-22 12:52:15.090758998 -0400 +++ assimp--2.0.863-sdk/code/PlyParser.cpp 2011-03-22 13:11:41.344759001 -0400 @@ -387,7 +387,7 @@ bool PLY::Element::ParseElement (const c if (!SkipSpaces(&pCur))return false; //parse the number of occurences of this element - pOut->NumOccur = strtol10(pCur,&pCur); + pOut->NumOccur = strtoul10(pCur,&pCur); // go to the next line SkipSpacesAndLineEnd(pCur,&pCur); @@ -800,14 +800,14 @@ bool PLY::PropertyInstance::ParseValue( case EDT_UShort: case EDT_UChar: - out->iUInt = (uint32_t)strtol10(pCur, &pCur); + out->iUInt = (uint32_t)strtoul10(pCur, &pCur); break; case EDT_Int: case EDT_Short: case EDT_Char: - out->iInt = (int32_t)strtol10s(pCur, &pCur); + out->iInt = (int32_t)strtol10(pCur, &pCur); break; case EDT_Float: diff -up assimp--2.0.863-sdk/code/SceneCombiner.cpp.fastatof assimp--2.0.863-sdk/code/SceneCombiner.cpp --- assimp--2.0.863-sdk/code/SceneCombiner.cpp.fastatof 2011-03-22 13:05:47.551758995 -0400 +++ assimp--2.0.863-sdk/code/SceneCombiner.cpp 2011-03-22 13:05:51.736759001 -0400 @@ -405,7 +405,7 @@ void SceneCombiner::MergeScenes(aiScene* aiString& s = *((aiString*)prop->mData); if ('*' == s.data[0]) { // Offset the index and write it back .. - const unsigned int idx = strtol10(&s.data[1]) + offset[n]; + const unsigned int idx = strtoul10(&s.data[1]) + offset[n]; ASSIMP_itoa10(&s.data[1],sizeof(s.data)-1,idx); } } diff -up assimp--2.0.863-sdk/code/SMDLoader.cpp.fastatof assimp--2.0.863-sdk/code/SMDLoader.cpp --- assimp--2.0.863-sdk/code/SMDLoader.cpp.fastatof 2011-03-22 13:06:00.968759053 -0400 +++ assimp--2.0.863-sdk/code/SMDLoader.cpp 2011-03-22 13:11:48.357759000 -0400 @@ -681,7 +681,7 @@ void SMDImporter::ParseFile() if (TokenMatch(szCurrent,"version",7)) { if(!SkipSpaces(szCurrent,&szCurrent)) break; - if (1 != strtol10(szCurrent,&szCurrent)) + if (1 != strtoul10(szCurrent,&szCurrent)) { DefaultLogger::get()->warn("SMD.version is not 1. This " "file format is not known. Continuing happily ..."); @@ -1031,7 +1031,7 @@ bool SMDImporter::ParseUnsignedInt(const if(!SkipSpaces(&szCurrent)) return false; - out = strtol10(szCurrent,szCurrentOut); + out = strtoul10(szCurrent,szCurrentOut); return true; } @@ -1043,7 +1043,7 @@ bool SMDImporter::ParseSignedInt(const c if(!SkipSpaces(&szCurrent)) return false; - out = strtol10s(szCurrent,szCurrentOut); + out = strtol10(szCurrent,szCurrentOut); return true; } diff -up assimp--2.0.863-sdk/code/UnrealLoader.cpp.fastatof assimp--2.0.863-sdk/code/UnrealLoader.cpp --- assimp--2.0.863-sdk/code/UnrealLoader.cpp.fastatof 2011-03-22 13:06:14.688759000 -0400 +++ assimp--2.0.863-sdk/code/UnrealLoader.cpp 2011-03-22 13:06:20.974758999 -0400 @@ -266,7 +266,7 @@ void UnrealImporter::InternReadFile( con for (;!IsLineEnd(*data);++data) { if (!::ASSIMP_strincmp(data,"NUM=",4)) { data += 4; - me.first = strtol10(data,&data); + me.first = strtoul10(data,&data); } else if (!::ASSIMP_strincmp(data,"TEXTURE=",8)) { data += 8; diff -up assimp--2.0.863-sdk/code/XFileParser.cpp.fastatof assimp--2.0.863-sdk/code/XFileParser.cpp --- assimp--2.0.863-sdk/code/XFileParser.cpp.fastatof 2011-03-22 13:10:07.226759020 -0400 +++ assimp--2.0.863-sdk/code/XFileParser.cpp 2011-03-22 13:10:19.294759272 -0400 @@ -1262,7 +1262,7 @@ unsigned int XFileParser::ReadInt() { FindNextNoneWhiteSpace(); - // TODO: consider using strtol10s instead??? + // TODO: consider using strtol10 instead??? // check preceeding minus sign bool isNegative = false; diff -up assimp--2.0.863-sdk/doc/dox.h.fastatof assimp--2.0.863-sdk/doc/dox.h --- assimp--2.0.863-sdk/doc/dox.h.fastatof 2011-03-22 13:08:49.587759010 -0400 +++ assimp--2.0.863-sdk/doc/dox.h 2011-03-22 13:09:12.275758986 -0400 @@ -877,7 +877,7 @@ Mixed stuff for internal use by loaders,
  • StreamReader (StreamReader.h) - safe, endianess-correct, binary reading.
  • IrrXML (irrXMLWrapper.h) - for XML-parsing (SAX.
  • CommentRemover (RemoveComments.h) - remove single-line and multi-line comments from a text file.
  • -
  • fast_atof, strtol10, strtol16, SkipSpaceAndLineEnd, SkipToNextToken .. large family of low-level +
  • fast_atof, strtoul10, strtoul16, SkipSpaceAndLineEnd, SkipToNextToken .. large family of low-level parsing functions, mostly declared in fast_atof.h, StringComparison.h and ParsingUtils.h (a collection that grew historically, so don't expect perfect organization).
  • ComputeNormalsWithSmoothingsGroups() (SmoothingGroups.h) - Computes normal vectors from plain old smoothing groups.
  • diff -up assimp--2.0.863-sdk/tools/assimp_cmd/ImageExtractor.cpp.fastatof assimp--2.0.863-sdk/tools/assimp_cmd/ImageExtractor.cpp --- assimp--2.0.863-sdk/tools/assimp_cmd/ImageExtractor.cpp.fastatof 2011-03-22 13:09:24.976759003 -0400 +++ assimp--2.0.863-sdk/tools/assimp_cmd/ImageExtractor.cpp 2011-03-22 13:09:37.533759028 -0400 @@ -262,10 +262,10 @@ int Assimp_Extract (const char* const* p nosuffix = true; } else if ( !strncmp( params[i], "--texture=",10)) { - texIdx = ::strtol10(params[i]+10); + texIdx = ::strtoul10(params[i]+10); } else if ( !strncmp( params[i], "-t",2)) { - texIdx = ::strtol10(params[i]+2); + texIdx = ::strtoul10(params[i]+2); } else if ( !strcmp( params[i], "-ba") || !strcmp( params[i], "--bmp-with-alpha")) { flags |= AI_EXTRACT_WRITE_BMP_ALPHA;