xref: /aoo4110/main/svl/source/items/sfontitm.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_svl.hxx"
26*b1cdbd2cSJim Jagielski #include <tools/stream.hxx>
27*b1cdbd2cSJim Jagielski #include <tools/vcompat.hxx>
28*b1cdbd2cSJim Jagielski #include <svl/sfontitm.hxx>
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski //============================================================================
31*b1cdbd2cSJim Jagielski //
32*b1cdbd2cSJim Jagielski //  class SfxFontItem
33*b1cdbd2cSJim Jagielski //
34*b1cdbd2cSJim Jagielski //============================================================================
35*b1cdbd2cSJim Jagielski 
36*b1cdbd2cSJim Jagielski TYPEINIT1(SfxFontItem, SfxPoolItem);
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski //============================================================================
39*b1cdbd2cSJim Jagielski // virtual
operator ==(const SfxPoolItem & rItem) const40*b1cdbd2cSJim Jagielski int SfxFontItem::operator ==(const SfxPoolItem & rItem) const
41*b1cdbd2cSJim Jagielski {
42*b1cdbd2cSJim Jagielski 	const SfxFontItem * pFontItem = PTR_CAST(SfxFontItem, &rItem);
43*b1cdbd2cSJim Jagielski 	return pFontItem && m_bHasFont == pFontItem->m_bHasFont
44*b1cdbd2cSJim Jagielski 	       && m_bHasColor == pFontItem->m_bHasColor
45*b1cdbd2cSJim Jagielski 	       && m_bHasFillColor == pFontItem->m_bHasFillColor
46*b1cdbd2cSJim Jagielski 	       && (!m_bHasColor || m_aColor == pFontItem->m_aColor)
47*b1cdbd2cSJim Jagielski 	       && (!m_bHasFillColor || m_aFillColor == pFontItem->m_aFillColor)
48*b1cdbd2cSJim Jagielski 	       && (!m_bHasFont || (m_bKerning == pFontItem->m_bKerning
49*b1cdbd2cSJim Jagielski 			                  && m_bShadow == pFontItem->m_bShadow
50*b1cdbd2cSJim Jagielski 			                  && m_bOutline == pFontItem->m_bOutline
51*b1cdbd2cSJim Jagielski 			                  && m_bWordLine == pFontItem->m_bWordLine
52*b1cdbd2cSJim Jagielski 			                  && m_nOrientation == pFontItem->m_nOrientation
53*b1cdbd2cSJim Jagielski 			                  && m_nStrikeout == pFontItem->m_nStrikeout
54*b1cdbd2cSJim Jagielski 			                  && m_nUnderline == pFontItem->m_nUnderline
55*b1cdbd2cSJim Jagielski 			                  && m_nItalic == pFontItem->m_nItalic
56*b1cdbd2cSJim Jagielski 			                  && m_nWidthType == pFontItem->m_nWidthType
57*b1cdbd2cSJim Jagielski 			                  && m_nWeight == pFontItem->m_nWeight
58*b1cdbd2cSJim Jagielski 			                  && m_nPitch == pFontItem->m_nPitch
59*b1cdbd2cSJim Jagielski 			                  && m_nFamily == pFontItem->m_nFamily
60*b1cdbd2cSJim Jagielski 			                  && m_nLanguage == pFontItem->m_nLanguage
61*b1cdbd2cSJim Jagielski 			                  && m_nCharSet == pFontItem->m_nCharSet
62*b1cdbd2cSJim Jagielski 			                  && m_aFillColor == pFontItem->m_aFillColor
63*b1cdbd2cSJim Jagielski 			                  && m_aColor == pFontItem->m_aColor
64*b1cdbd2cSJim Jagielski 			                  && m_aSize == pFontItem->m_aSize
65*b1cdbd2cSJim Jagielski 			                  && m_aStyleName == pFontItem->m_aStyleName
66*b1cdbd2cSJim Jagielski 			                  && m_aName == pFontItem->m_aName));
67*b1cdbd2cSJim Jagielski }
68*b1cdbd2cSJim Jagielski 
69*b1cdbd2cSJim Jagielski //============================================================================
70*b1cdbd2cSJim Jagielski // virtual
Create(SvStream & rStream,sal_uInt16) const71*b1cdbd2cSJim Jagielski SfxPoolItem * SfxFontItem::Create(SvStream & rStream, sal_uInt16) const
72*b1cdbd2cSJim Jagielski {
73*b1cdbd2cSJim Jagielski 	VersionCompat aItemCompat(rStream, STREAM_READ);
74*b1cdbd2cSJim Jagielski 	SfxFontItem * pItem = new SfxFontItem(Which());
75*b1cdbd2cSJim Jagielski 	{
76*b1cdbd2cSJim Jagielski 		VersionCompat aFontCompat(rStream, STREAM_READ);
77*b1cdbd2cSJim Jagielski 		readByteString(rStream, pItem->m_aName);
78*b1cdbd2cSJim Jagielski 		readByteString(rStream, pItem->m_aStyleName);
79*b1cdbd2cSJim Jagielski 		rStream >> pItem->m_aSize;
80*b1cdbd2cSJim Jagielski 		sal_Int16 nCharSet = 0;
81*b1cdbd2cSJim Jagielski 		rStream >> nCharSet;
82*b1cdbd2cSJim Jagielski 		pItem->m_nCharSet = rtl_TextEncoding(nCharSet);
83*b1cdbd2cSJim Jagielski 		rStream >> pItem->m_nFamily >> pItem->m_nPitch >> pItem->m_nWeight
84*b1cdbd2cSJim Jagielski 				>> pItem->m_nUnderline >> pItem->m_nStrikeout
85*b1cdbd2cSJim Jagielski 				>> pItem->m_nItalic;
86*b1cdbd2cSJim Jagielski 		sal_Int16 nLanguage = 0;
87*b1cdbd2cSJim Jagielski 		rStream >> nLanguage;
88*b1cdbd2cSJim Jagielski 		pItem->m_nLanguage = LanguageType(nLanguage);
89*b1cdbd2cSJim Jagielski 		rStream >> pItem->m_nWidthType >> pItem->m_nOrientation;
90*b1cdbd2cSJim Jagielski 		sal_Int8 nWordLine = 0;
91*b1cdbd2cSJim Jagielski 		rStream >> nWordLine;
92*b1cdbd2cSJim Jagielski 		pItem->m_bWordLine = nWordLine != 0;
93*b1cdbd2cSJim Jagielski 		sal_Int8 nOutline = 0;
94*b1cdbd2cSJim Jagielski 		rStream >> nOutline;
95*b1cdbd2cSJim Jagielski 		pItem->m_bOutline = nOutline != 0;
96*b1cdbd2cSJim Jagielski 		sal_Int8 nShadow = 0;
97*b1cdbd2cSJim Jagielski 		rStream >> nShadow;
98*b1cdbd2cSJim Jagielski 		pItem->m_bShadow = nShadow != 0;
99*b1cdbd2cSJim Jagielski 		sal_Int8 nKerning = 0;
100*b1cdbd2cSJim Jagielski 		rStream >> nKerning;
101*b1cdbd2cSJim Jagielski 		pItem->m_bKerning = nKerning != 0;
102*b1cdbd2cSJim Jagielski 	}
103*b1cdbd2cSJim Jagielski 	pItem->m_aColor.Read(rStream, sal_True);
104*b1cdbd2cSJim Jagielski 	pItem->m_aFillColor.Read(rStream, sal_True);
105*b1cdbd2cSJim Jagielski 	sal_Int16 nFlags = 0;
106*b1cdbd2cSJim Jagielski 	rStream >> nFlags;
107*b1cdbd2cSJim Jagielski 	pItem->m_bHasFont = (nFlags & 4) != 0;
108*b1cdbd2cSJim Jagielski 	pItem->m_bHasColor = (nFlags & 1) != 0;
109*b1cdbd2cSJim Jagielski 	pItem->m_bHasFillColor = (nFlags & 2) != 0;
110*b1cdbd2cSJim Jagielski 	return pItem;
111*b1cdbd2cSJim Jagielski }
112*b1cdbd2cSJim Jagielski 
113*b1cdbd2cSJim Jagielski //============================================================================
114*b1cdbd2cSJim Jagielski // virtual
Store(SvStream & rStream,sal_uInt16) const115*b1cdbd2cSJim Jagielski SvStream & SfxFontItem::Store(SvStream & rStream, sal_uInt16) const
116*b1cdbd2cSJim Jagielski {
117*b1cdbd2cSJim Jagielski 	VersionCompat aItemCompat(rStream, STREAM_WRITE, 1);
118*b1cdbd2cSJim Jagielski 	{
119*b1cdbd2cSJim Jagielski 		VersionCompat aFontCompat(rStream, STREAM_WRITE, 1);
120*b1cdbd2cSJim Jagielski 		writeByteString(rStream, m_aName);
121*b1cdbd2cSJim Jagielski 		writeByteString(rStream, m_aStyleName);
122*b1cdbd2cSJim Jagielski 		rStream << m_aSize << sal_Int16(m_nCharSet)
123*b1cdbd2cSJim Jagielski 				<< m_nFamily << m_nPitch << m_nWeight << m_nUnderline
124*b1cdbd2cSJim Jagielski 				<< m_nStrikeout << m_nItalic << sal_Int16(m_nLanguage)
125*b1cdbd2cSJim Jagielski 				<< m_nWidthType << m_nOrientation << sal_Int8(m_bWordLine)
126*b1cdbd2cSJim Jagielski 				<< sal_Int8(m_bOutline) << sal_Int8(m_bShadow)
127*b1cdbd2cSJim Jagielski 				<< sal_Int8(m_bKerning);
128*b1cdbd2cSJim Jagielski 	}
129*b1cdbd2cSJim Jagielski 	SAL_CONST_CAST(Color &, m_aColor).Write(rStream, sal_True);
130*b1cdbd2cSJim Jagielski 	SAL_CONST_CAST(Color &, m_aFillColor).Write(rStream, sal_True);
131*b1cdbd2cSJim Jagielski 	rStream << sal_Int16(m_bHasFont << 2 | m_bHasColor
132*b1cdbd2cSJim Jagielski 						  | m_bHasFillColor << 1);
133*b1cdbd2cSJim Jagielski 	return rStream;
134*b1cdbd2cSJim Jagielski }
135*b1cdbd2cSJim Jagielski 
136