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/intitem.hxx> 28 #include <com/sun/star/uno/Any.hxx> 29 #include <tools/bigint.hxx> 30 #include <tools/stream.hxx> 31 #include <svl/metitem.hxx> 32 33 //============================================================================ 34 // 35 // class SfxByteItem 36 // 37 //============================================================================ 38 39 TYPEINIT1_AUTOFACTORY(SfxByteItem, CntByteItem); 40 41 //============================================================================ 42 // virtual 43 SfxPoolItem * SfxByteItem::Create(SvStream & rStream, sal_uInt16) const 44 { 45 short nValue = 0; 46 rStream >> nValue; 47 return new SfxByteItem(Which(), sal_uInt8(nValue)); 48 } 49 50 //============================================================================ 51 // 52 // class SfxInt16Item 53 // 54 //============================================================================ 55 56 DBG_NAME(SfxInt16Item); 57 58 //============================================================================ 59 TYPEINIT1_AUTOFACTORY(SfxInt16Item, SfxPoolItem); 60 61 //============================================================================ 62 SfxInt16Item::SfxInt16Item(sal_uInt16 which, SvStream & rStream): 63 SfxPoolItem(which) 64 { 65 DBG_CTOR(SfxInt16Item, 0); 66 short nTheValue = 0; 67 rStream >> nTheValue; 68 m_nValue = nTheValue; 69 } 70 71 //============================================================================ 72 // virtual 73 int SfxInt16Item::operator ==(const SfxPoolItem & rItem) const 74 { 75 DBG_CHKTHIS(SfxInt16Item, 0); 76 DBG_ASSERT(SfxPoolItem::operator ==(rItem), "unequal type"); 77 return m_nValue == SAL_STATIC_CAST(const SfxInt16Item *, &rItem)-> 78 m_nValue; 79 } 80 81 //============================================================================ 82 // virtual 83 int SfxInt16Item::Compare(const SfxPoolItem & rWith) const 84 { 85 DBG_CHKTHIS(SfxInt16Item, 0); 86 DBG_ASSERT(SfxPoolItem::operator ==(rWith), "unequal type"); 87 return SAL_STATIC_CAST(const SfxInt16Item *, &rWith)->m_nValue 88 < m_nValue ? 89 -1 : 90 SAL_STATIC_CAST(const SfxInt16Item *, &rWith)->m_nValue 91 == m_nValue ? 92 0 : 1; 93 } 94 95 //============================================================================ 96 // virtual 97 SfxItemPresentation SfxInt16Item::GetPresentation(SfxItemPresentation, 98 SfxMapUnit, SfxMapUnit, 99 XubString & rText, 100 const IntlWrapper *) const 101 { 102 DBG_CHKTHIS(SfxInt16Item, 0); 103 rText = UniString::CreateFromInt32(m_nValue); 104 return SFX_ITEM_PRESENTATION_NAMELESS; 105 } 106 107 108 //============================================================================ 109 // virtual 110 sal_Bool SfxInt16Item::QueryValue(com::sun::star::uno::Any& rVal, sal_uInt8) const 111 { 112 sal_Int16 nValue = m_nValue; 113 rVal <<= nValue; 114 return sal_True; 115 } 116 117 //============================================================================ 118 // virtual 119 sal_Bool SfxInt16Item::PutValue(const com::sun::star::uno::Any& rVal, sal_uInt8 ) 120 { 121 sal_Int16 nValue = sal_Int16(); 122 if (rVal >>= nValue) 123 { 124 m_nValue = nValue; 125 return sal_True; 126 } 127 128 DBG_ERROR( "SfxInt16Item::PutValue - Wrong type!" ); 129 return sal_False; 130 } 131 132 //============================================================================ 133 // virtual 134 SfxPoolItem * SfxInt16Item::Create(SvStream & rStream, sal_uInt16) const 135 { 136 DBG_CHKTHIS(SfxInt16Item, 0); 137 return new SfxInt16Item(Which(), rStream); 138 } 139 140 //============================================================================ 141 // virtual 142 SvStream & SfxInt16Item::Store(SvStream & rStream, sal_uInt16) const 143 { 144 DBG_CHKTHIS(SfxInt16Item, 0); 145 rStream << short(m_nValue); 146 return rStream; 147 } 148 149 //============================================================================ 150 SfxPoolItem * SfxInt16Item::Clone(SfxItemPool *) const 151 { 152 DBG_CHKTHIS(SfxInt16Item, 0); 153 return new SfxInt16Item(*this); 154 } 155 156 //============================================================================ 157 sal_Int16 SfxInt16Item::GetMin() const 158 { 159 DBG_CHKTHIS(SfxInt16Item, 0); 160 return -32768; 161 } 162 163 //============================================================================ 164 sal_Int16 SfxInt16Item::GetMax() const 165 { 166 DBG_CHKTHIS(SfxInt16Item, 0); 167 return 32767; 168 } 169 170 //============================================================================ 171 SfxFieldUnit SfxInt16Item::GetUnit() const 172 { 173 DBG_CHKTHIS(SfxInt16Item, 0); 174 return SFX_FUNIT_NONE; 175 } 176 177 //============================================================================ 178 // 179 // class SfxUInt16Item 180 // 181 //============================================================================ 182 183 TYPEINIT1_AUTOFACTORY(SfxUInt16Item, CntUInt16Item); 184 185 186 //============================================================================ 187 // 188 // class SfxInt32Item 189 // 190 //============================================================================ 191 192 TYPEINIT1_AUTOFACTORY(SfxInt32Item, CntInt32Item); 193 194 195 //============================================================================ 196 // 197 // class SfxUInt32Item 198 // 199 //============================================================================ 200 201 TYPEINIT1_AUTOFACTORY(SfxUInt32Item, CntUInt32Item); 202 203 204 //============================================================================ 205 // 206 // class SfxMetricItem 207 // 208 //============================================================================ 209 210 DBG_NAME(SfxMetricItem); 211 212 //============================================================================ 213 TYPEINIT1_AUTOFACTORY(SfxMetricItem, SfxInt32Item); 214 215 //============================================================================ 216 SfxMetricItem::SfxMetricItem(sal_uInt16 which, sal_uInt32 nValue): 217 SfxInt32Item(which, nValue) 218 { 219 DBG_CTOR(SfxMetricItem, 0); 220 } 221 222 //============================================================================ 223 SfxMetricItem::SfxMetricItem(sal_uInt16 which, SvStream & rStream): 224 SfxInt32Item(which, rStream) 225 { 226 DBG_CTOR(SfxMetricItem, 0); 227 } 228 229 //============================================================================ 230 SfxMetricItem::SfxMetricItem(const SfxMetricItem & rItem): 231 SfxInt32Item(rItem) 232 { 233 DBG_CTOR(SfxMetricItem, 0); 234 } 235 236 //============================================================================ 237 // virtual 238 int SfxMetricItem::ScaleMetrics(long nMult, long nDiv) 239 { 240 BigInt aTheValue(GetValue()); 241 aTheValue *= nMult; 242 aTheValue += nDiv / 2; 243 aTheValue /= nDiv; 244 SetValue(aTheValue); 245 return 1; 246 } 247 248 //============================================================================ 249 // virtual 250 int SfxMetricItem::HasMetrics() const 251 { 252 return 1; 253 } 254 255