diff options
Diffstat (limited to 'svx/source/items/frmitems.cxx')
-rw-r--r-- | svx/source/items/frmitems.cxx | 4580 |
1 files changed, 0 insertions, 4580 deletions
diff --git a/svx/source/items/frmitems.cxx b/svx/source/items/frmitems.cxx deleted file mode 100644 index 95d27d0341c3..000000000000 --- a/svx/source/items/frmitems.cxx +++ /dev/null @@ -1,4580 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: frmitems.cxx,v $ - * $Revision: 1.53 $ - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_svx.hxx" - -// include --------------------------------------------------------------- -#include <com/sun/star/uno/Any.hxx> -#include <com/sun/star/script/XTypeConverter.hpp> - -#include <limits.h> -#include <comphelper/processfactory.hxx> - - -#include <goodies/grfmgr.hxx> -#include <tools/urlobj.hxx> -#ifndef SVX_LIGHT -#ifndef _SFXDOCFILE_HXX //autogen -#include <sfx2/docfile.hxx> -#endif -#include <sfx2/objsh.hxx> -#endif // !SVX_LIGHT -#include <basic/sbx.hxx> -#define GLOBALOVERFLOW3 - -#define _SVX_FRMITEMS_CXX - -#include <svl/memberid.hrc> -#include <svtools/wallitem.hxx> -#include <svl/cntwall.hxx> - -#include <rtl/ustring.hxx> -#include <rtl/ustrbuf.hxx> - -#include <svx/impgrf.hxx> -#include <svx/svxids.hrc> -#include <svx/svxitems.hrc> -#include <svx/dialogs.hrc> - -#include <svx/pbinitem.hxx> -#include <svx/sizeitem.hxx> -#include <svx/lrspitem.hxx> -#include <svx/ulspitem.hxx> -#include "prntitem.hxx" -#include "opaqitem.hxx" -#include "protitem.hxx" -#include <svx/shaditem.hxx> -#include <svx/boxitem.hxx> -#include <svx/brkitem.hxx> -#include <svx/keepitem.hxx> -#include "bolnitem.hxx" -#include <svx/brshitem.hxx> -//CHINA001 #include "backgrnd.hxx" -#include <svx/frmdiritem.hxx> - -#include <svx/itemtype.hxx> -#include <svx/dialmgr.hxx> -#include "svxerr.hxx" -#include <svx/unoprnms.hxx> -#include <com/sun/star/table/BorderLine.hpp> -#include <com/sun/star/table/CellVertJustify.hpp> -#include <com/sun/star/table/ShadowLocation.hpp> -#include <com/sun/star/table/TableBorder.hpp> -#include <com/sun/star/table/ShadowFormat.hpp> -#include <com/sun/star/table/CellRangeAddress.hpp> -#include <com/sun/star/table/CellContentType.hpp> -#include <com/sun/star/table/TableOrientation.hpp> -#include <com/sun/star/table/CellHoriJustify.hpp> -#include <com/sun/star/util/SortField.hpp> -#include <com/sun/star/util/SortFieldType.hpp> -#include <com/sun/star/table/CellOrientation.hpp> -#include <com/sun/star/table/CellAddress.hpp> -#include <com/sun/star/style/PageStyleLayout.hpp> -#include <com/sun/star/style/BreakType.hpp> -#include <com/sun/star/style/GraphicLocation.hpp> -#include <com/sun/star/awt/Rectangle.hpp> -#include <com/sun/star/awt/Selection.hpp> -#include <com/sun/star/awt/Size.hpp> -#include <com/sun/star/text/WritingMode2.hpp> -#include <com/sun/star/frame/status/UpperLowerMarginScale.hpp> - -#include <comphelper/types.hxx> -#include <svx/unomid.hxx> - -using namespace ::rtl; -using namespace ::com::sun::star; - - -// Konvertierung fuer UNO -#define TWIP_TO_MM100(TWIP) ((TWIP) >= 0 ? (((TWIP)*127L+36L)/72L) : (((TWIP)*127L-36L)/72L)) -#define MM100_TO_TWIP(MM100) ((MM100) >= 0 ? (((MM100)*72L+63L)/127L) : (((MM100)*72L-63L)/127L)) -#define TWIP_TO_MM100_UNSIGNED(TWIP) ((((TWIP)*127L+36L)/72L)) -#define MM100_TO_TWIP_UNSIGNED(MM100) ((((MM100)*72L+63L)/127L)) - -// STATIC DATA ----------------------------------------------------------- - - -inline void SetValueProp( XubString& rStr, const sal_uInt16 nValue, - const sal_uInt16 nProp ) -{ - if( 100 == nProp ) - rStr += String::CreateFromInt32( nValue ); - else - ( rStr += String::CreateFromInt32( nProp )) += sal_Unicode('%'); -} - -inline void SetValueProp( XubString& rStr, const short nValue, - const sal_uInt16 nProp ) -{ - if( 100 == nProp ) - rStr += String::CreateFromInt32( nValue ); - else - ( rStr += String::CreateFromInt32( nProp )) += sal_Unicode('%'); -} - -// ----------------------------------------------------------------------- - -TYPEINIT1_FACTORY(SvxPaperBinItem, SfxByteItem, new SvxPaperBinItem(0)); -TYPEINIT1_FACTORY(SvxSizeItem, SfxPoolItem, new SvxSizeItem(0)); -TYPEINIT1_FACTORY(SvxLRSpaceItem, SfxPoolItem, new SvxLRSpaceItem(0)); -TYPEINIT1_FACTORY(SvxULSpaceItem, SfxPoolItem, new SvxULSpaceItem(0)); -TYPEINIT1_FACTORY(SvxPrintItem, SfxBoolItem, new SvxPrintItem(0)); -TYPEINIT1_FACTORY(SvxOpaqueItem, SfxBoolItem, new SvxOpaqueItem(0)); -TYPEINIT1_FACTORY(SvxProtectItem, SfxPoolItem, new SvxProtectItem(0)); -TYPEINIT1_FACTORY(SvxBrushItem, SfxPoolItem, new SvxBrushItem(0)); -TYPEINIT1_FACTORY(SvxShadowItem, SfxPoolItem, new SvxShadowItem(0)); -TYPEINIT1_FACTORY(SvxBoxItem, SfxPoolItem, new SvxBoxItem(0)); -TYPEINIT1_FACTORY(SvxBoxInfoItem, SfxPoolItem, new SvxBoxInfoItem(0)); -TYPEINIT1_FACTORY(SvxFmtBreakItem, SfxEnumItem, new SvxFmtBreakItem(SVX_BREAK_NONE, 0)); -TYPEINIT1_FACTORY(SvxFmtKeepItem, SfxBoolItem, new SvxFmtKeepItem(sal_False, 0)); -TYPEINIT1_FACTORY(SvxLineItem, SfxPoolItem, new SvxLineItem(0)); -TYPEINIT1_FACTORY(SvxFrameDirectionItem, SfxUInt16Item, new SvxFrameDirectionItem(FRMDIR_HORI_LEFT_TOP, 0)); - - -// class SvxPaperBinItem ------------------------------------------------ - -SfxPoolItem* SvxPaperBinItem::Clone( SfxItemPool* ) const -{ - return new SvxPaperBinItem( *this ); -} - -// ----------------------------------------------------------------------- - -SvStream& SvxPaperBinItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const -{ - rStrm << GetValue(); - return rStrm; -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxPaperBinItem::Create( SvStream& rStrm, sal_uInt16 ) const -{ - sal_Int8 nBin; - rStrm >> nBin; - return new SvxPaperBinItem( Which(), nBin ); -} - -// ----------------------------------------------------------------------- - -SfxItemPresentation SvxPaperBinItem::GetPresentation -( - SfxItemPresentation ePres, - SfxMapUnit /*eCoreUnit*/, - SfxMapUnit /*ePresUnit*/, - XubString& rText, const IntlWrapper * -) const -{ -#ifndef SVX_LIGHT - switch ( ePres ) - { - case SFX_ITEM_PRESENTATION_NONE: - rText.Erase(); - return SFX_ITEM_PRESENTATION_NONE; - - case SFX_ITEM_PRESENTATION_NAMELESS: - rText = String::CreateFromInt32( GetValue() ); - return SFX_ITEM_PRESENTATION_NAMELESS; - - case SFX_ITEM_PRESENTATION_COMPLETE: - { - BYTE nValue = GetValue(); - - if ( PAPERBIN_PRINTER_SETTINGS == nValue ) - rText = SVX_RESSTR(RID_SVXSTR_PAPERBIN_SETTINGS); - else - { - rText = SVX_RESSTR(RID_SVXSTR_PAPERBIN); - rText += sal_Unicode(' '); - rText += String::CreateFromInt32( nValue ); - } - return SFX_ITEM_PRESENTATION_COMPLETE; - } - //no break necessary - default: ;//prevent warning - } -#endif // !SVX_LIGHT - return SFX_ITEM_PRESENTATION_NONE; -} - -// class SvxSizeItem ----------------------------------------------------- - -SvxSizeItem::SvxSizeItem( const sal_uInt16 nId, const Size& rSize ) : - - SfxPoolItem( nId ), - - aSize( rSize ) -{ -} - -// ----------------------------------------------------------------------- -sal_Bool SvxSizeItem::QueryValue( uno::Any& rVal, BYTE nMemberId ) const -{ - sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); - nMemberId &= ~CONVERT_TWIPS; - - awt::Size aTmp(aSize.Width(), aSize.Height()); - if( bConvert ) - { - aTmp.Height = TWIP_TO_MM100(aTmp.Height); - aTmp.Width = TWIP_TO_MM100(aTmp.Width); - } - - switch( nMemberId ) - { - case MID_SIZE_SIZE: rVal <<= aTmp; break; - case MID_SIZE_WIDTH: rVal <<= aTmp.Width; break; - case MID_SIZE_HEIGHT: rVal <<= aTmp.Height; break; - default: DBG_ERROR("Wrong MemberId!"); return sal_False; - } - - return sal_True; -} -// ----------------------------------------------------------------------- -sal_Bool SvxSizeItem::PutValue( const uno::Any& rVal, BYTE nMemberId ) -{ - sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); - nMemberId &= ~CONVERT_TWIPS; - - switch( nMemberId ) - { - case MID_SIZE_SIZE: - { - awt::Size aTmp; - if( rVal >>= aTmp ) - { - if(bConvert) - { - aTmp.Height = MM100_TO_TWIP(aTmp.Height); - aTmp.Width = MM100_TO_TWIP(aTmp.Width); - } - aSize = Size( aTmp.Width, aTmp.Height ); - } - else - { - return sal_False; - } - } - break; - case MID_SIZE_WIDTH: - { - sal_Int32 nVal = 0; - if(!(rVal >>= nVal )) - return sal_False; - - aSize.Width() = bConvert ? MM100_TO_TWIP(nVal) : nVal; - } - break; - case MID_SIZE_HEIGHT: - { - sal_Int32 nVal = 0; - if(!(rVal >>= nVal)) - return sal_True; - - aSize.Height() = bConvert ? MM100_TO_TWIP(nVal) : nVal; - } - break; - default: DBG_ERROR("Wrong MemberId!"); - return sal_False; - } - return sal_True; -} - -// ----------------------------------------------------------------------- - -SvxSizeItem::SvxSizeItem( const sal_uInt16 nId ) : - - SfxPoolItem( nId ) -{ -} - -// ----------------------------------------------------------------------- - -int SvxSizeItem::operator==( const SfxPoolItem& rAttr ) const -{ - DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" ); - - return ( aSize == ( (SvxSizeItem&)rAttr ).GetSize() ); -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxSizeItem::Clone( SfxItemPool* ) const -{ - return new SvxSizeItem( *this ); -} - -//------------------------------------------------------------------------ - -SfxItemPresentation SvxSizeItem::GetPresentation -( - SfxItemPresentation ePres, - SfxMapUnit eCoreUnit, - SfxMapUnit ePresUnit, - XubString& rText, const IntlWrapper *pIntl -) const -{ -#ifndef SVX_LIGHT - switch ( ePres ) - { - case SFX_ITEM_PRESENTATION_NONE: - rText.Erase(); - return SFX_ITEM_PRESENTATION_NONE; - - case SFX_ITEM_PRESENTATION_NAMELESS: - rText = GetMetricText( aSize.Width(), eCoreUnit, ePresUnit, pIntl ); - rText += cpDelim; - rText += GetMetricText( aSize.Height(), eCoreUnit, ePresUnit, pIntl ); - return SFX_ITEM_PRESENTATION_NAMELESS; - - case SFX_ITEM_PRESENTATION_COMPLETE: - rText = SVX_RESSTR(RID_SVXITEMS_SIZE_WIDTH); - rText += GetMetricText( aSize.Width(), eCoreUnit, ePresUnit, pIntl ); - rText += SVX_RESSTR(GetMetricId(ePresUnit)); - rText += cpDelim; - rText += SVX_RESSTR(RID_SVXITEMS_SIZE_HEIGHT); - rText += GetMetricText( aSize.Height(), eCoreUnit, ePresUnit, pIntl ); - rText += SVX_RESSTR(GetMetricId(ePresUnit)); - return SFX_ITEM_PRESENTATION_COMPLETE; - //no break necessary - default: ;//prevent warning - - } -#endif // !SVX_LIGHT - return SFX_ITEM_PRESENTATION_NONE; -} - -// ----------------------------------------------------------------------- - -SvStream& SvxSizeItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const -{ - rStrm << aSize.Width(); - rStrm << aSize.Height(); - return rStrm; -} - -// ----------------------------------------------------------------------- - -int SvxSizeItem::ScaleMetrics( long nMult, long nDiv ) -{ - aSize.Width() = Scale( aSize.Width(), nMult, nDiv ); - aSize.Height() = Scale( aSize.Height(), nMult, nDiv ); - return 1; -} - -// ----------------------------------------------------------------------- - -int SvxSizeItem::HasMetrics() const -{ - return 1; -} - -// ----------------------------------------------------------------------- - - -SfxPoolItem* SvxSizeItem::Create( SvStream& rStrm, sal_uInt16 ) const -{ - long nWidth, nHeight; - rStrm >> nWidth >> nHeight; - - SvxSizeItem* pAttr = new SvxSizeItem( Which() ); - pAttr->SetSize(Size(nWidth, nHeight)); - - return pAttr; -} - -// class SvxLRSpaceItem -------------------------------------------------- - -SvxLRSpaceItem::SvxLRSpaceItem( const sal_uInt16 nId ) : - - SfxPoolItem( nId ), - - nFirstLineOfst ( 0 ), - nTxtLeft ( 0 ), - nLeftMargin ( 0 ), - nRightMargin ( 0 ), - nPropFirstLineOfst( 100 ), - nPropLeftMargin( 100 ), - nPropRightMargin( 100 ), - bAutoFirst ( 0 ) -{ -} - -// ----------------------------------------------------------------------- - -SvxLRSpaceItem::SvxLRSpaceItem( const long nLeft, const long nRight, - const long nTLeft, const short nOfset, - const sal_uInt16 nId ) : - - SfxPoolItem( nId ), - - nFirstLineOfst ( nOfset ), - nTxtLeft ( nTLeft ), - nLeftMargin ( nLeft ), - nRightMargin ( nRight ), - nPropFirstLineOfst( 100 ), - nPropLeftMargin( 100 ), - nPropRightMargin( 100 ), - bAutoFirst ( 0 ) -{ -} - -// ----------------------------------------------------------------------- -sal_Bool SvxLRSpaceItem::QueryValue( uno::Any& rVal, BYTE nMemberId ) const -{ - sal_Bool bRet = sal_True; - sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); - nMemberId &= ~CONVERT_TWIPS; - switch( nMemberId ) - { - // jetzt alles signed - case MID_L_MARGIN: - rVal <<= (sal_Int32)(bConvert ? TWIP_TO_MM100(nLeftMargin) : nLeftMargin); - break; - - case MID_TXT_LMARGIN : - rVal <<= (sal_Int32)(bConvert ? TWIP_TO_MM100(nTxtLeft) : nTxtLeft); - break; - case MID_R_MARGIN: - rVal <<= (sal_Int32)(bConvert ? TWIP_TO_MM100(nRightMargin) : nRightMargin); - break; - case MID_L_REL_MARGIN: - rVal <<= (sal_Int16)nPropLeftMargin; - break; - case MID_R_REL_MARGIN: - rVal <<= (sal_Int16)nPropRightMargin; - break; - - case MID_FIRST_LINE_INDENT: - rVal <<= (sal_Int32)(bConvert ? TWIP_TO_MM100(nFirstLineOfst) : nFirstLineOfst); - break; - - case MID_FIRST_LINE_REL_INDENT: - rVal <<= (sal_Int16)(nPropFirstLineOfst); - break; - - case MID_FIRST_AUTO: - rVal = Bool2Any(IsAutoFirst()); - break; - - default: - bRet = sal_False; - DBG_ERROR("unknown MemberId"); - } - return bRet; -} - -// ----------------------------------------------------------------------- -sal_Bool SvxLRSpaceItem::PutValue( const uno::Any& rVal, BYTE nMemberId ) -{ - sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); - nMemberId &= ~CONVERT_TWIPS; - sal_Int32 nVal = 0; - if( nMemberId != MID_FIRST_AUTO && - nMemberId != MID_L_REL_MARGIN && nMemberId != MID_R_REL_MARGIN) - if(!(rVal >>= nVal)) - return sal_False; - - switch( nMemberId ) - { - case MID_L_MARGIN: - SetLeft((sal_Int32)bConvert ? MM100_TO_TWIP(nVal) : nVal); - break; - - case MID_TXT_LMARGIN : - SetTxtLeft((sal_Int32)bConvert ? MM100_TO_TWIP(nVal) : nVal); - break; - - case MID_R_MARGIN: - SetRight((sal_Int32) bConvert ? MM100_TO_TWIP(nVal) : nVal); - break; - case MID_L_REL_MARGIN: - case MID_R_REL_MARGIN: - { - sal_Int32 nRel = 0; - if((rVal >>= nRel) && nRel >= 0 && nRel < USHRT_MAX) - { - if(MID_L_REL_MARGIN== nMemberId) - nPropLeftMargin = (USHORT)nRel; - else - nPropRightMargin = (USHORT)nRel; - } - else - return FALSE; - } - break; - case MID_FIRST_LINE_INDENT : - SetTxtFirstLineOfst((short)(bConvert ? MM100_TO_TWIP(nVal) : nVal)); - break; - - case MID_FIRST_LINE_REL_INDENT: - SetPropTxtFirstLineOfst ( (USHORT)nVal ); - break; - - case MID_FIRST_AUTO: - SetAutoFirst( Any2Bool(rVal) ); - break; - - default: - DBG_ERROR("unknown MemberId"); - return sal_False; - } - return sal_True; -} - -// ----------------------------------------------------------------------- - -// nLeftMargin und nTxtLeft anpassen. - -void SvxLRSpaceItem::AdjustLeft() -{ - if ( 0 > nFirstLineOfst ) - nLeftMargin = nTxtLeft + nFirstLineOfst; - else - nLeftMargin = nTxtLeft; -} - -// ----------------------------------------------------------------------- - -int SvxLRSpaceItem::operator==( const SfxPoolItem& rAttr ) const -{ - DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" ); - - return ( - nLeftMargin == ((SvxLRSpaceItem&)rAttr).GetLeft() && - nRightMargin == ((SvxLRSpaceItem&)rAttr).GetRight() && - nFirstLineOfst == ((SvxLRSpaceItem&)rAttr).GetTxtFirstLineOfst() && - nPropLeftMargin == ((SvxLRSpaceItem&)rAttr).GetPropLeft() && - nPropRightMargin == ((SvxLRSpaceItem&)rAttr).GetPropRight() && - nPropFirstLineOfst == ((SvxLRSpaceItem&)rAttr).GetPropTxtFirstLineOfst() && - bAutoFirst == ((SvxLRSpaceItem&)rAttr).IsAutoFirst() ); -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxLRSpaceItem::Clone( SfxItemPool* ) const -{ - return new SvxLRSpaceItem( *this ); -} - -//------------------------------------------------------------------------ - -SfxItemPresentation SvxLRSpaceItem::GetPresentation -( - SfxItemPresentation ePres, - SfxMapUnit eCoreUnit, - SfxMapUnit ePresUnit, - XubString& rText, const IntlWrapper* pIntl -) const -{ -#ifndef SVX_LIGHT - switch ( ePres ) - { - case SFX_ITEM_PRESENTATION_NONE: - rText.Erase(); - return SFX_ITEM_PRESENTATION_NONE; - case SFX_ITEM_PRESENTATION_NAMELESS: - { - if ( 100 != nPropLeftMargin ) - ( rText = String::CreateFromInt32( nPropLeftMargin )) += sal_Unicode('%'); - else - rText = GetMetricText( (long)nLeftMargin, - eCoreUnit, ePresUnit, pIntl ); - rText += cpDelim; - if ( 100 != nPropFirstLineOfst ) - ( rText += String::CreateFromInt32( nPropFirstLineOfst )) += sal_Unicode('%'); - else - rText += GetMetricText( (long)nFirstLineOfst, - eCoreUnit, ePresUnit, pIntl ); - rText += cpDelim; - if ( 100 != nRightMargin ) - ( rText += String::CreateFromInt32( nRightMargin )) += sal_Unicode('%'); - else - rText += GetMetricText( (long)nRightMargin, - eCoreUnit, ePresUnit, pIntl ); - return SFX_ITEM_PRESENTATION_NAMELESS; - } - case SFX_ITEM_PRESENTATION_COMPLETE: - { - rText = SVX_RESSTR(RID_SVXITEMS_LRSPACE_LEFT); - if ( 100 != nPropLeftMargin ) - ( rText += String::CreateFromInt32( nPropLeftMargin )) += sal_Unicode('%'); - else - { - rText += GetMetricText( (long)nLeftMargin, - eCoreUnit, ePresUnit, pIntl ); - rText += SVX_RESSTR(GetMetricId(ePresUnit)); - } - rText += cpDelim; - if ( 100 != nPropFirstLineOfst || nFirstLineOfst ) - { - rText += SVX_RESSTR(RID_SVXITEMS_LRSPACE_FLINE); - if ( 100 != nPropFirstLineOfst ) - ( rText += String::CreateFromInt32( nPropFirstLineOfst )) - += sal_Unicode('%'); - else - { - rText += GetMetricText( (long)nFirstLineOfst, - eCoreUnit, ePresUnit, pIntl ); - rText += SVX_RESSTR(GetMetricId(ePresUnit)); - } - rText += cpDelim; - } - rText += SVX_RESSTR(RID_SVXITEMS_LRSPACE_RIGHT); - if ( 100 != nPropRightMargin ) - ( rText += String::CreateFromInt32( nPropRightMargin )) += sal_Unicode('%'); - else - { - rText += GetMetricText( (long)nRightMargin, - eCoreUnit, ePresUnit, pIntl ); - rText += SVX_RESSTR(GetMetricId(ePresUnit)); - } - return SFX_ITEM_PRESENTATION_COMPLETE; - } - default: ;//prevent warning - } -#endif // !SVX_LIGHT - return SFX_ITEM_PRESENTATION_NONE; -} - -// ----------------------------------------------------------------------- - -// MT: BulletFI: Vor 501 wurde im Outliner das Bullet nicht auf der Position des -// FI positioniert, deshalb muss in aelteren Dokumenten der FI auf 0 stehen. - -#define BULLETLR_MARKER 0x599401FE - -SvStream& SvxLRSpaceItem::Store( SvStream& rStrm , sal_uInt16 nItemVersion ) const -{ - short nSaveFI = nFirstLineOfst; - ((SvxLRSpaceItem*)this)->SetTxtFirstLineOfst( 0 ); // nLeftMargin wird mitmanipuliert, siehe Create() - - sal_uInt16 nMargin = 0; - if( nLeftMargin > 0 ) - nMargin = sal_uInt16( nLeftMargin ); - rStrm << nMargin; - rStrm << nPropLeftMargin; - if( nRightMargin > 0 ) - nMargin = sal_uInt16( nRightMargin ); - else - nMargin = 0; - rStrm << nMargin; - rStrm << nPropRightMargin; - rStrm << nFirstLineOfst; - rStrm << nPropFirstLineOfst; - if( nTxtLeft > 0 ) - nMargin = sal_uInt16( nTxtLeft ); - else - nMargin = 0; - rStrm << nMargin; - if( nItemVersion >= LRSPACE_AUTOFIRST_VERSION ) - { - sal_Int8 nAutoFirst = bAutoFirst ? 1 : 0; - if( nItemVersion >= LRSPACE_NEGATIVE_VERSION && - ( nLeftMargin < 0 || nRightMargin < 0 || nTxtLeft < 0 ) ) - nAutoFirst |= 0x80; - rStrm << nAutoFirst; - - // Ab 6.0 keine Magicnumber schreiben... - DBG_ASSERT( rStrm.GetVersion() <= SOFFICE_FILEFORMAT_50, "MT: Fileformat SvxLRSpaceItem aendern!" ); - rStrm << (sal_uInt32) BULLETLR_MARKER; - rStrm << nSaveFI; - - if( 0x80 & nAutoFirst ) - { - rStrm << nLeftMargin; - rStrm << nRightMargin; - } - } - - ((SvxLRSpaceItem*)this)->SetTxtFirstLineOfst( nSaveFI ); - - return rStrm; -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxLRSpaceItem::Create( SvStream& rStrm, sal_uInt16 nVersion ) const -{ - sal_uInt16 left, prpleft, right, prpright, prpfirstline, txtleft; - short firstline; - sal_Int8 autofirst = 0; - - if ( nVersion >= LRSPACE_AUTOFIRST_VERSION ) - { - rStrm >> left >> prpleft >> right >> prpright >> firstline >> - prpfirstline >> txtleft >> autofirst; - - sal_uInt32 nPos = rStrm.Tell(); - sal_uInt32 nMarker; - rStrm >> nMarker; - if ( nMarker == BULLETLR_MARKER ) - { - rStrm >> firstline; - if ( firstline < 0 ) - left = left + static_cast<sal_uInt16>(firstline); // s.u.: txtleft = ... - } - else - rStrm.Seek( nPos ); - } - else if ( nVersion == LRSPACE_TXTLEFT_VERSION ) - { - rStrm >> left >> prpleft >> right >> prpright >> firstline >> - prpfirstline >> txtleft; - } - else if ( nVersion == LRSPACE_16_VERSION ) - { - rStrm >> left >> prpleft >> right >> prpright >> firstline >> - prpfirstline; - } - else - { - sal_Int8 nL, nR, nFL; - rStrm >> left >> nL >> right >> nR >> firstline >> nFL; - prpleft = (sal_uInt16)nL; - prpright = (sal_uInt16)nR; - prpfirstline = (sal_uInt16)nFL; - } - - txtleft = firstline >= 0 ? left : left - firstline; - SvxLRSpaceItem* pAttr = new SvxLRSpaceItem( Which() ); - - pAttr->nLeftMargin = left; - pAttr->nPropLeftMargin = prpleft; - pAttr->nRightMargin = right; - pAttr->nPropRightMargin = prpright; - pAttr->nFirstLineOfst = firstline; - pAttr->nPropFirstLineOfst = prpfirstline; - pAttr->nTxtLeft = txtleft; - pAttr->bAutoFirst = autofirst & 0x01; - if( nVersion >= LRSPACE_NEGATIVE_VERSION && ( autofirst & 0x80 ) ) - { - sal_Int32 nMargin; - rStrm >> nMargin; - pAttr->nLeftMargin = nMargin; - pAttr->nTxtLeft = firstline >= 0 ? nMargin : nMargin - firstline; - rStrm >> nMargin; - pAttr->nRightMargin = nMargin; - } - return pAttr; -} - -// ----------------------------------------------------------------------- - -sal_uInt16 SvxLRSpaceItem::GetVersion( sal_uInt16 nFileVersion ) const -{ - return (nFileVersion == SOFFICE_FILEFORMAT_31) - ? LRSPACE_TXTLEFT_VERSION - : LRSPACE_NEGATIVE_VERSION; -} - -// ----------------------------------------------------------------------- - -int SvxLRSpaceItem::ScaleMetrics( long nMult, long nDiv ) -{ - nFirstLineOfst = (short)Scale( nFirstLineOfst, nMult, nDiv ); - nTxtLeft = Scale( nTxtLeft, nMult, nDiv ); - nLeftMargin = Scale( nLeftMargin, nMult, nDiv ); - nRightMargin = Scale( nRightMargin, nMult, nDiv ); - return 1; -} - -// ----------------------------------------------------------------------- - -int SvxLRSpaceItem::HasMetrics() const -{ - return 1; -} - -// class SvxULSpaceItem -------------------------------------------------- - -SvxULSpaceItem::SvxULSpaceItem( const sal_uInt16 nId ) : - - SfxPoolItem( nId ), - - nUpper( 0 ), - nLower( 0 ), - nPropUpper( 100 ), - nPropLower( 100 ) -{ -} - -// ----------------------------------------------------------------------- - -SvxULSpaceItem::SvxULSpaceItem( const sal_uInt16 nUp, const sal_uInt16 nLow, - const sal_uInt16 nId ) : - - SfxPoolItem( nId ), - - nUpper( nUp ), - nLower( nLow ), - nPropUpper( 100 ), - nPropLower( 100 ) -{ -} - -// ----------------------------------------------------------------------- -sal_Bool SvxULSpaceItem::QueryValue( uno::Any& rVal, BYTE nMemberId ) const -{ - sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); - nMemberId &= ~CONVERT_TWIPS; - switch( nMemberId ) - { - // jetzt alles signed - case 0: - { - ::com::sun::star::frame::status::UpperLowerMarginScale aUpperLowerMarginScale; - aUpperLowerMarginScale.Upper = (sal_Int32)(bConvert ? TWIP_TO_MM100_UNSIGNED(nUpper) : nUpper); - aUpperLowerMarginScale.Lower = (sal_Int32)(bConvert ? TWIP_TO_MM100_UNSIGNED(nLower) : nPropUpper); - aUpperLowerMarginScale.ScaleUpper = (sal_Int16)nPropUpper; - aUpperLowerMarginScale.ScaleLower = (sal_Int16)nPropLower; - rVal <<= aUpperLowerMarginScale; - break; - } - case MID_UP_MARGIN: rVal <<= (sal_Int32)(bConvert ? TWIP_TO_MM100_UNSIGNED(nUpper) : nUpper); break; - case MID_LO_MARGIN: rVal <<= (sal_Int32)(bConvert ? TWIP_TO_MM100_UNSIGNED(nLower) : nLower); break; - case MID_UP_REL_MARGIN: rVal <<= (sal_Int16) nPropUpper; break; - case MID_LO_REL_MARGIN: rVal <<= (sal_Int16) nPropLower; break; - } - return sal_True; -} - -// ----------------------------------------------------------------------- -sal_Bool SvxULSpaceItem::PutValue( const uno::Any& rVal, BYTE nMemberId ) -{ - sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); - nMemberId &= ~CONVERT_TWIPS; - sal_Int32 nVal = 0; - switch( nMemberId ) - { - case 0: - { - ::com::sun::star::frame::status::UpperLowerMarginScale aUpperLowerMarginScale; - if ( !(rVal >>= aUpperLowerMarginScale )) - return sal_False; - { - SetUpper((sal_uInt16)(bConvert ? MM100_TO_TWIP( aUpperLowerMarginScale.Upper ) : aUpperLowerMarginScale.Upper)); - SetLower((sal_uInt16)(bConvert ? MM100_TO_TWIP( aUpperLowerMarginScale.Lower ) : aUpperLowerMarginScale.Lower)); - if( aUpperLowerMarginScale.ScaleUpper > 1 ) - nPropUpper = aUpperLowerMarginScale.ScaleUpper; - if( aUpperLowerMarginScale.ScaleLower > 1 ) - nPropUpper = aUpperLowerMarginScale.ScaleLower; - } - } - - case MID_UP_MARGIN : - if(!(rVal >>= nVal) || nVal < 0) - return sal_False; - SetUpper((USHORT)(bConvert ? MM100_TO_TWIP(nVal) : nVal)); - break; - case MID_LO_MARGIN : - if(!(rVal >>= nVal) || nVal < 0) - return sal_False; - SetLower((USHORT)(bConvert ? MM100_TO_TWIP(nVal) : nVal)); - break; - case MID_UP_REL_MARGIN: - case MID_LO_REL_MARGIN: - { - sal_Int32 nRel = 0; - if((rVal >>= nRel) && nRel > 1 ) - { - if(MID_UP_REL_MARGIN == nMemberId) - nPropUpper = (USHORT)nRel; - else - nPropLower = (USHORT)nRel; - } - else - return FALSE; - } - break; - - - default: - DBG_ERROR("unknown MemberId"); - return sal_False; - } - return sal_True; -} - -// ----------------------------------------------------------------------- - -int SvxULSpaceItem::operator==( const SfxPoolItem& rAttr ) const -{ - DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" ); - - return ( nUpper == ( (SvxULSpaceItem&)rAttr ).nUpper && - nLower == ( (SvxULSpaceItem&)rAttr ).nLower && - nPropUpper == ( (SvxULSpaceItem&)rAttr ).nPropUpper && - nPropLower == ( (SvxULSpaceItem&)rAttr ).nPropLower ); -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxULSpaceItem::Clone( SfxItemPool* ) const -{ - return new SvxULSpaceItem( *this ); -} - -//------------------------------------------------------------------------ - -SfxItemPresentation SvxULSpaceItem::GetPresentation -( - SfxItemPresentation ePres, - SfxMapUnit eCoreUnit, - SfxMapUnit ePresUnit, - XubString& rText, const IntlWrapper *pIntl -) const -{ -#ifndef SVX_LIGHT - switch ( ePres ) - { - case SFX_ITEM_PRESENTATION_NONE: - rText.Erase(); - return SFX_ITEM_PRESENTATION_NONE; - case SFX_ITEM_PRESENTATION_NAMELESS: - { - if ( 100 != nPropUpper ) - ( rText = String::CreateFromInt32( nPropUpper )) += sal_Unicode('%'); - else - rText = GetMetricText( (long)nUpper, eCoreUnit, ePresUnit, pIntl ); - rText += cpDelim; - if ( 100 != nPropLower ) - ( rText += String::CreateFromInt32( nPropLower )) += sal_Unicode('%'); - else - rText += GetMetricText( (long)nLower, eCoreUnit, ePresUnit, pIntl ); - return SFX_ITEM_PRESENTATION_NAMELESS; - } - case SFX_ITEM_PRESENTATION_COMPLETE: - { - rText = SVX_RESSTR(RID_SVXITEMS_ULSPACE_UPPER); - if ( 100 != nPropUpper ) - ( rText += String::CreateFromInt32( nPropUpper )) += sal_Unicode('%'); - else - { - rText += GetMetricText( (long)nUpper, eCoreUnit, ePresUnit, pIntl ); - rText += SVX_RESSTR(GetMetricId(ePresUnit)); - } - rText += cpDelim; - rText += SVX_RESSTR(RID_SVXITEMS_ULSPACE_LOWER); - if ( 100 != nPropLower ) - ( rText += String::CreateFromInt32( nPropLower )) += sal_Unicode('%'); - else - { - rText += GetMetricText( (long)nLower, eCoreUnit, ePresUnit, pIntl ); - rText += SVX_RESSTR(GetMetricId(ePresUnit)); - } - return SFX_ITEM_PRESENTATION_COMPLETE; - } - default: ;//prevent warning - } -#endif - return SFX_ITEM_PRESENTATION_NONE; -} - -// ----------------------------------------------------------------------- - -SvStream& SvxULSpaceItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const -{ - rStrm << GetUpper() - << GetPropUpper() - << GetLower() - << GetPropLower(); - return rStrm; -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxULSpaceItem::Create( SvStream& rStrm, sal_uInt16 nVersion ) const -{ - sal_uInt16 upper, lower, nPL = 0, nPU = 0; - - if ( nVersion == ULSPACE_16_VERSION ) - rStrm >> upper >> nPU >> lower >> nPL; - else - { - sal_Int8 nU, nL; - rStrm >> upper >> nU >> lower >> nL; - nPL = (sal_uInt16)nL; - nPU = (sal_uInt16)nU; - } - - SvxULSpaceItem* pAttr = new SvxULSpaceItem( Which() ); - pAttr->SetUpperValue( upper ); - pAttr->SetLowerValue( lower ); - pAttr->SetPropUpper( nPU ); - pAttr->SetPropLower( nPL ); - return pAttr; -} - -// ----------------------------------------------------------------------- - -sal_uInt16 SvxULSpaceItem::GetVersion( sal_uInt16 /*nFileVersion*/ ) const -{ - return ULSPACE_16_VERSION; -} - -// ----------------------------------------------------------------------- - -int SvxULSpaceItem::ScaleMetrics( long nMult, long nDiv ) -{ - nUpper = (sal_uInt16)Scale( nUpper, nMult, nDiv ); - nLower = (sal_uInt16)Scale( nLower, nMult, nDiv ); - return 1; -} - -// ----------------------------------------------------------------------- - -int SvxULSpaceItem::HasMetrics() const -{ - return 1; -} - - -// class SvxPrintItem ---------------------------------------------------- - -SfxPoolItem* SvxPrintItem::Clone( SfxItemPool* ) const -{ - return new SvxPrintItem( *this ); -} - -// ----------------------------------------------------------------------- - -SvStream& SvxPrintItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const -{ - rStrm << (sal_Int8)GetValue(); - return rStrm; -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxPrintItem::Create( SvStream& rStrm, sal_uInt16 ) const -{ - sal_Int8 bIsPrint; - rStrm >> bIsPrint; - return new SvxPrintItem( Which(), sal_Bool( bIsPrint != 0 ) ); -} - -//------------------------------------------------------------------------ - -SfxItemPresentation SvxPrintItem::GetPresentation -( - SfxItemPresentation ePres, - SfxMapUnit /*eCoreUnit*/, - SfxMapUnit /*ePresUnit*/, - XubString& rText, const IntlWrapper * -) const -{ -#ifndef SVX_LIGHT - switch ( ePres ) - { - case SFX_ITEM_PRESENTATION_NONE: - rText.Erase(); - return ePres; - - case SFX_ITEM_PRESENTATION_NAMELESS: - case SFX_ITEM_PRESENTATION_COMPLETE: - { - sal_uInt16 nId = RID_SVXITEMS_PRINT_FALSE; - - if ( GetValue() ) - nId = RID_SVXITEMS_PRINT_TRUE; - rText = SVX_RESSTR(nId); - return ePres; - } - default: ;//prevent warning - } -#endif // !SVX_LIGHT - return SFX_ITEM_PRESENTATION_NONE; -} - -// class SvxOpaqueItem --------------------------------------------------- - -SfxPoolItem* SvxOpaqueItem::Clone( SfxItemPool* ) const -{ - return new SvxOpaqueItem( *this ); -} - -// ----------------------------------------------------------------------- - -SvStream& SvxOpaqueItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const -{ - rStrm << (sal_Int8)GetValue(); - return rStrm; -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxOpaqueItem::Create( SvStream& rStrm, sal_uInt16 ) const -{ - sal_Int8 bIsOpaque; - rStrm >> bIsOpaque; - return new SvxOpaqueItem( Which(), sal_Bool( bIsOpaque != 0 ) ); -} - -//------------------------------------------------------------------------ - -SfxItemPresentation SvxOpaqueItem::GetPresentation -( - SfxItemPresentation ePres, - SfxMapUnit /*eCoreUnit*/, - SfxMapUnit /*ePresUnit*/, - XubString& rText, const IntlWrapper * -) const -{ -#ifndef SVX_LIGHT - switch ( ePres ) - { - case SFX_ITEM_PRESENTATION_NONE: - rText.Erase(); - return ePres; - - case SFX_ITEM_PRESENTATION_NAMELESS: - case SFX_ITEM_PRESENTATION_COMPLETE: - { - sal_uInt16 nId = RID_SVXITEMS_OPAQUE_FALSE; - - if ( GetValue() ) - nId = RID_SVXITEMS_OPAQUE_TRUE; - rText = SVX_RESSTR(nId); - return ePres; - } - default: ;//prevent warning - } -#endif // !SVX_LIGHT - return SFX_ITEM_PRESENTATION_NONE; -} - -// class SvxProtectItem -------------------------------------------------- - -int SvxProtectItem::operator==( const SfxPoolItem& rAttr ) const -{ - DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" ); - - return ( bCntnt == ( (SvxProtectItem&)rAttr ).bCntnt && - bSize == ( (SvxProtectItem&)rAttr ).bSize && - bPos == ( (SvxProtectItem&)rAttr ).bPos ); -} - -/*-----------------16.03.98 12:42------------------- ---------------------------------------------------*/ -sal_Bool SvxProtectItem::QueryValue( uno::Any& rVal, BYTE nMemberId ) const -{ -// sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); - nMemberId &= ~CONVERT_TWIPS; - sal_Bool bValue; - switch(nMemberId) - { - case MID_PROTECT_CONTENT : bValue = bCntnt; break; - case MID_PROTECT_SIZE : bValue = bSize; break; - case MID_PROTECT_POSITION: bValue = bPos; break; - default: - DBG_ERROR("falsche MemberId"); - return sal_False; - } - - rVal = Bool2Any( bValue ); - return sal_True; -} -/*-----------------16.03.98 12:42------------------- - ---------------------------------------------------*/ -sal_Bool SvxProtectItem::PutValue( const uno::Any& rVal, BYTE nMemberId ) -{ -// sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); - nMemberId &= ~CONVERT_TWIPS; - sal_Bool bVal( Any2Bool(rVal) ); - switch(nMemberId) - { - case MID_PROTECT_CONTENT : bCntnt = bVal; break; - case MID_PROTECT_SIZE : bSize = bVal; break; - case MID_PROTECT_POSITION: bPos = bVal; break; - default: - DBG_ERROR("falsche MemberId"); - return sal_False; - } - return sal_True; -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxProtectItem::Clone( SfxItemPool* ) const -{ - return new SvxProtectItem( *this ); -} - -//------------------------------------------------------------------------ - -SfxItemPresentation SvxProtectItem::GetPresentation -( - SfxItemPresentation ePres, - SfxMapUnit /*eCoreUnit*/, - SfxMapUnit /*ePresUnit*/, - XubString& rText, const IntlWrapper * -) const -{ -#ifndef SVX_LIGHT - switch ( ePres ) - { - case SFX_ITEM_PRESENTATION_NONE: - rText.Erase(); - return ePres; - - case SFX_ITEM_PRESENTATION_NAMELESS: - case SFX_ITEM_PRESENTATION_COMPLETE: - { - sal_uInt16 nId = RID_SVXITEMS_PROT_CONTENT_FALSE; - - if ( bCntnt ) - nId = RID_SVXITEMS_PROT_CONTENT_TRUE; - rText = SVX_RESSTR(nId); - rText += cpDelim; - nId = RID_SVXITEMS_PROT_SIZE_FALSE; - - if ( bSize ) - nId = RID_SVXITEMS_PROT_SIZE_TRUE; - rText += SVX_RESSTR(nId); - rText += cpDelim; - nId = RID_SVXITEMS_PROT_POS_FALSE; - - if ( bPos ) - nId = RID_SVXITEMS_PROT_POS_TRUE; - rText += SVX_RESSTR(nId); - return ePres; - } - default: ;//prevent warning - } -#endif // !SVX_LIGHT - return SFX_ITEM_PRESENTATION_NONE; -} - -// ----------------------------------------------------------------------- - -SvStream& SvxProtectItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const -{ - sal_Int8 cProt = 0; - if( IsPosProtected() ) cProt |= 0x01; - if( IsSizeProtected() ) cProt |= 0x02; - if( IsCntntProtected() ) cProt |= 0x04; - rStrm << (sal_Int8) cProt; - return rStrm; -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxProtectItem::Create( SvStream& rStrm, sal_uInt16 ) const -{ - sal_Int8 cFlags; - rStrm >> cFlags; - SvxProtectItem* pAttr = new SvxProtectItem( Which() ); - pAttr->SetPosProtect( sal_Bool( ( cFlags & 0x01 ) != 0 ) ); - pAttr->SetSizeProtect( sal_Bool( ( cFlags & 0x02 ) != 0 ) ); - pAttr->SetCntntProtect( sal_Bool( ( cFlags & 0x04 ) != 0 ) ); - return pAttr; -} - -// class SvxShadowItem --------------------------------------------------- - -SvxShadowItem::SvxShadowItem( const USHORT nId, - const Color *pColor, const USHORT nW, - const SvxShadowLocation eLoc ) : - SfxEnumItemInterface( nId ), - aShadowColor(COL_GRAY), - nWidth ( nW ), - eLocation ( eLoc ) -{ - if ( pColor ) - aShadowColor = *pColor; -} - -// ----------------------------------------------------------------------- -sal_Bool SvxShadowItem::QueryValue( uno::Any& rVal, BYTE nMemberId ) const -{ - sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); - nMemberId &= ~CONVERT_TWIPS; - - table::ShadowFormat aShadow; - table::ShadowLocation eSet = table::ShadowLocation_NONE; - switch( eLocation ) - { - case SVX_SHADOW_TOPLEFT : eSet = table::ShadowLocation_TOP_LEFT ; break; - case SVX_SHADOW_TOPRIGHT : eSet = table::ShadowLocation_TOP_RIGHT ; break; - case SVX_SHADOW_BOTTOMLEFT : eSet = table::ShadowLocation_BOTTOM_LEFT ; break; - case SVX_SHADOW_BOTTOMRIGHT: eSet = table::ShadowLocation_BOTTOM_RIGHT; break; - default: ;//prevent warning - } - aShadow.Location = eSet; - aShadow.ShadowWidth = bConvert ? TWIP_TO_MM100_UNSIGNED(nWidth) : nWidth; - aShadow.IsTransparent = aShadowColor.GetTransparency() > 0; - aShadow.Color = aShadowColor.GetRGBColor(); - - switch ( nMemberId ) - { - case MID_LOCATION: rVal <<= aShadow.Location; break; - case MID_WIDTH: rVal <<= aShadow.ShadowWidth; break; - case MID_TRANSPARENT: rVal <<= aShadow.IsTransparent; break; - case MID_BG_COLOR: rVal <<= aShadow.Color; break; - case 0: rVal <<= aShadow; break; - default: DBG_ERROR("Wrong MemberId!"); return sal_False; - } - - return sal_True; -} -// ----------------------------------------------------------------------- -sal_Bool SvxShadowItem::PutValue( const uno::Any& rVal, BYTE nMemberId ) -{ - sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); - nMemberId &= ~CONVERT_TWIPS; - - table::ShadowFormat aShadow; - uno::Any aAny; - sal_Bool bRet = QueryValue( aAny, bConvert ? CONVERT_TWIPS : 0 ) && ( aAny >>= aShadow ); - switch ( nMemberId ) - { - case MID_LOCATION: - { - bRet = (rVal >>= aShadow.Location); - if ( !bRet ) - { - sal_Int16 nVal = 0; - bRet = (rVal >>= nVal); - aShadow.Location = (table::ShadowLocation) nVal; - } - - break; - } - - case MID_WIDTH: rVal >>= aShadow.ShadowWidth; break; - case MID_TRANSPARENT: rVal >>= aShadow.IsTransparent; break; - case MID_BG_COLOR: rVal >>= aShadow.Color; break; - case 0: rVal >>= aShadow; break; - default: DBG_ERROR("Wrong MemberId!"); return sal_False; - } - - if ( bRet ) - { -// SvxShadowLocation eSet = SVX_SHADOW_NONE; - switch( aShadow.Location ) - { - case table::ShadowLocation_TOP_LEFT : eLocation = SVX_SHADOW_TOPLEFT; break; - case table::ShadowLocation_TOP_RIGHT : eLocation = SVX_SHADOW_TOPRIGHT; break; - case table::ShadowLocation_BOTTOM_LEFT : eLocation = SVX_SHADOW_BOTTOMLEFT ; break; - case table::ShadowLocation_BOTTOM_RIGHT: eLocation = SVX_SHADOW_BOTTOMRIGHT; break; - default: ;//prevent warning - } - - nWidth = bConvert ? MM100_TO_TWIP(aShadow.ShadowWidth) : aShadow.ShadowWidth; - Color aSet(aShadow.Color); - aSet.SetTransparency(aShadow.IsTransparent ? 0xff : 0); - aShadowColor = aSet; - } - - return bRet; -} - -// ----------------------------------------------------------------------- - -int SvxShadowItem::operator==( const SfxPoolItem& rAttr ) const -{ - DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" ); - - return ( ( aShadowColor == ( (SvxShadowItem&)rAttr ).aShadowColor ) && - ( nWidth == ( (SvxShadowItem&)rAttr ).GetWidth() ) && - ( eLocation == ( (SvxShadowItem&)rAttr ).GetLocation() ) ); -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxShadowItem::Clone( SfxItemPool* ) const -{ - return new SvxShadowItem( *this ); -} - -// ----------------------------------------------------------------------- - -sal_uInt16 SvxShadowItem::CalcShadowSpace( sal_uInt16 nShadow ) const -{ - sal_uInt16 nSpace = 0; - - switch ( nShadow ) - { - case SHADOW_TOP: - if ( eLocation == SVX_SHADOW_TOPLEFT || - eLocation == SVX_SHADOW_TOPRIGHT ) - nSpace = nWidth; - break; - - case SHADOW_BOTTOM: - if ( eLocation == SVX_SHADOW_BOTTOMLEFT || - eLocation == SVX_SHADOW_BOTTOMRIGHT ) - nSpace = nWidth; - break; - - case SHADOW_LEFT: - if ( eLocation == SVX_SHADOW_TOPLEFT || - eLocation == SVX_SHADOW_BOTTOMLEFT ) - nSpace = nWidth; - break; - - case SHADOW_RIGHT: - if ( eLocation == SVX_SHADOW_TOPRIGHT || - eLocation == SVX_SHADOW_BOTTOMRIGHT ) - nSpace = nWidth; - break; - - default: - DBG_ERROR( "wrong shadow" ); - } - return nSpace; -} - -//------------------------------------------------------------------------ - -SfxItemPresentation SvxShadowItem::GetPresentation -( - SfxItemPresentation ePres, - SfxMapUnit eCoreUnit, - SfxMapUnit ePresUnit, - XubString& rText, const IntlWrapper *pIntl -) const -{ -#ifndef SVX_LIGHT - switch ( ePres ) - { - case SFX_ITEM_PRESENTATION_NONE: - rText.Erase(); - return ePres; - - case SFX_ITEM_PRESENTATION_NAMELESS: - { - rText = ::GetColorString( aShadowColor ); - rText += cpDelim; - sal_uInt16 nId = RID_SVXITEMS_TRANSPARENT_FALSE; - - if ( aShadowColor.GetTransparency() ) - nId = RID_SVXITEMS_TRANSPARENT_TRUE; - rText += SVX_RESSTR(nId); - rText += cpDelim; - rText += GetMetricText( (long)nWidth, eCoreUnit, ePresUnit, pIntl ); - rText += cpDelim; - rText += SVX_RESSTR(RID_SVXITEMS_SHADOW_BEGIN + eLocation); - return ePres; - } - case SFX_ITEM_PRESENTATION_COMPLETE: - { - rText = SVX_RESSTR(RID_SVXITEMS_SHADOW_COMPLETE); - rText += ::GetColorString( aShadowColor ); - rText += cpDelim; - - sal_uInt16 nId = RID_SVXITEMS_TRANSPARENT_FALSE; - if ( aShadowColor.GetTransparency() ) - nId = RID_SVXITEMS_TRANSPARENT_TRUE; - rText += SVX_RESSTR(nId); - rText += cpDelim; - rText += GetMetricText( (long)nWidth, eCoreUnit, ePresUnit, pIntl ); - rText += SVX_RESSTR(GetMetricId(ePresUnit)); - rText += cpDelim; - rText += SVX_RESSTR(RID_SVXITEMS_SHADOW_BEGIN + eLocation); - return ePres; - } - default: ;//prevent warning - } -#endif - return SFX_ITEM_PRESENTATION_NONE; -} - -// ----------------------------------------------------------------------- - -SvStream& SvxShadowItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const -{ - rStrm << (sal_Int8) GetLocation() - << (sal_uInt16) GetWidth() - << (sal_Bool)(aShadowColor.GetTransparency() > 0) - << GetColor() - << GetColor() - << (sal_Int8)(aShadowColor.GetTransparency() > 0 ? 0 : 1); //BRUSH_NULL : BRUSH_SOLID - return rStrm; -} - -// ----------------------------------------------------------------------- - -int SvxShadowItem::ScaleMetrics( long nMult, long nDiv ) -{ - nWidth = (sal_uInt16)Scale( nWidth, nMult, nDiv ); - return 1; -} - -// ----------------------------------------------------------------------- - -int SvxShadowItem::HasMetrics() const -{ - return 1; -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxShadowItem::Create( SvStream& rStrm, sal_uInt16 ) const -{ - sal_Int8 cLoc; - sal_uInt16 _nWidth; - sal_Bool bTrans; - Color aColor; - Color aFillColor; - sal_Int8 nStyle; - rStrm >> cLoc >> _nWidth - >> bTrans >> aColor >> aFillColor >> nStyle; - aColor.SetTransparency(bTrans ? 0xff : 0); - return new SvxShadowItem( Which(), &aColor, _nWidth, (SvxShadowLocation)cLoc ); -} - -// ----------------------------------------------------------------------- - -sal_uInt16 SvxShadowItem::GetValueCount() const -{ - return SVX_SHADOW_END; // SVX_SHADOW_BOTTOMRIGHT + 1 -} - -// ----------------------------------------------------------------------- - -XubString SvxShadowItem::GetValueTextByPos( sal_uInt16 nPos ) const -{ - DBG_ASSERT( nPos < SVX_SHADOW_END, "enum overflow!" ); - return XubString( SVX_RES( RID_SVXITEMS_SHADOW_BEGIN + nPos ) ); -} - -// ----------------------------------------------------------------------- - -sal_uInt16 SvxShadowItem::GetEnumValue() const -{ - return (sal_uInt16)GetLocation(); -} - -// ----------------------------------------------------------------------- - -void SvxShadowItem::SetEnumValue( sal_uInt16 nVal ) -{ - SetLocation( (const SvxShadowLocation)nVal ); -} - -// class SvxBorderLine -------------------------------------------------- - -SvxBorderLine::SvxBorderLine( const Color *pCol, sal_uInt16 nOut, sal_uInt16 nIn, sal_uInt16 nDist ) -: nOutWidth( nOut ) -, nInWidth ( nIn ) -, nDistance( nDist ) -{ - if ( pCol ) - aColor = *pCol; -} - -// ----------------------------------------------------------------------- - -SvxBorderLine::SvxBorderLine( const SvxBorderLine& r ) -{ - *this = r; -} - -// ----------------------------------------------------------------------- - -SvxBorderLine& SvxBorderLine::operator=( const SvxBorderLine& r ) -{ - aColor = r.aColor; - nOutWidth = r.nOutWidth; - nInWidth = r.nInWidth; - nDistance = r.nDistance; - return *this; -} - -// ----------------------------------------------------------------------- - -void SvxBorderLine::ScaleMetrics( long nMult, long nDiv ) -{ - nOutWidth = (sal_uInt16)Scale( nOutWidth, nMult, nDiv ); - nInWidth = (sal_uInt16)Scale( nInWidth, nMult, nDiv ); - nDistance = (sal_uInt16)Scale( nDistance, nMult, nDiv ); -} - -// ----------------------------------------------------------------------- - -sal_Bool SvxBorderLine::operator==( const SvxBorderLine& rCmp ) const -{ - return ( ( aColor == rCmp.GetColor() ) && - ( nInWidth == rCmp.GetInWidth() ) && - ( nOutWidth == rCmp.GetOutWidth() ) && - ( nDistance == rCmp.GetDistance() ) ); -} - -// ----------------------------------------------------------------------- - -XubString SvxBorderLine::GetValueString( SfxMapUnit eSrcUnit, - SfxMapUnit eDestUnit, - const IntlWrapper* pIntl, - sal_Bool bMetricStr) const -{ -#ifndef SVX_LIGHT - sal_uInt16 nResId = 0; - - if ( 0 == nDistance ) - { - // einfach Linie - if ( DEF_LINE_WIDTH_0 == nOutWidth ) - nResId = RID_SINGLE_LINE0; - else if ( DEF_LINE_WIDTH_1 == nOutWidth ) - nResId = RID_SINGLE_LINE1; - else if ( DEF_LINE_WIDTH_2 == nOutWidth ) - nResId = RID_SINGLE_LINE2; - else if ( DEF_LINE_WIDTH_3 == nOutWidth ) - nResId = RID_SINGLE_LINE3; - else if ( DEF_LINE_WIDTH_4 == nOutWidth ) - nResId = RID_SINGLE_LINE4; - } - else if ( DEF_LINE_WIDTH_1 == nDistance ) - { - // doppelte Linie, kleiner Abstand - if ( DEF_LINE_WIDTH_0 == nOutWidth && DEF_LINE_WIDTH_0 == nInWidth ) - nResId = RID_DOUBLE_LINE0; - else if ( DEF_LINE_WIDTH_1 == nOutWidth && - DEF_LINE_WIDTH_1 == nInWidth ) - nResId = RID_DOUBLE_LINE2; - else if ( DEF_LINE_WIDTH_1 == nOutWidth && - DEF_LINE_WIDTH_2 == nInWidth ) - nResId = RID_DOUBLE_LINE8; - } - else if ( DEF_LINE_WIDTH_2 == nDistance ) - { - // doppelte Linie, gro\ser Abstand - if ( DEF_LINE_WIDTH_0 == nOutWidth && DEF_LINE_WIDTH_0 == nInWidth ) - nResId = RID_DOUBLE_LINE1; - else if ( DEF_LINE_WIDTH_2 == nOutWidth && - DEF_LINE_WIDTH_2 == nInWidth ) - nResId = RID_DOUBLE_LINE3; - else if ( DEF_LINE_WIDTH_1 == nOutWidth && - DEF_LINE_WIDTH_0 == nInWidth ) - nResId = RID_DOUBLE_LINE4; - else if ( DEF_LINE_WIDTH_2 == nOutWidth && - DEF_LINE_WIDTH_0 == nInWidth ) - nResId = RID_DOUBLE_LINE5; - else if ( DEF_LINE_WIDTH_3 == nOutWidth && - DEF_LINE_WIDTH_0 == nInWidth ) - nResId = RID_DOUBLE_LINE6; - else if ( DEF_LINE_WIDTH_2 == nOutWidth && - DEF_LINE_WIDTH_1 == nInWidth ) - nResId = RID_DOUBLE_LINE7; - else if ( DEF_LINE_WIDTH_3 == nOutWidth && - DEF_LINE_WIDTH_2 == nInWidth ) - nResId = RID_DOUBLE_LINE9; - else if ( DEF_LINE_WIDTH_2 == nOutWidth && - DEF_LINE_WIDTH_3 == nInWidth ) - nResId = RID_DOUBLE_LINE10; - } - String aStr; - aStr += sal_Unicode('('); - aStr += ::GetColorString( aColor ); - aStr += cpDelim; - - if ( nResId ) - aStr += SVX_RESSTR(nResId); - else - { - String sMetric = SVX_RESSTR(GetMetricId( eDestUnit )); - aStr += GetMetricText( (long)nInWidth, eSrcUnit, eDestUnit, pIntl ); - if ( bMetricStr ) - aStr += sMetric; - aStr += cpDelim; - aStr += GetMetricText( (long)nOutWidth, eSrcUnit, eDestUnit, pIntl ); - if ( bMetricStr ) - aStr += sMetric; - aStr += cpDelim; - aStr += GetMetricText( (long)nDistance, eSrcUnit, eDestUnit, pIntl ); - if ( bMetricStr ) - aStr += sMetric; - } - aStr += sal_Unicode(')'); - return aStr; -#else - return UniString(); -#endif -} - -bool SvxBorderLine::HasPriority( const SvxBorderLine& rOtherLine ) const -{ - const USHORT nThisSize = GetOutWidth() + GetDistance() + GetInWidth(); - const USHORT nOtherSize = rOtherLine.GetOutWidth() + rOtherLine.GetDistance() + rOtherLine.GetInWidth(); - - if (nThisSize > nOtherSize) - { - return true; - } - else if (nThisSize < nOtherSize) - { - return false; - } - else - { - if ( rOtherLine.GetInWidth() && !GetInWidth() ) - { - return true; - } - else if ( GetInWidth() && !rOtherLine.GetInWidth() ) - { - return false; - } - else - { - return false; - } - } -} - -// class SvxBoxItem ------------------------------------------------------ - -SvxBoxItem::SvxBoxItem( const SvxBoxItem& rCpy ) : - - SfxPoolItem ( rCpy ), - nTopDist ( rCpy.nTopDist ), - nBottomDist ( rCpy.nBottomDist ), - nLeftDist ( rCpy.nLeftDist ), - nRightDist ( rCpy.nRightDist ) - -{ - pTop = rCpy.GetTop() ? new SvxBorderLine( *rCpy.GetTop() ) : 0; - pBottom = rCpy.GetBottom() ? new SvxBorderLine( *rCpy.GetBottom() ) : 0; - pLeft = rCpy.GetLeft() ? new SvxBorderLine( *rCpy.GetLeft() ) : 0; - pRight = rCpy.GetRight() ? new SvxBorderLine( *rCpy.GetRight() ) : 0; -} - -// ----------------------------------------------------------------------- - -SvxBoxItem::SvxBoxItem( const sal_uInt16 nId ) : - SfxPoolItem( nId ), - - pTop ( 0 ), - pBottom ( 0 ), - pLeft ( 0 ), - pRight ( 0 ), - nTopDist ( 0 ), - nBottomDist ( 0 ), - nLeftDist ( 0 ), - nRightDist ( 0 ) - -{ -} - -// ----------------------------------------------------------------------- - -SvxBoxItem::~SvxBoxItem() -{ - delete pTop; - delete pBottom; - delete pLeft; - delete pRight; -} - -// ----------------------------------------------------------------------- - -SvxBoxItem& SvxBoxItem::operator=( const SvxBoxItem& rBox ) -{ - nTopDist = rBox.nTopDist; - nBottomDist = rBox.nBottomDist; - nLeftDist = rBox.nLeftDist; - nRightDist = rBox.nRightDist; - SetLine( rBox.GetTop(), BOX_LINE_TOP ); - SetLine( rBox.GetBottom(), BOX_LINE_BOTTOM ); - SetLine( rBox.GetLeft(), BOX_LINE_LEFT ); - SetLine( rBox.GetRight(), BOX_LINE_RIGHT ); - return *this; -} - -// ----------------------------------------------------------------------- - -inline sal_Bool CmpBrdLn( const SvxBorderLine* pBrd1, const SvxBorderLine* pBrd2 ) -{ - sal_Bool bRet; - if( 0 != pBrd1 ? 0 == pBrd2 : 0 != pBrd2 ) - bRet = sal_False; - else - if( !pBrd1 ) - bRet = sal_True; - else - bRet = (*pBrd1 == *pBrd2); - return bRet; -} - -// ----------------------------------------------------------------------- - -int SvxBoxItem::operator==( const SfxPoolItem& rAttr ) const -{ - DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" ); - - return ( - ( nTopDist == ( (SvxBoxItem&)rAttr ).nTopDist ) && - ( nBottomDist == ( (SvxBoxItem&)rAttr ).nBottomDist ) && - ( nLeftDist == ( (SvxBoxItem&)rAttr ).nLeftDist ) && - ( nRightDist == ( (SvxBoxItem&)rAttr ).nRightDist ) && - CmpBrdLn( pTop, ( (SvxBoxItem&)rAttr ).GetTop() ) && - CmpBrdLn( pBottom, ( (SvxBoxItem&)rAttr ).GetBottom() ) && - CmpBrdLn( pLeft, ( (SvxBoxItem&)rAttr ).GetLeft() ) && - CmpBrdLn( pRight, ( (SvxBoxItem&)rAttr ).GetRight() ) ); -} - -// ----------------------------------------------------------------------- -table::BorderLine lcl_SvxLineToLine(const SvxBorderLine* pLine, sal_Bool bConvert) -{ - table::BorderLine aLine; - if(pLine) - { - aLine.Color = pLine->GetColor().GetColor() ; - aLine.InnerLineWidth = sal_uInt16( bConvert ? TWIP_TO_MM100_UNSIGNED(pLine->GetInWidth() ): pLine->GetInWidth() ); - aLine.OuterLineWidth = sal_uInt16( bConvert ? TWIP_TO_MM100_UNSIGNED(pLine->GetOutWidth()): pLine->GetOutWidth() ); - aLine.LineDistance = sal_uInt16( bConvert ? TWIP_TO_MM100_UNSIGNED(pLine->GetDistance()): pLine->GetDistance() ); - } - else - aLine.Color = aLine.InnerLineWidth = aLine.OuterLineWidth = aLine.LineDistance = 0; - return aLine; -} -// ----------------------------------------------------------------------- -sal_Bool SvxBoxItem::QueryValue( uno::Any& rVal, BYTE nMemberId ) const -{ - sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); - table::BorderLine aRetLine; - sal_uInt16 nDist = 0; - sal_Bool bDistMember = sal_False; - nMemberId &= ~CONVERT_TWIPS; - sal_Bool bSerialize = sal_False; - switch(nMemberId) - { - case 0: - { - // 4 Borders and 5 distances - uno::Sequence< uno::Any > aSeq( 9 ); - aSeq[0] = uno::makeAny( lcl_SvxLineToLine(GetLeft(), bConvert) ); - aSeq[1] = uno::makeAny( lcl_SvxLineToLine(GetRight(), bConvert) ); - aSeq[2] = uno::makeAny( lcl_SvxLineToLine(GetBottom(), bConvert) ); - aSeq[3] = uno::makeAny( lcl_SvxLineToLine(GetTop(), bConvert) ); - aSeq[4] <<= uno::makeAny( (sal_Int32)(bConvert ? TWIP_TO_MM100_UNSIGNED( GetDistance()) : GetDistance())); - aSeq[5] <<= uno::makeAny( (sal_Int32)(bConvert ? TWIP_TO_MM100_UNSIGNED( nTopDist ) : nTopDist )); - aSeq[6] <<= uno::makeAny( (sal_Int32)(bConvert ? TWIP_TO_MM100_UNSIGNED( nBottomDist ) : nBottomDist )); - aSeq[7] <<= uno::makeAny( (sal_Int32)(bConvert ? TWIP_TO_MM100_UNSIGNED( nLeftDist ) : nLeftDist )); - aSeq[8] <<= uno::makeAny( (sal_Int32)(bConvert ? TWIP_TO_MM100_UNSIGNED( nRightDist ) : nRightDist )); - rVal = uno::makeAny( aSeq ); - return sal_True; - } - case MID_LEFT_BORDER: - bSerialize = sal_True; // intentionally no break! - case LEFT_BORDER: - aRetLine = lcl_SvxLineToLine(GetLeft(), bConvert); - break; - case MID_RIGHT_BORDER: - bSerialize = sal_True; // intentionally no break! - case RIGHT_BORDER: - aRetLine = lcl_SvxLineToLine(GetRight(), bConvert); - break; - case MID_BOTTOM_BORDER: - bSerialize = sal_True; // intentionally no break! - case BOTTOM_BORDER: - aRetLine = lcl_SvxLineToLine(GetBottom(), bConvert); - break; - case MID_TOP_BORDER: - bSerialize = sal_True; // intentionally no break! - case TOP_BORDER: - aRetLine = lcl_SvxLineToLine(GetTop(), bConvert); - break; - case BORDER_DISTANCE: - nDist = GetDistance(); - bDistMember = sal_True; - break; - case TOP_BORDER_DISTANCE: - nDist = nTopDist; - bDistMember = sal_True; - break; - case BOTTOM_BORDER_DISTANCE: - nDist = nBottomDist; - bDistMember = sal_True; - break; - case LEFT_BORDER_DISTANCE: - nDist = nLeftDist; - bDistMember = sal_True; - break; - case RIGHT_BORDER_DISTANCE: - nDist = nRightDist; - bDistMember = sal_True; - break; - } - - if( bDistMember ) - rVal <<= (sal_Int32)(bConvert ? TWIP_TO_MM100_UNSIGNED(nDist) : nDist); - else - { -/* - if ( bSerialize ) - { - ::com::sun::star::uno::Sequence < ::com::sun::star::uno::Any > aSeq(4); - aSeq[0] <<= aRetLine.Color; - aSeq[1] <<= aRetLine.InnerLineWidth; - aSeq[2] <<= aRetLine.OuterLineWidth; - aSeq[3] <<= aRetLine.LineDistance; - rVal <<= aSeq; - } - else -*/ - rVal <<= aRetLine; - } - - return sal_True; -} - -// ----------------------------------------------------------------------- -sal_Bool lcl_LineToSvxLine(const ::com::sun::star::table::BorderLine& rLine, SvxBorderLine& rSvxLine, sal_Bool bConvert) -{ - rSvxLine.SetColor( Color(rLine.Color)); - rSvxLine.SetInWidth( sal_uInt16( bConvert ? MM100_TO_TWIP(rLine.InnerLineWidth) : rLine.InnerLineWidth )); - rSvxLine.SetOutWidth( sal_uInt16( bConvert ? MM100_TO_TWIP(rLine.OuterLineWidth) : rLine.OuterLineWidth )); - rSvxLine.SetDistance( sal_uInt16( bConvert ? MM100_TO_TWIP(rLine.LineDistance ) : rLine.LineDistance )); - sal_Bool bRet = rLine.InnerLineWidth > 0 || rLine.OuterLineWidth > 0; - return bRet; -} - -// ----------------------------------------------------------------------- - -sal_Bool SvxBoxItem::PutValue( const uno::Any& rVal, BYTE nMemberId ) -{ - sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); - sal_uInt16 nLine = BOX_LINE_TOP; - sal_Bool bDistMember = sal_False; - nMemberId &= ~CONVERT_TWIPS; - switch(nMemberId) - { - case 0: - { - uno::Sequence< uno::Any > aSeq; - if (( rVal >>= aSeq ) && ( aSeq.getLength() == 9 )) - { - // 4 Borders and 5 distances - sal_Int32 nDist = 0; - SvxBorderLine aLine; - table::BorderLine aBorderLine; - if ( aSeq[0] >>= aBorderLine ) - { - sal_Bool bSet = lcl_LineToSvxLine(aBorderLine, aLine, bConvert); - SetLine(bSet ? &aLine : 0, BOX_LINE_LEFT ); - } - else - return sal_False; - - if ( aSeq[1] >>= aBorderLine ) - { - sal_Bool bSet = lcl_LineToSvxLine(aBorderLine, aLine, bConvert); - SetLine(bSet ? &aLine : 0, BOX_LINE_RIGHT ); - } - else - return sal_False; - - if ( aSeq[2] >>= aBorderLine ) - { - sal_Bool bSet = lcl_LineToSvxLine(aBorderLine, aLine, bConvert); - SetLine(bSet ? &aLine : 0, BOX_LINE_BOTTOM ); - } - else - return sal_False; - - if ( aSeq[3] >>= aBorderLine ) - { - sal_Bool bSet = lcl_LineToSvxLine(aBorderLine, aLine, bConvert); - SetLine(bSet ? &aLine : 0, BOX_LINE_TOP ); - } - else - return sal_False; - - sal_uInt16 nLines[4] = { BOX_LINE_TOP, BOX_LINE_BOTTOM, BOX_LINE_LEFT, BOX_LINE_RIGHT }; - for ( sal_Int32 n = 4; n < 9; n++ ) - { - if ( aSeq[n] >>= nDist ) - { - if( bConvert ) - nDist = MM100_TO_TWIP(nDist); - if ( n == 4 ) - SetDistance( sal_uInt16( nDist )); - else - SetDistance( sal_uInt16( nDist ), nLines[n-5] ); - } - else - return sal_False; - } - - return sal_True; - } - else - return sal_False; - } - case LEFT_BORDER_DISTANCE: - bDistMember = sal_True; - case LEFT_BORDER: - case MID_LEFT_BORDER: - nLine = BOX_LINE_LEFT; - break; - case RIGHT_BORDER_DISTANCE: - bDistMember = sal_True; - case RIGHT_BORDER: - case MID_RIGHT_BORDER: - nLine = BOX_LINE_RIGHT; - break; - case BOTTOM_BORDER_DISTANCE: - bDistMember = sal_True; - case BOTTOM_BORDER: - case MID_BOTTOM_BORDER: - nLine = BOX_LINE_BOTTOM; - break; - case TOP_BORDER_DISTANCE: - bDistMember = sal_True; - case TOP_BORDER: - case MID_TOP_BORDER: - nLine = BOX_LINE_TOP; - break; - } - - if( bDistMember || nMemberId == BORDER_DISTANCE ) - { - sal_Int32 nDist = 0; - if(!(rVal >>= nDist)) - return sal_False; - - if(nDist >= 0) - { - if( bConvert ) - nDist = MM100_TO_TWIP(nDist); - if( nMemberId == BORDER_DISTANCE ) - SetDistance( sal_uInt16( nDist )); - else - SetDistance( sal_uInt16( nDist ), nLine ); - } - } - else - { - SvxBorderLine aLine; - if( !rVal.hasValue() ) - return sal_False; - - table::BorderLine aBorderLine; - if( rVal >>= aBorderLine ) - { - // usual struct - } - else if (rVal.getValueTypeClass() == uno::TypeClass_SEQUENCE ) - { - // serialization for basic macro recording - uno::Reference < script::XTypeConverter > xConverter - ( ::comphelper::getProcessServiceFactory()->createInstance(::rtl::OUString::createFromAscii("com.sun.star.script.Converter")), - uno::UNO_QUERY ); - uno::Sequence < uno::Any > aSeq; - uno::Any aNew; - try { aNew = xConverter->convertTo( rVal, ::getCppuType((const uno::Sequence < uno::Any >*)0) ); } - catch (uno::Exception&) {} - - aNew >>= aSeq; - if ( aSeq.getLength() == 4 ) - { - sal_Int32 nVal = 0; - if ( aSeq[0] >>= nVal ) - aBorderLine.Color = nVal; - if ( aSeq[1] >>= nVal ) - aBorderLine.InnerLineWidth = (sal_Int16) nVal; - if ( aSeq[2] >>= nVal ) - aBorderLine.OuterLineWidth = (sal_Int16) nVal; - if ( aSeq[3] >>= nVal ) - aBorderLine.LineDistance = (sal_Int16) nVal; - } - else - return sal_False; - } - else - return sal_False; - - sal_Bool bSet = lcl_LineToSvxLine(aBorderLine, aLine, bConvert); - SetLine(bSet ? &aLine : 0, nLine); - } - - return sal_True; -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxBoxItem::Clone( SfxItemPool* ) const -{ - return new SvxBoxItem( *this ); -} - -//------------------------------------------------------------------------ - -SfxItemPresentation SvxBoxItem::GetPresentation -( - SfxItemPresentation ePres, - SfxMapUnit eCoreUnit, - SfxMapUnit ePresUnit, - XubString& rText, const IntlWrapper *pIntl -) const -{ -#ifndef SVX_LIGHT - switch ( ePres ) - { - case SFX_ITEM_PRESENTATION_NONE: - rText.Erase(); - return SFX_ITEM_PRESENTATION_NONE; - - case SFX_ITEM_PRESENTATION_NAMELESS: - { - rText.Erase(); - - if ( pTop ) - { - rText = pTop->GetValueString( eCoreUnit, ePresUnit, pIntl ); - rText += cpDelim; - } - if( !(pTop && pBottom && pLeft && pRight && - *pTop == *pBottom && *pTop == *pLeft && *pTop == *pRight) ) - { - if ( pBottom ) - { - rText += pBottom->GetValueString( eCoreUnit, ePresUnit, pIntl ); - rText += cpDelim; - } - if ( pLeft ) - { - rText += pLeft->GetValueString( eCoreUnit, ePresUnit, pIntl ); - rText += cpDelim; - } - if ( pRight ) - { - rText += pRight->GetValueString( eCoreUnit, ePresUnit, pIntl ); - rText += cpDelim; - } - } - rText += GetMetricText( (long)nTopDist, eCoreUnit, ePresUnit, pIntl ); - if( nTopDist != nBottomDist || nTopDist != nLeftDist || - nTopDist != nRightDist ) - { - (((((rText += cpDelim) - += GetMetricText( (long)nBottomDist, eCoreUnit, - ePresUnit, pIntl )) - += cpDelim) - += GetMetricText( (long)nLeftDist, eCoreUnit, ePresUnit, pIntl )) - += cpDelim) - += GetMetricText( (long)nRightDist, eCoreUnit, - ePresUnit, pIntl ); - } - return SFX_ITEM_PRESENTATION_NAMELESS; - } - case SFX_ITEM_PRESENTATION_COMPLETE: - { - if( !(pTop || pBottom || pLeft || pRight) ) - { - rText = SVX_RESSTR(RID_SVXITEMS_BORDER_NONE); - rText += cpDelim; - } - else - { - rText = SVX_RESSTR(RID_SVXITEMS_BORDER_COMPLETE); - if( pTop && pBottom && pLeft && pRight && - *pTop == *pBottom && *pTop == *pLeft && *pTop == *pRight ) - { - rText += pTop->GetValueString( eCoreUnit, ePresUnit, pIntl, sal_True ); - rText += cpDelim; - } - else - { - if ( pTop ) - { - rText += SVX_RESSTR(RID_SVXITEMS_BORDER_TOP); - rText += pTop->GetValueString( eCoreUnit, ePresUnit, pIntl, sal_True ); - rText += cpDelim; - } - if ( pBottom ) - { - rText += SVX_RESSTR(RID_SVXITEMS_BORDER_BOTTOM); - rText += pBottom->GetValueString( eCoreUnit, ePresUnit, pIntl, sal_True ); - rText += cpDelim; - } - if ( pLeft ) - { - rText += SVX_RESSTR(RID_SVXITEMS_BORDER_LEFT); - rText += pLeft->GetValueString( eCoreUnit, ePresUnit, pIntl, sal_True ); - rText += cpDelim; - } - if ( pRight ) - { - rText += SVX_RESSTR(RID_SVXITEMS_BORDER_RIGHT); - rText += pRight->GetValueString( eCoreUnit, ePresUnit, pIntl, sal_True ); - rText += cpDelim; - } - } - } - - rText += SVX_RESSTR(RID_SVXITEMS_BORDER_DISTANCE); - if( nTopDist == nBottomDist && nTopDist == nLeftDist && - nTopDist == nRightDist ) - { - rText += GetMetricText( (long)nTopDist, eCoreUnit, - ePresUnit, pIntl ); - rText += SVX_RESSTR(GetMetricId(ePresUnit)); - } - else - { - (((rText += SVX_RESSTR(RID_SVXITEMS_BORDER_TOP)) - += GetMetricText( (long)nTopDist, eCoreUnit, - ePresUnit, pIntl )) - += SVX_RESSTR(GetMetricId(ePresUnit))) - += cpDelim; - (((rText += SVX_RESSTR(RID_SVXITEMS_BORDER_BOTTOM)) - += GetMetricText( (long)nBottomDist, eCoreUnit, - ePresUnit, pIntl )) - += SVX_RESSTR(GetMetricId(ePresUnit))) - += cpDelim; - (((rText += SVX_RESSTR(RID_SVXITEMS_BORDER_LEFT)) - += GetMetricText( (long)nLeftDist, eCoreUnit, - ePresUnit, pIntl )) - += SVX_RESSTR(GetMetricId(ePresUnit))) - += cpDelim; - ((rText += SVX_RESSTR(RID_SVXITEMS_BORDER_RIGHT)) - += GetMetricText( (long)nRightDist, eCoreUnit, - ePresUnit, pIntl )) - += SVX_RESSTR(GetMetricId(ePresUnit)); - } - return SFX_ITEM_PRESENTATION_COMPLETE; - } - default: ;//prevent warning - } -#endif // !SVX_LIGHT - return SFX_ITEM_PRESENTATION_NONE; -} - -// ----------------------------------------------------------------------- - -SvStream& SvxBoxItem::Store( SvStream& rStrm , sal_uInt16 nItemVersion ) const -{ - rStrm << (sal_uInt16) GetDistance(); - const SvxBorderLine* pLine[ 4 ]; // top, left, right, bottom - pLine[ 0 ] = GetTop(); - pLine[ 1 ] = GetLeft(); - pLine[ 2 ] = GetRight(); - pLine[ 3 ] = GetBottom(); - - for( int i = 0; i < 4; i++ ) - { - const SvxBorderLine* l = pLine[ i ]; - if( l ) - { - rStrm << (sal_Int8) i - << l->GetColor() - << (sal_uInt16) l->GetOutWidth() - << (sal_uInt16) l->GetInWidth() - << (sal_uInt16) l->GetDistance(); - } - } - sal_Int8 cLine = 4; - if( nItemVersion >= BOX_4DISTS_VERSION && - !(nTopDist == nLeftDist && - nTopDist == nRightDist && - nTopDist == nBottomDist) ) - { - cLine |= 0x10; - } - - rStrm << cLine; - - if( nItemVersion >= BOX_4DISTS_VERSION && (cLine & 0x10) != 0 ) - { - rStrm << (sal_uInt16)nTopDist - << (sal_uInt16)nLeftDist - << (sal_uInt16)nRightDist - << (sal_uInt16)nBottomDist; - } - - return rStrm; -} - -// ----------------------------------------------------------------------- - -sal_uInt16 SvxBoxItem::GetVersion( sal_uInt16 nFFVer ) const -{ - DBG_ASSERT( SOFFICE_FILEFORMAT_31==nFFVer || - SOFFICE_FILEFORMAT_40==nFFVer || - SOFFICE_FILEFORMAT_50==nFFVer, - "SvxBoxItem: Gibt es ein neues Fileformat?" ); - return SOFFICE_FILEFORMAT_31==nFFVer || - SOFFICE_FILEFORMAT_40==nFFVer ? 0 : BOX_4DISTS_VERSION; -} - -// ----------------------------------------------------------------------- - -int SvxBoxItem::ScaleMetrics( long nMult, long nDiv ) -{ - if ( pTop ) pTop->ScaleMetrics( nMult, nDiv ); - if ( pBottom ) pBottom->ScaleMetrics( nMult, nDiv ); - if ( pLeft ) pLeft->ScaleMetrics( nMult, nDiv ); - if ( pRight ) pBottom->ScaleMetrics( nMult, nDiv ); - nTopDist = (sal_uInt16)Scale( nTopDist, nMult, nDiv ); - nBottomDist = (sal_uInt16)Scale( nBottomDist, nMult, nDiv ); - nLeftDist = (sal_uInt16)Scale( nLeftDist, nMult, nDiv ); - nRightDist = (sal_uInt16)Scale( nRightDist, nMult, nDiv ); - return 1; -} - -// ----------------------------------------------------------------------- - -int SvxBoxItem::HasMetrics() const -{ - return 1; -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxBoxItem::Create( SvStream& rStrm, sal_uInt16 nIVersion ) const -{ - sal_uInt16 nDistance; - rStrm >> nDistance; - SvxBoxItem* pAttr = new SvxBoxItem( Which() ); - - sal_uInt16 aLineMap[4] = { BOX_LINE_TOP, BOX_LINE_LEFT, - BOX_LINE_RIGHT, BOX_LINE_BOTTOM }; - - sal_Int8 cLine; - while( sal_True ) - { - rStrm >> cLine; - - if( cLine > 3 ) - break; - sal_uInt16 nOutline, nInline, _nDistance; - Color aColor; - rStrm >> aColor >> nOutline >> nInline >> _nDistance; - SvxBorderLine aBorder( &aColor, nOutline, nInline, _nDistance ); - - pAttr->SetLine( &aBorder, aLineMap[cLine] ); - } - - if( nIVersion >= BOX_4DISTS_VERSION && (cLine&0x10) != 0 ) - { - for( sal_uInt16 i=0; i < 4; i++ ) - { - sal_uInt16 nDist; - rStrm >> nDist; - pAttr->SetDistance( nDist, aLineMap[i] ); - } - } - else - { - pAttr->SetDistance( nDistance ); - } - - return pAttr; -} - -// ----------------------------------------------------------------------- - -const SvxBorderLine *SvxBoxItem::GetLine( sal_uInt16 nLine ) const -{ - const SvxBorderLine *pRet = 0; - - switch ( nLine ) - { - case BOX_LINE_TOP: - pRet = pTop; - break; - case BOX_LINE_BOTTOM: - pRet = pBottom; - break; - case BOX_LINE_LEFT: - pRet = pLeft; - break; - case BOX_LINE_RIGHT: - pRet = pRight; - break; - default: - DBG_ERROR( "wrong line" ); - break; - } - - return pRet; -} - -// ----------------------------------------------------------------------- - -void SvxBoxItem::SetLine( const SvxBorderLine* pNew, sal_uInt16 nLine ) -{ - SvxBorderLine* pTmp = pNew ? new SvxBorderLine( *pNew ) : 0; - - switch ( nLine ) - { - case BOX_LINE_TOP: - delete pTop; - pTop = pTmp; - break; - case BOX_LINE_BOTTOM: - delete pBottom; - pBottom = pTmp; - break; - case BOX_LINE_LEFT: - delete pLeft; - pLeft = pTmp; - break; - case BOX_LINE_RIGHT: - delete pRight; - pRight = pTmp; - break; - default: - DBG_ERROR( "wrong line" ); - } -} - -// ----------------------------------------------------------------------- - -sal_uInt16 SvxBoxItem::GetDistance() const -{ - // The smallest distance that is not 0 will be returned. - sal_uInt16 nDist = nTopDist; - if( nBottomDist && (!nDist || nBottomDist < nDist) ) - nDist = nBottomDist; - if( nLeftDist && (!nDist || nLeftDist < nDist) ) - nDist = nLeftDist; - if( nRightDist && (!nDist || nRightDist < nDist) ) - nDist = nRightDist; - - return nDist; -} - -// ----------------------------------------------------------------------- - -sal_uInt16 SvxBoxItem::GetDistance( sal_uInt16 nLine ) const -{ - sal_uInt16 nDist = 0; - switch ( nLine ) - { - case BOX_LINE_TOP: - nDist = nTopDist; - break; - case BOX_LINE_BOTTOM: - nDist = nBottomDist; - break; - case BOX_LINE_LEFT: - nDist = nLeftDist; - break; - case BOX_LINE_RIGHT: - nDist = nRightDist; - break; - default: - DBG_ERROR( "wrong line" ); - } - - return nDist; -} - -// ----------------------------------------------------------------------- - -void SvxBoxItem::SetDistance( sal_uInt16 nNew, sal_uInt16 nLine ) -{ - switch ( nLine ) - { - case BOX_LINE_TOP: - nTopDist = nNew; - break; - case BOX_LINE_BOTTOM: - nBottomDist = nNew; - break; - case BOX_LINE_LEFT: - nLeftDist = nNew; - break; - case BOX_LINE_RIGHT: - nRightDist = nNew; - break; - default: - DBG_ERROR( "wrong line" ); - } -} - -// ----------------------------------------------------------------------- - -sal_uInt16 SvxBoxItem::CalcLineSpace( sal_uInt16 nLine, sal_Bool bIgnoreLine ) const -{ - SvxBorderLine* pTmp = 0; - sal_uInt16 nDist = 0; - switch ( nLine ) - { - case BOX_LINE_TOP: - pTmp = pTop; - nDist = nTopDist; - break; - case BOX_LINE_BOTTOM: - pTmp = pBottom; - nDist = nBottomDist; - break; - case BOX_LINE_LEFT: - pTmp = pLeft; - nDist = nLeftDist; - break; - case BOX_LINE_RIGHT: - pTmp = pRight; - nDist = nRightDist; - break; - default: - DBG_ERROR( "wrong line" ); - } - - if( pTmp ) - { - nDist = nDist + (sal_uInt16)(pTmp->GetOutWidth()) + (sal_uInt16)(pTmp->GetInWidth()) + (sal_uInt16)(pTmp->GetDistance()); - } - else if( !bIgnoreLine ) - nDist = 0; - return nDist; -} - -// class SvxBoxInfoItem -------------------------------------------------- - -SvxBoxInfoItem::SvxBoxInfoItem( const sal_uInt16 nId ) : - SfxPoolItem( nId ), - pHori ( 0 ), - pVert ( 0 ), - mbEnableHor( false ), - mbEnableVer( false ), - nDefDist( 0 ) -{ - bDist = bMinDist = sal_False; - ResetFlags(); -} - -// ----------------------------------------------------------------------- - -SvxBoxInfoItem::SvxBoxInfoItem( const SvxBoxInfoItem& rCpy ) : - SfxPoolItem( rCpy ), - mbEnableHor( rCpy.mbEnableHor ), - mbEnableVer( rCpy.mbEnableVer ) -{ - pHori = rCpy.GetHori() ? new SvxBorderLine( *rCpy.GetHori() ) : 0; - pVert = rCpy.GetVert() ? new SvxBorderLine( *rCpy.GetVert() ) : 0; - bDist = rCpy.IsDist(); - bMinDist = rCpy.IsMinDist(); - nValidFlags = rCpy.nValidFlags; - nDefDist = rCpy.GetDefDist(); -} - -// ----------------------------------------------------------------------- - -SvxBoxInfoItem::~SvxBoxInfoItem() -{ - delete pHori; - delete pVert; -} - -// ----------------------------------------------------------------------- - -SvxBoxInfoItem &SvxBoxInfoItem::operator=( const SvxBoxInfoItem& rCpy ) -{ - delete pHori; - delete pVert; - pHori = rCpy.GetHori() ? new SvxBorderLine( *rCpy.GetHori() ) : 0; - pVert = rCpy.GetVert() ? new SvxBorderLine( *rCpy.GetVert() ) : 0; - mbEnableHor = rCpy.mbEnableHor; - mbEnableVer = rCpy.mbEnableVer; - bDist = rCpy.IsDist(); - bMinDist = rCpy.IsMinDist(); - nValidFlags = rCpy.nValidFlags; - nDefDist = rCpy.GetDefDist(); - return *this; -} - -// ----------------------------------------------------------------------- - -int SvxBoxInfoItem::operator==( const SfxPoolItem& rAttr ) const -{ - SvxBoxInfoItem& rBoxInfo = (SvxBoxInfoItem&)rAttr; - - DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" ); - - return ( mbEnableHor == rBoxInfo.mbEnableHor - && mbEnableVer == rBoxInfo.mbEnableVer - && bDist == rBoxInfo.IsDist() - && bMinDist == rBoxInfo.IsMinDist() - && nValidFlags == rBoxInfo.nValidFlags - && nDefDist == rBoxInfo.GetDefDist() - && CmpBrdLn( pHori, rBoxInfo.GetHori() ) - && CmpBrdLn( pVert, rBoxInfo.GetVert() ) - ); -} - -// ----------------------------------------------------------------------- - -void SvxBoxInfoItem::SetLine( const SvxBorderLine* pNew, sal_uInt16 nLine ) -{ - SvxBorderLine* pTmp = pNew ? new SvxBorderLine( *pNew ) : 0; - - if ( BOXINFO_LINE_HORI == nLine ) - { - delete pHori; - pHori = pTmp; - } - else if ( BOXINFO_LINE_VERT == nLine ) - { - delete pVert; - pVert = pTmp; - } - else - { - DBG_ERROR( "wrong line" ); - } -} - - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxBoxInfoItem::Clone( SfxItemPool* ) const -{ - return new SvxBoxInfoItem( *this ); -} - -//------------------------------------------------------------------------ - -SfxItemPresentation SvxBoxInfoItem::GetPresentation -( - SfxItemPresentation /*ePres*/, - SfxMapUnit /*eCoreUnit*/, - SfxMapUnit /*ePresUnit*/, - XubString& rText, const IntlWrapper * -) const -{ -#ifndef SVX_LIGHT -/*!!! - ResMgr* pMgr = DIALOG_MGR(); - if ( pHori ) - { - rText += pHori->GetValueString(); - rText += cpDelim; - } - if ( pVert ) - { - rText += pVert->GetValueString(); - rText += cpDelim; - } - if ( bTable ) - rText += String( ResId( RID_SVXITEMS_BOXINF_TABLE_TRUE, pMgr ) ); - else - rText += String( ResId( RID_SVXITEMS_BOXINF_TABLE_FALSE, pMgr ) ); - rText += cpDelim; - if ( bDist ) - rText += String( ResId( RID_SVXITEMS_BOXINF_DIST_TRUE, pMgr ) ); - else - rText += String( ResId( RID_SVXITEMS_BOXINF_DIST_FALSE, pMgr ) ); - rText += cpDelim; - if ( bMinDist ) - rText += String( ResId( RID_SVXITEMS_BOXINF_MDIST_TRUE, pMgr ) ); - else - rText += String( ResId( RID_SVXITEMS_BOXINF_MDIST_FALSE, pMgr ) ); - rText += cpDelim; - rText += nDefDist; - return SFX_ITEM_PRESENTATION_NAMELESS; -*/ - rText.Erase(); -#endif // !SVX_LIGHT - return SFX_ITEM_PRESENTATION_NONE; -} - -// ----------------------------------------------------------------------- - -SvStream& SvxBoxInfoItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const -{ - sal_Int8 cFlags = 0; - - if ( IsTable() ) - cFlags |= 0x01; - if ( IsDist() ) - cFlags |= 0x02; - if ( IsMinDist() ) - cFlags |= 0x04; - rStrm << (sal_Int8) cFlags - << (sal_uInt16) GetDefDist(); - const SvxBorderLine* pLine[ 2 ]; - pLine[ 0 ] = GetHori(); - pLine[ 1 ] = GetVert(); - - for( int i = 0; i < 2; i++ ) - { - const SvxBorderLine* l = pLine[ i ]; - if( l ) - { - rStrm << (char) i - << l->GetColor() - << (short) l->GetOutWidth() - << (short) l->GetInWidth() - << (short) l->GetDistance(); - } - } - rStrm << (char) 2; - return rStrm; -} - -// ----------------------------------------------------------------------- - -int SvxBoxInfoItem::ScaleMetrics( long nMult, long nDiv ) -{ - if ( pHori ) pHori->ScaleMetrics( nMult, nDiv ); - if ( pVert ) pVert->ScaleMetrics( nMult, nDiv ); - nDefDist = (sal_uInt16)Scale( nDefDist, nMult, nDiv ); - return 1; -} - -// ----------------------------------------------------------------------- - -int SvxBoxInfoItem::HasMetrics() const -{ - return 1; -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxBoxInfoItem::Create( SvStream& rStrm, sal_uInt16 ) const -{ - sal_Int8 cFlags; - sal_uInt16 _nDefDist; - rStrm >> cFlags >> _nDefDist; - - SvxBoxInfoItem* pAttr = new SvxBoxInfoItem( Which() ); - - pAttr->SetTable ( ( cFlags & 0x01 ) != 0 ); - pAttr->SetDist ( ( cFlags & 0x02 ) != 0 ); - pAttr->SetMinDist( ( cFlags & 0x04 ) != 0 ); - pAttr->SetDefDist( _nDefDist ); - - while( sal_True ) - { - sal_Int8 cLine; - rStrm >> cLine; - - if( cLine > 1 ) - break; - short nOutline, nInline, nDistance; - Color aColor; - rStrm >> aColor >> nOutline >> nInline >> nDistance; - SvxBorderLine aBorder( &aColor, nOutline, nInline, nDistance ); - - switch( cLine ) - { - case 0: pAttr->SetLine( &aBorder, BOXINFO_LINE_HORI ); break; - case 1: pAttr->SetLine( &aBorder, BOXINFO_LINE_VERT ); break; - } - } - return pAttr; -} - -// ----------------------------------------------------------------------- - -void SvxBoxInfoItem::ResetFlags() -{ - nValidFlags = 0x7F; // alles g"ultig au/ser Disable -} - -sal_Bool SvxBoxInfoItem::QueryValue( uno::Any& rVal, BYTE nMemberId ) const -{ - sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); - table::BorderLine aRetLine; - sal_Int16 nVal=0; - sal_Bool bIntMember = sal_False; - nMemberId &= ~CONVERT_TWIPS; - sal_Bool bSerialize = sal_False; - switch(nMemberId) - { - case 0: - { - // 2 BorderLines, flags, valid flags and distance - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > aSeq( 5 ); - aSeq[0] = ::com::sun::star::uno::makeAny( lcl_SvxLineToLine( pHori, bConvert) ); - aSeq[1] = ::com::sun::star::uno::makeAny( lcl_SvxLineToLine( pVert, bConvert) ); - if ( IsTable() ) - nVal |= 0x01; - if ( IsDist() ) - nVal |= 0x02; - if ( IsMinDist() ) - nVal |= 0x04; - aSeq[2] = ::com::sun::star::uno::makeAny( nVal ); - nVal = nValidFlags; - aSeq[3] = ::com::sun::star::uno::makeAny( nVal ); - aSeq[4] = ::com::sun::star::uno::makeAny( (sal_Int32)(bConvert ? TWIP_TO_MM100_UNSIGNED(GetDefDist()) : GetDefDist()) ); - rVal = ::com::sun::star::uno::makeAny( aSeq ); - return sal_True; - } - - case MID_HORIZONTAL: - bSerialize = sal_True; - aRetLine = lcl_SvxLineToLine( pHori, bConvert); - break; - case MID_VERTICAL: - bSerialize = sal_True; - aRetLine = lcl_SvxLineToLine( pVert, bConvert); - break; - case MID_FLAGS: - bIntMember = sal_True; - if ( IsTable() ) - nVal |= 0x01; - if ( IsDist() ) - nVal |= 0x02; - if ( IsMinDist() ) - nVal |= 0x04; - rVal <<= nVal; - break; - case MID_VALIDFLAGS: - bIntMember = sal_True; - nVal = nValidFlags; - rVal <<= nVal; - break; - case MID_DISTANCE: - bIntMember = sal_True; - rVal <<= (sal_Int32)(bConvert ? TWIP_TO_MM100_UNSIGNED(GetDefDist()) : GetDefDist()); - break; - default: DBG_ERROR("Wrong MemberId!"); return sal_False; - } - - if( !bIntMember ) - { -/* - if ( bSerialize ) - { - ::com::sun::star::uno::Sequence < ::com::sun::star::uno::Any > aSeq(4); - aSeq[0] <<= aRetLine.Color; - aSeq[1] <<= aRetLine.InnerLineWidth; - aSeq[2] <<= aRetLine.OuterLineWidth; - aSeq[3] <<= aRetLine.LineDistance; - rVal <<= aSeq; - } - else - */ - rVal <<= aRetLine; - } - - return sal_True; -} - -// ----------------------------------------------------------------------- - -sal_Bool SvxBoxInfoItem::PutValue( const uno::Any& rVal, BYTE nMemberId ) -{ - sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); -// sal_uInt16 nLine = BOX_LINE_TOP; -// sal_Bool bDistMember = sal_False; - nMemberId &= ~CONVERT_TWIPS; - sal_Bool bRet; - switch(nMemberId) - { - case 0: - { - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > aSeq; - if (( rVal >>= aSeq ) && ( aSeq.getLength() == 5 )) - { - // 2 BorderLines, flags, valid flags and distance - table::BorderLine aBorderLine; - SvxBorderLine aLine; - sal_Int16 nFlags( 0 ); - sal_Int32 nVal( 0 ); - if ( aSeq[0] >>= aBorderLine ) - { - sal_Bool bSet = lcl_LineToSvxLine(aBorderLine, aLine, bConvert); - if ( bSet ) - SetLine( &aLine, BOXINFO_LINE_HORI ); - } - else - return sal_False; - if ( aSeq[1] >>= aBorderLine ) - { - sal_Bool bSet = lcl_LineToSvxLine(aBorderLine, aLine, bConvert); - if ( bSet ) - SetLine( &aLine, BOXINFO_LINE_VERT ); - } - else - return sal_False; - if ( aSeq[2] >>= nFlags ) - { - SetTable ( ( nFlags & 0x01 ) != 0 ); - SetDist ( ( nFlags & 0x02 ) != 0 ); - SetMinDist( ( nFlags & 0x04 ) != 0 ); - } - else - return sal_False; - if ( aSeq[3] >>= nFlags ) - nValidFlags = (BYTE)nFlags; - else - return sal_False; - if (( aSeq[4] >>= nVal ) && ( nVal >= 0 )) - { - if( bConvert ) - nVal = MM100_TO_TWIP(nVal); - SetDefDist( (USHORT)nVal ); - } - } - return sal_True; - } - - case MID_HORIZONTAL: - case MID_VERTICAL: - { - if( !rVal.hasValue() ) - return sal_False; - - table::BorderLine aBorderLine; - if( rVal >>= aBorderLine ) - { - // usual struct - } - else if (rVal.getValueTypeClass() == uno::TypeClass_SEQUENCE ) - { - // serialization for basic macro recording - uno::Reference < script::XTypeConverter > xConverter - ( ::comphelper::getProcessServiceFactory()->createInstance(::rtl::OUString::createFromAscii("com.sun.star.script.Converter")), - uno::UNO_QUERY ); - uno::Any aNew; - uno::Sequence < uno::Any > aSeq; - try { aNew = xConverter->convertTo( rVal, ::getCppuType((const uno::Sequence < uno::Any >*)0) ); } - catch (uno::Exception&) {} - - if( (aNew >>= aSeq) && aSeq.getLength() == 4 ) - { - sal_Int32 nVal = 0; - if ( aSeq[0] >>= nVal ) - aBorderLine.Color = nVal; - if ( aSeq[1] >>= nVal ) - aBorderLine.InnerLineWidth = (sal_Int16) nVal; - if ( aSeq[2] >>= nVal ) - aBorderLine.OuterLineWidth = (sal_Int16) nVal; - if ( aSeq[3] >>= nVal ) - aBorderLine.LineDistance = (sal_Int16) nVal; - } - else - return sal_False; - } - else if (rVal.getValueType() == ::getCppuType((const ::com::sun::star::uno::Sequence < sal_Int16 >*)0) ) - { - // serialization for basic macro recording - ::com::sun::star::uno::Sequence < sal_Int16 > aSeq; - rVal >>= aSeq; - if ( aSeq.getLength() == 4 ) - { - aBorderLine.Color = aSeq[0]; - aBorderLine.InnerLineWidth = aSeq[1]; - aBorderLine.OuterLineWidth = aSeq[2]; - aBorderLine.LineDistance = aSeq[3]; - } - else - return sal_False; - } - else - return sal_False; - - SvxBorderLine aLine; - sal_Bool bSet = lcl_LineToSvxLine(aBorderLine, aLine, bConvert); - if ( bSet ) - SetLine( &aLine, nMemberId == MID_HORIZONTAL ? BOXINFO_LINE_HORI : BOXINFO_LINE_VERT ); - break; - } - case MID_FLAGS: - { - sal_Int16 nFlags = sal_Int16(); - bRet = (rVal >>= nFlags); - if ( bRet ) - { - SetTable ( ( nFlags & 0x01 ) != 0 ); - SetDist ( ( nFlags & 0x02 ) != 0 ); - SetMinDist( ( nFlags & 0x04 ) != 0 ); - } - - break; - } - case MID_VALIDFLAGS: - { - sal_Int16 nFlags = sal_Int16(); - bRet = (rVal >>= nFlags); - if ( bRet ) - nValidFlags = (BYTE)nFlags; - break; - } - case MID_DISTANCE: - { - sal_Int32 nVal = 0; - bRet = (rVal >>= nVal); - if ( bRet && nVal>=0 ) - { - if( bConvert ) - nVal = MM100_TO_TWIP(nVal); - SetDefDist( (USHORT)nVal ); - } - break; - } - default: DBG_ERROR("Wrong MemberId!"); return sal_False; - } - - return sal_True; -} - -// class SvxFmtBreakItem ------------------------------------------------- - -int SvxFmtBreakItem::operator==( const SfxPoolItem& rAttr ) const -{ - DBG_ASSERT( SfxPoolItem::operator==( rAttr ), "unequal types" ); - - return GetValue() == ( (SvxFmtBreakItem&)rAttr ).GetValue(); -} - -//------------------------------------------------------------------------ - -SfxItemPresentation SvxFmtBreakItem::GetPresentation -( - SfxItemPresentation ePres, - SfxMapUnit /*eCoreUnit*/, - SfxMapUnit /*ePresUnit*/, - XubString& rText, const IntlWrapper * -) const -{ -#ifndef SVX_LIGHT - switch ( ePres ) - { - case SFX_ITEM_PRESENTATION_NONE: - rText.Erase(); - return SFX_ITEM_PRESENTATION_NONE; - - case SFX_ITEM_PRESENTATION_NAMELESS: - case SFX_ITEM_PRESENTATION_COMPLETE: - rText = GetValueTextByPos( GetValue() ); - return ePres; - default: ;//prevent warning - } -#endif // !SVX_LIGHT - return SFX_ITEM_PRESENTATION_NONE; -} - -// ----------------------------------------------------------------------- - -XubString SvxFmtBreakItem::GetValueTextByPos( sal_uInt16 nPos ) const -{ - DBG_ASSERT( nPos < SVX_BREAK_END, "enum overflow!" ); - XubString aStr( SVX_RES( RID_SVXITEMS_BREAK_BEGIN + nPos ) ); - return aStr; -} - -// ----------------------------------------------------------------------- -sal_Bool SvxFmtBreakItem::QueryValue( uno::Any& rVal, BYTE /*nMemberId*/ ) const -{ - style::BreakType eBreak = style::BreakType_NONE; - switch ( (SvxBreak)GetValue() ) - { - case SVX_BREAK_COLUMN_BEFORE: eBreak = style::BreakType_COLUMN_BEFORE; break; - case SVX_BREAK_COLUMN_AFTER: eBreak = style::BreakType_COLUMN_AFTER ; break; - case SVX_BREAK_COLUMN_BOTH: eBreak = style::BreakType_COLUMN_BOTH ; break; - case SVX_BREAK_PAGE_BEFORE: eBreak = style::BreakType_PAGE_BEFORE ; break; - case SVX_BREAK_PAGE_AFTER: eBreak = style::BreakType_PAGE_AFTER ; break; - case SVX_BREAK_PAGE_BOTH: eBreak = style::BreakType_PAGE_BOTH ; break; - default: ;//prevent warning - } - rVal <<= eBreak; - return sal_True; -} -// ----------------------------------------------------------------------- -sal_Bool SvxFmtBreakItem::PutValue( const uno::Any& rVal, BYTE /*nMemberId*/ ) -{ - style::BreakType nBreak; - - if(!(rVal >>= nBreak)) - { - sal_Int32 nValue = 0; - if(!(rVal >>= nValue)) - return sal_False; - - nBreak = (style::BreakType) nValue; - } - - SvxBreak eBreak = SVX_BREAK_NONE; - switch( nBreak ) - { - case style::BreakType_COLUMN_BEFORE: eBreak = SVX_BREAK_COLUMN_BEFORE; break; - case style::BreakType_COLUMN_AFTER: eBreak = SVX_BREAK_COLUMN_AFTER; break; - case style::BreakType_COLUMN_BOTH: eBreak = SVX_BREAK_COLUMN_BOTH; break; - case style::BreakType_PAGE_BEFORE: eBreak = SVX_BREAK_PAGE_BEFORE; break; - case style::BreakType_PAGE_AFTER: eBreak = SVX_BREAK_PAGE_AFTER; break; - case style::BreakType_PAGE_BOTH: eBreak = SVX_BREAK_PAGE_BOTH; break; - default: ;//prevent warning - } - SetValue((sal_uInt16) eBreak); - - return sal_True; -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxFmtBreakItem::Clone( SfxItemPool* ) const -{ - return new SvxFmtBreakItem( *this ); -} - -// ----------------------------------------------------------------------- - -SvStream& SvxFmtBreakItem::Store( SvStream& rStrm , sal_uInt16 nItemVersion ) const -{ - rStrm << (sal_Int8)GetValue(); - if( FMTBREAK_NOAUTO > nItemVersion ) - rStrm << (sal_Int8)0x01; - return rStrm; -} - -// ----------------------------------------------------------------------- - -sal_uInt16 SvxFmtBreakItem::GetVersion( sal_uInt16 nFFVer ) const -{ - DBG_ASSERT( SOFFICE_FILEFORMAT_31==nFFVer || - SOFFICE_FILEFORMAT_40==nFFVer || - SOFFICE_FILEFORMAT_50==nFFVer, - "SvxFmtBreakItem: Gibt es ein neues Fileformat?" ); - return SOFFICE_FILEFORMAT_31==nFFVer || - SOFFICE_FILEFORMAT_40==nFFVer ? 0 : FMTBREAK_NOAUTO; -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxFmtBreakItem::Create( SvStream& rStrm, sal_uInt16 nVersion ) const -{ - sal_Int8 eBreak, bDummy; - rStrm >> eBreak; - if( FMTBREAK_NOAUTO > nVersion ) - rStrm >> bDummy; - return new SvxFmtBreakItem( (const SvxBreak)eBreak, Which() ); -} - -// ----------------------------------------------------------------------- - -sal_uInt16 SvxFmtBreakItem::GetValueCount() const -{ - return SVX_BREAK_END; // SVX_BREAK_PAGE_BOTH + 1 -} - -// class SvxFmtKeepItem ------------------------------------------------- - -SfxPoolItem* SvxFmtKeepItem::Clone( SfxItemPool* ) const -{ - return new SvxFmtKeepItem( *this ); -} - -// ----------------------------------------------------------------------- - -SvStream& SvxFmtKeepItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const -{ - rStrm << (sal_Int8)GetValue(); - return rStrm; -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxFmtKeepItem::Create( SvStream& rStrm, sal_uInt16 ) const -{ - sal_Int8 bIsKeep; - rStrm >> bIsKeep; - return new SvxFmtKeepItem( sal_Bool( bIsKeep != 0 ), Which() ); -} - -//------------------------------------------------------------------------ - -SfxItemPresentation SvxFmtKeepItem::GetPresentation -( - SfxItemPresentation ePres, - SfxMapUnit /*eCoreUnit*/, - SfxMapUnit /*ePresUnit*/, - XubString& rText, const IntlWrapper * - ) const -{ -#ifndef SVX_LIGHT - switch ( ePres ) - { - case SFX_ITEM_PRESENTATION_NONE: - rText.Erase(); - return ePres; - - case SFX_ITEM_PRESENTATION_NAMELESS: - case SFX_ITEM_PRESENTATION_COMPLETE: - { - sal_uInt16 nId = RID_SVXITEMS_FMTKEEP_FALSE; - - if ( GetValue() ) - nId = RID_SVXITEMS_FMTKEEP_TRUE; - rText = SVX_RESSTR(nId); - return ePres; - } - default: ;//prevent warning - } -#endif - return SFX_ITEM_PRESENTATION_NONE; -} - -// class SvxLineItem ------------------------------------------------------ - -SvxLineItem::SvxLineItem( const sal_uInt16 nId ) : - - SfxPoolItem ( nId ), - - pLine( NULL ) -{ -} - -// ----------------------------------------------------------------------- - -SvxLineItem::SvxLineItem( const SvxLineItem& rCpy ) : - - SfxPoolItem ( rCpy ) -{ - pLine = rCpy.GetLine() ? new SvxBorderLine( *rCpy.GetLine() ) : 0; -} - - -// ----------------------------------------------------------------------- - -SvxLineItem::~SvxLineItem() -{ - delete pLine; -} - -// ----------------------------------------------------------------------- - -SvxLineItem& SvxLineItem::operator=( const SvxLineItem& rLine ) -{ - SetLine( rLine.GetLine() ); - - return *this; -} - -// ----------------------------------------------------------------------- - -int SvxLineItem::operator==( const SfxPoolItem& rAttr ) const -{ - DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" ); - - return CmpBrdLn( pLine, ((SvxLineItem&)rAttr).GetLine() ); -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxLineItem::Clone( SfxItemPool* ) const -{ - return new SvxLineItem( *this ); -} - -sal_Bool SvxLineItem::QueryValue( uno::Any& rVal, BYTE nMemId ) const -{ - sal_Bool bConvert = 0!=(nMemId&CONVERT_TWIPS); - nMemId &= ~CONVERT_TWIPS; - if ( nMemId == 0 ) - { - rVal <<= uno::makeAny( lcl_SvxLineToLine(pLine, bConvert) ); - return sal_True; - } - else if ( pLine ) - { - switch ( nMemId ) - { - case MID_FG_COLOR: rVal <<= sal_Int32(pLine->GetColor().GetColor()); break; - case MID_OUTER_WIDTH: rVal <<= sal_Int32(pLine->GetOutWidth()); break; - case MID_INNER_WIDTH: rVal <<= sal_Int32(pLine->GetInWidth( )); break; - case MID_DISTANCE: rVal <<= sal_Int32(pLine->GetDistance()); break; - default: - DBG_ERROR( "Wrong MemberId" ); - return sal_False; - } - } - - return TRUE; -} - -// ----------------------------------------------------------------------- - -sal_Bool SvxLineItem::PutValue( const uno::Any& rVal, BYTE nMemId ) -{ - sal_Bool bConvert = 0!=(nMemId&CONVERT_TWIPS); - nMemId &= ~CONVERT_TWIPS; - sal_Int32 nVal = 0; - if ( nMemId == 0 ) - { - table::BorderLine aLine; - if ( rVal >>= aLine ) - { - if ( !pLine ) - pLine = new SvxBorderLine; - if( !lcl_LineToSvxLine(aLine, *pLine, bConvert) ) - DELETEZ( pLine ); - return sal_True; - } - return sal_False; - } - else if ( rVal >>= nVal ) - { - if ( !pLine ) - pLine = new SvxBorderLine; - - switch ( nMemId ) - { - case MID_FG_COLOR: pLine->SetColor( Color(nVal) ); break; - case MID_OUTER_WIDTH: pLine->SetOutWidth((USHORT)nVal); break; - case MID_INNER_WIDTH: pLine->SetInWidth((USHORT)nVal); break; - case MID_DISTANCE: pLine->SetDistance((USHORT)nVal); break; - default: - DBG_ERROR( "Wrong MemberId" ); - return sal_False; - } - - return sal_True; - } - - return sal_False; -} - -//------------------------------------------------------------------------ - -SfxItemPresentation SvxLineItem::GetPresentation -( - SfxItemPresentation ePres, - SfxMapUnit eCoreUnit, - SfxMapUnit ePresUnit, - XubString& rText, const IntlWrapper *pIntl -) const -{ -#ifndef SVX_LIGHT - rText.Erase(); - - switch ( ePres ) - { - case SFX_ITEM_PRESENTATION_NONE: - return SFX_ITEM_PRESENTATION_NONE; - case SFX_ITEM_PRESENTATION_NAMELESS: - case SFX_ITEM_PRESENTATION_COMPLETE: - { - if ( pLine ) - rText = pLine->GetValueString( eCoreUnit, ePresUnit, pIntl, - (SFX_ITEM_PRESENTATION_COMPLETE == ePres) ); - return ePres; - } - default: ;//prevent warning - } -#endif - return SFX_ITEM_PRESENTATION_NONE; -} - -// ----------------------------------------------------------------------- - -SvStream& SvxLineItem::Store( SvStream& rStrm , sal_uInt16 /*nItemVersion*/ ) const -{ - if( pLine ) - { - rStrm << pLine->GetColor() - << (short)pLine->GetOutWidth() - << (short)pLine->GetInWidth() - << (short)pLine->GetDistance(); - } - else - rStrm << Color() << (short)0 << (short)0 << (short)0; - return rStrm; -} - -// ----------------------------------------------------------------------- - -int SvxLineItem::ScaleMetrics( long nMult, long nDiv ) -{ - if ( pLine ) pLine->ScaleMetrics( nMult, nDiv ); - return 1; -} - -// ----------------------------------------------------------------------- - -int SvxLineItem::HasMetrics() const -{ - return 1; -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxLineItem::Create( SvStream& rStrm, sal_uInt16 ) const -{ - SvxLineItem* _pLine = new SvxLineItem( Which() ); - short nOutline, nInline, nDistance; - Color aColor; - - rStrm >> aColor >> nOutline >> nInline >> nDistance; - if( nOutline ) - { - SvxBorderLine aLine( &aColor, nOutline, nInline, nDistance ); - _pLine->SetLine( &aLine ); - } - return _pLine; -} - -// ----------------------------------------------------------------------- - -void SvxLineItem::SetLine( const SvxBorderLine* pNew ) -{ - delete pLine; - pLine = pNew ? new SvxBorderLine( *pNew ) : 0; -} - -#ifdef _MSC_VER -#pragma optimize ( "", off ) -#endif - -// class SvxBrushItem ---------------------------------------------------- - -#define LOAD_GRAPHIC ((sal_uInt16)0x0001) -#define LOAD_LINK ((sal_uInt16)0x0002) -#define LOAD_FILTER ((sal_uInt16)0x0004) - -// class SvxBrushItem_Impl ----------------------------------------------- - -class SvxBrushItem_Impl -{ -public: - GraphicObject* pGraphicObject; - sal_Int8 nGraphicTransparency; //contains a percentage value which is - //copied to the GraphicObject when necessary -#ifndef SVX_LIGHT - SfxMediumRef xMedium; -#endif - Link aDoneLink; - - SvxBrushItem_Impl( GraphicObject* p ) : pGraphicObject( p ), nGraphicTransparency(0) {} -}; -/* -// class SvxBrushItemLink_Impl ------------------------------------------- - -class SvxBrushItemLink_Impl : public SfxBrushItemLink -{ - virtual Graphic GetGraphic( const String& rLink, const String& rFilter ); - virtual CreateSvxBrushTabPage GetBackgroundTabpageCreateFunc(); - virtual GetSvxBrushTabPageRanges GetBackgroundTabpageRanges(); -}; - -// ----------------------------------------------------------------------- - -Graphic SvxBrushItemLink_Impl::GetGraphic( const String& rLink, const String& rFilter) -{ - Graphic aResult; - SvxBrushItem aItem( rLink, rFilter, GPOS_TILED ); - const Graphic* pGraph = aItem.GetGraphic(); - if( pGraph ) - aResult = *pGraph; - return aResult; -} - -// ----------------------------------------------------------------------- - -CreateSvxBrushTabPage SvxBrushItemLink_Impl::GetBackgroundTabpageCreateFunc() -{ -#ifndef SVX_LIGHT - return (CreateSvxBrushTabPage)SvxBackgroundTabPage::Create; -#else - return CreateSvxBrushTabPage(); -#endif -} - -// ----------------------------------------------------------------------- - -GetSvxBrushTabPageRanges SvxBrushItemLink_Impl::GetBackgroundTabpageRanges() -{ -#ifndef SVX_LIGHT - return (GetSvxBrushTabPageRanges)SvxBackgroundTabPage::GetRanges; -#else - return GetSvxBrushTabPageRanges(); -#endif -} - -// ----------------------------------------------------------------------- - -void SvxBrushItem::InitSfxLink() -{ - SfxBrushItemLink::Set( new SvxBrushItemLink_Impl ); -} -*/ -// ----------------------------------------------------------------------- - -void SvxBrushItem::SetDoneLink( const Link& rLink ) -{ - pImpl->aDoneLink = rLink; -} - -// ----------------------------------------------------------------------- - -SvxBrushItem::SvxBrushItem( sal_uInt16 _nWhich ) : - - SfxPoolItem( _nWhich ), - - aColor ( COL_TRANSPARENT ), - pImpl ( new SvxBrushItem_Impl( 0 ) ), - pStrLink ( NULL ), - pStrFilter ( NULL ), - eGraphicPos ( GPOS_NONE ), - bLoadAgain ( sal_True ) - -{ -} - -// ----------------------------------------------------------------------- - -SvxBrushItem::SvxBrushItem( const Color& rColor, sal_uInt16 _nWhich) : - - SfxPoolItem( _nWhich ), - - aColor ( rColor ), - pImpl ( new SvxBrushItem_Impl( 0 ) ), - pStrLink ( NULL ), - pStrFilter ( NULL ), - eGraphicPos ( GPOS_NONE ), - bLoadAgain ( sal_True ) - -{ -} - -// ----------------------------------------------------------------------- - -SvxBrushItem::SvxBrushItem( const Graphic& rGraphic, SvxGraphicPosition ePos, - sal_uInt16 _nWhich ) : - - SfxPoolItem( _nWhich ), - - aColor ( COL_TRANSPARENT ), - pImpl ( new SvxBrushItem_Impl( new GraphicObject( rGraphic ) ) ), - pStrLink ( NULL ), - pStrFilter ( NULL ), - eGraphicPos ( ( GPOS_NONE != ePos ) ? ePos : GPOS_MM ), - bLoadAgain ( sal_True ) - -{ - DBG_ASSERT( GPOS_NONE != ePos, "SvxBrushItem-Ctor with GPOS_NONE == ePos" ); -} - -// ----------------------------------------------------------------------- - -SvxBrushItem::SvxBrushItem( const GraphicObject& rGraphicObj, - SvxGraphicPosition ePos, sal_uInt16 _nWhich ) : - - SfxPoolItem( _nWhich ), - - aColor ( COL_TRANSPARENT ), - pImpl ( new SvxBrushItem_Impl( new GraphicObject( rGraphicObj ) ) ), - pStrLink ( NULL ), - pStrFilter ( NULL ), - eGraphicPos ( ( GPOS_NONE != ePos ) ? ePos : GPOS_MM ), - bLoadAgain ( sal_True ) - -{ - DBG_ASSERT( GPOS_NONE != ePos, "SvxBrushItem-Ctor with GPOS_NONE == ePos" ); -} - -// ----------------------------------------------------------------------- - -SvxBrushItem::SvxBrushItem( - const String& rLink, const String& rFilter, - SvxGraphicPosition ePos, sal_uInt16 _nWhich ) : - - SfxPoolItem( _nWhich ), - - aColor ( COL_TRANSPARENT ), - pImpl ( new SvxBrushItem_Impl( NULL ) ), - pStrLink ( new String( rLink ) ), - pStrFilter ( new String( rFilter ) ), - eGraphicPos ( ( GPOS_NONE != ePos ) ? ePos : GPOS_MM ), - bLoadAgain ( sal_True ) - -{ - DBG_ASSERT( GPOS_NONE != ePos, "SvxBrushItem-Ctor with GPOS_NONE == ePos" ); -} - -// ----------------------------------------------------------------------- - -SvxBrushItem::SvxBrushItem( SvStream& rStream, sal_uInt16 nVersion, - sal_uInt16 _nWhich ) : - - SfxPoolItem( _nWhich ), - - aColor ( COL_TRANSPARENT ), - pImpl ( new SvxBrushItem_Impl( NULL ) ), - pStrLink ( NULL ), - pStrFilter ( NULL ), - eGraphicPos ( GPOS_NONE ) - -{ - sal_Bool bTrans; - Color aTempColor; - Color aTempFillColor; - sal_Int8 nStyle; - - rStream >> bTrans; - rStream >> aTempColor; - rStream >> aTempFillColor; - rStream >> nStyle; - - switch ( nStyle ) - { - case 8://BRUSH_25: - { - sal_uInt32 nRed = aTempColor.GetRed(); - sal_uInt32 nGreen = aTempColor.GetGreen(); - sal_uInt32 nBlue = aTempColor.GetBlue(); - nRed += (sal_uInt32)(aTempFillColor.GetRed())*2; - nGreen += (sal_uInt32)(aTempFillColor.GetGreen())*2; - nBlue += (sal_uInt32)(aTempFillColor.GetBlue())*2; - aColor = Color( (sal_Int8)(nRed/3), (sal_Int8)(nGreen/3), (sal_Int8)(nBlue/3) ); - } - break; - - case 9://BRUSH_50: - { - sal_uInt32 nRed = aTempColor.GetRed(); - sal_uInt32 nGreen = aTempColor.GetGreen(); - sal_uInt32 nBlue = aTempColor.GetBlue(); - nRed += (sal_uInt32)(aTempFillColor.GetRed()); - nGreen += (sal_uInt32)(aTempFillColor.GetGreen()); - nBlue += (sal_uInt32)(aTempFillColor.GetBlue()); - aColor = Color( (sal_Int8)(nRed/2), (sal_Int8)(nGreen/2), (sal_Int8)(nBlue/2) ); - } - break; - - case 10://BRUSH_75: - { - sal_uInt32 nRed = aTempColor.GetRed()*2; - sal_uInt32 nGreen = aTempColor.GetGreen()*2; - sal_uInt32 nBlue = aTempColor.GetBlue()*2; - nRed += (sal_uInt32)(aTempFillColor.GetRed()); - nGreen += (sal_uInt32)(aTempFillColor.GetGreen()); - nBlue += (sal_uInt32)(aTempFillColor.GetBlue()); - aColor = Color( (sal_Int8)(nRed/3), (sal_Int8)(nGreen/3), (sal_Int8)(nBlue/3) ); - } - break; - - case 0://BRUSH_NULL: - aColor = Color( COL_TRANSPARENT ); - break; - - default: - aColor = aTempColor; - } - - if ( nVersion >= BRUSH_GRAPHIC_VERSION ) - { - sal_uInt16 nDoLoad = 0; - sal_Int8 nPos; - - rStream >> nDoLoad; - - if ( nDoLoad & LOAD_GRAPHIC ) - { - Graphic aGraphic; - - rStream >> aGraphic; - pImpl->pGraphicObject = new GraphicObject( aGraphic ); - - if( SVSTREAM_FILEFORMAT_ERROR == rStream.GetError() ) - { - rStream.ResetError(); - rStream.SetError( ERRCODE_SVX_GRAPHIC_WRONG_FILEFORMAT| - ERRCODE_WARNING_MASK ); - } - } - - if ( nDoLoad & LOAD_LINK ) - { - String aRel; - // UNICODE: rStream >> aRel; - rStream.ReadByteString(aRel); - - // TODO/MBA: how can we get a BaseURL here?! - DBG_ERROR("No BaseURL!"); - String aAbs = INetURLObject::GetAbsURL( String(), aRel ); - DBG_ASSERT( aAbs.Len(), "Invalid URL!" ); - pStrLink = new String( aAbs ); - } - - if ( nDoLoad & LOAD_FILTER ) - { - pStrFilter = new String; - // UNICODE: rStream >> *pStrFilter; - rStream.ReadByteString(*pStrFilter); - } - - rStream >> nPos; - - eGraphicPos = (SvxGraphicPosition)nPos; - } -} - -// ----------------------------------------------------------------------- - -SvxBrushItem::SvxBrushItem( const SvxBrushItem& rItem ) : - - SfxPoolItem( rItem.Which() ), - - pImpl ( new SvxBrushItem_Impl( NULL ) ), - pStrLink ( NULL ), - pStrFilter ( NULL ), - eGraphicPos ( GPOS_NONE ), - bLoadAgain ( sal_True ) - -{ - *this = rItem; -} - -// ----------------------------------------------------------------------- - -SvxBrushItem::~SvxBrushItem() -{ -#ifndef SVX_LIGHT - if( pImpl->xMedium.Is() ) - pImpl->xMedium->SetDoneLink( Link() ); -#endif - delete pImpl->pGraphicObject; - delete pImpl; - delete pStrLink; - delete pStrFilter; -} - -// ----------------------------------------------------------------------- - -sal_uInt16 SvxBrushItem::GetVersion( sal_uInt16 /*nFileVersion*/ ) const -{ - return BRUSH_GRAPHIC_VERSION; -} - -// ----------------------------------------------------------------------- -inline sal_Int8 lcl_PercentToTransparency(long nPercent) -{ - //0xff must not be returned! - return sal_Int8(nPercent ? (50 + 0xfe * nPercent) / 100 : 0); -} -inline sal_Int8 lcl_TransparencyToPercent(sal_Int32 nTrans) -{ - return (sal_Int8)((nTrans * 100 + 127) / 254); -} - -sal_Bool SvxBrushItem::QueryValue( uno::Any& rVal, BYTE nMemberId ) const -{ -// sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); - nMemberId &= ~CONVERT_TWIPS; - switch( nMemberId) - { - case MID_BACK_COLOR: - rVal <<= (sal_Int32)( aColor.GetColor() ); - break; - case MID_BACK_COLOR_R_G_B: - rVal <<= (sal_Int32)( aColor.GetRGBColor() ); - break; - case MID_BACK_COLOR_TRANSPARENCY: - rVal <<= lcl_TransparencyToPercent(aColor.GetTransparency()); - break; - case MID_GRAPHIC_POSITION: - rVal <<= (style::GraphicLocation)(sal_Int16)eGraphicPos; - break; - - case MID_GRAPHIC: - DBG_ERRORFILE( "not implemented" ); - break; - - case MID_GRAPHIC_TRANSPARENT: - rVal = Bool2Any( aColor.GetTransparency() == 0xff ); - break; - - case MID_GRAPHIC_URL: - { - OUString sLink; - if ( pStrLink ) - sLink = *pStrLink; - else if( pImpl->pGraphicObject ) - { - OUString sPrefix(RTL_CONSTASCII_USTRINGPARAM(UNO_NAME_GRAPHOBJ_URLPREFIX)); - String sId( pImpl->pGraphicObject->GetUniqueID(), - RTL_TEXTENCODING_ASCII_US ); - sLink = sPrefix; - sLink += OUString(sId); - } - rVal <<= sLink; - } - break; - - case MID_GRAPHIC_FILTER: - { - OUString sFilter; - if ( pStrFilter ) - sFilter = *pStrFilter; - rVal <<= sFilter; - } - break; - case MID_GRAPHIC_TRANSPARENCY : - rVal <<= pImpl->nGraphicTransparency; - break; - } - - return sal_True; -} - -// ----------------------------------------------------------------------- - -sal_Bool SvxBrushItem::PutValue( const uno::Any& rVal, BYTE nMemberId ) -{ -// sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); - nMemberId &= ~CONVERT_TWIPS; - switch( nMemberId) - { - case MID_BACK_COLOR: - case MID_BACK_COLOR_R_G_B: - { - sal_Int32 nCol = 0; - if ( !( rVal >>= nCol ) ) - return sal_False; - if(MID_BACK_COLOR_R_G_B == nMemberId) - { - nCol = COLORDATA_RGB( nCol ); - nCol += aColor.GetColor() & 0xff000000; - } - aColor = Color( nCol ); - } - break; - case MID_BACK_COLOR_TRANSPARENCY: - { - sal_Int32 nTrans = 0; - if ( !( rVal >>= nTrans ) || nTrans < 0 || nTrans > 100 ) - return sal_False; - aColor.SetTransparency(lcl_PercentToTransparency(nTrans)); - } - break; - - case MID_GRAPHIC_POSITION: - { - style::GraphicLocation eLocation; - if ( !( rVal>>=eLocation ) ) - { - sal_Int32 nValue = 0; - if ( !( rVal >>= nValue ) ) - return sal_False; - eLocation = (style::GraphicLocation)nValue; - } - SetGraphicPos( (SvxGraphicPosition)(sal_uInt16)eLocation ); - } - break; - - case MID_GRAPHIC: - DBG_ERRORFILE( "not implemented" ); - break; - - case MID_GRAPHIC_TRANSPARENT: - aColor.SetTransparency( Any2Bool( rVal ) ? 0xff : 0 ); - break; - - case MID_GRAPHIC_URL: - { - if ( rVal.getValueType() == ::getCppuType( (OUString*)0 ) ) - { - OUString sLink; - rVal >>= sLink; - if( 0 == sLink.compareToAscii( UNO_NAME_GRAPHOBJ_URLPKGPREFIX, - sizeof(UNO_NAME_GRAPHOBJ_URLPKGPREFIX)-1 ) ) - { - DBG_ERROR( "package urls aren't implemented" ); - } - else if( 0 == sLink.compareToAscii( UNO_NAME_GRAPHOBJ_URLPREFIX, - sizeof(UNO_NAME_GRAPHOBJ_URLPREFIX)-1 ) ) - { - DELETEZ( pStrLink ); - String sTmp( sLink ); - ByteString sId( sTmp.Copy( - sizeof(UNO_NAME_GRAPHOBJ_URLPREFIX)-1), - RTL_TEXTENCODING_ASCII_US ); - GraphicObject *pOldGrfObj = pImpl->pGraphicObject; - pImpl->pGraphicObject = new GraphicObject( sId ); - ApplyGraphicTransparency_Impl(); - delete pOldGrfObj; - } - else - { - SetGraphicLink(sLink); - } - if ( sLink.getLength() && eGraphicPos == GPOS_NONE ) - eGraphicPos = GPOS_MM; - else if( !sLink.getLength() ) - eGraphicPos = GPOS_NONE; - } - } - break; - - case MID_GRAPHIC_FILTER: - { - if( rVal.getValueType() == ::getCppuType( (OUString*)0 ) ) - { - OUString sLink; - rVal >>= sLink; - SetGraphicFilter( sLink ); - } - } - break; - case MID_GRAPHIC_TRANSPARENCY : - { - sal_Int32 nTmp = 0; - rVal >>= nTmp; - if(nTmp >= 0 && nTmp <= 100) - { - pImpl->nGraphicTransparency = sal_Int8(nTmp); - if(pImpl->pGraphicObject) - ApplyGraphicTransparency_Impl(); - } - } - break; - } - - return sal_True; -} - -// ----------------------------------------------------------------------- - -SfxItemPresentation SvxBrushItem::GetPresentation -( - SfxItemPresentation ePres, - SfxMapUnit /*eCoreUnit*/, - SfxMapUnit /*ePresUnit*/, - XubString& rText, const IntlWrapper * - ) const -{ -#ifndef SVX_LIGHT - switch ( ePres ) - { - case SFX_ITEM_PRESENTATION_NONE: - rText.Erase(); - return ePres; - - case SFX_ITEM_PRESENTATION_NAMELESS: - case SFX_ITEM_PRESENTATION_COMPLETE: - { - if ( GPOS_NONE == eGraphicPos ) - { - rText = ::GetColorString( aColor ); - rText += cpDelim; - sal_uInt16 nId = RID_SVXITEMS_TRANSPARENT_FALSE; - - if ( aColor.GetTransparency() ) - nId = RID_SVXITEMS_TRANSPARENT_TRUE; - rText += SVX_RESSTR(nId); - } - else - { - rText = SVX_RESSTR(RID_SVXITEMS_GRAPHIC); - } - - return ePres; - } - default: ;//prevent warning - } -#endif // !SVX_LIGHT - return SFX_ITEM_PRESENTATION_NONE; -} - -// ----------------------------------------------------------------------- - -SvxBrushItem& SvxBrushItem::operator=( const SvxBrushItem& rItem ) -{ - aColor = rItem.aColor; - eGraphicPos = rItem.eGraphicPos; - - DELETEZ( pImpl->pGraphicObject ); - DELETEZ( pStrLink ); - DELETEZ( pStrFilter ); - - if ( GPOS_NONE != eGraphicPos ) - { - if ( rItem.pStrLink ) - pStrLink = new String( *rItem.pStrLink ); - if ( rItem.pStrFilter ) - pStrFilter = new String( *rItem.pStrFilter ); - if ( rItem.pImpl->pGraphicObject ) - { - pImpl->pGraphicObject = new GraphicObject( *rItem.pImpl->pGraphicObject ); - } - } - pImpl->nGraphicTransparency = rItem.pImpl->nGraphicTransparency; - return *this; -} - -// ----------------------------------------------------------------------- - -int SvxBrushItem::operator==( const SfxPoolItem& rAttr ) const -{ - DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" ); - - SvxBrushItem& rCmp = (SvxBrushItem&)rAttr; - sal_Bool bEqual = ( aColor == rCmp.aColor && eGraphicPos == rCmp.eGraphicPos && - pImpl->nGraphicTransparency == rCmp.pImpl->nGraphicTransparency); - - if ( bEqual ) - { - if ( GPOS_NONE != eGraphicPos ) - { - if ( !rCmp.pStrLink ) - bEqual = !pStrLink; - else - bEqual = pStrLink && ( *pStrLink == *rCmp.pStrLink ); - - if ( bEqual ) - { - if ( !rCmp.pStrFilter ) - bEqual = !pStrFilter; - else - bEqual = pStrFilter && ( *pStrFilter == *rCmp.pStrFilter ); - } - - if ( bEqual && !rCmp.pStrLink ) - { - if ( !rCmp.pImpl->pGraphicObject ) - bEqual = !pImpl->pGraphicObject; - else - bEqual = pImpl->pGraphicObject && - ( *pImpl->pGraphicObject == *rCmp.pImpl->pGraphicObject ); - } - } - } - - return bEqual; -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxBrushItem::Clone( SfxItemPool* ) const -{ - return new SvxBrushItem( *this ); -} - -// ----------------------------------------------------------------------- - -SfxPoolItem* SvxBrushItem::Create( SvStream& rStream, sal_uInt16 nVersion ) const -{ - return new SvxBrushItem( rStream, nVersion, Which() ); -} - -// ----------------------------------------------------------------------- - -SvStream& SvxBrushItem::Store( SvStream& rStream , sal_uInt16 /*nItemVersion*/ ) const -{ - rStream << (sal_Bool)sal_False; - rStream << aColor; - rStream << aColor; - rStream << (sal_Int8)(aColor.GetTransparency() > 0 ? 0 : 1); //BRUSH_NULL : BRUSH_SOLID - - sal_uInt16 nDoLoad = 0; - - if ( pImpl->pGraphicObject && !pStrLink ) - nDoLoad |= LOAD_GRAPHIC; - if ( pStrLink ) - nDoLoad |= LOAD_LINK; - if ( pStrFilter ) - nDoLoad |= LOAD_FILTER; - rStream << nDoLoad; - - if ( pImpl->pGraphicObject && !pStrLink ) - rStream << pImpl->pGraphicObject->GetGraphic(); - if ( pStrLink ) - { - DBG_ERROR("No BaseURL!"); - // TODO/MBA: how to get a BaseURL?! - String aRel = INetURLObject::GetRelURL( String(), *pStrLink ); - // UNICODE: rStream << aRel; - rStream.WriteByteString(aRel); - } - if ( pStrFilter ) - { - // UNICODE: rStream << *pStrFilter; - rStream.WriteByteString(*pStrFilter); - } - rStream << (sal_Int8)eGraphicPos; - return rStream; -} - -// ----------------------------------------------------------------------- -// const wegcasten, da const als logisches const zu verstehen ist -// wenn GetGraphic() gerufen wird, soll sich das Item darum kuemmern, -// eine gelinkte Grafik zu holen. - -GraphicFilter* GetGrfFilter(); - -IMPL_STATIC_LINK( SvxBrushItem, DoneHdl_Impl, void*, EMPTYARG ) -{ -#ifndef SVX_LIGHT - pThis->pImpl->pGraphicObject = new GraphicObject; - SvStream* pStream = pThis->pImpl->xMedium->GetInStream(); - if( pStream && !pStream->GetError() ) - { - Graphic aGraphic; - int nRes; - pStream->Seek( STREAM_SEEK_TO_BEGIN ); - nRes = GetGrfFilter()-> - ImportGraphic( aGraphic, *pThis->pStrLink, *pStream, - GRFILTER_FORMAT_DONTKNOW, NULL, GRFILTER_I_FLAGS_DONT_SET_LOGSIZE_FOR_JPEG ); - - if( nRes != GRFILTER_OK ) - { - DELETEZ( pThis->pImpl->pGraphicObject ); - pThis->bLoadAgain = sal_False; - } - else - { - pThis->pImpl->pGraphicObject->SetGraphic( aGraphic ); - pThis->ApplyGraphicTransparency_Impl(); - } - } - else - { - DELETEZ( pThis->pImpl->pGraphicObject ); - pThis->bLoadAgain = sal_False; - } - - pThis->pImpl->xMedium.Clear(); - pThis->pImpl->aDoneLink.Call( pThis ); -#endif - return 0; -} - -// ----------------------------------------------------------------------- - -void SvxBrushItem::PurgeGraphic() const -{ -#ifndef SVX_LIGHT - PurgeMedium(); - DELETEZ( pImpl->pGraphicObject ); - ((SvxBrushItem*)this)->bLoadAgain = sal_True; -#endif -} - -// ----------------------------------------------------------------------- - -void SvxBrushItem::PurgeMedium() const -{ -#ifndef SVX_LIGHT - pImpl->xMedium.Clear(); -#endif -} - -// ----------------------------------------------------------------------- - -const GraphicObject* SvxBrushItem::GetGraphicObject( SfxObjectShell* pSh ) const -{ -#ifndef SVX_LIGHT - if ( bLoadAgain && pStrLink && !pImpl->pGraphicObject && !pImpl->xMedium.Is() ) - // wenn Grafik schon geladen, als Cache benutzen - { - //JP 29.6.2001: only with "valid" names - empty names now allowed - if( pStrLink->Len() ) - { - pImpl->xMedium = new SfxMedium( - *pStrLink, STREAM_STD_READ, sal_False ); - - if( pImpl->xMedium->IsRemote() ) - { - if( pSh ) - { - pSh->RegisterTransfer( *pImpl->xMedium ); - } - else - { - DBG_WARNING( "SvxBrushItem::GetGraphic ohne DocShell" ); - } - } - - SfxMediumRef xRef( pImpl->xMedium ); - // Ref halten wg. synchr. DoneCallback - if( pImpl->aDoneLink.IsSet() ) - { - // Auf besonderen Wunsch des Writers wird der synchrone und der - // asynchrone Fall was die Benachrichtigung angeht unterschiedlich - // behandelt. Der Callback erfolgt nur bei asynchronem Eintreffen - // der Daten - - Link aTmp = pImpl->aDoneLink; - pImpl->aDoneLink = Link(); - pImpl->xMedium->DownLoad( - STATIC_LINK( this, SvxBrushItem, DoneHdl_Impl ) ); - pImpl->aDoneLink = aTmp; - } - else - { - pImpl->xMedium->DownLoad( ); - DoneHdl_Impl( (SvxBrushItem*)this, 0 ); - } - } - } -#endif - return pImpl->pGraphicObject; -} - -// ----------------------------------------------------------------------- - -const Graphic* SvxBrushItem::GetGraphic( SfxObjectShell* pSh ) const -{ - const GraphicObject* pGrafObj = GetGraphicObject( pSh ); - return( pGrafObj ? &( pGrafObj->GetGraphic() ) : NULL ); -} - -// ----------------------------------------------------------------------- - -void SvxBrushItem::SetGraphicPos( SvxGraphicPosition eNew ) -{ - eGraphicPos = eNew; - - if ( GPOS_NONE == eGraphicPos ) - { - DELETEZ( pImpl->pGraphicObject ); - DELETEZ( pStrLink ); - DELETEZ( pStrFilter ); - } - else - { - if ( !pImpl->pGraphicObject && !pStrLink ) - { - pImpl->pGraphicObject = new GraphicObject; // dummy anlegen - } - } -} - -// ----------------------------------------------------------------------- - -void SvxBrushItem::SetGraphic( const Graphic& rNew ) -{ - if ( !pStrLink ) - { - if ( pImpl->pGraphicObject ) - pImpl->pGraphicObject->SetGraphic( rNew ); - else - pImpl->pGraphicObject = new GraphicObject( rNew ); - - ApplyGraphicTransparency_Impl(); - - if ( GPOS_NONE == eGraphicPos ) - eGraphicPos = GPOS_MM; // None waere Brush, also Default: Mitte - } - else - { - DBG_ERROR( "SetGraphic() on linked graphic! :-/" ); - } -} - -// ----------------------------------------------------------------------- - -void SvxBrushItem::SetGraphicObject( const GraphicObject& rNewObj ) -{ - if ( !pStrLink ) - { - if ( pImpl->pGraphicObject ) - *pImpl->pGraphicObject = rNewObj; - else - pImpl->pGraphicObject = new GraphicObject( rNewObj ); - - ApplyGraphicTransparency_Impl(); - - if ( GPOS_NONE == eGraphicPos ) - eGraphicPos = GPOS_MM; // None waere Brush, also Default: Mitte - } - else - { - DBG_ERROR( "SetGraphic() on linked graphic! :-/" ); - } -} - -// ----------------------------------------------------------------------- - -void SvxBrushItem::SetGraphicLink( const String& rNew ) -{ - if ( !rNew.Len() ) - DELETEZ( pStrLink ); - else - { - if ( pStrLink ) - *pStrLink = rNew; - else - pStrLink = new String( rNew ); - - DELETEZ( pImpl->pGraphicObject ); - } -} - -// ----------------------------------------------------------------------- - -void SvxBrushItem::SetGraphicFilter( const String& rNew ) -{ - if ( !rNew.Len() ) - DELETEZ( pStrFilter ); - else - { - if ( pStrFilter ) - *pStrFilter = rNew; - else - pStrFilter = new String( rNew ); - } -} - -//static -SvxGraphicPosition SvxBrushItem::WallpaperStyle2GraphicPos( WallpaperStyle eStyle ) -{ - SvxGraphicPosition eResult; - // der Switch ist nicht der schnellste, dafuer aber am sichersten - switch( eStyle ) - { - case WALLPAPER_NULL: eResult = GPOS_NONE; break; - case WALLPAPER_TILE: eResult = GPOS_TILED; break; - case WALLPAPER_CENTER: eResult = GPOS_MM; break; - case WALLPAPER_SCALE: eResult = GPOS_AREA; break; - case WALLPAPER_TOPLEFT: eResult = GPOS_LT; break; - case WALLPAPER_TOP: eResult = GPOS_MT; break; - case WALLPAPER_TOPRIGHT: eResult = GPOS_RT; break; - case WALLPAPER_LEFT: eResult = GPOS_LM; break; - case WALLPAPER_RIGHT: eResult = GPOS_RM; break; - case WALLPAPER_BOTTOMLEFT: eResult = GPOS_LB; break; - case WALLPAPER_BOTTOM: eResult = GPOS_MB; break; - case WALLPAPER_BOTTOMRIGHT: eResult = GPOS_RB; break; - default: eResult = GPOS_NONE; - } - return eResult; -}; - -//static -WallpaperStyle SvxBrushItem::GraphicPos2WallpaperStyle( SvxGraphicPosition ePos ) -{ - WallpaperStyle eResult; - switch( ePos ) - { - case GPOS_NONE: eResult = WALLPAPER_NULL; break; - case GPOS_TILED: eResult = WALLPAPER_TILE; break; - case GPOS_MM: eResult = WALLPAPER_CENTER; break; - case GPOS_AREA: eResult = WALLPAPER_SCALE; break; - case GPOS_LT: eResult = WALLPAPER_TOPLEFT; break; - case GPOS_MT: eResult = WALLPAPER_TOP; break; - case GPOS_RT: eResult = WALLPAPER_TOPRIGHT; break; - case GPOS_LM: eResult = WALLPAPER_LEFT; break; - case GPOS_RM: eResult = WALLPAPER_RIGHT; break; - case GPOS_LB: eResult = WALLPAPER_BOTTOMLEFT; break; - case GPOS_MB: eResult = WALLPAPER_BOTTOM; break; - case GPOS_RB: eResult = WALLPAPER_BOTTOMRIGHT; break; - default: eResult = WALLPAPER_NULL; - } - return eResult; -} - - -SvxBrushItem::SvxBrushItem( const CntWallpaperItem& rItem, sal_uInt16 _nWhich ) : - SfxPoolItem( _nWhich ), - pImpl( new SvxBrushItem_Impl( 0 ) ), - pStrLink(0), - pStrFilter(0), - bLoadAgain( sal_True ) -{ - aColor = rItem.GetColor(); - - if( rItem.GetBitmapURL().Len() ) - { - pStrLink = new String( rItem.GetBitmapURL() ); - SetGraphicPos( WallpaperStyle2GraphicPos((WallpaperStyle)rItem.GetStyle() ) ); - } -} - -CntWallpaperItem* SvxBrushItem::CreateCntWallpaperItem() const -{ - CntWallpaperItem* pItem = new CntWallpaperItem( 0 ); - pItem->SetColor( aColor.GetColor() ); - pItem->SetStyle( (USHORT)GraphicPos2WallpaperStyle( GetGraphicPos() ) ); - sal_Bool bLink = (pStrLink != 0); - if( bLink ) - { - String aURL = *pStrLink; - pItem->SetBitmapURL( aURL ); - } - if( pImpl->pGraphicObject ) - { - DBG_ERRORFILE( "Don't know what to do with a graphic" ); - } -// pItem->SetGraphic( *pImpl->pGraphic, bLink ); - - return pItem; -} - -#ifdef _MSC_VER -#pragma optimize ( "", on ) -#endif -/* -----------------------------16.08.2002 09:18------------------------------ - - ---------------------------------------------------------------------------*/ -void SvxBrushItem::ApplyGraphicTransparency_Impl() -{ - DBG_ASSERT(pImpl->pGraphicObject, "no GraphicObject available" ); - if(pImpl->pGraphicObject) - { - GraphicAttr aAttr(pImpl->pGraphicObject->GetAttr()); - aAttr.SetTransparency(lcl_PercentToTransparency( - pImpl->nGraphicTransparency)); - pImpl->pGraphicObject->SetAttr(aAttr); - } -} -// class SvxFrameDirectionItem ---------------------------------------------- - -SvxFrameDirectionItem::SvxFrameDirectionItem( USHORT _nWhich ) - : SfxUInt16Item( _nWhich, (UINT16)FRMDIR_HORI_LEFT_TOP ) -{ -} - -SvxFrameDirectionItem::SvxFrameDirectionItem( SvxFrameDirection nValue , - USHORT _nWhich ) - : SfxUInt16Item( _nWhich, (UINT16)nValue ) -{ -} - -SvxFrameDirectionItem::~SvxFrameDirectionItem() -{ -} - -int SvxFrameDirectionItem::operator==( const SfxPoolItem& rCmp ) const -{ - DBG_ASSERT( SfxPoolItem::operator==(rCmp), "unequal types" ); - - return GetValue() == ((SvxFrameDirectionItem&)rCmp).GetValue(); -} - -SfxPoolItem* SvxFrameDirectionItem::Clone( SfxItemPool * ) const -{ - return new SvxFrameDirectionItem( *this ); -} - -SfxPoolItem* SvxFrameDirectionItem::Create( SvStream & rStrm, USHORT /*nVer*/ ) const -{ - sal_uInt16 nValue; - rStrm >> nValue; - return new SvxFrameDirectionItem( (SvxFrameDirection)nValue, Which() ); -} - -SvStream& SvxFrameDirectionItem::Store( SvStream & rStrm, USHORT /*nIVer*/ ) const -{ - sal_uInt16 nValue = GetValue(); - rStrm << nValue; - return rStrm; -} - -USHORT SvxFrameDirectionItem::GetVersion( USHORT nFVer ) const -{ - return SOFFICE_FILEFORMAT_50 > nFVer ? USHRT_MAX : 0; -} - -SfxItemPresentation SvxFrameDirectionItem::GetPresentation( - SfxItemPresentation ePres, - SfxMapUnit /*eCoreUnit*/, - SfxMapUnit /*ePresUnit*/, - XubString& rText, const IntlWrapper *) const -{ - SfxItemPresentation eRet = ePres; - switch( ePres ) - { - case SFX_ITEM_PRESENTATION_NONE: - rText.Erase(); - break; - - case SFX_ITEM_PRESENTATION_NAMELESS: - case SFX_ITEM_PRESENTATION_COMPLETE: - rText = SVX_RESSTR( RID_SVXITEMS_FRMDIR_BEGIN + GetValue() ); - break; - - default: - eRet = SFX_ITEM_PRESENTATION_NONE; - } - return eRet; -} - -sal_Bool SvxFrameDirectionItem::PutValue( const com::sun::star::uno::Any& rVal, - BYTE ) -{ - sal_Int16 nVal = sal_Int16(); - sal_Bool bRet = ( rVal >>= nVal ); - if( bRet ) - { - // translate WritingDirection2 constants into SvxFrameDirection - switch( nVal ) - { - case text::WritingMode2::LR_TB: - SetValue( FRMDIR_HORI_LEFT_TOP ); - break; - case text::WritingMode2::RL_TB: - SetValue( FRMDIR_HORI_RIGHT_TOP ); - break; - case text::WritingMode2::TB_RL: - SetValue( FRMDIR_VERT_TOP_RIGHT ); - break; - case text::WritingMode2::TB_LR: - SetValue( FRMDIR_VERT_TOP_LEFT ); - break; - case text::WritingMode2::PAGE: - SetValue( FRMDIR_ENVIRONMENT ); - break; - default: - bRet = sal_False; - break; - } - } - - return bRet; -} - -sal_Bool SvxFrameDirectionItem::QueryValue( com::sun::star::uno::Any& rVal, - BYTE ) const -{ - // translate SvxFrameDirection into WritingDirection2 - sal_Int16 nVal; - sal_Bool bRet = sal_True; - switch( GetValue() ) - { - case FRMDIR_HORI_LEFT_TOP: - nVal = text::WritingMode2::LR_TB; - break; - case FRMDIR_HORI_RIGHT_TOP: - nVal = text::WritingMode2::RL_TB; - break; - case FRMDIR_VERT_TOP_RIGHT: - nVal = text::WritingMode2::TB_RL; - break; - case FRMDIR_VERT_TOP_LEFT: - nVal = text::WritingMode2::TB_LR; - break; - case FRMDIR_ENVIRONMENT: - nVal = text::WritingMode2::PAGE; - break; - default: - DBG_ERROR("Unknown SvxFrameDirection value!"); - bRet = sal_False; - break; - } - - // return value + error state - if( bRet ) - { - rVal <<= nVal; - } - return bRet; -} - |