Kaydet (Commit) cae53cf1 authored tarafından Tomaž Vajngerl's avatar Tomaž Vajngerl Kaydeden (comit) Tomaž Vajngerl

Decouple reading/writing of Color into GenericTypeSerializer

This adds GenericTypeSerializer, which is now responsible of
serializing the Color into a stream (other types will follow), but
only for the older version of the binary format. The new version
we just write the sal_UInt32 mValue directly.

This is a start of decoupling the serialization of generic types
in tools and vcl module from the actual type, so we can in the
future replace those with basegfx variant.

Change-Id: I92738e7c178cac5cbca882dcbe45c80cc8269466
Reviewed-on: https://gerrit.libreoffice.org/71404
Tested-by: Jenkins
Reviewed-by: 's avatarTomaž Vajngerl <quikee@gmail.com>
üst 55e28737
......@@ -44,6 +44,8 @@
#include <editeng/formatbreakitem.hxx>
#include <editeng/keepitem.hxx>
#include <editeng/shaditem.hxx>
#include <tools/GenericTypeSerializer.hxx>
void Create_legacy_direct_set(SvxFontHeightItem& rItem, sal_uInt32 nH, sal_uInt16 nP, MapUnit eP)
{
......@@ -273,16 +275,18 @@ namespace legacy
void Create(SvxColorItem& rItem, SvStream& rStrm, sal_uInt16)
{
Color aColor(COL_AUTO);
ReadColor(rStrm, aColor);
tools::GenericTypeSerializer aSerializer(rStrm);
aSerializer.readColor(aColor);
rItem.SetValue(aColor);
}
SvStream& Store(const SvxColorItem& rItem, SvStream& rStrm, sal_uInt16 nItemVersion)
{
tools::GenericTypeSerializer aSerializer(rStrm);
if( VERSION_USEAUTOCOLOR == nItemVersion && COL_AUTO == rItem.GetValue() )
WriteColor( rStrm, COL_BLACK );
aSerializer.writeColor(COL_BLACK);
else
WriteColor( rStrm, rItem.GetValue() );
aSerializer.writeColor(rItem.GetValue());
return rStrm;
}
}
......@@ -310,7 +314,9 @@ namespace legacy
sal_uInt16 nOutline, nInline, nDistance;
sal_uInt16 nStyle = css::table::BorderLineStyle::NONE;
Color aColor;
ReadColor( stream, aColor ).ReadUInt16( nOutline ).ReadUInt16( nInline ).ReadUInt16( nDistance );
tools::GenericTypeSerializer aSerializer(stream);
aSerializer.readColor(aColor);
stream.ReadUInt16( nOutline ).ReadUInt16( nInline ).ReadUInt16( nDistance );
if (version >= BORDER_LINE_WITH_STYLE_VERSION)
stream.ReadUInt16( nStyle );
......@@ -363,7 +369,9 @@ namespace legacy
/// Store a border line to a stream.
static SvStream& StoreBorderLine(SvStream &stream, const ::editeng::SvxBorderLine &l, sal_uInt16 version)
{
WriteColor( stream, l.GetColor() );
tools::GenericTypeSerializer aSerializer(stream);
aSerializer.writeColor(l.GetColor());
stream.WriteUInt16( l.GetOutWidth() )
.WriteUInt16( l.GetInWidth() )
.WriteUInt16( l.GetDistance() );
......@@ -432,7 +440,9 @@ namespace legacy
short nOutline, nInline, nDistance;
Color aColor;
ReadColor( rStrm, aColor ).ReadInt16( nOutline ).ReadInt16( nInline ).ReadInt16( nDistance );
tools::GenericTypeSerializer aSerializer(rStrm);
aSerializer.readColor(aColor);
rStrm.ReadInt16( nOutline ).ReadInt16( nInline ).ReadInt16( nDistance );
if( nOutline )
{
::editeng::SvxBorderLine aLine( &aColor );
......@@ -447,14 +457,16 @@ namespace legacy
if(nullptr != pLine)
{
WriteColor( rStrm, pLine->GetColor() );
tools::GenericTypeSerializer aSerializer(rStrm);
aSerializer.writeColor(pLine->GetColor());
rStrm.WriteInt16( pLine->GetOutWidth() )
.WriteInt16( pLine->GetInWidth() )
.WriteInt16( pLine->GetDistance() );
}
else
{
WriteColor( rStrm, Color() );
tools::GenericTypeSerializer aSerializer(rStrm);
aSerializer.writeColor(Color());
rStrm.WriteInt16( 0 ).WriteInt16( 0 ).WriteInt16( 0 );
}
......@@ -481,8 +493,9 @@ namespace legacy
sal_Int8 nStyle;
rStrm.ReadCharAsBool( bTrans );
ReadColor( rStrm, aTempColor );
ReadColor( rStrm, aTempFillColor );
tools::GenericTypeSerializer aSerializer(rStrm);
aSerializer.readColor(aTempColor);
aSerializer.readColor(aTempFillColor);
rStrm.ReadSChar( nStyle );
switch ( nStyle )
......@@ -579,8 +592,9 @@ namespace legacy
SvStream& Store(const SvxBrushItem& rItem, SvStream& rStrm, sal_uInt16)
{
rStrm.WriteBool( false );
WriteColor( rStrm, rItem.GetColor() );
WriteColor( rStrm, rItem.GetColor() );
tools::GenericTypeSerializer aSerializer(rStrm);
aSerializer.writeColor(rItem.GetColor());
aSerializer.writeColor(rItem.GetColor());
rStrm.WriteSChar( rItem.GetColor().GetTransparency() > 0 ? 0 : 1 ); //BRUSH_NULL : BRUSH_SOLID
sal_uInt16 nDoLoad = 0;
......@@ -782,8 +796,10 @@ namespace legacy
Color aFillColor;
sal_Int8 nStyle;
rStrm.ReadSChar( cLoc ).ReadUInt16( _nWidth ).ReadCharAsBool( bTrans );
ReadColor( rStrm, aColor );
ReadColor( rStrm, aFillColor ).ReadSChar( nStyle );
tools::GenericTypeSerializer aSerializer(rStrm);
aSerializer.readColor(aColor);
aSerializer.readColor(aFillColor);
rStrm.ReadSChar(nStyle);
aColor.SetTransparency(bTrans ? 0xff : 0);
rItem.SetLocation(static_cast<SvxShadowLocation>(cLoc));
......@@ -796,8 +812,9 @@ namespace legacy
rStrm.WriteSChar( static_cast<sal_uInt8>(rItem.GetLocation()) )
.WriteUInt16( rItem.GetWidth() )
.WriteBool( rItem.GetColor().GetTransparency() > 0 );
WriteColor( rStrm, rItem.GetColor() );
WriteColor( rStrm, rItem.GetColor() );
tools::GenericTypeSerializer aSerializer(rStrm);
aSerializer.writeColor(rItem.GetColor());
aSerializer.writeColor(rItem.GetColor());
rStrm.WriteSChar( rItem.GetColor().GetTransparency() > 0 ? 0 : 1 ); //BRUSH_NULL : BRUSH_SOLID
return rStrm;
}
......
......@@ -48,6 +48,7 @@
#include <tools/mapunit.hxx>
#include <tools/stream.hxx>
#include <tools/debug.hxx>
#include <tools/GenericTypeSerializer.hxx>
#include <unotools/configmgr.hxx>
#include <libxml/xmlwriter.h>
#include <editeng/unonrule.hxx>
......@@ -234,7 +235,9 @@ SvxNumberFormat::SvxNumberFormat( SvStream &rStream )
else pBulletFont = nullptr;
ReadPair( rStream, aGraphicSize );
ReadColor( rStream, nBulletColor );
tools::GenericTypeSerializer aSerializer(rStream);
aSerializer.readColor(nBulletColor);
rStream.ReadUInt16( nBulletRelSize );
rStream.ReadUInt16( nTmp16 ); SetShowSymbol( nTmp16 != 0 );
......@@ -309,7 +312,9 @@ void SvxNumberFormat::Store(SvStream &rStream, FontToSubsFontConverter pConverte
Color nTempColor = nBulletColor;
if(COL_AUTO == nBulletColor)
nTempColor = COL_BLACK;
WriteColor( rStream, nTempColor );
tools::GenericTypeSerializer aSerializer(rStream);
aSerializer.writeColor(nTempColor);
rStream.WriteUInt16( nBulletRelSize );
rStream.WriteUInt16( sal_uInt16(IsShowSymbol()) );
......
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef INCLUDED_TOOLS_GENERICTYPESERIALIZER_HXX
#define INCLUDED_TOOLS_GENERICTYPESERIALIZER_HXX
#include <sal/types.h>
#include <tools/toolsdllapi.h>
#include <tools/color.hxx>
#include <tools/stream.hxx>
namespace tools
{
class TOOLS_DLLPUBLIC GenericTypeSerializer
{
public:
SvStream& mrStream;
GenericTypeSerializer(SvStream& rStream)
: mrStream(rStream)
{
}
void readColor(Color& rColor);
void writeColor(const Color& rColor);
};
} // end namespace tools
#endif // INCLUDED_TOOLS_GENERICTYPESERIALIZER_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -171,12 +171,6 @@ public:
return !(Color::operator==(rColor));
}
SvStream& Read(SvStream& rIStream);
SvStream& Write(SvStream& rOStream) const;
TOOLS_DLLPUBLIC friend SvStream& ReadColor(SvStream& rIStream, Color& rColor);
TOOLS_DLLPUBLIC friend SvStream& WriteColor(SvStream& rOStream, const Color& rColor);
// Return color as RGB hex string
// for example "00ff00" for green color
OUString AsRGBHexString() const;
......
......@@ -30,6 +30,7 @@
#include <svtools/colrdlg.hxx>
#include <tools/debug.hxx>
#include <tools/urlobj.hxx>
#include <tools/GenericTypeSerializer.hxx>
#include <sdiocmpt.hxx>
#include <sfx2/docfile.hxx>
#include <pres.hxx>
......@@ -233,6 +234,7 @@ SvStream& operator >> (SvStream& rIn, SdPublishingDesign& rDesign)
SdIOCompat aIO(rIn, StreamMode::READ);
sal_uInt16 nTemp16;
tools::GenericTypeSerializer aSerializer(rIn);
rDesign.m_aDesignName = read_uInt16_lenPrefixed_uInt8s_ToOUString(rIn,
RTL_TEXTENCODING_UTF8);
......@@ -257,11 +259,11 @@ SvStream& operator >> (SvStream& rIn, SdPublishingDesign& rDesign)
rIn.ReadCharAsBool( rDesign.m_bCreated ); // not used
rIn.ReadInt16( rDesign.m_nButtonThema );
rIn.ReadCharAsBool( rDesign.m_bUserAttr );
ReadColor( rIn, rDesign.m_aBackColor );
ReadColor( rIn, rDesign.m_aTextColor );
ReadColor( rIn, rDesign.m_aLinkColor );
ReadColor( rIn, rDesign.m_aVLinkColor );
ReadColor( rIn, rDesign.m_aALinkColor );
aSerializer.readColor(rDesign.m_aBackColor);
aSerializer.readColor(rDesign.m_aTextColor);
aSerializer.readColor(rDesign.m_aLinkColor);
aSerializer.readColor(rDesign.m_aVLinkColor);
aSerializer.readColor(rDesign.m_aALinkColor);
rIn.ReadCharAsBool( rDesign.m_bUseAttribs );
rIn.ReadCharAsBool( rDesign.m_bUseColor );
......@@ -287,6 +289,8 @@ SvStream& WriteSdPublishingDesign(SvStream& rOut, const SdPublishingDesign& rDes
// The last parameter is the versionnumber of the code
SdIOCompat aIO(rOut, StreamMode::WRITE, 0);
tools::GenericTypeSerializer aSerializer(rOut);
// Name
write_uInt16_lenPrefixed_uInt8s_FromOUString(rOut, rDesign.m_aDesignName,
RTL_TEXTENCODING_UTF8);
......@@ -310,11 +314,11 @@ SvStream& WriteSdPublishingDesign(SvStream& rOut, const SdPublishingDesign& rDes
rOut.WriteBool( rDesign.m_bCreated ); // not used
rOut.WriteInt16( rDesign.m_nButtonThema );
rOut.WriteBool( rDesign.m_bUserAttr );
WriteColor( rOut, rDesign.m_aBackColor );
WriteColor( rOut, rDesign.m_aTextColor );
WriteColor( rOut, rDesign.m_aLinkColor );
WriteColor( rOut, rDesign.m_aVLinkColor );
WriteColor( rOut, rDesign.m_aALinkColor );
aSerializer.writeColor(rDesign.m_aBackColor);
aSerializer.writeColor(rDesign.m_aTextColor);
aSerializer.writeColor(rDesign.m_aLinkColor);
aSerializer.writeColor(rDesign.m_aVLinkColor);
aSerializer.writeColor(rDesign.m_aALinkColor);
rOut.WriteBool( rDesign.m_bUseAttribs );
rOut.WriteBool( rDesign.m_bUseColor );
......
......@@ -73,6 +73,7 @@ $(eval $(call gb_Library_add_exception_objects,tl,\
tools/source/ref/ref \
tools/source/stream/stream \
tools/source/stream/vcompat \
tools/source/stream/GenericTypeSerializer \
tools/source/string/tenccvt \
tools/source/zcodec/zcodec \
tools/source/xml/XmlWriter \
......
......@@ -23,7 +23,6 @@ class Test: public CppUnit::TestFixture
public:
void testVariables();
void test_asRGBColor();
void test_readAndWriteStream();
void test_ApplyTintOrShade();
void testGetColorError();
void testInvert();
......@@ -32,7 +31,6 @@ public:
CPPUNIT_TEST_SUITE(Test);
CPPUNIT_TEST(testVariables);
CPPUNIT_TEST(test_asRGBColor);
CPPUNIT_TEST(test_readAndWriteStream);
CPPUNIT_TEST(test_ApplyTintOrShade);
CPPUNIT_TEST(testGetColorError);
CPPUNIT_TEST(testInvert);
......@@ -107,22 +105,6 @@ void Test::test_asRGBColor()
CPPUNIT_ASSERT_EQUAL(OUString("ffffff"), aColor.AsRGBHexString());
}
void Test::test_readAndWriteStream()
{
SvMemoryStream aStream;
Color aReadColor;
WriteColor(aStream, Color(0x12, 0x34, 0x56));
aStream.Seek(STREAM_SEEK_TO_BEGIN);
ReadColor(aStream, aReadColor);
CPPUNIT_ASSERT_EQUAL(sal_uInt8(0x12), aReadColor.GetRed());
CPPUNIT_ASSERT_EQUAL(sal_uInt8(0x34), aReadColor.GetGreen());
CPPUNIT_ASSERT_EQUAL(sal_uInt8(0x56), aReadColor.GetBlue());
}
OUString createTintShade(sal_uInt8 nR, sal_uInt8 nG, sal_uInt8 nB, OUString const & sReference, sal_Int16 nTintShade)
{
Color aColor(nR, nG, nB);
......
......@@ -25,7 +25,6 @@
#include <stdlib.h>
#include <tools/color.hxx>
#include <tools/stream.hxx>
#include <tools/helpers.hxx>
#include <basegfx/color/bcolortools.hxx>
......@@ -184,18 +183,6 @@ Color Color::HSBtoRGB( sal_uInt16 nHue, sal_uInt16 nSat, sal_uInt16 nBri )
return Color( cR, cG, cB );
}
SvStream& Color::Read( SvStream& rIStm )
{
rIStm.ReadUInt32(mValue);
return rIStm;
}
SvStream& Color::Write( SvStream& rOStm ) const
{
rOStm.WriteUInt32(mValue);
return rOStm;
}
OUString Color::AsRGBHexString() const
{
std::stringstream ss;
......@@ -203,72 +190,6 @@ OUString Color::AsRGBHexString() const
return OUString::createFromAscii(ss.str().c_str());
}
#define COL_NAME_USER (sal_uInt16(0x8000))
SvStream& ReadColor( SvStream& rIStream, Color& rColor )
{
sal_uInt16 nColorName(0);
rIStream.ReadUInt16( nColorName );
if ( nColorName & COL_NAME_USER )
{
sal_uInt16 nRed;
sal_uInt16 nGreen;
sal_uInt16 nBlue;
rIStream.ReadUInt16( nRed );
rIStream.ReadUInt16( nGreen );
rIStream.ReadUInt16( nBlue );
rColor = Color( nRed>>8, nGreen>>8, nBlue>>8 );
}
else
{
static const Color aColAry[] =
{
COL_BLACK, // COL_BLACK
COL_BLUE, // COL_BLUE
COL_GREEN, // COL_GREEN
COL_CYAN, // COL_CYAN
COL_RED, // COL_RED
COL_MAGENTA, // COL_MAGENTA
COL_BROWN, // COL_BROWN
COL_GRAY, // COL_GRAY
COL_LIGHTGRAY, // COL_LIGHTGRAY
COL_LIGHTBLUE, // COL_LIGHTBLUE
COL_LIGHTGREEN, // COL_LIGHTGREEN
COL_LIGHTCYAN, // COL_LIGHTCYAN
COL_LIGHTRED, // COL_LIGHTRED
COL_LIGHTMAGENTA, // COL_LIGHTMAGENTA
COL_YELLOW, // COL_YELLOW
COL_WHITE, // COL_WHITE
COL_WHITE, // COL_MENUBAR
COL_BLACK, // COL_MENUBARTEXT
COL_WHITE, // COL_POPUPMENU
COL_BLACK, // COL_POPUPMENUTEXT
COL_BLACK, // COL_WINDOWTEXT
COL_WHITE, // COL_WINDOWWORKSPACE
COL_BLACK, // COL_HIGHLIGHT
COL_WHITE, // COL_HIGHLIGHTTEXT
COL_BLACK, // COL_3DTEXT
COL_LIGHTGRAY, // COL_3DFACE
COL_WHITE, // COL_3DLIGHT
COL_GRAY, // COL_3DSHADOW
COL_LIGHTGRAY, // COL_SCROLLBAR
COL_WHITE, // COL_FIELD
COL_BLACK // COL_FIELDTEXT
};
if ( nColorName < SAL_N_ELEMENTS( aColAry ) )
rColor = aColAry[nColorName];
else
rColor = COL_BLACK;
}
return rIStream;
}
void Color::ApplyTintOrShade(sal_Int16 n100thPercent)
{
if (n100thPercent == 0)
......@@ -295,21 +216,4 @@ void Color::ApplyTintOrShade(sal_Int16 n100thPercent)
B = sal_uInt8(std::lround(aBColor.getBlue() * 255.0));
}
SvStream& WriteColor( SvStream& rOStream, const Color& rColor )
{
sal_uInt16 nRed = rColor.GetRed();
sal_uInt16 nGreen = rColor.GetGreen();
sal_uInt16 nBlue = rColor.GetBlue();
nRed = (nRed<<8) + nRed;
nGreen = (nGreen<<8) + nGreen;
nBlue = (nBlue<<8) + nBlue;
rOStream.WriteUInt16( COL_NAME_USER );
rOStream.WriteUInt16( nRed );
rOStream.WriteUInt16( nGreen );
rOStream.WriteUInt16( nBlue );
return rOStream;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include <sal/config.h>
#include <tools/GenericTypeSerializer.hxx>
#include <vector>
namespace tools
{
constexpr sal_uInt16 COL_NAME_USER = 0x8000;
void GenericTypeSerializer::readColor(Color& rColor)
{
sal_uInt16 nColorNameID(0);
mrStream.ReadUInt16(nColorNameID);
if (nColorNameID & COL_NAME_USER)
{
sal_uInt16 nRed;
sal_uInt16 nGreen;
sal_uInt16 nBlue;
mrStream.ReadUInt16(nRed);
mrStream.ReadUInt16(nGreen);
mrStream.ReadUInt16(nBlue);
rColor = Color(nRed >> 8, nGreen >> 8, nBlue >> 8);
}
else
{
static const std::vector<Color> staticColorArray = {
COL_BLACK, // COL_BLACK
COL_BLUE, // COL_BLUE
COL_GREEN, // COL_GREEN
COL_CYAN, // COL_CYAN
COL_RED, // COL_RED
COL_MAGENTA, // COL_MAGENTA
COL_BROWN, // COL_BROWN
COL_GRAY, // COL_GRAY
COL_LIGHTGRAY, // COL_LIGHTGRAY
COL_LIGHTBLUE, // COL_LIGHTBLUE
COL_LIGHTGREEN, // COL_LIGHTGREEN
COL_LIGHTCYAN, // COL_LIGHTCYAN
COL_LIGHTRED, // COL_LIGHTRED
COL_LIGHTMAGENTA, // COL_LIGHTMAGENTA
COL_YELLOW, // COL_YELLOW
COL_WHITE, // COL_WHITE
COL_WHITE, // COL_MENUBAR
COL_BLACK, // COL_MENUBARTEXT
COL_WHITE, // COL_POPUPMENU
COL_BLACK, // COL_POPUPMENUTEXT
COL_BLACK, // COL_WINDOWTEXT
COL_WHITE, // COL_WINDOWWORKSPACE
COL_BLACK, // COL_HIGHLIGHT
COL_WHITE, // COL_HIGHLIGHTTEXT
COL_BLACK, // COL_3DTEXT
COL_LIGHTGRAY, // COL_3DFACE
COL_WHITE, // COL_3DLIGHT
COL_GRAY, // COL_3DSHADOW
COL_LIGHTGRAY, // COL_SCROLLBAR
COL_WHITE, // COL_FIELD
COL_BLACK // COL_FIELDTEXT
};
if (nColorNameID < staticColorArray.size())
rColor = staticColorArray[nColorNameID];
else
rColor = COL_BLACK;
}
}
void GenericTypeSerializer::writeColor(const Color& rColor)
{
mrStream.WriteUInt16(COL_NAME_USER);
sal_uInt16 nR = rColor.GetRed();
sal_uInt16 nG = rColor.GetGreen();
sal_uInt16 nB = rColor.GetBlue();
mrStream.WriteUInt16((nR << 8) + nR);
mrStream.WriteUInt16((nG << 8) + nG);
mrStream.WriteUInt16((nB << 8) + nB);
}
} // end namespace tools
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -28,6 +28,7 @@
#include <tools/stream.hxx>
#include <tools/fract.hxx>
#include <tools/helpers.hxx>
#include <tools/GenericTypeSerializer.hxx>
#include <unotools/configmgr.hxx>
#include <vcl/bitmapex.hxx>
#include <vcl/bitmapaccess.hxx>
......@@ -35,7 +36,6 @@
#include <bitmapwriteaccess.hxx>
#include <memory>
#define DIBCOREHEADERSIZE ( 12UL )
#define DIBINFOHEADERSIZE ( sizeof(DIBInfoHeader) )
#define DIBV5HEADERSIZE ( sizeof(DIBV5Header) )
......@@ -1800,14 +1800,16 @@ bool ReadDIBBitmapEx(
}
case TransparentType::Color:
{
Color maTransparentColor;
Color aTransparentColor;
tools::GenericTypeSerializer aSerializer(rIStm);
aSerializer.readColor(aTransparentColor);
ReadColor( rIStm, maTransparentColor );
bRetval = !rIStm.GetError();
if(bRetval)
{
rTarget = BitmapEx(aBmp, maTransparentColor);
rTarget = BitmapEx(aBmp, aTransparentColor);
}
break;
}
......@@ -1885,7 +1887,8 @@ bool WriteDIBBitmapEx(
}
else if(TransparentType::Color == rSource.meTransparent)
{
WriteColor( rOStm, rSource.maTransparentColor );
tools::GenericTypeSerializer aSerializer(rOStm);
aSerializer.writeColor(rSource.maTransparentColor);
return true;
}
}
......
......@@ -20,6 +20,7 @@
#include <tools/stream.hxx>
#include <tools/vcompat.hxx>
#include <tools/gen.hxx>
#include <tools/GenericTypeSerializer.hxx>
#include <vcl/gradient.hxx>
Impl_Gradient::Impl_Gradient() :
......@@ -225,8 +226,9 @@ SvStream& ReadGradient( SvStream& rIStm, Gradient& rGradient )
rIStm.ReadUInt16( nTmp16 ); rGradient.mpImplGradient->meStyle = static_cast<GradientStyle>(nTmp16);
ReadColor( rIStm, rGradient.mpImplGradient->maStartColor );
ReadColor( rIStm, rGradient.mpImplGradient->maEndColor );
tools::GenericTypeSerializer aSerializer(rIStm);
aSerializer.readColor(rGradient.mpImplGradient->maStartColor);
aSerializer.readColor(rGradient.mpImplGradient->maEndColor);
rIStm.ReadUInt16( rGradient.mpImplGradient->mnAngle )
.ReadUInt16( rGradient.mpImplGradient->mnBorder )
.ReadUInt16( rGradient.mpImplGradient->mnOfsX )
......@@ -243,8 +245,9 @@ SvStream& WriteGradient( SvStream& rOStm, const Gradient& rGradient )
VersionCompat aCompat( rOStm, StreamMode::WRITE, 1 );
rOStm.WriteUInt16( static_cast<sal_uInt16>(rGradient.mpImplGradient->meStyle) );
WriteColor( rOStm, rGradient.mpImplGradient->maStartColor );
WriteColor( rOStm, rGradient.mpImplGradient->maEndColor );
tools::GenericTypeSerializer aSerializer(rOStm);
aSerializer.writeColor(rGradient.mpImplGradient->maStartColor);
aSerializer.writeColor(rGradient.mpImplGradient->maEndColor);
rOStm.WriteUInt16( rGradient.mpImplGradient->mnAngle )
.WriteUInt16( rGradient.mpImplGradient->mnBorder )
.WriteUInt16( rGradient.mpImplGradient->mnOfsX )
......
......@@ -19,6 +19,7 @@
#include <tools/stream.hxx>
#include <tools/vcompat.hxx>
#include <tools/GenericTypeSerializer.hxx>
#include <vcl/graphictools.hxx>
......@@ -236,7 +237,8 @@ SvStream& WriteSvtGraphicFill( SvStream& rOStm, const SvtGraphicFill& rClass )
VersionCompat aCompat( rOStm, StreamMode::WRITE, 1 );
rClass.maPath.Write( rOStm );
WriteColor( rOStm, rClass.maFillColor );
tools::GenericTypeSerializer aSerializer(rOStm);
aSerializer.writeColor(rClass.maFillColor);
rOStm.WriteDouble( rClass.mfTransparency );
sal_uInt16 nTmp = sal::static_int_cast<sal_uInt16>( rClass.maFillRule );
rOStm.WriteUInt16( nTmp );
......@@ -249,11 +251,11 @@ SvStream& WriteSvtGraphicFill( SvStream& rOStm, const SvtGraphicFill& rClass )
rOStm.WriteUInt16( nTmp );
nTmp = sal::static_int_cast<sal_uInt16>( rClass.maHatchType );
rOStm.WriteUInt16( nTmp );
WriteColor( rOStm, rClass.maHatchColor );
aSerializer.writeColor(rClass.maHatchColor);
nTmp = sal::static_int_cast<sal_uInt16>( rClass.maGradientType );
rOStm.WriteUInt16( nTmp );
WriteColor( rOStm, rClass.maGradient1stColor );
WriteColor( rOStm, rClass.maGradient2ndColor );
aSerializer.writeColor(rClass.maGradient1stColor);
aSerializer.writeColor(rClass.maGradient2ndColor);
rOStm.WriteInt32( rClass.maGradientStepCount );
WriteGraphic( rOStm, rClass.maFillGraphic );
......@@ -265,7 +267,9 @@ SvStream& ReadSvtGraphicFill( SvStream& rIStm, SvtGraphicFill& rClass )
VersionCompat aCompat( rIStm, StreamMode::READ );
rClass.maPath.Read( rIStm );
ReadColor( rIStm, rClass.maFillColor );
tools::GenericTypeSerializer aSerializer(rIStm);
aSerializer.readColor(rClass.maFillColor);
rIStm.ReadDouble( rClass.mfTransparency );
sal_uInt16 nTmp;
rIStm.ReadUInt16( nTmp );
......@@ -278,11 +282,11 @@ SvStream& ReadSvtGraphicFill( SvStream& rIStm, SvtGraphicFill& rClass )
rClass.mbTiling = nTmp;
rIStm.ReadUInt16( nTmp );
rClass.maHatchType = SvtGraphicFill::HatchType( nTmp );
ReadColor( rIStm, rClass.maHatchColor );
aSerializer.readColor(rClass.maHatchColor);
rIStm.ReadUInt16( nTmp );
rClass.maGradientType = SvtGraphicFill::GradientType( nTmp );
ReadColor( rIStm, rClass.maGradient1stColor );
ReadColor( rIStm, rClass.maGradient2ndColor );
aSerializer.readColor(rClass.maGradient1stColor);
aSerializer.readColor(rClass.maGradient2ndColor);
rIStm.ReadInt32( rClass.maGradientStepCount );
ReadGraphic( rIStm, rClass.maFillGraphic );
......
......@@ -19,6 +19,7 @@
#include <tools/stream.hxx>
#include <tools/vcompat.hxx>
#include <tools/GenericTypeSerializer.hxx>
#include <vcl/hatch.hxx>
ImplHatch::ImplHatch() :
......@@ -77,13 +78,17 @@ void Hatch::SetAngle( sal_uInt16 nAngle10 )
SvStream& ReadHatch( SvStream& rIStm, Hatch& rHatch )
{
VersionCompat aCompat( rIStm, StreamMode::READ );
VersionCompat aCompat(rIStm, StreamMode::READ);
sal_uInt16 nTmp16;
sal_Int32 nTmp32(0);
rIStm.ReadUInt16( nTmp16 ); rHatch.mpImplHatch->meStyle = static_cast<HatchStyle>(nTmp16);
ReadColor( rIStm, rHatch.mpImplHatch->maColor ).ReadInt32( nTmp32 ).ReadUInt16(
rHatch.mpImplHatch->mnAngle );
rIStm.ReadUInt16(nTmp16);
rHatch.mpImplHatch->meStyle = static_cast<HatchStyle>(nTmp16);
tools::GenericTypeSerializer aSerializer(rIStm);
aSerializer.readColor(rHatch.mpImplHatch->maColor);
rIStm.ReadInt32(nTmp32);
rIStm.ReadUInt16(rHatch.mpImplHatch->mnAngle);
rHatch.mpImplHatch->mnDistance = nTmp32;
return rIStm;
......@@ -94,7 +99,9 @@ SvStream& WriteHatch( SvStream& rOStm, const Hatch& rHatch )
VersionCompat aCompat( rOStm, StreamMode::WRITE, 1 );
rOStm.WriteUInt16( static_cast<sal_uInt16>(rHatch.mpImplHatch->meStyle) );
WriteColor( rOStm, rHatch.mpImplHatch->maColor );
tools::GenericTypeSerializer aSerializer(rOStm);
aSerializer.writeColor(rHatch.mpImplHatch->maColor);
rOStm.WriteInt32( rHatch.mpImplHatch->mnDistance ).WriteUInt16( rHatch.mpImplHatch->mnAngle );
return rOStm;
......
......@@ -310,14 +310,14 @@ void MetaPixelAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
MetaAction::Write(rOStm, pData);
VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
WritePair( rOStm, maPt );
maColor.Write( rOStm );
rOStm.WriteUInt32(maColor.mValue);
}
void MetaPixelAction::Read( SvStream& rIStm, ImplMetaReadData* )
{
VersionCompat aCompat(rIStm, StreamMode::READ);
ReadPair( rIStm, maPt );
maColor.Read( rIStm);
rIStm.ReadUInt32(maColor.mValue);
}
MetaPointAction::MetaPointAction() :
......@@ -1932,7 +1932,7 @@ void MetaMaskScalePartAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
MetaAction::Write(rOStm, pData);
VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
WriteDIB(maBmp, rOStm, false, true);
maColor.Write( rOStm );
rOStm.WriteUInt32(maColor.mValue);
WritePair( rOStm, maDstPt );
WritePair( rOStm, maDstSz );
WritePair( rOStm, maSrcPt );
......@@ -1944,7 +1944,7 @@ void MetaMaskScalePartAction::Read( SvStream& rIStm, ImplMetaReadData* )
{
VersionCompat aCompat(rIStm, StreamMode::READ);
ReadDIB(maBmp, rIStm, true);
maColor.Read( rIStm );
rIStm.ReadUInt32(maColor.mValue);
ReadPair( rIStm, maDstPt );
ReadPair( rIStm, maDstSz );
ReadPair( rIStm, maSrcPt );
......@@ -2380,14 +2380,14 @@ void MetaLineColorAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
{
MetaAction::Write(rOStm, pData);
VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
maColor.Write( rOStm );
rOStm.WriteUInt32(maColor.mValue);
rOStm.WriteBool( mbSet );
}
void MetaLineColorAction::Read( SvStream& rIStm, ImplMetaReadData* )
{
VersionCompat aCompat(rIStm, StreamMode::READ);
maColor.Read( rIStm );
rIStm.ReadUInt32(maColor.mValue);
rIStm.ReadCharAsBool( mbSet );
}
......@@ -2422,14 +2422,14 @@ void MetaFillColorAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
{
MetaAction::Write(rOStm, pData);
VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
maColor.Write( rOStm );
rOStm.WriteUInt32(maColor.mValue);
rOStm.WriteBool( mbSet );
}
void MetaFillColorAction::Read( SvStream& rIStm, ImplMetaReadData* )
{
VersionCompat aCompat(rIStm, StreamMode::READ);
maColor.Read( rIStm );
rIStm.ReadUInt32(maColor.mValue);
rIStm.ReadCharAsBool( mbSet );
}
......@@ -2459,13 +2459,13 @@ void MetaTextColorAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
{
MetaAction::Write(rOStm, pData);
VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
maColor.Write( rOStm );
rOStm.WriteUInt32(maColor.mValue);
}
void MetaTextColorAction::Read( SvStream& rIStm, ImplMetaReadData* )
{
VersionCompat aCompat(rIStm, StreamMode::READ);
maColor.Read( rIStm );
rIStm.ReadUInt32(maColor.mValue);
}
MetaTextFillColorAction::MetaTextFillColorAction() :
......@@ -2499,14 +2499,14 @@ void MetaTextFillColorAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
{
MetaAction::Write(rOStm, pData);
VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
maColor.Write( rOStm );
rOStm.WriteUInt32(maColor.mValue);
rOStm.WriteBool( mbSet );
}
void MetaTextFillColorAction::Read( SvStream& rIStm, ImplMetaReadData* )
{
VersionCompat aCompat(rIStm, StreamMode::READ);
maColor.Read( rIStm );
rIStm.ReadUInt32(maColor.mValue);
rIStm.ReadCharAsBool( mbSet );
}
......@@ -2541,14 +2541,14 @@ void MetaTextLineColorAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
{
MetaAction::Write(rOStm, pData);
VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
maColor.Write( rOStm );
rOStm.WriteUInt32(maColor.mValue);
rOStm.WriteBool( mbSet );
}
void MetaTextLineColorAction::Read( SvStream& rIStm, ImplMetaReadData* )
{
VersionCompat aCompat(rIStm, StreamMode::READ);
maColor.Read( rIStm );
rIStm.ReadUInt32(maColor.mValue);
rIStm.ReadCharAsBool( mbSet );
}
......@@ -2583,14 +2583,14 @@ void MetaOverlineColorAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
{
MetaAction::Write(rOStm, pData);
VersionCompat aCompat(rOStm, StreamMode::WRITE, 1);
maColor.Write( rOStm );
rOStm.WriteUInt32(maColor.mValue);
rOStm.WriteBool( mbSet );
}
void MetaOverlineColorAction::Read( SvStream& rIStm, ImplMetaReadData* )
{
VersionCompat aCompat(rIStm, StreamMode::READ);
maColor.Read( rIStm );
rIStm.ReadUInt32(maColor.mValue);
rIStm.ReadCharAsBool( mbSet );
}
......
......@@ -24,6 +24,7 @@
#include <tools/fract.hxx>
#include <tools/stream.hxx>
#include <tools/helpers.hxx>
#include <tools/GenericTypeSerializer.hxx>
#include <vcl/dibtools.hxx>
#include <vcl/virdev.hxx>
#include <vcl/graph.hxx>
......@@ -33,7 +34,6 @@
#include <osl/diagnose.h>
#include <svmconverter.hxx>
#include <memory>
// Inlines
......@@ -1134,7 +1134,8 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
bool bSet;
sal_Int32 nFollowingActionCount(0);
ReadColor( rIStm, aColor );
tools::GenericTypeSerializer aSerializer(rIStm);
aSerializer.readColor(aColor);
rIStm.ReadCharAsBool( bSet ).ReadInt32( nFollowingActionCount );
ImplSkipActions( rIStm, nFollowingActionCount );
rMtf.AddAction( new MetaTextLineColorAction( aColor, bSet ) );
......
......@@ -19,6 +19,7 @@
#include <tools/stream.hxx>
#include <tools/vcompat.hxx>
#include <tools/GenericTypeSerializer.hxx>
#include <vcl/bitmapex.hxx>
#include <vcl/gradient.hxx>
#include <vcl/wall.hxx>
......@@ -61,7 +62,8 @@ SvStream& ReadImplWallpaper( SvStream& rIStm, ImplWallpaper& rImplWallpaper )
rImplWallpaper.mpBitmap.reset();
// version 1
ReadColor( rIStm, rImplWallpaper.maColor );
tools::GenericTypeSerializer aSerializer(rIStm);
aSerializer.readColor(rImplWallpaper.maColor);
sal_uInt16 nTmp16(0);
rIStm.ReadUInt16(nTmp16);
rImplWallpaper.meStyle = static_cast<WallpaperStyle>(nTmp16);
......@@ -94,7 +96,7 @@ SvStream& ReadImplWallpaper( SvStream& rIStm, ImplWallpaper& rImplWallpaper )
// version 3 (new color format)
if( aCompat.GetVersion() >= 3 )
{
rImplWallpaper.maColor.Read( rIStm );
rIStm.ReadUInt32(rImplWallpaper.maColor.mValue);
}
}
......@@ -110,7 +112,9 @@ SvStream& WriteImplWallpaper( SvStream& rOStm, const ImplWallpaper& rImplWallpap
bool bDummy = false;
// version 1
WriteColor( rOStm, rImplWallpaper.maColor );
tools::GenericTypeSerializer aSerializer(rOStm);
aSerializer.writeColor(rImplWallpaper.maColor);
rOStm.WriteUInt16( static_cast<sal_uInt16>(rImplWallpaper.meStyle) );
// version 2
......@@ -126,7 +130,7 @@ SvStream& WriteImplWallpaper( SvStream& rOStm, const ImplWallpaper& rImplWallpap
WriteDIBBitmapEx(*rImplWallpaper.mpBitmap, rOStm);
// version 3 (new color format)
rImplWallpaper.maColor.Write( rOStm );
rOStm.WriteUInt32(rImplWallpaper.maColor.mValue);
return rOStm;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment