]> git.mxchange.org Git - simgear.git/commitdiff
A first attempt at making the clouds3d endian aware. Almost there.
authorehofman <ehofman>
Wed, 9 Jul 2003 14:43:53 +0000 (14:43 +0000)
committerehofman <ehofman>
Wed, 9 Jul 2003 14:43:53 +0000 (14:43 +0000)
simgear/scene/sky/Makefile.am
simgear/scene/sky/clouds3d/Makefile.am
simgear/scene/sky/clouds3d/SkyArchive.cpp
simgear/scene/sky/clouds3d/SkyCloud.cpp

index 9ff4cf7eadd30edce127c21b7c24f1f6e761b4d0..efc38b9ae939ffec155495692ddf3c0852034470 100644 (file)
@@ -1,6 +1,6 @@
 includedir = @includedir@/scene/sky
 
-SUBDIRS = clouds3d
+SUBDIRS = clouds3d
 
 lib_LIBRARIES = libsgsky.a
 
index 1898860c443694ca1e410b61ac0df369023f553c..63d1aa4cd27c8592cf6a77c9d6a3ca3458499132 100644 (file)
@@ -1,4 +1,4 @@
-includedir = @includedir@/sky/clouds3d
+includedir = @includedir@/scene/sky/clouds3d
 
 # enable the following line once extgl.c get's added to the distro
 EXTRA_DIST = extgl.c extgl.h
index 4b52e1998d21bb382746504e4bffd654e889ca64..b069b088ad0b8b3740d5748d937510eac31924e3 100644 (file)
@@ -2,7 +2,7 @@
 // File : SkyArchive.cpp
 //------------------------------------------------------------------------------
 // SkyWorks : Copyright 2002 Mark J. Harris and
-//                                             The University of North Carolina at Chapel Hill
+//            The University of North Carolina at Chapel Hill
 //------------------------------------------------------------------------------
 // Permission to use, copy, modify, distribute and sell this software and its 
 // documentation for any purpose is hereby granted without fee, provided that 
@@ -20,6 +20,8 @@
  * 
  * Implementation of class SkyArchive.
  */
+
+#include <plib/ul.h>
 #include "SkyArchive.hpp"
 
 #include <assert.h>
@@ -507,8 +509,8 @@ SKYRESULT SkyArchive::FindInt16(const char* pName, short* pInt16, unsigned int i
   const SkyArchiveEntry* pEntry = _FindEntry(pName, index, INT16_TYPE);
   if (pEntry)
   {
-    short* pData  = (short*)(pEntry->pData);
-    *pInt16       = *pData;
+    unsigned short* pData  = (unsigned short*)(pEntry->pData);
+    *pInt16       = ulEndianLittle16(*pData);
     return SKYRESULT_OK;
   }
   return SKYRESULT_FAIL;
@@ -527,8 +529,8 @@ SKYRESULT SkyArchive::FindInt32(const char* pName, int* pInt32, unsigned int ind
   const SkyArchiveEntry* pEntry = _FindEntry(pName, index, INT32_TYPE);
   if (pEntry)
   {
-    int* pData  = (int*)(pEntry->pData);
-    *pInt32     = *pData;
+    unsigned int* pData  = (unsigned int*)(pEntry->pData);
+    *pInt32     = ulEndianLittle32(*pData);
     return SKYRESULT_OK;
   }
   return SKYRESULT_FAIL;
@@ -568,7 +570,7 @@ SKYRESULT SkyArchive::FindUInt16(const char* pName, unsigned short* pUInt16, uns
   if (pEntry)
   {
     unsigned short* pData = (unsigned short*)(pEntry->pData);
-    *pUInt16              = *pData;
+    *pUInt16              = ulEndianLittle16(*pData);
     return SKYRESULT_OK;
   }
   return SKYRESULT_FAIL;
@@ -588,7 +590,7 @@ SKYRESULT SkyArchive::FindUInt32(const char* pName, unsigned int* pUInt32, unsig
   if (pEntry)
   {
     unsigned int* pData = (unsigned int*)(pEntry->pData);
-    *pUInt32            = *pData;
+    *pUInt32            = ulEndianLittle32(*pData);
     return SKYRESULT_OK;
   }
   return SKYRESULT_FAIL;
@@ -608,7 +610,7 @@ SKYRESULT SkyArchive::FindFloat32(const char* pName, float* pFloat32, unsigned i
   if (pEntry)
   {
     float* pData  = (float*)(pEntry->pData);
-    *pFloat32     = *pData;
+    *pFloat32     = ulEndianLittleFloat(*pData);
     return SKYRESULT_OK;
   }
   return SKYRESULT_FAIL;
@@ -628,7 +630,7 @@ SKYRESULT SkyArchive::FindFloat64(const char* pName, double* pFloat64, unsigned
   if (pEntry)
   {
     double* pData = (double*)(pEntry->pData);
-    *pFloat64     = *pData;
+    *pFloat64     = ulEndianLittleDouble(*pData);
     return SKYRESULT_OK;
   }
   return SKYRESULT_FAIL;
@@ -1160,9 +1162,12 @@ SKYRESULT SkyArchive::_Load( FILE* pSrcFile)
   // load the first record
   SkyArchiveFileEntry thisItem;
   size_t iNumItemsRead = fread((void*)&thisItem, sizeof(SkyArchiveFileEntry), 1, pSrcFile);
-  if (1 > iNumItemsRead)
+  if (!iNumItemsRead)
     FAIL_RETURN_MSG(SKYRESULT_FAIL, "Error: SkyArchive::_Load(): failed to read Archive header.");
-  
+
+  unsigned int ui = thisItem.iDataSize;
+  thisItem.iDataSize = ulEndianLittle32(ui);
+
   _pName = new char[::strlen(thisItem.pName)+1];
   ::strcpy( _pName, thisItem.pName);
     
@@ -1173,6 +1178,10 @@ SKYRESULT SkyArchive::_Load( FILE* pSrcFile)
     iNumItemsRead = fread((void*)&embeddedItem, sizeof(SkyArchiveFileEntry), 1, pSrcFile);
     if (1 > iNumItemsRead)
       FAIL_RETURN_MSG(SKYRESULT_FAIL, "Error: SkyArchive::_Load(): failed to read embedded archive item.");
+
+    unsigned int ui = embeddedItem.iDataSize;
+    embeddedItem.iDataSize = ulEndianLittle32(ui);
+
    
     switch( embeddedItem.type)
     {
index de4f5afa0ed80e3b11143408434dd369674f67c9..70690cafd6b5f131d4f99ed231f858ac2573e46e 100644 (file)
@@ -25,6 +25,8 @@
 // warning for truncation of template name for browse info
 #pragma warning( disable : 4786)
 
+#include <plib/ul.h>
+
 #include "SkyCloud.hpp"
 #include "SkyRenderableInstance.hpp" 
 #include "SkyContext.hpp"