| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_svx.hxx" |
| |
| #include <svx/svxitems.hrc> |
| |
| |
| #include <tools/stream.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/style/ParagraphAdjust.hpp> |
| #include "com/sun/star/style/VerticalAlignment.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 <svx/algitem.hxx> |
| #include <svx/dialmgr.hxx> |
| #include <editeng/itemtype.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)) |
| |
| // STATIC DATA ----------------------------------------------------------- |
| |
| //TYPEINIT1_AUTOFACTORY( SvxHorJustifyItem, SfxEnumItem ); |
| TYPEINIT1_FACTORY( SvxHorJustifyItem, SfxEnumItem, new SvxHorJustifyItem(SVX_HOR_JUSTIFY_STANDARD, 0)) |
| TYPEINIT1_FACTORY( SvxVerJustifyItem, SfxEnumItem, new SvxVerJustifyItem(SVX_VER_JUSTIFY_STANDARD, 0) ); |
| TYPEINIT1_FACTORY( SvxOrientationItem, SfxEnumItem, new SvxOrientationItem(SVX_ORIENTATION_STANDARD, 0) ); |
| TYPEINIT1_FACTORY( SvxMarginItem, SfxPoolItem, new SvxMarginItem(0) ); |
| |
| // class SvxHorJustifyItem ----------------------------------------------- |
| |
| |
| SvxHorJustifyItem::SvxHorJustifyItem( const sal_uInt16 nId ) : |
| SfxEnumItem( nId, (sal_uInt16)SVX_HOR_JUSTIFY_STANDARD ) |
| { |
| } |
| |
| SvxHorJustifyItem::SvxHorJustifyItem( const SvxCellHorJustify eJustify, |
| const sal_uInt16 nId ) : |
| SfxEnumItem( nId, (sal_uInt16)eJustify ) |
| { |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| SfxItemPresentation SvxHorJustifyItem::GetPresentation |
| ( |
| SfxItemPresentation ePres, |
| SfxMapUnit /*eCoreUnit*/, |
| SfxMapUnit /*ePresUnit*/, |
| XubString& rText, const IntlWrapper *) const |
| { |
| 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 = GetValueText( GetValue() ); |
| return SFX_ITEM_PRESENTATION_COMPLETE; |
| default: ; //prevent warning |
| } |
| return SFX_ITEM_PRESENTATION_NONE; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| sal_Bool SvxHorJustifyItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const |
| { |
| // sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); |
| nMemberId &= ~CONVERT_TWIPS; |
| switch ( nMemberId ) |
| { |
| case MID_HORJUST_HORJUST: |
| { |
| table::CellHoriJustify eUno = table::CellHoriJustify_STANDARD; |
| switch ( (SvxCellHorJustify)GetValue() ) |
| { |
| case SVX_HOR_JUSTIFY_STANDARD: eUno = table::CellHoriJustify_STANDARD; break; |
| case SVX_HOR_JUSTIFY_LEFT: eUno = table::CellHoriJustify_LEFT; break; |
| case SVX_HOR_JUSTIFY_CENTER: eUno = table::CellHoriJustify_CENTER; break; |
| case SVX_HOR_JUSTIFY_RIGHT: eUno = table::CellHoriJustify_RIGHT; break; |
| case SVX_HOR_JUSTIFY_BLOCK: eUno = table::CellHoriJustify_BLOCK; break; |
| case SVX_HOR_JUSTIFY_REPEAT: eUno = table::CellHoriJustify_REPEAT; break; |
| } |
| rVal <<= eUno; |
| } |
| break; |
| case MID_HORJUST_ADJUST: |
| { |
| // ParagraphAdjust values, as in SvxAdjustItem |
| // (same value for ParaAdjust and ParaLastLineAdjust) |
| |
| sal_Int16 nAdjust = style::ParagraphAdjust_LEFT; |
| switch ( (SvxCellHorJustify)GetValue() ) |
| { |
| // ParagraphAdjust_LEFT is used for STANDARD and REPEAT |
| case SVX_HOR_JUSTIFY_STANDARD: |
| case SVX_HOR_JUSTIFY_REPEAT: |
| case SVX_HOR_JUSTIFY_LEFT: nAdjust = style::ParagraphAdjust_LEFT; break; |
| case SVX_HOR_JUSTIFY_CENTER: nAdjust = style::ParagraphAdjust_CENTER; break; |
| case SVX_HOR_JUSTIFY_RIGHT: nAdjust = style::ParagraphAdjust_RIGHT; break; |
| case SVX_HOR_JUSTIFY_BLOCK: nAdjust = style::ParagraphAdjust_BLOCK; break; |
| } |
| rVal <<= nAdjust; // as sal_Int16 |
| } |
| break; |
| } |
| return sal_True; |
| } |
| |
| sal_Bool SvxHorJustifyItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId ) |
| { |
| // sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); |
| nMemberId &= ~CONVERT_TWIPS; |
| switch ( nMemberId ) |
| { |
| case MID_HORJUST_HORJUST: |
| { |
| table::CellHoriJustify eUno; |
| if(!(rVal >>= eUno)) |
| { |
| sal_Int32 nValue = 0; |
| if(!(rVal >>= nValue)) |
| return sal_False; |
| eUno = (table::CellHoriJustify)nValue; |
| } |
| SvxCellHorJustify eSvx = SVX_HOR_JUSTIFY_STANDARD; |
| switch (eUno) |
| { |
| case table::CellHoriJustify_STANDARD: eSvx = SVX_HOR_JUSTIFY_STANDARD; break; |
| case table::CellHoriJustify_LEFT: eSvx = SVX_HOR_JUSTIFY_LEFT; break; |
| case table::CellHoriJustify_CENTER: eSvx = SVX_HOR_JUSTIFY_CENTER; break; |
| case table::CellHoriJustify_RIGHT: eSvx = SVX_HOR_JUSTIFY_RIGHT; break; |
| case table::CellHoriJustify_BLOCK: eSvx = SVX_HOR_JUSTIFY_BLOCK; break; |
| case table::CellHoriJustify_REPEAT: eSvx = SVX_HOR_JUSTIFY_REPEAT; break; |
| default: ; //prevent warning |
| } |
| SetValue( (sal_uInt16)eSvx ); |
| } |
| break; |
| case MID_HORJUST_ADJUST: |
| { |
| // property contains ParagraphAdjust values as sal_Int16 |
| sal_Int16 nVal = sal_Int16(); |
| if(!(rVal >>= nVal)) |
| return sal_False; |
| |
| SvxCellHorJustify eSvx = SVX_HOR_JUSTIFY_STANDARD; |
| switch (nVal) |
| { |
| // STRETCH is treated as BLOCK |
| case style::ParagraphAdjust_LEFT: eSvx = SVX_HOR_JUSTIFY_LEFT; break; |
| case style::ParagraphAdjust_RIGHT: eSvx = SVX_HOR_JUSTIFY_RIGHT; break; |
| case style::ParagraphAdjust_STRETCH: |
| case style::ParagraphAdjust_BLOCK: eSvx = SVX_HOR_JUSTIFY_BLOCK; break; |
| case style::ParagraphAdjust_CENTER: eSvx = SVX_HOR_JUSTIFY_CENTER; break; |
| } |
| SetValue( (sal_uInt16)eSvx ); |
| } |
| } |
| return sal_True; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| XubString SvxHorJustifyItem::GetValueText( sal_uInt16 nVal ) const |
| { |
| DBG_ASSERT( nVal <= SVX_HOR_JUSTIFY_REPEAT, "enum overflow!" ); |
| return SVX_RESSTR(RID_SVXITEMS_HORJUST_STANDARD + nVal); |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| SfxPoolItem* SvxHorJustifyItem::Clone( SfxItemPool* ) const |
| { |
| return new SvxHorJustifyItem( *this ); |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| SfxPoolItem* SvxHorJustifyItem::Create( SvStream& rStream, sal_uInt16 ) const |
| { |
| sal_uInt16 nVal; |
| rStream >> nVal; |
| return new SvxHorJustifyItem( (SvxCellHorJustify)nVal, Which() ); |
| } |
| //------------------------------------------------------------------------ |
| |
| sal_uInt16 SvxHorJustifyItem::GetValueCount() const |
| { |
| return SVX_HOR_JUSTIFY_REPEAT + 1; // letzter Enum-Wert + 1 |
| } |
| |
| // class SvxVerJustifyItem ----------------------------------------------- |
| |
| SvxVerJustifyItem::SvxVerJustifyItem( const sal_uInt16 nId ) : |
| SfxEnumItem( nId, (sal_uInt16)SVX_VER_JUSTIFY_STANDARD ) |
| { |
| } |
| |
| SvxVerJustifyItem::SvxVerJustifyItem( const SvxCellVerJustify eJustify, |
| const sal_uInt16 nId ) : |
| SfxEnumItem( nId, (sal_uInt16)eJustify ) |
| { |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| SfxItemPresentation SvxVerJustifyItem::GetPresentation |
| ( |
| SfxItemPresentation ePres, |
| SfxMapUnit /*eCoreUnit*/, |
| SfxMapUnit /*ePresUnit*/, |
| XubString& rText, |
| const IntlWrapper * ) const |
| { |
| 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 = GetValueText( GetValue() ); |
| return SFX_ITEM_PRESENTATION_COMPLETE; |
| default: ; //prevent warning |
| } |
| return SFX_ITEM_PRESENTATION_NONE; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| sal_Bool SvxVerJustifyItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const |
| { |
| nMemberId &= ~CONVERT_TWIPS; |
| switch ( nMemberId ) |
| { |
| case MID_HORJUST_ADJUST: |
| { |
| style::VerticalAlignment eUno = style::VerticalAlignment_TOP; |
| switch ( (SvxCellVerJustify)GetValue() ) |
| { |
| case SVX_VER_JUSTIFY_TOP: eUno = style::VerticalAlignment_TOP; break; |
| case SVX_VER_JUSTIFY_CENTER: eUno = style::VerticalAlignment_MIDDLE; break; |
| case SVX_VER_JUSTIFY_BOTTOM: eUno = style::VerticalAlignment_BOTTOM; break; |
| default: ; //prevent warning |
| } |
| rVal <<= eUno; |
| break; |
| } |
| default: |
| { |
| table::CellVertJustify eUno = table::CellVertJustify_STANDARD; |
| switch ( (SvxCellVerJustify)GetValue() ) |
| { |
| case SVX_VER_JUSTIFY_STANDARD: eUno = table::CellVertJustify_STANDARD; break; |
| case SVX_VER_JUSTIFY_TOP: eUno = table::CellVertJustify_TOP; break; |
| case SVX_VER_JUSTIFY_CENTER: eUno = table::CellVertJustify_CENTER; break; |
| case SVX_VER_JUSTIFY_BOTTOM: eUno = table::CellVertJustify_BOTTOM; break; |
| default: ; //prevent warning |
| } |
| rVal <<= eUno; |
| break; |
| } |
| } |
| return sal_True; |
| } |
| |
| sal_Bool SvxVerJustifyItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId ) |
| { |
| nMemberId &= ~CONVERT_TWIPS; |
| switch ( nMemberId ) |
| { |
| case MID_HORJUST_ADJUST: |
| { |
| // property contains ParagraphAdjust values as sal_Int16 |
| style::VerticalAlignment nVal = style::VerticalAlignment_TOP; |
| if(!(rVal >>= nVal)) |
| return sal_False; |
| |
| SvxCellVerJustify eSvx = SVX_VER_JUSTIFY_STANDARD; |
| switch (nVal) |
| { |
| case style::VerticalAlignment_TOP: eSvx = SVX_VER_JUSTIFY_TOP; break; |
| case style::VerticalAlignment_MIDDLE: eSvx = SVX_VER_JUSTIFY_CENTER; break; |
| case style::VerticalAlignment_BOTTOM: eSvx = SVX_VER_JUSTIFY_BOTTOM; break; |
| default:; |
| } |
| SetValue( (sal_uInt16)eSvx ); |
| break; |
| } |
| default: |
| { |
| table::CellVertJustify eUno; |
| if(!(rVal >>= eUno)) |
| { |
| sal_Int32 nValue = 0; |
| if(!(rVal >>= nValue)) |
| return sal_False; |
| eUno = (table::CellVertJustify)nValue; |
| } |
| |
| SvxCellVerJustify eSvx = SVX_VER_JUSTIFY_STANDARD; |
| switch (eUno) |
| { |
| case table::CellVertJustify_STANDARD: eSvx = SVX_VER_JUSTIFY_STANDARD; break; |
| case table::CellVertJustify_TOP: eSvx = SVX_VER_JUSTIFY_TOP; break; |
| case table::CellVertJustify_CENTER: eSvx = SVX_VER_JUSTIFY_CENTER; break; |
| case table::CellVertJustify_BOTTOM: eSvx = SVX_VER_JUSTIFY_BOTTOM; break; |
| default: ; //prevent warning |
| } |
| SetValue( (sal_uInt16)eSvx ); |
| break; |
| } |
| } |
| |
| return sal_True; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| XubString SvxVerJustifyItem::GetValueText( sal_uInt16 nVal ) const |
| { |
| DBG_ASSERT( nVal <= SVX_VER_JUSTIFY_BOTTOM, "enum overflow!" ); |
| return SVX_RESSTR(RID_SVXITEMS_VERJUST_STANDARD + nVal); |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| SfxPoolItem* SvxVerJustifyItem::Clone( SfxItemPool* ) const |
| { |
| return new SvxVerJustifyItem( *this ); |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| SfxPoolItem* SvxVerJustifyItem::Create( SvStream& rStream, sal_uInt16 ) const |
| { |
| sal_uInt16 nVal; |
| rStream >> nVal; |
| return new SvxVerJustifyItem( (SvxCellVerJustify)nVal, Which() ); |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| sal_uInt16 SvxVerJustifyItem::GetValueCount() const |
| { |
| return SVX_VER_JUSTIFY_BOTTOM + 1; // letzter Enum-Wert + 1 |
| } |
| |
| // class SvxOrientationItem ---------------------------------------------- |
| |
| SvxOrientationItem::SvxOrientationItem( const SvxCellOrientation eOrientation, |
| const sal_uInt16 nId): |
| SfxEnumItem( nId, (sal_uInt16)eOrientation ) |
| { |
| } |
| |
| SvxOrientationItem::SvxOrientationItem( sal_Int32 nRotation, sal_Bool bStacked, const sal_uInt16 nId ) : |
| SfxEnumItem( nId ) |
| { |
| SetFromRotation( nRotation, bStacked ); |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| SfxItemPresentation SvxOrientationItem::GetPresentation |
| ( |
| SfxItemPresentation ePres, |
| SfxMapUnit /*eCoreUnit*/, |
| SfxMapUnit /*ePresUnit*/, |
| XubString& rText, const IntlWrapper * ) const |
| { |
| 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 = GetValueText( GetValue() ); |
| return SFX_ITEM_PRESENTATION_COMPLETE; |
| default: ; //prevent warning |
| } |
| return SFX_ITEM_PRESENTATION_NONE; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| sal_Bool SvxOrientationItem::QueryValue( uno::Any& rVal, sal_uInt8 /*nMemberId*/ ) const |
| { |
| table::CellOrientation eUno = table::CellOrientation_STANDARD; |
| switch ( (SvxCellOrientation)GetValue() ) |
| { |
| case SVX_ORIENTATION_STANDARD: eUno = table::CellOrientation_STANDARD; break; |
| case SVX_ORIENTATION_TOPBOTTOM: eUno = table::CellOrientation_TOPBOTTOM; break; |
| case SVX_ORIENTATION_BOTTOMTOP: eUno = table::CellOrientation_BOTTOMTOP; break; |
| case SVX_ORIENTATION_STACKED: eUno = table::CellOrientation_STACKED; break; |
| } |
| rVal <<= eUno; |
| return sal_True; |
| } |
| |
| sal_Bool SvxOrientationItem::PutValue( const uno::Any& rVal, sal_uInt8 /*nMemberId*/ ) |
| { |
| table::CellOrientation eOrient; |
| if(!(rVal >>= eOrient)) |
| { |
| sal_Int32 nValue = 0; |
| if(!(rVal >>= nValue)) |
| return sal_False; |
| eOrient = (table::CellOrientation)nValue; |
| } |
| SvxCellOrientation eSvx = SVX_ORIENTATION_STANDARD; |
| switch (eOrient) |
| { |
| case table::CellOrientation_STANDARD: eSvx = SVX_ORIENTATION_STANDARD; break; |
| case table::CellOrientation_TOPBOTTOM: eSvx = SVX_ORIENTATION_TOPBOTTOM; break; |
| case table::CellOrientation_BOTTOMTOP: eSvx = SVX_ORIENTATION_BOTTOMTOP; break; |
| case table::CellOrientation_STACKED: eSvx = SVX_ORIENTATION_STACKED; break; |
| default: ; //prevent warning |
| } |
| SetValue( (sal_uInt16)eSvx ); |
| return sal_True; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| XubString SvxOrientationItem::GetValueText( sal_uInt16 nVal ) const |
| { |
| DBG_ASSERT( nVal <= SVX_ORIENTATION_STACKED, "enum overflow!" ); |
| return SVX_RESSTR(RID_SVXITEMS_ORI_STANDARD + nVal); |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| SfxPoolItem* SvxOrientationItem::Clone( SfxItemPool* ) const |
| { |
| return new SvxOrientationItem( *this ); |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| SfxPoolItem* SvxOrientationItem::Create( SvStream& rStream, sal_uInt16 ) const |
| { |
| sal_uInt16 nVal; |
| rStream >> nVal; |
| return new SvxOrientationItem( (SvxCellOrientation)nVal, Which() ); |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| sal_uInt16 SvxOrientationItem::GetValueCount() const |
| { |
| return SVX_ORIENTATION_STACKED + 1; // letzter Enum-Wert + 1 |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| sal_Bool SvxOrientationItem::IsStacked() const |
| { |
| return static_cast< SvxCellOrientation >( GetValue() ) == SVX_ORIENTATION_STACKED; |
| } |
| |
| sal_Int32 SvxOrientationItem::GetRotation( sal_Int32 nStdAngle ) const |
| { |
| sal_Int32 nAngle = nStdAngle; |
| switch( static_cast< SvxCellOrientation >( GetValue() ) ) |
| { |
| case SVX_ORIENTATION_BOTTOMTOP: nAngle = 9000; |
| case SVX_ORIENTATION_TOPBOTTOM: nAngle = 27000; |
| default: ; //prevent warning |
| } |
| return nAngle; |
| } |
| |
| void SvxOrientationItem::SetFromRotation( sal_Int32 nRotation, sal_Bool bStacked ) |
| { |
| if( bStacked ) |
| { |
| SetValue( SVX_ORIENTATION_STACKED ); |
| } |
| else switch( nRotation ) |
| { |
| case 9000: SetValue( SVX_ORIENTATION_BOTTOMTOP ); break; |
| case 27000: SetValue( SVX_ORIENTATION_TOPBOTTOM ); break; |
| default: SetValue( SVX_ORIENTATION_STANDARD ); |
| } |
| } |
| |
| // class SvxMarginItem --------------------------------------------------- |
| |
| SvxMarginItem::SvxMarginItem( const sal_uInt16 nId ) : |
| |
| SfxPoolItem( nId ), |
| |
| nLeftMargin ( 20 ), |
| nTopMargin ( 20 ), |
| nRightMargin ( 20 ), |
| nBottomMargin( 20 ) |
| { |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| SvxMarginItem::SvxMarginItem( sal_Int16 nLeft, |
| sal_Int16 nTop, |
| sal_Int16 nRight, |
| sal_Int16 nBottom, |
| const sal_uInt16 nId ) : |
| SfxPoolItem( nId ), |
| |
| nLeftMargin ( nLeft ), |
| nTopMargin ( nTop ), |
| nRightMargin ( nRight ), |
| nBottomMargin( nBottom ) |
| { |
| } |
| |
| |
| //------------------------------------------------------------------------ |
| |
| SvxMarginItem::SvxMarginItem( const SvxMarginItem& rItem ) : |
| |
| SfxPoolItem( rItem.Which() ) |
| { |
| nLeftMargin = rItem.nLeftMargin; |
| nTopMargin = rItem.nTopMargin; |
| nRightMargin = rItem.nRightMargin; |
| nBottomMargin = rItem.nBottomMargin; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| SfxItemPresentation SvxMarginItem::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( (long)nLeftMargin, eCoreUnit, ePresUnit, pIntl ); |
| rText += cpDelim; |
| rText += GetMetricText( (long)nTopMargin, eCoreUnit, ePresUnit, pIntl ); |
| rText += cpDelim; |
| rText += GetMetricText( (long)nRightMargin, eCoreUnit, ePresUnit, pIntl ); |
| rText += cpDelim; |
| rText += GetMetricText( (long)nBottomMargin, eCoreUnit, ePresUnit, pIntl ); |
| return SFX_ITEM_PRESENTATION_NAMELESS; |
| } |
| case SFX_ITEM_PRESENTATION_COMPLETE: |
| { |
| rText = SVX_RESSTR(RID_SVXITEMS_MARGIN_LEFT); |
| rText += GetMetricText( (long)nLeftMargin, eCoreUnit, ePresUnit, pIntl ); |
| rText += sal_Unicode(' '); |
| rText += SVX_RESSTR(GetMetricId(ePresUnit)); |
| rText += cpDelim; |
| rText += SVX_RESSTR(RID_SVXITEMS_MARGIN_TOP); |
| rText += GetMetricText( (long)nTopMargin, eCoreUnit, ePresUnit, pIntl ); |
| rText += sal_Unicode(' '); |
| rText += SVX_RESSTR(GetMetricId(ePresUnit)); |
| rText += cpDelim; |
| rText += SVX_RESSTR(RID_SVXITEMS_MARGIN_RIGHT); |
| rText += GetMetricText( (long)nRightMargin, eCoreUnit, ePresUnit, pIntl ); |
| rText += sal_Unicode(' '); |
| rText += SVX_RESSTR(GetMetricId(ePresUnit)); |
| rText += cpDelim; |
| rText += SVX_RESSTR(RID_SVXITEMS_MARGIN_BOTTOM); |
| rText += GetMetricText( (long)nBottomMargin, eCoreUnit, ePresUnit, pIntl ); |
| rText += sal_Unicode(' '); |
| rText += SVX_RESSTR(GetMetricId(ePresUnit)); |
| return SFX_ITEM_PRESENTATION_COMPLETE; |
| } |
| default: ; //prevent warning |
| } |
| #endif |
| return SFX_ITEM_PRESENTATION_NONE; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| int SvxMarginItem::operator==( const SfxPoolItem& rItem ) const |
| { |
| DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal type" ); |
| |
| return ( ( nLeftMargin == ( (SvxMarginItem&)rItem ).nLeftMargin ) && |
| ( nTopMargin == ( (SvxMarginItem&)rItem ).nTopMargin ) && |
| ( nRightMargin == ( (SvxMarginItem&)rItem ).nRightMargin ) && |
| ( nBottomMargin == ( (SvxMarginItem&)rItem ).nBottomMargin ) ); |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| SfxPoolItem* SvxMarginItem::Clone( SfxItemPool* ) const |
| { |
| return new SvxMarginItem(*this); |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| SfxPoolItem* SvxMarginItem::Create( SvStream& rStream, sal_uInt16 ) const |
| { |
| sal_Int16 nLeft; |
| sal_Int16 nTop; |
| sal_Int16 nRight; |
| sal_Int16 nBottom; |
| rStream >> nLeft; |
| rStream >> nTop; |
| rStream >> nRight; |
| rStream >> nBottom; |
| return new SvxMarginItem( nLeft, nTop, nRight, nBottom, Which() ); |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| SvStream& SvxMarginItem::Store( SvStream &rStream, sal_uInt16 /*nItemVersion*/) const |
| { |
| rStream << nLeftMargin; |
| rStream << nTopMargin; |
| rStream << nRightMargin; |
| rStream << nBottomMargin; |
| return rStream; |
| } |
| |
| |
| //------------------------------------------------------------------------ |
| |
| sal_Bool SvxMarginItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const |
| { |
| sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); |
| nMemberId &= ~CONVERT_TWIPS; |
| switch ( nMemberId ) |
| { |
| // jetzt alles signed |
| case MID_MARGIN_L_MARGIN: |
| rVal <<= (sal_Int32)( bConvert ? TWIP_TO_MM100(nLeftMargin) : nLeftMargin ); |
| break; |
| case MID_MARGIN_R_MARGIN: |
| rVal <<= (sal_Int32)( bConvert ? TWIP_TO_MM100(nRightMargin) : nRightMargin ); |
| break; |
| case MID_MARGIN_UP_MARGIN: |
| rVal <<= (sal_Int32)( bConvert ? TWIP_TO_MM100(nTopMargin) : nTopMargin ); |
| break; |
| case MID_MARGIN_LO_MARGIN: |
| rVal <<= (sal_Int32)( bConvert ? TWIP_TO_MM100(nBottomMargin) : nBottomMargin ); |
| break; |
| default: |
| DBG_ERROR("unknown MemberId"); |
| return sal_False; |
| } |
| return sal_True; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| sal_Bool SvxMarginItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId ) |
| { |
| sal_Bool bConvert = ( ( nMemberId & CONVERT_TWIPS ) != 0 ); |
| long nMaxVal = bConvert ? TWIP_TO_MM100(SHRT_MAX) : SHRT_MAX; // Members sind sal_Int16 |
| sal_Int32 nVal = 0; |
| if(!(rVal >>= nVal) || (nVal > nMaxVal)) |
| return sal_False; |
| |
| switch ( nMemberId & ~CONVERT_TWIPS ) |
| { |
| case MID_MARGIN_L_MARGIN: |
| nLeftMargin = (sal_Int16)( bConvert ? MM100_TO_TWIP(nVal) : nVal ); |
| break; |
| case MID_MARGIN_R_MARGIN: |
| nRightMargin = (sal_Int16)( bConvert ? MM100_TO_TWIP(nVal) : nVal ); |
| break; |
| case MID_MARGIN_UP_MARGIN: |
| nTopMargin = (sal_Int16)( bConvert ? MM100_TO_TWIP(nVal) : nVal ); |
| break; |
| case MID_MARGIN_LO_MARGIN: |
| nBottomMargin = (sal_Int16)( bConvert ? MM100_TO_TWIP(nVal) : nVal ); |
| break; |
| default: |
| DBG_ERROR("unknown MemberId"); |
| return sal_False; |
| } |
| return sal_True; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| sal_Bool SvxMarginItem::SetLeftMargin( sal_Int16 nLeft ) |
| { |
| nLeftMargin = nLeft; |
| return sal_True; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| sal_Bool SvxMarginItem::SetTopMargin( sal_Int16 nTop ) |
| { |
| nTopMargin = nTop; |
| return sal_True; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| sal_Bool SvxMarginItem::SetRightMargin( sal_Int16 nRight ) |
| { |
| nRightMargin = nRight; |
| return sal_True; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| sal_Bool SvxMarginItem::SetBottomMargin( sal_Int16 nBottom ) |
| { |
| nBottomMargin = nBottom; |
| return sal_True; |
| } |
| |
| |