1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_svl.hxx" 26 27 #include <svl/imageitm.hxx> 28 #include <com/sun/star/uno/Sequence.hxx> 29 30 TYPEINIT1( SfxImageItem, SfxInt16Item ); 31 32 struct SfxImageItem_Impl 33 { 34 String aURL; 35 long nAngle; 36 sal_Bool bMirrored; 37 int operator == ( const SfxImageItem_Impl& rOther ) const 38 { return nAngle == rOther.nAngle && bMirrored == rOther.bMirrored; } 39 }; 40 41 //--------------------------------------------------------- 42 43 SfxImageItem::SfxImageItem( sal_uInt16 which, sal_uInt16 nImage ) 44 : SfxInt16Item( which, nImage ) 45 { 46 pImp = new SfxImageItem_Impl; 47 pImp->nAngle = 0; 48 pImp->bMirrored = sal_False; 49 } 50 51 SfxImageItem::SfxImageItem( sal_uInt16 which, const String& rURL ) 52 : SfxInt16Item( which, 0 ) 53 { 54 pImp = new SfxImageItem_Impl; 55 pImp->nAngle = 0; 56 pImp->bMirrored = sal_False; 57 pImp->aURL = rURL; 58 } 59 60 SfxImageItem::SfxImageItem( const SfxImageItem& rItem ) 61 : SfxInt16Item( rItem ) 62 { 63 pImp = new SfxImageItem_Impl( *(rItem.pImp) ); 64 } 65 66 //--------------------------------------------------------- 67 SfxImageItem::~SfxImageItem() 68 { 69 delete pImp; 70 } 71 72 //--------------------------------------------------------- 73 74 SfxPoolItem* SfxImageItem::Clone( SfxItemPool* ) const 75 { 76 return new SfxImageItem( *this ); 77 } 78 79 //--------------------------------------------------------- 80 81 int SfxImageItem::operator==( const SfxPoolItem& rItem ) const 82 { 83 return( ((SfxImageItem&) rItem).GetValue() == GetValue() && (*pImp == *(((SfxImageItem&)rItem).pImp) ) ); 84 } 85 86 sal_Bool SfxImageItem::QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 ) const 87 { 88 ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > aSeq( 4 ); 89 aSeq[0] = ::com::sun::star::uno::makeAny( GetValue() ); 90 aSeq[1] = ::com::sun::star::uno::makeAny( pImp->nAngle ); 91 aSeq[2] = ::com::sun::star::uno::makeAny( pImp->bMirrored ); 92 aSeq[3] = ::com::sun::star::uno::makeAny( rtl::OUString( pImp->aURL )); 93 94 rVal = ::com::sun::star::uno::makeAny( aSeq ); 95 return sal_True; 96 } 97 98 sal_Bool SfxImageItem::PutValue( const com::sun::star::uno::Any& rVal, sal_uInt8 ) 99 { 100 ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > aSeq; 101 if (( rVal >>= aSeq ) && ( aSeq.getLength() == 4 )) 102 { 103 sal_Int16 nVal = sal_Int16(); 104 rtl::OUString aURL; 105 if ( aSeq[0] >>= nVal ) 106 SetValue( nVal ); 107 aSeq[1] >>= pImp->nAngle; 108 aSeq[2] >>= pImp->bMirrored; 109 if ( aSeq[3] >>= aURL ) 110 pImp->aURL = aURL; 111 return sal_True; 112 } 113 114 return sal_False; 115 } 116 117 void SfxImageItem::SetRotation( long nValue ) 118 { 119 pImp->nAngle = nValue; 120 } 121 122 long SfxImageItem::GetRotation() const 123 { 124 return pImp->nAngle; 125 } 126 127 void SfxImageItem::SetMirrored( sal_Bool bSet ) 128 { 129 pImp->bMirrored = bSet; 130 } 131 132 sal_Bool SfxImageItem::IsMirrored() const 133 { 134 return pImp->bMirrored; 135 } 136 137 String SfxImageItem::GetURL() const 138 { 139 return pImp->aURL; 140 } 141 142