[Libreoffice-commits] core.git: 7 commits - connectivity/source filter/source include/filter lotuswordpro/source sc/source vcl/source
Michael Stahl
mstahl at redhat.com
Mon Jun 6 12:51:58 UTC 2016
connectivity/source/drivers/dbase/DIndex.cxx | 32 ++++
connectivity/source/drivers/dbase/DIndexes.cxx | 2
connectivity/source/drivers/dbase/DTable.cxx | 11 +
connectivity/source/inc/dbase/DIndex.hxx | 2
filter/source/graphicfilter/itga/itga.cxx | 11 +
filter/source/msfilter/svdfppt.cxx | 1
include/filter/msfilter/svdfppt.hxx | 4
lotuswordpro/source/filter/lwpsdwfileloader.cxx | 2
lotuswordpro/source/filter/lwpsdwgrouploaderv0102.cxx | 26 +--
sc/source/filter/starcalc/scflt.cxx | 14 +
vcl/source/filter/sgfbram.cxx | 130 +++++++-----------
vcl/source/filter/sgvmain.cxx | 26 +--
12 files changed, 144 insertions(+), 117 deletions(-)
New commits:
commit 1bf3cafd4cd6c3133adaad764e4f216a5d0ead1c
Author: Michael Stahl <mstahl at redhat.com>
Date: Mon Jun 6 13:56:43 2016 +0200
sc: StarCalc/DOS import: fix an endian issue
Change-Id: I0f76661d1aec104ee7e22a8abd5f734553796c33
diff --git a/sc/source/filter/starcalc/scflt.cxx b/sc/source/filter/starcalc/scflt.cxx
index 0d7f37c..44088e3 100644
--- a/sc/source/filter/starcalc/scflt.cxx
+++ b/sc/source/filter/starcalc/scflt.cxx
@@ -1021,7 +1021,19 @@ void Sc10Import::LoadFileInfo()
void Sc10Import::LoadEditStateInfo()
{
Sc10EditStateInfo EditStateInfo;
- rStream.Read(&EditStateInfo, sizeof(EditStateInfo));
+
+ sal_uInt64 const nOldPos(rStream.Tell());
+
+ rStream.ReadUInt16(EditStateInfo.CarretX);
+ rStream.ReadUInt16(EditStateInfo.CarretY);
+ rStream.ReadUInt16(EditStateInfo.CarretZ);
+ rStream.ReadUInt16(EditStateInfo.DeltaX);
+ rStream.ReadUInt16(EditStateInfo.DeltaY);
+ rStream.ReadUInt16(EditStateInfo.DeltaZ);
+ rStream.ReadUChar(EditStateInfo.DataBaseMode);
+ rStream.Read(EditStateInfo.Reserved, sizeof(EditStateInfo.Reserved));
+
+ assert(rStream.GetError() || rStream.Tell() == nOldPos + sizeof(Sc10EditStateInfo));
nError = rStream.GetError();
nShowTab = static_cast<SCTAB>(EditStateInfo.DeltaZ);
commit da4f7d5d76e054627b61521657d40141b9728e15
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Jun 3 23:50:14 2016 +0200
filter: "tga" import: fix some endian issues in ImplReadPalette
Change-Id: Ia8ec7b7e19cf9b6b19497cbd77ae5a4e2fdccee7
diff --git a/filter/source/graphicfilter/itga/itga.cxx b/filter/source/graphicfilter/itga/itga.cxx
index 20a9006..6bf858c 100644
--- a/filter/source/graphicfilter/itga/itga.cxx
+++ b/filter/source/graphicfilter/itga/itga.cxx
@@ -734,14 +734,21 @@ bool TGAReader::ImplReadPalette()
break;
case 32 :
- m_rTGA.Read( mpColorMap, 4 * nColors );
+ for (sal_uInt16 i = 0; i < nColors; i++)
+ {
+ m_rTGA.ReadUInt32(mpColorMap[i]);
+ }
break;
case 24 :
{
for ( sal_uLong i = 0; i < nColors; i++ )
{
- m_rTGA.Read( &mpColorMap[ i ], 3 );
+ sal_uInt8 nBlue;
+ sal_uInt8 nGreen;
+ sal_uInt8 nRed;
+ m_rTGA.ReadUChar(nBlue).ReadUChar(nGreen).ReadUChar(nRed);
+ mpColorMap[i] = (nRed << 16) | (nGreen << 8) | nBlue;
}
}
break;
commit 3e9aa8b2b29f5222d93ace0e02207fe3bd7d853f
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Jun 3 23:28:10 2016 +0200
lotuswordpro: fix some endian issues
Change-Id: I224c2d894071d6ec7d0afd5e2780a42b842aa32e
diff --git a/lotuswordpro/source/filter/lwpsdwfileloader.cxx b/lotuswordpro/source/filter/lwpsdwfileloader.cxx
index b30097a..ac2687a 100644
--- a/lotuswordpro/source/filter/lwpsdwfileloader.cxx
+++ b/lotuswordpro/source/filter/lwpsdwfileloader.cxx
@@ -84,7 +84,7 @@ void LwpSdwFileLoader::CreateDrawObjects(std::vector< rtl::Reference<XFFrame> >*
if (BinSignature[0] == 'S' && BinSignature[1] == 'M')
{
unsigned short nVersion;
- m_pStream->Read(&nVersion,2);
+ m_pStream->ReadUInt16(nVersion);
m_pStream->Seek(0);
if (nVersion<0x0102)
diff --git a/lotuswordpro/source/filter/lwpsdwgrouploaderv0102.cxx b/lotuswordpro/source/filter/lwpsdwgrouploaderv0102.cxx
index de653c5..6d134a0 100644
--- a/lotuswordpro/source/filter/lwpsdwgrouploaderv0102.cxx
+++ b/lotuswordpro/source/filter/lwpsdwgrouploaderv0102.cxx
@@ -106,7 +106,7 @@ void LwpSdwGroupLoaderV0102::BeginDrawObjects(std::vector< rtl::Reference<XFFram
}
//version
unsigned short nVersion;
- m_pStream->Read(&nVersion,2);
+ m_pStream->ReadUInt16(nVersion);
if (nVersion<0x0102)
{
assert(false);
@@ -116,15 +116,15 @@ void LwpSdwGroupLoaderV0102::BeginDrawObjects(std::vector< rtl::Reference<XFFram
m_pStream->SeekRel(4);
//record count
unsigned short nRecCount;
- m_pStream->Read(&nRecCount,2);
+ m_pStream->ReadUInt16(nRecCount);
// selCount
m_pStream->SeekRel(2);
//boundrect
unsigned short left,top,right,bottom;
- m_pStream->Read(&left,2);
- m_pStream->Read(&top,2);
- m_pStream->Read(&right,2);
- m_pStream->Read(&bottom,2);
+ m_pStream->ReadUInt16(left);
+ m_pStream->ReadUInt16(top);
+ m_pStream->ReadUInt16(right);
+ m_pStream->ReadUInt16(bottom);
// fileSize
m_pStream->SeekRel(2);
@@ -251,7 +251,7 @@ XFDrawGroup* LwpSdwGroupLoaderV0102::CreateDrawGroupObject()
}
//version
unsigned short nVersion;
- m_pStream->Read(&nVersion,2);
+ m_pStream->ReadUInt16(nVersion);
if (nVersion<0x0102)
{
assert(false);
@@ -261,15 +261,15 @@ XFDrawGroup* LwpSdwGroupLoaderV0102::CreateDrawGroupObject()
m_pStream->SeekRel(4);
//record count
unsigned short nRecCount;
- m_pStream->Read(&nRecCount,2);
+ m_pStream->ReadUInt16(nRecCount);
// selCount
m_pStream->SeekRel(2);
//boundrect
unsigned short left,top,right,bottom;
- m_pStream->Read(&left,2);
- m_pStream->Read(&top,2);
- m_pStream->Read(&right,2);
- m_pStream->Read(&bottom,2);
+ m_pStream->ReadUInt16(left);
+ m_pStream->ReadUInt16(top);
+ m_pStream->ReadUInt16(right);
+ m_pStream->ReadUInt16(bottom);
// fileSize
m_pStream->SeekRel(2);
@@ -304,7 +304,7 @@ XFFrame* LwpSdwGroupLoaderV0102::CreateDrawObject()
{
//record type
unsigned char recType;
- m_pStream->Read(&recType,1);
+ m_pStream->ReadUChar(recType);
LwpDrawObj* pDrawObj = nullptr;
XFFrame* pRetObjct = nullptr;
commit 4849f342b6969abb777d91a1fa77ec120f861c48
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Jun 3 22:53:20 2016 +0200
connectivity: DBase: fix some obvious endian issues
These calls to SvStream::Read/Write operate on structs that contain
32-bit integers.
Change-Id: I2d45128ad482013cd9ef1fca0dd259dfc09c904f
diff --git a/connectivity/source/drivers/dbase/DIndex.cxx b/connectivity/source/drivers/dbase/DIndex.cxx
index a2e8e3e9..0a6e225 100644
--- a/connectivity/source/drivers/dbase/DIndex.cxx
+++ b/connectivity/source/drivers/dbase/DIndex.cxx
@@ -349,11 +349,27 @@ ONDXPage* ODbaseIndex::CreatePage(sal_uInt32 nPagePos, ONDXPage* pParent, bool b
return pPage;
}
+void connectivity::dbase::ReadHeader(
+ SvStream & rStream, ODbaseIndex::NDXHeader & rHeader)
+{
+ sal_uInt64 const nOldPos(rStream.Tell());
+ rStream.ReadUInt32(rHeader.db_rootpage);
+ rStream.ReadUInt32(rHeader.db_pagecount);
+ rStream.Read(&rHeader.db_frei, 4);
+ rStream.ReadUInt16(rHeader.db_keylen);
+ rStream.ReadUInt16(rHeader.db_maxkeys);
+ rStream.ReadUInt16(rHeader.db_keytype);
+ rStream.ReadUInt16(rHeader.db_keyrec);
+ rStream.Read(&rHeader.db_frei1, 3);
+ rStream.ReadUChar(rHeader.db_unique);
+ rStream.Read(&rHeader.db_name, 488);
+ assert(rStream.GetError() || rStream.Tell() == nOldPos + DINDEX_PAGE_SIZE);
+}
SvStream& connectivity::dbase::operator >> (SvStream &rStream, ODbaseIndex& rIndex)
{
rStream.Seek(0);
- rStream.Read(&rIndex.m_aHeader,DINDEX_PAGE_SIZE);
+ ReadHeader(rStream, rIndex.m_aHeader);
rIndex.m_nRootPage = rIndex.m_aHeader.db_rootpage;
rIndex.m_nPageCount = rIndex.m_aHeader.db_pagecount;
@@ -363,7 +379,19 @@ SvStream& connectivity::dbase::operator >> (SvStream &rStream, ODbaseIndex& rInd
SvStream& connectivity::dbase::WriteODbaseIndex(SvStream &rStream, ODbaseIndex& rIndex)
{
rStream.Seek(0);
- OSL_VERIFY( rStream.Write(&rIndex.m_aHeader,DINDEX_PAGE_SIZE) == DINDEX_PAGE_SIZE );
+ sal_uInt64 const nOldPos(rStream.Tell());
+ rStream.WriteUInt32(rIndex.m_aHeader.db_rootpage);
+ rStream.WriteUInt32(rIndex.m_aHeader.db_pagecount);
+ rStream.Write(&rIndex.m_aHeader.db_frei, 4);
+ rStream.WriteUInt16(rIndex.m_aHeader.db_keylen);
+ rStream.WriteUInt16(rIndex.m_aHeader.db_maxkeys);
+ rStream.WriteUInt16(rIndex.m_aHeader.db_keytype);
+ rStream.WriteUInt16(rIndex.m_aHeader.db_keyrec);
+ rStream.Write(&rIndex.m_aHeader.db_frei1, 3);
+ rStream.WriteUChar(rIndex.m_aHeader.db_unique);
+ rStream.Write(&rIndex.m_aHeader.db_name, 488);
+ assert(rStream.GetError() || rStream.Tell() == nOldPos + DINDEX_PAGE_SIZE);
+ SAL_WARN_IF(rStream.GetError(), "connectivity.dbase", "write error");
return rStream;
}
diff --git a/connectivity/source/drivers/dbase/DIndexes.cxx b/connectivity/source/drivers/dbase/DIndexes.cxx
index 939fd8a..34e98ec 100644
--- a/connectivity/source/drivers/dbase/DIndexes.cxx
+++ b/connectivity/source/drivers/dbase/DIndexes.cxx
@@ -60,7 +60,7 @@ sdbcx::ObjectType ODbaseIndexes::createObject(const OUString& _rName)
ODbaseIndex::NDXHeader aHeader;
pFileStream->Seek(0);
- pFileStream->Read(&aHeader,DINDEX_PAGE_SIZE);
+ ReadHeader(*pFileStream, aHeader);
delete pFileStream;
ODbaseIndex* pIndex = new ODbaseIndex(m_pTable,aHeader,_rName);
diff --git a/connectivity/source/drivers/dbase/DTable.cxx b/connectivity/source/drivers/dbase/DTable.cxx
index e3d518c..95c65ca 100644
--- a/connectivity/source/drivers/dbase/DTable.cxx
+++ b/connectivity/source/drivers/dbase/DTable.cxx
@@ -323,8 +323,15 @@ void ODbaseTable::fillColumns()
for (; i < nFieldCount; i++)
{
DBFColumn aDBFColumn;
- sal_Size nRead = m_pFileStream->Read(&aDBFColumn, sizeof(aDBFColumn));
- if (nRead != sizeof(aDBFColumn))
+ sal_uInt64 const nOldPos(m_pFileStream->Tell());
+ m_pFileStream->Read(aDBFColumn.db_fnm, 11);
+ m_pFileStream->ReadUChar(aDBFColumn.db_typ);
+ m_pFileStream->ReadUInt32(aDBFColumn.db_adr);
+ m_pFileStream->ReadUChar(aDBFColumn.db_flng);
+ m_pFileStream->ReadUChar(aDBFColumn.db_dez);
+ m_pFileStream->Read(aDBFColumn.db_frei2, 14);
+ assert(m_pFileStream->GetError() || m_pFileStream->Tell() == nOldPos + sizeof(aDBFColumn));
+ if (m_pFileStream->GetError())
{
SAL_WARN("connectivity.drivers", "ODbaseTable::fillColumns: short read!");
break;
diff --git a/connectivity/source/inc/dbase/DIndex.hxx b/connectivity/source/inc/dbase/DIndex.hxx
index 3b51c11..b7f40ff 100644
--- a/connectivity/source/inc/dbase/DIndex.hxx
+++ b/connectivity/source/inc/dbase/DIndex.hxx
@@ -139,6 +139,8 @@ namespace connectivity
SvStream& WriteODbaseIndex(SvStream &rStream, ODbaseIndex&);
SvStream& operator >> (SvStream &rStream, ODbaseIndex&);
+
+ void ReadHeader(SvStream & rStream, ODbaseIndex::NDXHeader & rHeader);
}
}
commit 6325cdb735effc5c9ff85819b20aec4271158519
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Jun 3 22:00:12 2016 +0200
filter: PPT import: PptPlaceholder is 1 byte large
The array of 8 bytes corresponds to 8 enum values and is read directly
in ReadPptSlideLayoutAto(); this was wrongly converted to enum.
(regression from e5a03da8eb02c333502d6b427625e7bf554ff203)
Change-Id: I5757e06459467b3c84c4a404493fa3be23e4e9a0
diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx
index 9c27674..3b5670f 100644
--- a/filter/source/msfilter/svdfppt.cxx
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -309,6 +309,7 @@ SvStream& ReadPptSlideLayoutAtom( SvStream& rIn, PptSlideLayoutAtom& rAtom )
sal_Int32 nTmp;
rIn.ReadInt32(nTmp);
rAtom.eLayout = static_cast<PptSlideLayout>(nTmp);
+ static_assert(sizeof(rAtom.aPlaceholderId) == 8, "wrong size of serialized array");
rIn.Read( rAtom.aPlaceholderId, 8 );
return rIn;
}
diff --git a/include/filter/msfilter/svdfppt.hxx b/include/filter/msfilter/svdfppt.hxx
index 5efa503..c3c2d38 100644
--- a/include/filter/msfilter/svdfppt.hxx
+++ b/include/filter/msfilter/svdfppt.hxx
@@ -58,7 +58,7 @@ class PPTTextObj;
class DffRecordHeader;
class SvxBulletItem;
enum class PptSlideLayout;
-enum class PptPlaceholder;
+enum class PptPlaceholder : sal_uInt8;
#define PPT_IMPORTFLAGS_NO_TEXT_ASSERT 1
@@ -1456,7 +1456,7 @@ enum class PptSlideLayout
};
// the following table describes the placeholder id's (values from reality followed by values taken from the documentation)
-enum class PptPlaceholder
+enum class PptPlaceholder : sal_uInt8
{
NONE = 0, // 0 None
MASTERTITLE = 1, // 1 Master title
commit 06a6f3b352d4471892c6516aebf2e948cac329b0
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Jun 3 17:43:42 2016 +0200
vcl: "sgf" filter: replace manual byte-swapping with SvStream methods
Change-Id: I316744a036f540140c494bd7997ae7c5077913d2
diff --git a/vcl/source/filter/sgfbram.cxx b/vcl/source/filter/sgfbram.cxx
index c449afc..98644cd 100644
--- a/vcl/source/filter/sgfbram.cxx
+++ b/vcl/source/filter/sgfbram.cxx
@@ -35,20 +35,21 @@ SgfHeader::SgfHeader()
SvStream& ReadSgfHeader(SvStream& rIStream, SgfHeader& rHead)
{
- rIStream.Read(&rHead.Magic, SgfHeaderSize);
-#if defined OSL_BIGENDIAN
- rHead.Magic =OSL_SWAPWORD(rHead.Magic );
- rHead.Version=OSL_SWAPWORD(rHead.Version);
- rHead.Typ =OSL_SWAPWORD(rHead.Typ );
- rHead.Xsize =OSL_SWAPWORD(rHead.Xsize );
- rHead.Ysize =OSL_SWAPWORD(rHead.Ysize );
- rHead.Xoffs =OSL_SWAPWORD(rHead.Xoffs );
- rHead.Yoffs =OSL_SWAPWORD(rHead.Yoffs );
- rHead.Planes =OSL_SWAPWORD(rHead.Planes );
- rHead.SwGrCol=OSL_SWAPWORD(rHead.SwGrCol);
- rHead.OfsLo =OSL_SWAPWORD(rHead.OfsLo );
- rHead.OfsHi =OSL_SWAPWORD(rHead.OfsHi );
-#endif
+ sal_uInt64 const nOldPos(rIStream.Tell());
+ rIStream.ReadUInt16(rHead.Magic);
+ rIStream.ReadUInt16(rHead.Version);
+ rIStream.ReadUInt16(rHead.Typ);
+ rIStream.ReadUInt16(rHead.Xsize);
+ rIStream.ReadUInt16(rHead.Ysize);
+ rIStream.ReadInt16(rHead.Xoffs);
+ rIStream.ReadInt16(rHead.Yoffs);
+ rIStream.ReadUInt16(rHead.Planes);
+ rIStream.ReadUInt16(rHead.SwGrCol);
+ rIStream.Read(&rHead.Autor, 10);
+ rIStream.Read(&rHead.Programm, 10);
+ rIStream.ReadUInt16(rHead.OfsLo);
+ rIStream.ReadUInt16(rHead.OfsHi);
+ assert(rIStream.GetError() || rIStream.Tell() == nOldPos + SgfHeaderSize);
return rIStream;
}
@@ -65,15 +66,15 @@ SgfEntry::SgfEntry()
SvStream& ReadSgfEntry(SvStream& rIStream, SgfEntry& rEntr)
{
- rIStream.Read(&rEntr.Typ, SgfEntrySize);
-#if defined OSL_BIGENDIAN
- rEntr.Typ =OSL_SWAPWORD(rEntr.Typ );
- rEntr.iFrei=OSL_SWAPWORD(rEntr.iFrei);
- rEntr.lFreiLo=OSL_SWAPWORD (rEntr.lFreiLo);
- rEntr.lFreiHi=OSL_SWAPWORD (rEntr.lFreiHi);
- rEntr.OfsLo=OSL_SWAPWORD(rEntr.OfsLo);
- rEntr.OfsHi=OSL_SWAPWORD(rEntr.OfsHi);
-#endif
+ sal_uInt64 const nOldPos(rIStream.Tell());
+ rIStream.ReadUInt16(rEntr.Typ);
+ rIStream.ReadUInt16(rEntr.iFrei);
+ rIStream.ReadUInt16(rEntr.lFreiLo);
+ rIStream.ReadUInt16(rEntr.lFreiHi);
+ rIStream.Read(&rEntr.cFrei, 10);
+ rIStream.ReadUInt16(rEntr.OfsLo);
+ rIStream.ReadUInt16(rEntr.OfsHi);
+ assert(rIStream.GetError() || rIStream.Tell() == nOldPos + SgfEntrySize);
return rIStream;
}
@@ -82,38 +83,27 @@ sal_uInt32 SgfEntry::GetOffset()
SvStream& ReadSgfVector(SvStream& rIStream, SgfVector& rVect)
{
- rIStream.Read(&rVect, sizeof(rVect));
-#if defined OSL_BIGENDIAN
- rVect.Flag =OSL_SWAPWORD(rVect.Flag );
- rVect.x =OSL_SWAPWORD(rVect.x );
- rVect.y =OSL_SWAPWORD(rVect.y );
- rVect.OfsLo=OSL_SWAPDWORD (rVect.OfsLo);
- rVect.OfsHi=OSL_SWAPDWORD (rVect.OfsHi);
-#endif
+ sal_uInt64 const nOldPos(rIStream.Tell());
+ rIStream.ReadUInt16(rVect.Flag);
+ rIStream.ReadInt16(rVect.x);
+ rIStream.ReadInt16(rVect.y);
+ rIStream.ReadUInt16(rVect.OfsLo);
+ rIStream.ReadUInt16(rVect.OfsHi);
+ assert(rIStream.GetError() || rIStream.Tell() == nOldPos + SgfVectorSize);
return rIStream;
}
SvStream& WriteBmpFileHeader(SvStream& rOStream, BmpFileHeader& rHead)
{
-#if defined OSL_BIGENDIAN
- rHead.Typ =OSL_SWAPWORD(rHead.Typ );
- rHead.SizeLo =OSL_SWAPWORD(rHead.SizeLo );
- rHead.SizeHi =OSL_SWAPWORD(rHead.SizeHi );
- rHead.Reserve1=OSL_SWAPWORD(rHead.Reserve1);
- rHead.Reserve2=OSL_SWAPWORD(rHead.Reserve2);
- rHead.OfsLo =OSL_SWAPWORD(rHead.OfsLo );
- rHead.OfsHi =OSL_SWAPWORD(rHead.OfsHi );
-#endif
- rOStream.Write(&rHead, sizeof(rHead));
-#if defined OSL_BIGENDIAN
- rHead.Typ =OSL_SWAPWORD(rHead.Typ );
- rHead.SizeLo =OSL_SWAPWORD(rHead.SizeLo );
- rHead.SizeHi =OSL_SWAPWORD(rHead.SizeHi );
- rHead.Reserve1=OSL_SWAPWORD(rHead.Reserve1);
- rHead.Reserve2=OSL_SWAPWORD(rHead.Reserve2);
- rHead.OfsLo =OSL_SWAPWORD(rHead.OfsLo );
- rHead.OfsHi =OSL_SWAPWORD(rHead.OfsHi );
-#endif
+ sal_uInt64 const nOldPos(rOStream.Tell());
+ rOStream.WriteUInt16(rHead.Typ);
+ rOStream.WriteUInt16(rHead.SizeLo);
+ rOStream.WriteUInt16(rHead.SizeHi);
+ rOStream.WriteUInt16(rHead.Reserve1);
+ rOStream.WriteUInt16(rHead.Reserve2);
+ rOStream.WriteUInt16(rHead.OfsLo);
+ rOStream.WriteUInt16(rHead.OfsHi);
+ assert(rOStream.GetError() || rOStream.Tell() == nOldPos + BmpFileHeaderSize);
return rOStream;
}
@@ -136,33 +126,19 @@ sal_uInt32 BmpFileHeader::GetOfs()
SvStream& WriteBmpInfoHeader(SvStream& rOStream, BmpInfoHeader& rInfo)
{
-#if defined OSL_BIGENDIAN
- rInfo.Size =OSL_SWAPDWORD (rInfo.Size );
- rInfo.Width =OSL_SWAPDWORD (rInfo.Width );
- rInfo.Hight =OSL_SWAPDWORD (rInfo.Hight );
- rInfo.Planes =OSL_SWAPWORD(rInfo.Planes );
- rInfo.PixBits =OSL_SWAPWORD(rInfo.PixBits );
- rInfo.Compress=OSL_SWAPDWORD (rInfo.Compress);
- rInfo.ImgSize =OSL_SWAPDWORD (rInfo.ImgSize );
- rInfo.xDpmm =OSL_SWAPDWORD (rInfo.xDpmm );
- rInfo.yDpmm =OSL_SWAPDWORD (rInfo.yDpmm );
- rInfo.ColUsed =OSL_SWAPDWORD (rInfo.ColUsed );
- rInfo.ColMust =OSL_SWAPDWORD (rInfo.ColMust );
-#endif
- rOStream.Write(&rInfo, sizeof(rInfo));
-#if defined OSL_BIGENDIAN
- rInfo.Size =OSL_SWAPDWORD (rInfo.Size );
- rInfo.Width =OSL_SWAPDWORD (rInfo.Width );
- rInfo.Hight =OSL_SWAPDWORD (rInfo.Hight );
- rInfo.Planes =OSL_SWAPWORD(rInfo.Planes );
- rInfo.PixBits =OSL_SWAPWORD(rInfo.PixBits );
- rInfo.Compress=OSL_SWAPDWORD (rInfo.Compress);
- rInfo.ImgSize =OSL_SWAPDWORD (rInfo.ImgSize );
- rInfo.xDpmm =OSL_SWAPDWORD (rInfo.xDpmm );
- rInfo.yDpmm =OSL_SWAPDWORD (rInfo.yDpmm );
- rInfo.ColUsed =OSL_SWAPDWORD (rInfo.ColUsed );
- rInfo.ColMust =OSL_SWAPDWORD (rInfo.ColMust );
-#endif
+ sal_uInt64 const nOldPos(rOStream.Tell());
+ rOStream.WriteUInt32(rInfo.Size);
+ rOStream.WriteInt32(rInfo.Width);
+ rOStream.WriteInt32(rInfo.Hight);
+ rOStream.WriteUInt16(rInfo.Planes);
+ rOStream.WriteUInt16(rInfo.PixBits);
+ rOStream.WriteUInt32(rInfo.Compress);
+ rOStream.WriteUInt32(rInfo.ImgSize);
+ rOStream.WriteInt32(rInfo.xDpmm);
+ rOStream.WriteInt32(rInfo.yDpmm);
+ rOStream.WriteUInt32(rInfo.ColUsed);
+ rOStream.WriteUInt32(rInfo.ColMust);
+ assert(rOStream.GetError() || rOStream.Tell() == nOldPos + BmpInfoHeaderSize);
return rOStream;
}
commit 86b3215240ad9d008df5870cbf692c6986c3b7a1
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Jun 3 16:43:59 2016 +0200
vcl: "sgv" filter: replace more byteswapping with SvStream methods
Change-Id: Ibc34bb75a77b0dcba491e2c297b59bfb352ca2ef
diff --git a/vcl/source/filter/sgvmain.cxx b/vcl/source/filter/sgvmain.cxx
index bdae296..1d85a980 100644
--- a/vcl/source/filter/sgvmain.cxx
+++ b/vcl/source/filter/sgvmain.cxx
@@ -29,14 +29,6 @@
#include "sgvspln.hxx"
#include <unotools/ucbstreamhelper.hxx>
-#if defined OSL_BIGENDIAN
-
-#define SWAPPOINT(p) { \
- p.x=OSL_SWAPWORD(p.x); \
- p.y=OSL_SWAPWORD(p.y); }
-
-#endif
-
// Restrictions:
// - area patterns are matched to the available ones in Starview.
@@ -802,10 +794,11 @@ void DrawObjkList( SvStream& rInp, OutputDevice& rOut )
ReadPolyType( rInp, aPoly );
if (!rInp.GetError()) {
aPoly.EckP=new PointType[aPoly.nPoints];
- rInp.Read(aPoly.EckP, 4*aPoly.nPoints);
-#if defined OSL_BIGENDIAN
- for(short i=0;i<aPoly.nPoints;i++) SWAPPOINT(aPoly.EckP[i]);
-#endif
+ for (int i = 0; i < aPoly.nPoints; ++i)
+ {
+ rInp.ReadInt16(aPoly.EckP[i].x);
+ rInp.ReadInt16(aPoly.EckP[i].y);
+ }
if (!rInp.GetError()) aPoly.Draw(rOut);
delete[] aPoly.EckP;
}
@@ -815,10 +808,11 @@ void DrawObjkList( SvStream& rInp, OutputDevice& rOut )
ReadSplnType( rInp, aSpln );
if (!rInp.GetError()) {
aSpln.EckP=new PointType[aSpln.nPoints];
- rInp.Read(aSpln.EckP, 4*aSpln.nPoints);
-#if defined OSL_BIGENDIAN
- for(short i=0;i<aSpln.nPoints;i++) SWAPPOINT(aSpln.EckP[i]);
-#endif
+ for (int i = 0; i < aSpln.nPoints; ++i)
+ {
+ rInp.ReadInt16(aSpln.EckP[i].x);
+ rInp.ReadInt16(aSpln.EckP[i].y);
+ }
if (!rInp.GetError()) aSpln.Draw(rOut);
delete[] aSpln.EckP;
}
More information about the Libreoffice-commits
mailing list