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 #include "PageBordersHandler.hxx" 24 25 #include <dmapper/DomainMapper.hxx> 26 #include <resourcemodel/ResourceModelHelper.hxx> 27 #include <DomainMapper_Impl.hxx> 28 #include <ConversionHelper.hxx> 29 #include <NumberingManager.hxx> 30 #include <ThemeTable.hxx> 31 #include <ModelEventListener.hxx> 32 #include <MeasureHandler.hxx> 33 #include <OLEHandler.hxx> 34 #include <i18npool/mslangid.hxx> 35 #include <i18npool/paper.hxx> 36 #include <ooxml/OOXMLFastTokens.hxx> 37 #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp> 38 #include <com/sun/star/document/XOOXMLDocumentPropertiesImporter.hpp> 39 #include <com/sun/star/text/HoriOrientation.hpp> 40 #include <com/sun/star/text/RelOrientation.hpp> 41 #include <com/sun/star/text/VertOrientation.hpp> 42 #include <com/sun/star/text/WrapTextMode.hpp> 43 #include <com/sun/star/text/SizeType.hpp> 44 #include <com/sun/star/text/XEndnotesSupplier.hpp> 45 #include <com/sun/star/text/XFootnotesSupplier.hpp> 46 #include <com/sun/star/text/XLineNumberingProperties.hpp> 47 #include <com/sun/star/text/XTextDocument.hpp> 48 #include <com/sun/star/text/XTextCursor.hpp> 49 #include <com/sun/star/text/XTextPortionAppend.hpp> 50 #include <com/sun/star/text/XParagraphAppend.hpp> 51 #include <com/sun/star/text/FontEmphasis.hpp> 52 #include <com/sun/star/awt/FontRelief.hpp> 53 #include <com/sun/star/awt/FontWeight.hpp> 54 #include <com/sun/star/awt/FontUnderline.hpp> 55 #include <com/sun/star/awt/FontStrikeout.hpp> 56 #include <com/sun/star/awt/FontSlant.hpp> 57 #include <com/sun/star/container/XIndexReplace.hpp> 58 #include <com/sun/star/drawing/XShape.hpp> 59 #include <com/sun/star/document/XEventBroadcaster.hpp> 60 #include <com/sun/star/style/ParagraphAdjust.hpp> 61 #include <com/sun/star/style/BreakType.hpp> 62 #include <com/sun/star/style/CaseMap.hpp> 63 #include <com/sun/star/style/LineSpacing.hpp> 64 #include <com/sun/star/style/LineSpacingMode.hpp> 65 #include <com/sun/star/table/BorderLine.hpp> 66 #include <com/sun/star/text/TextGridMode.hpp> 67 #include <com/sun/star/text/XDocumentIndexesSupplier.hpp> 68 #include <com/sun/star/text/WritingMode.hpp> 69 #include <com/sun/star/text/WritingMode2.hpp> 70 #include <com/sun/star/text/XFootnote.hpp> 71 #include <com/sun/star/style/NumberingType.hpp> 72 #include <comphelper/types.hxx> 73 #include <comphelper/storagehelper.hxx> 74 75 #include <rtl/ustrbuf.hxx> 76 #include <boost/shared_ptr.hpp> 77 #include <com/sun/star/uno/Any.hxx> 78 #include <tools/color.hxx> 79 #include <BorderHandler.hxx> 80 #include <CellColorHandler.hxx> 81 #include <SectionColumnHandler.hxx> 82 #include <vector> 83 #include <iostream> 84 85 #if OSL_DEBUG_LEVEL > 0 86 #include <resourcemodel/QNameToString.hxx> 87 #endif 88 89 #include <resourcemodel/TagLogger.hxx> 90 91 using namespace ::com::sun::star; 92 using namespace ::rtl; 93 94 namespace writerfilter { 95 96 using resourcemodel::resolveSprmProps; 97 using resourcemodel::resolveAttributeProperties; 98 99 namespace dmapper{ 100 101 TagLogger::Pointer_t dmapper_logger(TagLogger::getInstance("DOMAINMAPPER")); 102 103 /* ---- Fridrich's mess begins here ---- */ 104 struct _PageSz 105 { 106 sal_Int32 code; 107 sal_Int32 h; 108 bool orient; 109 sal_Int32 w; 110 } CT_PageSz; 111 112 113 /* ---- Fridrich's mess (hopefully) ends here ---- */ 114 115 /*-- 09.06.2006 09:52:11--------------------------------------------------- 116 117 -----------------------------------------------------------------------*/ 118 DomainMapper::DomainMapper( const uno::Reference< uno::XComponentContext >& xContext, 119 uno::Reference< io::XInputStream > xInputStream, 120 uno::Reference< lang::XComponent > xModel, 121 SourceDocumentType eDocumentType) : 122 LoggedProperties(dmapper_logger, "DomainMapper"), 123 LoggedTable(dmapper_logger, "DomainMapper"), 124 LoggedStream(dmapper_logger, "DomainMapper"), 125 m_pImpl( new DomainMapper_Impl( *this, xContext, xModel, eDocumentType )), 126 mnBackgroundColor(0), mbIsHighlightSet(false) 127 { 128 // #i24363# tab stops relative to indent 129 m_pImpl->SetDocumentSettingsProperty( 130 PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_TABS_RELATIVE_TO_INDENT ), 131 uno::makeAny( false ) ); 132 133 m_pImpl->SetDocumentSettingsProperty( 134 PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_ADD_PARA_TABLE_SPACING ), 135 uno::makeAny( false ) ); 136 137 //import document properties 138 139 try 140 { 141 uno::Reference< lang::XMultiServiceFactory > xFactory(xContext->getServiceManager(), uno::UNO_QUERY_THROW); 142 uno::Reference< embed::XStorage > xDocumentStorage = 143 (comphelper::OStorageHelper::GetStorageOfFormatFromInputStream(OFOPXML_STORAGE_FORMAT_STRING, xInputStream)); 144 145 uno::Reference< uno::XInterface > xTemp = xContext->getServiceManager()->createInstanceWithContext( 146 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.OOXMLDocumentPropertiesImporter")), 147 xContext); 148 149 uno::Reference< document::XOOXMLDocumentPropertiesImporter > xImporter( xTemp, uno::UNO_QUERY_THROW ); 150 uno::Reference< document::XDocumentPropertiesSupplier > xPropSupplier( xModel, uno::UNO_QUERY_THROW); 151 xImporter->importProperties( xDocumentStorage, xPropSupplier->getDocumentProperties() ); 152 } 153 catch( const uno::Exception& rEx ) 154 { 155 (void)rEx; 156 } 157 } 158 /*-- 09.06.2006 09:52:12--------------------------------------------------- 159 160 -----------------------------------------------------------------------*/ 161 DomainMapper::~DomainMapper() 162 { 163 try 164 { 165 uno::Reference< text::XDocumentIndexesSupplier> xIndexesSupplier( m_pImpl->GetTextDocument(), uno::UNO_QUERY ); 166 uno::Reference< container::XIndexAccess > xIndexes = xIndexesSupplier->getDocumentIndexes(); 167 sal_Int32 nIndexes = xIndexes->getCount(); 168 if( nIndexes ) 169 { 170 //index update has to wait until first view is created 171 uno::Reference< document::XEventBroadcaster > xBroadcaster(xIndexesSupplier, uno::UNO_QUERY); 172 xBroadcaster->addEventListener(uno::Reference< document::XEventListener >(new ModelEventListener)); 173 } 174 175 176 // Apply the document settings after everything else 177 m_pImpl->GetSettingsTable()->ApplyProperties( m_pImpl->GetTextDocument( ) ); 178 } 179 catch( const uno::Exception& rEx ) 180 { 181 (void)rEx; 182 } 183 184 delete m_pImpl; 185 } 186 /*-- 09.06.2006 09:52:12--------------------------------------------------- 187 188 -----------------------------------------------------------------------*/ 189 void DomainMapper::lcl_attribute(Id nName, Value & val) 190 { 191 static ::rtl::OUString sLocalBookmarkName; 192 sal_Int32 nIntValue = val.getInt(); 193 rtl::OUString sStringValue = val.getString(); 194 195 SectionPropertyMap * pSectionContext = m_pImpl->GetSectionContext(); 196 197 // printf ( "DomainMapper::attribute(0x%.4x, 0x%.4x) [%s]\n", (unsigned int)nName, (unsigned int)nIntValue, ::rtl::OUStringToOString(sStringValue, RTL_TEXTENCODING_DONTKNOW).getStr()); 198 if( nName >= NS_rtf::LN_WIDENT && nName <= NS_rtf::LN_LCBSTTBFUSSR ) 199 m_pImpl->GetFIB().SetData( nName, nIntValue ); 200 else //if( !m_pImpl->getTableManager().attribute( nName, val) ) 201 { 202 203 204 /* WRITERFILTERSTATUS: table: attributedata */ 205 switch( nName ) 206 { 207 /* attributes to be ignored */ 208 case NS_rtf::LN_UNUSED1_3: 209 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 210 211 case NS_rtf::LN_UNUSED1_7: 212 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 213 214 case NS_rtf::LN_UNUSED8_3: 215 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 216 217 case NS_rtf::LN_FWRITERESERVATION: 218 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 219 220 case NS_rtf::LN_FLOADOVERRIDE: 221 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 222 223 case NS_rtf::LN_FFAREAST: 224 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 225 226 case NS_rtf::LN_FCRYPTO: 227 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 228 229 case NS_rtf::LN_NFIBBACK: 230 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 231 232 case NS_rtf::LN_LKEY: 233 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 234 235 case NS_rtf::LN_ENVR: 236 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 237 238 case NS_rtf::LN_FMAC: 239 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 240 241 case NS_rtf::LN_FWORD97SAVED: 242 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 243 244 case NS_rtf::LN_FCMAC: 245 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 246 247 case NS_rtf::LN_PNFBPCHPFIRST_W6: 248 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 249 250 case NS_rtf::LN_PNCHPFIRST_W6: 251 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 252 253 case NS_rtf::LN_CPNBTECHP_W6: 254 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 255 256 case NS_rtf::LN_PNFBPPAPFIRST_W6: 257 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 258 259 case NS_rtf::LN_PNPAPFIRST_W6: 260 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 261 262 case NS_rtf::LN_CPNBTEPAP_W6: 263 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 264 265 case NS_rtf::LN_PNFBPLVCFIRST_W6: 266 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 267 268 case NS_rtf::LN_PNLVCFIRST_W6: 269 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 270 271 case NS_rtf::LN_CPNBTELVC_W6: 272 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 273 274 case NS_rtf::LN_CBMAC: 275 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 276 277 case NS_rtf::LN_LPRODUCTCREATED: 278 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 279 280 case NS_rtf::LN_LPRODUCTREVISED: 281 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 282 283 case NS_rtf::LN_CCPMCR: 284 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 285 286 case NS_rtf::LN_PNFBPCHPFIRST: 287 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 288 289 case NS_rtf::LN_PNFBPPAPFIRST: 290 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 291 292 case NS_rtf::LN_PNFBPLVCFIRST: 293 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 294 295 case NS_rtf::LN_FCISLANDFIRST: 296 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 297 298 case NS_rtf::LN_FCISLANDLIM: 299 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 300 301 case NS_rtf::LN_FCSTSHFORIG: 302 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 303 304 case NS_rtf::LN_LCBSTSHFORIG: 305 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 306 307 case NS_rtf::LN_FCPLCFPAD: 308 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 309 310 case NS_rtf::LN_LCBPLCFPAD: 311 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 312 313 case NS_rtf::LN_FCSTTBFGLSY: 314 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 315 316 case NS_rtf::LN_LCBSTTBFGLSY: 317 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 318 319 case NS_rtf::LN_FCPLCFGLSY: 320 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 321 322 case NS_rtf::LN_LCBPLCFGLSY: 323 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 324 325 case NS_rtf::LN_FCPLCFSEA: 326 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 327 328 case NS_rtf::LN_LCBPLCFSEA: 329 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 330 331 case NS_rtf::LN_FCPLCFFLDMCR: 332 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 333 334 case NS_rtf::LN_LCBPLCFFLDMCR: 335 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 336 337 case NS_rtf::LN_FCCMDS: 338 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 339 340 case NS_rtf::LN_LCBCMDS: 341 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 342 343 case NS_rtf::LN_FCPLCMCR: 344 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 345 346 case NS_rtf::LN_LCBPLCMCR: 347 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 348 349 case NS_rtf::LN_FCSTTBFMCR: 350 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 351 352 case NS_rtf::LN_LCBSTTBFMCR: 353 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 354 355 case NS_rtf::LN_FCPRDRVR: 356 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 357 358 case NS_rtf::LN_LCBPRDRVR: 359 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 360 361 case NS_rtf::LN_FCPRENVPORT: 362 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 363 364 case NS_rtf::LN_LCBPRENVPORT: 365 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 366 367 case NS_rtf::LN_FCPRENVLAND: 368 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 369 370 case NS_rtf::LN_LCBPRENVLAND: 371 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 372 373 case NS_rtf::LN_FCWSS: 374 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 375 376 case NS_rtf::LN_LCBWSS: 377 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 378 379 case NS_rtf::LN_FCPLCFPGDFTN: 380 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 381 382 case NS_rtf::LN_LCBPLCFPGDFTN: 383 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 384 385 case NS_rtf::LN_FCAUTOSAVESOURCE: 386 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 387 388 case NS_rtf::LN_LCBAUTOSAVESOURCE: 389 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 390 391 case NS_rtf::LN_FCPLCDOAMOM: 392 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 393 394 case NS_rtf::LN_LCBPLCDOAMOM: 395 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 396 397 case NS_rtf::LN_FCPLCDOAHDR: 398 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 399 400 case NS_rtf::LN_LCBPLCDOAHDR: 401 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 402 403 case NS_rtf::LN_FCPMS: 404 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 405 406 case NS_rtf::LN_LCBPMS: 407 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 408 409 case NS_rtf::LN_FCPLCFPGDEDN: 410 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 411 412 case NS_rtf::LN_LCBPLCFPGDEDN: 413 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 414 415 case NS_rtf::LN_FCPLCFWKB: 416 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 417 418 case NS_rtf::LN_LCBPLCFWKB: 419 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 420 421 case NS_rtf::LN_FCPLCFSPL: 422 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 423 424 case NS_rtf::LN_LCBPLCFSPL: 425 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 426 427 case NS_rtf::LN_FCSTWUSER: 428 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 429 430 case NS_rtf::LN_LCBSTWUSER: 431 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 432 433 case NS_rtf::LN_FCUNUSED: 434 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 435 436 case NS_rtf::LN_LCBUNUSED: 437 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 438 439 case NS_rtf::LN_FCSTTBFINTLFLD: 440 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 441 442 case NS_rtf::LN_LCBSTTBFINTLFLD: 443 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 444 445 case NS_rtf::LN_FCROUTESLIP: 446 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 447 448 case NS_rtf::LN_LCBROUTESLIP: 449 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 450 451 case NS_rtf::LN_FCSTTBSAVEDBY: 452 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 453 454 case NS_rtf::LN_LCBSTTBSAVEDBY: 455 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 456 457 case NS_rtf::LN_FCSTTBFNM: 458 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 459 460 case NS_rtf::LN_LCBSTTBFNM: 461 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 462 463 case NS_rtf::LN_FCDOCUNDO: 464 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 465 466 case NS_rtf::LN_LCBDOCUNDO: 467 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 468 469 case NS_rtf::LN_FCRGBUSE: 470 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 471 472 case NS_rtf::LN_LCBRGBUSE: 473 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 474 475 case NS_rtf::LN_FCUSP: 476 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 477 478 case NS_rtf::LN_LCBUSP: 479 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 480 481 case NS_rtf::LN_FCUSKF: 482 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 483 484 case NS_rtf::LN_LCBUSKF: 485 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 486 487 case NS_rtf::LN_FCPLCUPCRGBUSE: 488 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 489 490 case NS_rtf::LN_LCBPLCUPCRGBUSE: 491 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 492 493 case NS_rtf::LN_FCPLCUPCUSP: 494 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 495 496 case NS_rtf::LN_LCBPLCUPCUSP: 497 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 498 499 case NS_rtf::LN_FCPLGOSL: 500 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 501 502 case NS_rtf::LN_LCBPLGOSL: 503 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 504 505 case NS_rtf::LN_FCPLCOCX: 506 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 507 508 case NS_rtf::LN_LCBPLCOCX: 509 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 510 511 case NS_rtf::LN_DWLOWDATETIME: 512 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 513 514 case NS_rtf::LN_DWHIGHDATETIME: 515 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 516 517 case NS_rtf::LN_FCPLCASUMY: 518 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 519 520 case NS_rtf::LN_LCBPLCASUMY: 521 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 522 523 case NS_rtf::LN_FCPLCFGRAM: 524 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 525 526 case NS_rtf::LN_LCBPLCFGRAM: 527 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 528 529 case NS_rtf::LN_FCSTTBFUSSR: 530 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 531 break; 532 533 case NS_rtf::LN_ISTD: //index of applied style 534 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 535 { 536 //search for the style with the given id and apply it 537 //as CharStyleName or ParaStyleName 538 //if the style is a user defined style then it must have an ISTD - built-in styles might not have it 539 StyleSheetTablePtr pStyleSheets = m_pImpl->GetStyleSheetTable(); 540 ::rtl::OUString sValue = ::rtl::OUString::valueOf(nIntValue, 16); 541 const StyleSheetEntryPtr pEntry = pStyleSheets->FindStyleSheetByISTD(sValue); 542 if( pEntry.get( ) ) 543 { 544 bool bParaStyle = (pEntry->nStyleTypeCode == STYLE_TYPE_PARA); 545 if(bParaStyle) 546 m_pImpl->SetCurrentParaStyleId(::rtl::OUString::valueOf(static_cast<sal_Int32>(nIntValue), 16)); 547 if (m_pImpl->GetTopContext() && m_pImpl->GetTopContextType() != CONTEXT_SECTION) 548 m_pImpl->GetTopContext()->Insert( 549 bParaStyle ? 550 PROP_PARA_STYLE_NAME : PROP_CHAR_STYLE_NAME, 551 true, 552 uno::makeAny( 553 m_pImpl->GetStyleSheetTable()->ConvertStyleName( pEntry->sStyleName ) ) ); 554 } 555 } 556 break; 557 case NS_rtf::LN_ISTARTAT: 558 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 559 break; 560 case NS_rtf::LN_NFC: 561 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 562 break; 563 case NS_rtf::LN_FLEGAL: 564 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 565 break; 566 case NS_rtf::LN_FNORESTART: 567 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 568 break; 569 case NS_rtf::LN_FIDENTSAV: 570 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 571 break; 572 case NS_rtf::LN_FCONVERTED: 573 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 574 break; 575 case NS_rtf::LN_FTENTATIVE: 576 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 577 break; 578 case NS_rtf::LN_RGBXCHNUMS: 579 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 580 break; 581 case NS_rtf::LN_IXCHFOLLOW: 582 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 583 break; 584 case NS_rtf::LN_DXASPACE: 585 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 586 break; 587 case NS_rtf::LN_DXAINDENT: 588 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 589 break; 590 case NS_rtf::LN_CBGRPPRLCHPX: 591 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 592 break; 593 case NS_rtf::LN_CBGRPPRLPAPX: 594 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 595 break; 596 case NS_rtf::LN_LSID: 597 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 598 break; 599 case NS_rtf::LN_TPLC: 600 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 601 break; 602 case NS_rtf::LN_RGISTD: 603 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 604 break; 605 case NS_rtf::LN_FSIMPLELIST: 606 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 607 break; 608 case NS_rtf::LN_fAutoNum: 609 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 610 break; 611 case NS_rtf::LN_fHybrid: 612 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 613 break; 614 case NS_rtf::LN_ILVL: 615 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 616 break; 617 case NS_rtf::LN_FSTARTAT: 618 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 619 break; 620 case NS_rtf::LN_FFORMATTING: 621 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 622 break; 623 case NS_rtf::LN_UNSIGNED4_6: 624 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 625 break; 626 case NS_rtf::LN_clfolvl: 627 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 628 break; 629 case NS_rtf::LN_CBFFNM1: 630 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 631 break; 632 case NS_rtf::LN_PRQ: 633 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 634 break; 635 case NS_rtf::LN_FTRUETYPE: 636 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 637 break; 638 case NS_rtf::LN_FF: 639 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 640 break; 641 case NS_rtf::LN_WWEIGHT: 642 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 643 break; 644 case NS_rtf::LN_CHS: 645 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 646 647 { 648 m_pImpl->GetFIB().SetLNCHS( nIntValue ); 649 } 650 break; 651 case NS_rtf::LN_IXCHSZALT: 652 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 653 break; 654 case NS_rtf::LN_PANOSE: 655 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 656 break; 657 case NS_rtf::LN_FS: 658 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 659 break; 660 case NS_rtf::LN_STI: 661 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 662 break; 663 case NS_rtf::LN_FSCRATCH: 664 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 665 break; 666 case NS_rtf::LN_FINVALHEIGHT: 667 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 668 break; 669 case NS_rtf::LN_FHASUPE: 670 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 671 break; 672 case NS_rtf::LN_FMASSCOPY: 673 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 674 break; 675 case NS_rtf::LN_SGC: 676 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 677 break; 678 case NS_rtf::LN_ISTDBASE: 679 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 680 break; 681 case NS_rtf::LN_CUPX: 682 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 683 break; 684 case NS_rtf::LN_ISTDNEXT: 685 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 686 break; 687 case NS_rtf::LN_BCHUPE: 688 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 689 break; 690 case NS_rtf::LN_FAUTOREDEF: 691 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 692 break; 693 case NS_rtf::LN_FHIDDEN: 694 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 695 break; 696 case NS_rtf::LN_CSTD: 697 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 698 break; 699 case NS_rtf::LN_CBSTDBASEINFILE: 700 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 701 break; 702 case NS_rtf::LN_FSTDSTYLENAMESWRITTEN: 703 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 704 break; 705 case NS_rtf::LN_UNUSED4_2: 706 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 707 break; 708 case NS_rtf::LN_STIMAXWHENSAVED: 709 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 710 break; 711 case NS_rtf::LN_ISTDMAXFIXEDWHENSAVED: 712 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 713 break; 714 case NS_rtf::LN_NVERBUILTINNAMESWHENSAVED: 715 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 716 break; 717 case NS_rtf::LN_RGFTCSTANDARDCHPSTSH: 718 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 719 break; 720 case NS_rtf::LN_WIDENT: 721 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 722 723 case NS_rtf::LN_NFIB: 724 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 725 726 case NS_rtf::LN_NPRODUCT: 727 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 728 case NS_rtf::LN_LID: 729 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 730 case NS_rtf::LN_PNNEXT: 731 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 732 case NS_rtf::LN_FDOT: 733 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 734 case NS_rtf::LN_FGLSY: 735 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 736 case NS_rtf::LN_FCOMPLEX: 737 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 738 case NS_rtf::LN_FHASPIC: 739 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 740 741 case NS_rtf::LN_CQUICKSAVES: 742 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 743 744 case NS_rtf::LN_FENCRYPTED: 745 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 746 747 case NS_rtf::LN_FWHICHTBLSTM: 748 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 749 750 case NS_rtf::LN_FREADONLYRECOMMENDED: 751 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 752 753 case NS_rtf::LN_FEXTCHAR: 754 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 755 756 case NS_rtf::LN_FEMPTYSPECIAL: 757 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 758 759 case NS_rtf::LN_FLOADOVERRIDEPAGE: 760 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 761 762 case NS_rtf::LN_FFUTURESAVEDUNDO: 763 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 764 765 case NS_rtf::LN_FSPARE0: 766 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 767 768 case NS_rtf::LN_CHSTABLES: 769 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 770 771 case NS_rtf::LN_FCMIN: 772 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 773 774 case NS_rtf::LN_CSW: 775 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 776 777 case NS_rtf::LN_WMAGICCREATED: 778 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 779 780 case NS_rtf::LN_WMAGICREVISED: 781 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 782 783 case NS_rtf::LN_WMAGICCREATEDPRIVATE: 784 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 785 786 787 case NS_rtf::LN_WMAGICREVISEDPRIVATE: 788 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 789 790 case NS_rtf::LN_LIDFE: 791 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 792 793 case NS_rtf::LN_CLW: 794 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 795 796 case NS_rtf::LN_CCPTEXT: 797 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 798 799 800 case NS_rtf::LN_CCPFTN: 801 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 802 803 case NS_rtf::LN_CCPHDD: 804 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 805 806 case NS_rtf::LN_CCPATN: 807 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 808 809 case NS_rtf::LN_CCPEDN: 810 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 811 812 case NS_rtf::LN_CCPTXBX: 813 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 814 815 case NS_rtf::LN_CCPHDRTXBX: 816 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 817 818 case NS_rtf::LN_PNCHPFIRST: 819 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 820 821 case NS_rtf::LN_CPNBTECHP: 822 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 823 824 case NS_rtf::LN_PNPAPFIRST: 825 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 826 827 case NS_rtf::LN_CPNBTEPAP: 828 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 829 830 case NS_rtf::LN_PNLVCFIRST: 831 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 832 833 case NS_rtf::LN_CPNBTELVC: 834 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 835 836 case NS_rtf::LN_CFCLCB: 837 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 838 839 case NS_rtf::LN_FCSTSHF: 840 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 841 842 case NS_rtf::LN_LCBSTSHF: 843 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 844 845 case NS_rtf::LN_FCPLCFFNDREF: 846 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 847 848 case NS_rtf::LN_LCBPLCFFNDREF: 849 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 850 851 case NS_rtf::LN_FCPLCFFNDTXT: 852 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 853 854 case NS_rtf::LN_LCBPLCFFNDTXT: 855 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 856 857 case NS_rtf::LN_FCPLCFANDREF: 858 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 859 860 case NS_rtf::LN_LCBPLCFANDREF: 861 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 862 863 case NS_rtf::LN_FCPLCFANDTXT: 864 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 865 866 case NS_rtf::LN_LCBPLCFANDTXT: 867 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 868 869 case NS_rtf::LN_FCPLCFSED: 870 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 871 872 case NS_rtf::LN_LCBPLCFSED: 873 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 874 875 case NS_rtf::LN_FCPLCFPHE: 876 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 877 878 case NS_rtf::LN_LCBPLCFPHE: 879 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 880 881 case NS_rtf::LN_FCPLCFHDD: 882 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 883 884 case NS_rtf::LN_LCBPLCFHDD: 885 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 886 887 case NS_rtf::LN_FCPLCFBTECHPX: 888 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 889 890 case NS_rtf::LN_LCBPLCFBTECHPX: 891 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 892 893 894 case NS_rtf::LN_FCPLCFBTEPAPX: 895 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 896 897 case NS_rtf::LN_LCBPLCFBTEPAPX: 898 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 899 900 case NS_rtf::LN_FCSTTBFFFN: 901 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 902 903 case NS_rtf::LN_LCBSTTBFFFN: 904 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 905 906 case NS_rtf::LN_FCPLCFFLDMOM: 907 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 908 909 case NS_rtf::LN_LCBPLCFFLDMOM: 910 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 911 912 case NS_rtf::LN_FCPLCFFLDHDR: 913 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 914 915 case NS_rtf::LN_LCBPLCFFLDHDR: 916 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 917 918 919 case NS_rtf::LN_FCPLCFFLDFTN: 920 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 921 922 case NS_rtf::LN_LCBPLCFFLDFTN: 923 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 924 925 case NS_rtf::LN_FCPLCFFLDATN: 926 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 927 928 case NS_rtf::LN_LCBPLCFFLDATN: 929 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 930 931 case NS_rtf::LN_FCSTTBFBKMK: 932 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 933 934 case NS_rtf::LN_LCBSTTBFBKMK: 935 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 936 937 case NS_rtf::LN_FCPLCFBKF: 938 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 939 940 case NS_rtf::LN_LCBPLCFBKF: 941 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 942 943 case NS_rtf::LN_FCPLCFBKL: 944 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 945 946 case NS_rtf::LN_LCBPLCFBKL: 947 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 948 949 case NS_rtf::LN_FCDOP: 950 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 951 952 case NS_rtf::LN_LCBDOP: 953 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 954 955 case NS_rtf::LN_FCSTTBFASSOC: 956 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 957 958 case NS_rtf::LN_LCBSTTBFASSOC: 959 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 960 961 case NS_rtf::LN_FCCLX: 962 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 963 964 case NS_rtf::LN_LCBCLX: 965 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 966 967 case NS_rtf::LN_FCGRPXSTATNOWNERS: 968 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 969 970 case NS_rtf::LN_LCBGRPXSTATNOWNERS: 971 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 972 973 case NS_rtf::LN_FCSTTBFATNBKMK: 974 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 975 976 case NS_rtf::LN_LCBSTTBFATNBKMK: 977 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 978 979 case NS_rtf::LN_FCPLCSPAMOM: 980 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 981 982 case NS_rtf::LN_LCBPLCSPAMOM: 983 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 984 985 case NS_rtf::LN_FCPLCSPAHDR: 986 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 987 988 989 case NS_rtf::LN_LCBPLCSPAHDR: 990 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 991 992 case NS_rtf::LN_FCPLCFATNBKF: 993 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 994 995 case NS_rtf::LN_LCBPLCFATNBKF: 996 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 997 998 case NS_rtf::LN_FCPLCFATNBKL: 999 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1000 1001 case NS_rtf::LN_LCBPLCFATNBKL: 1002 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1003 1004 case NS_rtf::LN_FCFORMFLDSTTBF: 1005 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1006 1007 case NS_rtf::LN_LCBFORMFLDSTTBF: 1008 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1009 1010 case NS_rtf::LN_FCPLCFENDREF: 1011 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1012 1013 1014 case NS_rtf::LN_LCBPLCFENDREF: 1015 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1016 1017 case NS_rtf::LN_FCPLCFENDTXT: 1018 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1019 1020 case NS_rtf::LN_LCBPLCFENDTXT: 1021 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1022 1023 case NS_rtf::LN_FCPLCFFLDEDN: 1024 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1025 1026 case NS_rtf::LN_LCBPLCFFLDEDN: 1027 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1028 1029 case NS_rtf::LN_FCDGGINFO: 1030 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1031 1032 case NS_rtf::LN_LCBDGGINFO: 1033 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1034 1035 case NS_rtf::LN_FCSTTBFRMARK: 1036 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1037 1038 1039 case NS_rtf::LN_LCBSTTBFRMARK: 1040 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1041 1042 case NS_rtf::LN_FCSTTBFCAPTION: 1043 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1044 1045 case NS_rtf::LN_LCBSTTBFCAPTION: 1046 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1047 1048 case NS_rtf::LN_FCSTTBFAUTOCAPTION: 1049 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1050 1051 case NS_rtf::LN_LCBSTTBFAUTOCAPTION: 1052 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1053 1054 case NS_rtf::LN_LCBPLCFTXBXTXT: 1055 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1056 1057 case NS_rtf::LN_FCPLCFFLDTXBX: 1058 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1059 1060 case NS_rtf::LN_LCBPLCFFLDTXBX: 1061 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1062 1063 case NS_rtf::LN_FCPLCFHDRTXBXTXT: 1064 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1065 1066 case NS_rtf::LN_LCBPLCFHDRTXBXTXT: 1067 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1068 1069 case NS_rtf::LN_FCPLCFFLDHDRTXBX: 1070 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1071 1072 case NS_rtf::LN_LCBPLCFFLDHDRTXBX: 1073 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1074 1075 case NS_rtf::LN_FCSTTBTTMBD: 1076 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1077 1078 case NS_rtf::LN_LCBSTTBTTMBD: 1079 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1080 1081 case NS_rtf::LN_FCPGDMOTHER: 1082 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1083 1084 case NS_rtf::LN_LCBPGDMOTHER: 1085 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1086 1087 case NS_rtf::LN_FCBKDMOTHER: 1088 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1089 1090 case NS_rtf::LN_LCBBKDMOTHER: 1091 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1092 1093 case NS_rtf::LN_FCPGDFTN: 1094 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1095 1096 case NS_rtf::LN_LCBPGDFTN: 1097 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1098 1099 case NS_rtf::LN_FCBKDFTN: 1100 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1101 1102 case NS_rtf::LN_LCBBKDFTN: 1103 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1104 1105 case NS_rtf::LN_FCPGDEDN: 1106 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1107 1108 case NS_rtf::LN_LCBPGDEDN: 1109 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1110 1111 1112 case NS_rtf::LN_FCBKDEDN: 1113 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1114 1115 case NS_rtf::LN_LCBBKDEDN: 1116 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1117 1118 case NS_rtf::LN_FCPLCFLST: 1119 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1120 1121 1122 case NS_rtf::LN_LCBPLCFLST: 1123 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1124 1125 case NS_rtf::LN_FCPLFLFO: 1126 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1127 1128 case NS_rtf::LN_LCBPLFLFO: 1129 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1130 1131 case NS_rtf::LN_FCPLCFTXBXBKD: 1132 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1133 1134 case NS_rtf::LN_LCBPLCFTXBXBKD: 1135 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1136 1137 case NS_rtf::LN_FCPLCFTXBXHDRBKD: 1138 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1139 1140 case NS_rtf::LN_LCBPLCFTXBXHDRBKD: 1141 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1142 1143 case NS_rtf::LN_FCSTTBGLSYSTYLE: 1144 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1145 1146 1147 case NS_rtf::LN_LCBSTTBGLSYSTYLE: 1148 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1149 1150 case NS_rtf::LN_FCPLCFBTELVC: 1151 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1152 1153 case NS_rtf::LN_LCBPLCFBTELVC: 1154 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1155 1156 case NS_rtf::LN_FCPLCFLVC: 1157 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1158 1159 case NS_rtf::LN_LCBPLCFLVC: 1160 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1161 1162 case NS_rtf::LN_FCSTTBLISTNAMES: 1163 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1164 1165 case NS_rtf::LN_LCBSTTBLISTNAMES: 1166 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1167 1168 case NS_rtf::LN_LCBSTTBFUSSR: 1169 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1170 { 1171 m_pImpl->GetFIB().SetData( nName, nIntValue ); 1172 } 1173 break; 1174 case NS_rtf::LN_FN: 1175 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1176 1177 case NS_rtf::LN_FCSEPX: 1178 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1179 1180 case NS_rtf::LN_FNMPR: 1181 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1182 1183 case NS_rtf::LN_FCMPR: 1184 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1185 1186 //section descriptor, unused or internally used 1187 break; 1188 case NS_rtf::LN_ICOFORE: 1189 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1190 break; 1191 case NS_rtf::LN_ICOBACK: 1192 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1193 break; 1194 case NS_rtf::LN_IPAT: 1195 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1196 break; 1197 case NS_rtf::LN_SHDFORECOLOR: 1198 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1199 break; 1200 case NS_rtf::LN_SHDBACKCOLOR: 1201 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1202 break; 1203 case NS_rtf::LN_SHDPATTERN: 1204 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1205 break; 1206 case NS_rtf::LN_DPTLINEWIDTH: 1207 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1208 break; 1209 case NS_rtf::LN_BRCTYPE: 1210 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1211 break; 1212 case NS_rtf::LN_ICO: 1213 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1214 break; 1215 case NS_rtf::LN_DPTSPACE: 1216 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1217 break; 1218 case NS_rtf::LN_FSHADOW: 1219 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1220 break; 1221 case NS_rtf::LN_FFRAME: 1222 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1223 break; 1224 case NS_rtf::LN_UNUSED2_15: 1225 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1226 break; 1227 case NS_rtf::LN_FFIRSTMERGED: 1228 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1229 break; 1230 case NS_rtf::LN_FMERGED: 1231 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1232 break; 1233 case NS_rtf::LN_FVERTICAL: 1234 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1235 break; 1236 case NS_rtf::LN_FBACKWARD: 1237 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1238 break; 1239 case NS_rtf::LN_FROTATEFONT: 1240 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1241 break; 1242 case NS_rtf::LN_FVERTMERGE: 1243 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1244 break; 1245 case NS_rtf::LN_FVERTRESTART: 1246 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1247 break; 1248 case NS_rtf::LN_VERTALIGN: 1249 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1250 break; 1251 case NS_rtf::LN_FUNUSED: 1252 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1253 break; 1254 case NS_rtf::LN_BRCTOP: 1255 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1256 case NS_rtf::LN_BRCLEFT: 1257 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1258 case NS_rtf::LN_BRCBOTTOM: 1259 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1260 case NS_rtf::LN_BRCRIGHT: 1261 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1262 { 1263 table::BorderLine aBorderLine; 1264 sal_Int32 nLineDistance = ConversionHelper::MakeBorderLine( nIntValue, aBorderLine ); 1265 (void)nLineDistance; 1266 PropertyIds eBorderId = PROP_LEFT_BORDER; 1267 PropertyIds eBorderDistId = PROP_LEFT_BORDER_DISTANCE ; 1268 switch( nName ) 1269 { 1270 case NS_rtf::LN_BRCTOP: 1271 eBorderId = PROP_TOP_BORDER ; 1272 eBorderDistId = PROP_TOP_BORDER_DISTANCE; 1273 break; 1274 case NS_rtf::LN_BRCLEFT: 1275 // eBorderId = PROP_LEFT_BORDER; 1276 // eBorderDistId = PROP_LEFT_BORDER_DISTANCE ; 1277 break; 1278 case NS_rtf::LN_BRCBOTTOM: 1279 eBorderId = PROP_BOTTOM_BORDER ; 1280 eBorderDistId = PROP_BOTTOM_BORDER_DISTANCE; 1281 break; 1282 case NS_rtf::LN_BRCRIGHT: 1283 eBorderId = PROP_RIGHT_BORDER ; 1284 eBorderDistId = PROP_RIGHT_BORDER_DISTANCE ; 1285 break; 1286 default:; 1287 } 1288 //todo: where to put the border properties 1289 //rContext->Insert(eBorderId, uno::makeAny( aBorderLine )); 1290 //rContext->Insert(eBorderDistId, uno::makeAny( nLineDistance )); 1291 } 1292 break; 1293 case NS_rtf::LN_ITCFIRST: 1294 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1295 break; 1296 case NS_rtf::LN_FPUB: 1297 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1298 break; 1299 case NS_rtf::LN_ITCLIM: 1300 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1301 break; 1302 case NS_rtf::LN_FCOL: 1303 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1304 break; 1305 case NS_rtf::LN_LINECOLOR: 1306 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1307 break; 1308 case NS_rtf::LN_LINEWIDTH: 1309 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1310 break; 1311 case NS_rtf::LN_LINETYPE: 1312 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1313 break; 1314 case NS_rtf::LN_MM: 1315 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1316 break; 1317 case NS_rtf::LN_XEXT: 1318 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1319 break; 1320 case NS_rtf::LN_YEXT: 1321 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1322 break; 1323 case NS_rtf::LN_HMF: 1324 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1325 break; 1326 case NS_rtf::LN_LCB: 1327 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1328 break; 1329 case NS_rtf::LN_CBHEADER: 1330 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1331 break; 1332 case NS_rtf::LN_MFP: 1333 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1334 break; 1335 case NS_rtf::LN_BM_RCWINMF: 1336 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1337 break; 1338 case NS_rtf::LN_DXAGOAL: 1339 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1340 break; 1341 case NS_rtf::LN_DYAGOAL: 1342 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1343 break; 1344 case NS_rtf::LN_MX: 1345 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1346 break; 1347 case NS_rtf::LN_MY: 1348 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1349 break; 1350 case NS_rtf::LN_DXACROPLEFT: 1351 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1352 break; 1353 case NS_rtf::LN_DYACROPTOP: 1354 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1355 break; 1356 case NS_rtf::LN_DXACROPRIGHT: 1357 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1358 break; 1359 case NS_rtf::LN_DYACROPBOTTOM: 1360 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1361 break; 1362 case NS_rtf::LN_BRCL: 1363 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1364 break; 1365 case NS_rtf::LN_FFRAMEEMPTY: 1366 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1367 break; 1368 case NS_rtf::LN_FBITMAP: 1369 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1370 break; 1371 case NS_rtf::LN_FDRAWHATCH: 1372 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1373 break; 1374 case NS_rtf::LN_FERROR: 1375 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1376 break; 1377 case NS_rtf::LN_BPP: 1378 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1379 break; 1380 case NS_rtf::LN_DXAORIGIN: 1381 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1382 break; 1383 case NS_rtf::LN_DYAORIGIN: 1384 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1385 break; 1386 case NS_rtf::LN_CPROPS: 1387 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1388 break; 1389 case NS_rtf::LN_LINEPROPSTOP: 1390 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1391 break; 1392 case NS_rtf::LN_LINEPROPSLEFT: 1393 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1394 break; 1395 case NS_rtf::LN_LINEPROPSBOTTOM: 1396 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1397 break; 1398 case NS_rtf::LN_LINEPROPSRIGHT: 1399 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1400 break; 1401 case NS_rtf::LN_LINEPROPSHORIZONTAL: 1402 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1403 break; 1404 case NS_rtf::LN_LINEPROPSVERTICAL: 1405 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1406 break; 1407 case NS_rtf::LN_headerr: 1408 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1409 break; 1410 case NS_rtf::LN_footerr: 1411 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1412 break; 1413 case NS_rtf::LN_endnote: 1414 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1415 break; 1416 case NS_rtf::LN_BOOKMARKNAME: 1417 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1418 // sStringValue contains the bookmark name 1419 sLocalBookmarkName = sStringValue; 1420 break; 1421 case NS_rtf::LN_IBKL: 1422 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0.5 */ 1423 //contains the bookmark identifier - has to be added to the bookmark name imported before 1424 //if it is already available then the bookmark should be inserted 1425 m_pImpl->AddBookmark( sLocalBookmarkName, sStringValue ); 1426 sLocalBookmarkName = ::rtl::OUString(); 1427 break; 1428 case NS_rtf::LN_LISTLEVEL: 1429 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1430 break; 1431 case NS_rtf::LN_LFOData: 1432 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1433 break; 1434 case NS_rtf::LN_F: 1435 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1436 break; 1437 case NS_rtf::LN_ALTFONTNAME: 1438 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1439 break; 1440 case NS_rtf::LN_XSZFFN: 1441 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1442 break; 1443 case NS_rtf::LN_XSTZNAME: 1444 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1445 break; 1446 case NS_rtf::LN_XSTZNAME1: 1447 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1448 break; 1449 case NS_rtf::LN_UPXSTART: 1450 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1451 break; 1452 case NS_rtf::LN_UPX: 1453 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1454 break; 1455 case NS_rtf::LN_sed: 1456 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1457 //section properties 1458 resolveAttributeProperties(*this, val); 1459 break; 1460 case NS_rtf::LN_tbdAdd: 1461 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1462 // 1463 { 1464 writerfilter::Reference<Properties>::Pointer_t pProperties = val.getProperties(); 1465 if( pProperties.get()) 1466 { 1467 pProperties->resolve(*this); 1468 //increment to the next tab stop 1469 m_pImpl->NextTabStop(); 1470 } 1471 } 1472 break; 1473 case NS_rtf::LN_dxaDel: 1474 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1475 //deleted tab 1476 case NS_rtf::LN_dxaAdd: 1477 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1478 //set tab 1479 case NS_rtf::LN_TLC: 1480 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1481 //tab leading characters - for decimal tabs 1482 case NS_rtf::LN_JC: 1483 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1484 //tab justification 1485 m_pImpl->ModifyCurrentTabStop(nName, nIntValue); 1486 break; 1487 case NS_rtf::LN_UNUSED0_6: 1488 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 1489 // really unused 1490 break; 1491 case NS_rtf::LN_rgbrc: 1492 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1493 break; 1494 case NS_rtf::LN_shd: 1495 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1496 break; 1497 case NS_rtf::LN_cellShd: 1498 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1499 break; 1500 case NS_rtf::LN_cellTopColor: 1501 case NS_rtf::LN_cellLeftColor: 1502 case NS_rtf::LN_cellBottomColor: 1503 case NS_rtf::LN_cellRightColor: 1504 OSL_ASSERT("handled by DomainMapperTableManager"); 1505 break; 1506 1507 case NS_rtf::LN_LISTTABLE: 1508 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1509 break; 1510 case NS_rtf::LN_LFOTABLE: 1511 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1512 break; 1513 case NS_rtf::LN_FONTTABLE: 1514 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1515 break; 1516 case NS_rtf::LN_STYLESHEET: 1517 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1518 break; 1519 1520 case NS_rtf::LN_fcEastAsianLayout: 1521 /* WRITERFILTERSTATUS: done: 50, planned: 0.5, spent: 0 */ 1522 /* it seems that the value is following: 1523 ???? XX YYYY ZZ 1524 where 1525 XX seems to be the run id 1526 ZZ is the length of the function that is normally 6 1527 Lower byte of YYYY determines whether it is 1528 vertical text flow (0x01), or 1529 two lines in one layout (0x02). 1530 For 0x01, if the higher byte of YYYY is zero, the text is not scaled to fit the line height, 1531 in oposite case, it is to be scaled. 1532 For 0x02, the higher byte of YYYY is determinig the prefix and suffix of the run: 1533 no brackets (0x00) , 1534 () round brackets (0x01), 1535 [] square backets (0x02), 1536 <> angle brackets (0x03) and 1537 {} curly brackets (0x04). 1538 ???? is different and we do not know its signification 1539 */ 1540 1541 if ((nIntValue & 0x000000FF) == 6) 1542 { 1543 switch ((nIntValue & 0x0000FF00) >> 8) 1544 { 1545 case 1: // vertical text 1546 if (m_pImpl->GetTopContext()) 1547 { 1548 m_pImpl->GetTopContext()->Insert(PROP_CHAR_ROTATION, true, uno::makeAny ( sal_Int16(900) )); 1549 m_pImpl->GetTopContext()->Insert(PROP_CHAR_ROTATION_IS_FIT_TO_LINE, true, uno::makeAny (((nIntValue & 0x00FF0000) >> 16) != 0)); 1550 } 1551 break; 1552 case 2: // two lines in one 1553 if (m_pImpl->GetTopContext()) 1554 { 1555 m_pImpl->GetTopContext()->Insert(PROP_CHAR_COMBINE_IS_ON, true, uno::makeAny ( true )); 1556 m_pImpl->GetTopContext()->Insert(PROP_CHAR_COMBINE_PREFIX, true, uno::makeAny ( getBracketStringFromEnum((nIntValue & 0x00FF0000) >> 16))); 1557 m_pImpl->GetTopContext()->Insert(PROP_CHAR_COMBINE_SUFFIX, true, uno::makeAny ( getBracketStringFromEnum((nIntValue & 0x00FF0000) >> 16, false))); 1558 } 1559 break; 1560 default: 1561 break; 1562 } 1563 } 1564 break; 1565 case NS_rtf::LN_FRD : 1566 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1567 //footnote reference descriptor, if nIntValue > 0 then automatic, custom otherwise 1568 //ignored 1569 break; 1570 case NS_rtf::LN_FONT: //font of footnote symbol 1571 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1572 if (m_pImpl->GetTopContext()) 1573 m_pImpl->GetTopContext()->SetFootnoteFontId( nIntValue ); 1574 break; 1575 case NS_ooxml::LN_CT_Sym_char: 1576 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1577 if( m_pImpl->GetTopContext() && m_pImpl->GetTopContext()->GetFootnote().is()) 1578 { 1579 m_pImpl->GetTopContext()->GetFootnote()->setLabel(::rtl::OUString( sal_Unicode(nIntValue))); 1580 break; 1581 } 1582 else //it's a _real_ symbol 1583 { 1584 utext( reinterpret_cast < const sal_uInt8 * >( &nIntValue ), 1 ); 1585 } 1586 break; 1587 case NS_rtf::LN_CHAR: //footnote symbol character 1588 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1589 if (m_pImpl->GetTopContext()) 1590 m_pImpl->GetTopContext()->SetFootnoteSymbol( sal_Unicode(nIntValue)); 1591 break; 1592 case NS_ooxml::LN_CT_Sym_font: 1593 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1594 //the footnote symbol and font are provided after the footnote is already inserted 1595 if( m_pImpl->GetTopContext() && m_pImpl->GetTopContext()->GetFootnote().is()) 1596 { 1597 uno::Reference< beans::XPropertySet > xAnchorProps( m_pImpl->GetTopContext()->GetFootnote()->getAnchor(), uno::UNO_QUERY ); 1598 xAnchorProps->setPropertyValue( 1599 PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_CHAR_FONT_NAME), 1600 uno::makeAny( sStringValue )); 1601 } 1602 else //a real symbol 1603 if (m_pImpl->GetTopContext()) 1604 m_pImpl->GetTopContext()->Insert(PROP_CHAR_FONT_NAME, true, uno::makeAny( sStringValue )); 1605 break; 1606 case NS_ooxml::LN_CT_Underline_val: 1607 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1608 handleUnderlineType(nIntValue, m_pImpl->GetTopContext()); 1609 break; 1610 case NS_ooxml::LN_CT_Color_val: 1611 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1612 if (m_pImpl->GetTopContext()) 1613 m_pImpl->GetTopContext()->Insert(PROP_CHAR_COLOR, true, uno::makeAny( nIntValue ) ); 1614 break; 1615 case NS_ooxml::LN_CT_Underline_color: 1616 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1617 if (m_pImpl->GetTopContext()) 1618 { 1619 m_pImpl->GetTopContext()->Insert(PROP_CHAR_UNDERLINE_HAS_COLOR, true, uno::makeAny( true ) ); 1620 m_pImpl->GetTopContext()->Insert(PROP_CHAR_UNDERLINE_COLOR, true, uno::makeAny( nIntValue ) ); 1621 } 1622 break; 1623 1624 case NS_ooxml::LN_CT_TabStop_val: 1625 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1626 if (sal::static_int_cast<Id>(nIntValue) == NS_ooxml::LN_Value_ST_TabJc_clear) 1627 { 1628 m_pImpl->m_aCurrentTabStop.bDeleted = true; 1629 } 1630 else 1631 { 1632 m_pImpl->m_aCurrentTabStop.bDeleted = false; 1633 m_pImpl->m_aCurrentTabStop.Alignment = getTabAlignFromValue(nIntValue); 1634 } 1635 break; 1636 case NS_ooxml::LN_CT_TabStop_leader: 1637 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1638 m_pImpl->m_aCurrentTabStop.FillChar = getFillCharFromValue(nIntValue); 1639 break; 1640 case NS_ooxml::LN_CT_TabStop_pos: 1641 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1642 m_pImpl->m_aCurrentTabStop.Position = ConversionHelper::convertTwipToMM100(nIntValue); 1643 break; 1644 1645 case NS_ooxml::LN_CT_Fonts_ascii: 1646 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1647 if (m_pImpl->GetTopContext()) 1648 m_pImpl->GetTopContext()->Insert(PROP_CHAR_FONT_NAME, true, uno::makeAny( sStringValue )); 1649 break; 1650 case NS_ooxml::LN_CT_Fonts_asciiTheme: 1651 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1652 if (m_pImpl->GetTopContext()) 1653 m_pImpl->GetTopContext()->Insert(PROP_CHAR_FONT_NAME, true, uno::makeAny( m_pImpl->GetThemeTable()->getFontNameForTheme(nIntValue) )); 1654 break; 1655 case NS_ooxml::LN_CT_Fonts_hAnsi: 1656 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1657 break;//unsupported 1658 case NS_ooxml::LN_CT_Fonts_hAnsiTheme: 1659 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1660 break; //unsupported 1661 case NS_ooxml::LN_CT_Fonts_eastAsia: 1662 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1663 if (m_pImpl->GetTopContext()) 1664 m_pImpl->GetTopContext()->Insert(PROP_CHAR_FONT_NAME_ASIAN, true, uno::makeAny( sStringValue )); 1665 break; 1666 case NS_ooxml::LN_CT_Fonts_eastAsiaTheme: 1667 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1668 if (m_pImpl->GetTopContext()) 1669 m_pImpl->GetTopContext()->Insert(PROP_CHAR_FONT_NAME_COMPLEX, true, uno::makeAny( m_pImpl->GetThemeTable()->getFontNameForTheme(nIntValue) ) ); 1670 break; 1671 case NS_ooxml::LN_CT_Fonts_cs: 1672 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1673 if (m_pImpl->GetTopContext()) 1674 m_pImpl->GetTopContext()->Insert(PROP_CHAR_FONT_NAME_COMPLEX, true, uno::makeAny( sStringValue )); 1675 break; 1676 case NS_ooxml::LN_CT_Fonts_cstheme: 1677 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1678 if (m_pImpl->GetTopContext()) 1679 m_pImpl->GetTopContext()->Insert(PROP_CHAR_FONT_NAME_COMPLEX, true, uno::makeAny( m_pImpl->GetThemeTable()->getFontNameForTheme(nIntValue) )); 1680 break; 1681 case NS_ooxml::LN_CT_Spacing_before: 1682 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1683 if (m_pImpl->GetTopContext()) 1684 m_pImpl->GetTopContext()->Insert(PROP_PARA_TOP_MARGIN, true, uno::makeAny( ConversionHelper::convertTwipToMM100( nIntValue ) )); 1685 break; 1686 case NS_ooxml::LN_CT_Spacing_beforeLines: 1687 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1688 break; 1689 case NS_ooxml::LN_CT_Spacing_after: 1690 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1691 if (m_pImpl->GetTopContext()) 1692 m_pImpl->GetTopContext()->Insert(PROP_PARA_BOTTOM_MARGIN, true, uno::makeAny( ConversionHelper::convertTwipToMM100( nIntValue ) )); 1693 break; 1694 case NS_ooxml::LN_CT_Spacing_afterLines: 1695 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1696 break; 1697 case NS_ooxml::LN_CT_Spacing_line: //91434 1698 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1699 case NS_ooxml::LN_CT_Spacing_lineRule: //91435 1700 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1701 { 1702 #define SINGLE_LINE_SPACING 240 1703 style::LineSpacing aSpacing; 1704 PropertyMapPtr pTopContext = m_pImpl->GetTopContext(); 1705 PropertyMap::iterator aLineSpacingIter = pTopContext->find(PropertyDefinition( PROP_PARA_LINE_SPACING, true ) ); 1706 if( aLineSpacingIter != pTopContext->end()) 1707 { 1708 aLineSpacingIter->second >>= aSpacing; 1709 } 1710 else 1711 { 1712 //default to single line spacing 1713 aSpacing.Mode = style::LineSpacingMode::FIX; 1714 aSpacing.Height = sal_Int16(ConversionHelper::convertTwipToMM100( SINGLE_LINE_SPACING )); 1715 } 1716 if( nName == NS_ooxml::LN_CT_Spacing_line ) 1717 { 1718 //now set the value depending on the Mode 1719 if( aSpacing.Mode == style::LineSpacingMode::PROP ) 1720 aSpacing.Height = sal_Int16(sal_Int32(nIntValue) * 100 / SINGLE_LINE_SPACING ); 1721 else 1722 aSpacing.Height = sal_Int16(ConversionHelper::convertTwipToMM100( nIntValue )); 1723 } 1724 else //NS_ooxml::LN_CT_Spacing_lineRule: 1725 { 1726 // exactly, atLeast, auto 1727 if( sal::static_int_cast<Id>(nIntValue) == NS_ooxml::LN_Value_wordprocessingml_ST_LineSpacingRule_auto) 1728 { 1729 aSpacing.Mode = style::LineSpacingMode::PROP; 1730 //reinterpret the already set value 1731 aSpacing.Height = sal_Int16( aSpacing.Height * 100 / ConversionHelper::convertTwipToMM100( SINGLE_LINE_SPACING )); 1732 } 1733 else if( sal::static_int_cast<Id>(nIntValue) == NS_ooxml::LN_Value_wordprocessingml_ST_LineSpacingRule_atLeast) 1734 aSpacing.Mode = style::LineSpacingMode::MINIMUM; 1735 else // NS_ooxml::LN_Value_wordprocessingml_ST_LineSpacingRule_exact 1736 aSpacing.Mode = style::LineSpacingMode::FIX; 1737 } 1738 pTopContext->Insert(PROP_PARA_LINE_SPACING, true, uno::makeAny( aSpacing )); 1739 } 1740 break; 1741 case NS_ooxml::LN_CT_Ind_left: 1742 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1743 if (m_pImpl->GetTopContext()) 1744 m_pImpl->GetTopContext()->Insert( 1745 PROP_PARA_LEFT_MARGIN, true, uno::makeAny( ConversionHelper::convertTwipToMM100(nIntValue ) )); 1746 break; 1747 case NS_ooxml::LN_CT_Ind_right: 1748 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1749 if (m_pImpl->GetTopContext()) 1750 m_pImpl->GetTopContext()->Insert( 1751 PROP_PARA_RIGHT_MARGIN, true, uno::makeAny( ConversionHelper::convertTwipToMM100(nIntValue ) )); 1752 break; 1753 case NS_ooxml::LN_CT_Ind_hanging: 1754 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1755 if (m_pImpl->GetTopContext()) 1756 { 1757 sal_Int32 nValue = ConversionHelper::convertTwipToMM100( nIntValue ); 1758 m_pImpl->GetTopContext()->Insert( 1759 PROP_PARA_FIRST_LINE_INDENT, true, uno::makeAny( - nValue )); 1760 } 1761 break; 1762 case NS_ooxml::LN_CT_Ind_firstLine: 1763 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1764 if (m_pImpl->GetTopContext()) 1765 m_pImpl->GetTopContext()->Insert( 1766 PROP_PARA_FIRST_LINE_INDENT, true, uno::makeAny( ConversionHelper::convertTwipToMM100(nIntValue ) )); 1767 break; 1768 1769 case NS_ooxml::LN_CT_EastAsianLayout_id: 1770 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1771 break; 1772 case NS_ooxml::LN_CT_EastAsianLayout_combine: 1773 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1774 if (m_pImpl->GetTopContext()) 1775 m_pImpl->GetTopContext()->Insert(PROP_CHAR_COMBINE_IS_ON, true, uno::makeAny ( nIntValue ? true : false )); 1776 break; 1777 case NS_ooxml::LN_CT_EastAsianLayout_combineBrackets: 1778 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1779 if (m_pImpl->GetTopContext()) 1780 { 1781 rtl::OUString sCombinePrefix = getBracketStringFromEnum(nIntValue); 1782 rtl::OUString sCombineSuffix = getBracketStringFromEnum(nIntValue, false); 1783 m_pImpl->GetTopContext()->Insert(PROP_CHAR_COMBINE_PREFIX, true, uno::makeAny ( sCombinePrefix )); 1784 m_pImpl->GetTopContext()->Insert(PROP_CHAR_COMBINE_SUFFIX, true, uno::makeAny ( sCombineSuffix )); 1785 } 1786 break; 1787 case NS_ooxml::LN_CT_EastAsianLayout_vert: 1788 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1789 if (m_pImpl->GetTopContext()) 1790 { 1791 sal_Int16 nRotationAngle = (nIntValue ? 900 : 0); 1792 m_pImpl->GetTopContext()->Insert(PROP_CHAR_ROTATION, true, uno::makeAny ( nRotationAngle )); 1793 } 1794 break; 1795 case NS_ooxml::LN_CT_EastAsianLayout_vertCompress: 1796 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1797 if (m_pImpl->GetTopContext()) 1798 m_pImpl->GetTopContext()->Insert(PROP_CHAR_ROTATION_IS_FIT_TO_LINE, true, uno::makeAny ( nIntValue ? true : false)); 1799 break; 1800 1801 case NS_ooxml::LN_CT_PageSz_code: 1802 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1803 CT_PageSz.code = nIntValue; 1804 break; 1805 case NS_ooxml::LN_CT_PageSz_h: 1806 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1807 { 1808 sal_Int32 nHeight = ConversionHelper::convertTwipToMM100(nIntValue); 1809 CT_PageSz.h = PaperInfo::sloppyFitPageDimension(nHeight); 1810 } 1811 break; 1812 case NS_ooxml::LN_CT_PageSz_orient: 1813 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1814 CT_PageSz.orient = (nIntValue != 0); 1815 break; 1816 case NS_ooxml::LN_CT_PageSz_w: 1817 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1818 { 1819 sal_Int32 nWidth = ConversionHelper::convertTwipToMM100(nIntValue); 1820 CT_PageSz.w = PaperInfo::sloppyFitPageDimension(nWidth); 1821 } 1822 break; 1823 1824 case NS_ooxml::LN_CT_PageMar_top: 1825 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1826 m_pImpl->SetPageMarginTwip( PAGE_MAR_TOP, nIntValue ); 1827 break; 1828 case NS_ooxml::LN_CT_PageMar_right: 1829 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1830 m_pImpl->SetPageMarginTwip( PAGE_MAR_RIGHT, nIntValue ); 1831 break; 1832 case NS_ooxml::LN_CT_PageMar_bottom: 1833 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1834 m_pImpl->SetPageMarginTwip( PAGE_MAR_BOTTOM, nIntValue ); 1835 break; 1836 case NS_ooxml::LN_CT_PageMar_left: 1837 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1838 m_pImpl->SetPageMarginTwip( PAGE_MAR_LEFT, nIntValue ); 1839 break; 1840 case NS_ooxml::LN_CT_PageMar_header: 1841 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1842 m_pImpl->SetPageMarginTwip( PAGE_MAR_HEADER, nIntValue ); 1843 break; 1844 case NS_ooxml::LN_CT_PageMar_footer: 1845 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1846 m_pImpl->SetPageMarginTwip( PAGE_MAR_FOOTER, nIntValue ); 1847 break; 1848 case NS_ooxml::LN_CT_PageMar_gutter: 1849 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1850 m_pImpl->SetPageMarginTwip( PAGE_MAR_GUTTER, nIntValue ); 1851 break; 1852 case NS_ooxml::LN_CT_Language_val: //90314 1853 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1854 case NS_ooxml::LN_CT_Language_eastAsia: //90315 1855 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1856 case NS_ooxml::LN_CT_Language_bidi: //90316 1857 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1858 { 1859 LanguageType eLang = MsLangId::convertIsoStringToLanguage( sStringValue ); 1860 lang::Locale aLocale = MsLangId::convertLanguageToLocale( eLang ); 1861 if (m_pImpl->GetTopContext()) 1862 m_pImpl->GetTopContext()->Insert(NS_ooxml::LN_CT_Language_val== nName ? PROP_CHAR_LOCALE : 1863 NS_ooxml::LN_CT_Language_eastAsia == nName ? PROP_CHAR_LOCALE_ASIAN : PROP_CHAR_LOCALE_COMPLEX, 1864 true, 1865 uno::makeAny( aLocale ) ); 1866 } 1867 break; 1868 #define AUTO_PARA_SPACING sal_Int32(49) 1869 case NS_ooxml::LN_CT_Spacing_beforeAutospacing: 1870 /* WRITERFILTERSTATUS: done: 80, planned: 0.5, spent: 0.2 */ 1871 //TODO: autospacing depends on some document property (called fDontUseHTMLAutoSpacing in old ww8 filter) 100 or 280 twip 1872 //and should be set to 0 on start of page 1873 m_pImpl->GetTopContext()->Insert( PROP_PARA_TOP_MARGIN, false, uno::makeAny( AUTO_PARA_SPACING ) ); 1874 break; 1875 case NS_ooxml::LN_CT_Spacing_afterAutospacing: 1876 /* WRITERFILTERSTATUS: done: 80, planned: 0.5, spent: 0.2 */ 1877 //TODO: autospacing depends on some document property (called fDontUseHTMLAutoSpacing in old ww8 filter) 100 or 280 twip 1878 m_pImpl->GetTopContext()->Insert( PROP_PARA_BOTTOM_MARGIN, false, uno::makeAny( AUTO_PARA_SPACING ) ); 1879 break; 1880 case NS_ooxml::LN_CT_SmartTagRun_uri: 1881 case NS_ooxml::LN_CT_SmartTagRun_element: 1882 /* WRITERFILTERSTATUS: done: 0, planned: 1, spent: 0 */ 1883 //TODO: add handling of SmartTags 1884 break; 1885 case NS_ooxml::LN_CT_Br_type : 1886 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 1887 //TODO: attributes for break (0x12) are not supported 1888 break; 1889 case NS_ooxml::LN_CT_Fonts_hint : 1890 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 1891 /* assigns script type to ambigous characters, values can be: 1892 NS_ooxml::LN_Value_ST_Hint_default 1893 NS_ooxml::LN_Value_ST_Hint_eastAsia 1894 NS_ooxml::LN_Value_ST_Hint_cs 1895 */ 1896 //TODO: unsupported? 1897 break; 1898 case NS_ooxml::LN_CT_TblCellMar_right: // 92375; 1899 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1900 case NS_ooxml::LN_CT_TblBorders_top: // 92377; 1901 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1902 case NS_ooxml::LN_CT_TblBorders_left: // 92378; 1903 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1904 case NS_ooxml::LN_CT_TblBorders_bottom: // 92379; 1905 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 1906 //todo: handle cell mar 1907 break; 1908 case NS_rtf::LN_blip: // contains the binary graphic 1909 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1910 case NS_ooxml::LN_shape: 1911 /* WRITERFILTERSTATUS: done: 50, planned: 0.5, spent: 0 */ 1912 { 1913 //looks a bit like a hack - and it is. The graphic import is split into the inline_inline part and 1914 //afterwards the adding of the binary data. 1915 m_pImpl->GetGraphicImport( IMPORT_AS_DETECTED_INLINE )->attribute(nName, val); 1916 m_pImpl->ImportGraphic( val.getProperties(), IMPORT_AS_DETECTED_INLINE ); 1917 } 1918 break; 1919 case NS_ooxml::LN_CT_FramePr_dropCap: 1920 case NS_ooxml::LN_CT_FramePr_lines: 1921 case NS_ooxml::LN_CT_FramePr_hAnchor: 1922 case NS_ooxml::LN_CT_FramePr_vAnchor: 1923 case NS_ooxml::LN_CT_FramePr_x: 1924 case NS_ooxml::LN_CT_FramePr_xAlign: 1925 case NS_ooxml::LN_CT_FramePr_y: 1926 case NS_ooxml::LN_CT_FramePr_yAlign: 1927 case NS_ooxml::LN_CT_FramePr_hRule: 1928 case NS_sprm::LN_PWr: 1929 case NS_sprm::LN_PDxaWidth: 1930 case NS_sprm::LN_PWHeightAbs: 1931 case NS_sprm::LN_PDxaFromText: 1932 case NS_sprm::LN_PDyaFromText: 1933 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1934 { 1935 ParagraphProperties* pParaProperties = dynamic_cast< ParagraphProperties*>(m_pImpl->GetTopContext().get()); 1936 if( pParaProperties ) 1937 { 1938 switch( nName ) 1939 { 1940 case NS_ooxml::LN_CT_FramePr_dropCap: 1941 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1942 pParaProperties->SetDropCap( nIntValue ); 1943 break; 1944 case NS_ooxml::LN_CT_FramePr_lines: 1945 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1946 pParaProperties->SetLines( nIntValue ); 1947 break; 1948 case NS_ooxml::LN_CT_FramePr_hAnchor: 1949 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1950 switch(nIntValue) 1951 { 1952 case NS_ooxml::LN_Value_wordprocessingml_ST_HAnchor_text: //relative to column 1953 nIntValue = text::RelOrientation::FRAME; break; 1954 case NS_ooxml::LN_Value_wordprocessingml_ST_HAnchor_margin: nIntValue = text::RelOrientation::PAGE_PRINT_AREA; break; 1955 case NS_ooxml::LN_Value_wordprocessingml_ST_HAnchor_page: nIntValue = text::RelOrientation::PAGE_FRAME; break; 1956 default:; 1957 } 1958 pParaProperties->SethAnchor( nIntValue ); 1959 break; 1960 case NS_ooxml::LN_CT_FramePr_vAnchor: 1961 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1962 switch(nIntValue) 1963 { 1964 case NS_ooxml::LN_Value_wordprocessingml_ST_VAnchor_text: //relative to paragraph 1965 nIntValue = text::RelOrientation::FRAME; break; 1966 case NS_ooxml::LN_Value_wordprocessingml_ST_VAnchor_margin:nIntValue = text::RelOrientation::PAGE_PRINT_AREA ; break; 1967 case NS_ooxml::LN_Value_wordprocessingml_ST_VAnchor_page: nIntValue = text::RelOrientation::PAGE_FRAME; break; 1968 default:; 1969 } 1970 pParaProperties->SetvAnchor( nIntValue ); 1971 break; 1972 case NS_ooxml::LN_CT_FramePr_x: 1973 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1974 pParaProperties->Setx( ConversionHelper::convertTwipToMM100(nIntValue )); 1975 break; 1976 case NS_ooxml::LN_CT_FramePr_xAlign: 1977 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1978 switch( nIntValue ) 1979 { 1980 case NS_ooxml::LN_Value_wordprocessingml_ST_XAlign_center : nIntValue = text::HoriOrientation::CENTER; break; 1981 case NS_ooxml::LN_Value_wordprocessingml_ST_XAlign_right : nIntValue = text::HoriOrientation::RIGHT; break; 1982 case NS_ooxml::LN_Value_wordprocessingml_ST_XAlign_inside : nIntValue = text::HoriOrientation::INSIDE; break; 1983 case NS_ooxml::LN_Value_wordprocessingml_ST_XAlign_outside : nIntValue = text::HoriOrientation::OUTSIDE; break; 1984 case NS_ooxml::LN_Value_wordprocessingml_ST_XAlign_left : nIntValue = text::HoriOrientation::LEFT; break; 1985 default: nIntValue = text::HoriOrientation::NONE; 1986 } 1987 pParaProperties->SetxAlign( nIntValue ); 1988 break; 1989 case NS_ooxml::LN_CT_FramePr_y: 1990 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1991 pParaProperties->Sety( ConversionHelper::convertTwipToMM100(nIntValue )); 1992 break; 1993 case NS_ooxml::LN_CT_FramePr_yAlign: 1994 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 1995 switch( nIntValue ) 1996 { 1997 case NS_ooxml::LN_Value_wordprocessingml_ST_YAlign_top : 1998 case NS_ooxml::LN_Value_wordprocessingml_ST_YAlign_inside :nIntValue = text::VertOrientation::TOP; break; 1999 case NS_ooxml::LN_Value_wordprocessingml_ST_YAlign_center :nIntValue = text::VertOrientation::CENTER;break; 2000 case NS_ooxml::LN_Value_wordprocessingml_ST_YAlign_bottom : 2001 case NS_ooxml::LN_Value_wordprocessingml_ST_YAlign_outside :nIntValue = text::VertOrientation::BOTTOM;break; 2002 case NS_ooxml::LN_Value_wordprocessingml_ST_YAlign_inline ://todo: what to do with inline - no avail. in WW97 and WW2007 2003 //no break; 2004 default:nIntValue = text::VertOrientation::NONE; 2005 } 2006 pParaProperties->SetyAlign( nIntValue ); 2007 break; 2008 case NS_ooxml::LN_CT_FramePr_hRule: 2009 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2010 switch( nIntValue ) 2011 { 2012 case NS_ooxml::LN_Value_wordprocessingml_ST_HeightRule_exact: 2013 nIntValue = text::SizeType::FIX; 2014 break; 2015 case NS_ooxml::LN_Value_wordprocessingml_ST_HeightRule_atLeast: 2016 nIntValue = text::SizeType::MIN; 2017 break; 2018 case NS_ooxml::LN_Value_wordprocessingml_ST_HeightRule_auto: 2019 //no break; 2020 default:; 2021 nIntValue = text::SizeType::VARIABLE; 2022 } 2023 pParaProperties->SethRule( nIntValue ); 2024 break; 2025 case NS_sprm::LN_PWr: 2026 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2027 { 2028 //should be either LN_Value_wordprocessingml_ST_Wrap_notBeside or LN_Value_wordprocessingml_ST_Wrap_around 2029 OSL_ENSURE( sal::static_int_cast<Id>(nIntValue) == NS_ooxml::LN_Value_wordprocessingml_ST_Wrap_around || 2030 sal::static_int_cast<Id>(nIntValue) == NS_ooxml::LN_Value_wordprocessingml_ST_Wrap_notBeside, 2031 "wrap not around or not_Beside?"); 2032 pParaProperties->SetWrap(sal::static_int_cast<Id>(nIntValue) == NS_ooxml::LN_Value_wordprocessingml_ST_Wrap_around ? 2033 text::WrapTextMode_DYNAMIC : text::WrapTextMode_NONE ); 2034 } 2035 break; 2036 case NS_sprm::LN_PDxaWidth: 2037 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2038 pParaProperties->Setw(ConversionHelper::convertTwipToMM100(nIntValue)); 2039 break; 2040 case NS_sprm::LN_PWHeightAbs: 2041 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2042 pParaProperties->Seth(ConversionHelper::convertTwipToMM100(nIntValue)); 2043 break; 2044 case NS_sprm::LN_PDxaFromText: 2045 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2046 pParaProperties->SethSpace( ConversionHelper::convertTwipToMM100(nIntValue )); 2047 break; 2048 case NS_sprm::LN_PDyaFromText: 2049 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2050 pParaProperties->SetvSpace( ConversionHelper::convertTwipToMM100(nIntValue )); 2051 break; 2052 default:; 2053 } 2054 } 2055 else 2056 { 2057 //TODO: how to handle frame properties at styles 2058 } 2059 } 2060 break; 2061 case NS_ooxml::LN_CT_LineNumber_start: 2062 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 2063 case NS_ooxml::LN_CT_LineNumber_distance: 2064 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 2065 case NS_ooxml::LN_CT_TrackChange_author: 2066 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2067 m_pImpl->SetCurrentRedlineAuthor( sStringValue ); 2068 break; 2069 case NS_ooxml::LN_CT_TrackChange_date: 2070 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2071 m_pImpl->SetCurrentRedlineDate( sStringValue ); 2072 break; 2073 case NS_ooxml::LN_CT_Markup_id: 2074 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2075 m_pImpl->SetCurrentRedlineId( nIntValue ); 2076 break; 2077 case NS_ooxml::LN_token: 2078 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2079 m_pImpl->SetCurrentRedlineToken( nIntValue ); 2080 break; 2081 case NS_ooxml::LN_CT_LineNumber_countBy: 2082 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 2083 case NS_ooxml::LN_CT_LineNumber_restart: 2084 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 2085 { 2086 //line numbering in Writer is a global document setting 2087 //in Word is a section setting 2088 //if line numbering is switched on anywhere in the document it's set at the global settings 2089 LineNumberSettings aSettings = m_pImpl->GetLineNumberSettings(); 2090 switch( nName ) 2091 { 2092 case NS_ooxml::LN_CT_LineNumber_countBy: 2093 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2094 aSettings.nInterval = nIntValue; 2095 break; 2096 case NS_ooxml::LN_CT_LineNumber_start: 2097 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2098 aSettings.nStartValue = nIntValue; // todo: has to be set at (each) first paragraph 2099 break; 2100 case NS_ooxml::LN_CT_LineNumber_distance: 2101 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2102 aSettings.nDistance = ConversionHelper::convertTwipToMM100( nIntValue ); 2103 break; 2104 case NS_ooxml::LN_CT_LineNumber_restart: 2105 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2106 //page:empty, probably 0,section:1,continuous:2; 2107 aSettings.bRestartAtEachPage = nIntValue < 1; 2108 break; 2109 default:; 2110 } 2111 m_pImpl->SetLineNumberSettings( aSettings ); 2112 } 2113 break; 2114 case NS_ooxml::LN_CT_FtnEdnRef_customMarkFollows: 2115 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2116 m_pImpl->SetCustomFtnMark( true ); 2117 break; 2118 case NS_ooxml::LN_CT_FtnEdnRef_id: 2119 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 2120 // footnote or endnote reference id - not needed 2121 case NS_ooxml::LN_CT_Color_themeColor: 2122 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 2123 case NS_ooxml::LN_CT_Color_themeTint: 2124 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 2125 case NS_ooxml::LN_CT_Color_themeShade: 2126 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 2127 //unsupported 2128 break; 2129 case NS_ooxml::LN_endtrackchange: 2130 m_pImpl->RemoveCurrentRedline( ); 2131 break; 2132 case NS_ooxml::LN_CT_DocGrid_linePitch: 2133 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2134 { 2135 //see SwWW8ImplReader::SetDocumentGrid 2136 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 2137 if(pSectionContext) 2138 { 2139 pSectionContext->SetGridLinePitch( ConversionHelper::convertTwipToMM100( nIntValue ) ); 2140 } 2141 } 2142 break; 2143 case NS_ooxml::LN_CT_DocGrid_charSpace: 2144 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2145 { 2146 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 2147 if(pSectionContext) 2148 { 2149 pSectionContext->SetDxtCharSpace( nIntValue ); 2150 } 2151 } 2152 break; 2153 case NS_ooxml::LN_CT_DocGrid_type: 2154 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2155 { 2156 if (pSectionContext != NULL) 2157 { 2158 pSectionContext->SetGridType(nIntValue); 2159 } 2160 } 2161 break; 2162 default: 2163 { 2164 #if OSL_DEBUG_LEVEL > 0 2165 ::rtl::OString sMessage( "DomainMapper::attribute() - Id: "); 2166 sMessage += ::rtl::OString::valueOf( sal_Int32( nName ), 10 ); 2167 sMessage += ::rtl::OString(" / 0x"); 2168 sMessage += ::rtl::OString::valueOf( sal_Int32( nName ), 16 ); 2169 // sMessage += ::rtl::OString(" / "); 2170 // sMessage += ::rtl::OString 2171 // ((*QNameToString::Instance())(nName).c_str()); 2172 sMessage += ::rtl::OString(" value: "); 2173 sMessage += ::rtl::OString::valueOf( sal_Int32( nIntValue ), 10 ); 2174 sMessage += ::rtl::OString(" / 0x"); 2175 sMessage += ::rtl::OString::valueOf( sal_Int32( nIntValue ), 16 ); 2176 OSL_ENSURE( false, sMessage.getStr()); // 2177 #endif 2178 } 2179 } 2180 } 2181 } 2182 /*-- 09.06.2006 09:52:12--------------------------------------------------- 2183 2184 -----------------------------------------------------------------------*/ 2185 void DomainMapper::lcl_sprm(Sprm & rSprm) 2186 { 2187 if( !m_pImpl->getTableManager().sprm(rSprm)) 2188 sprmWithProps( rSprm, m_pImpl->GetTopContext() ); 2189 } 2190 /*-- 20.06.2006 09:58:33--------------------------------------------------- 2191 2192 -----------------------------------------------------------------------*/ 2193 void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType eSprmType ) 2194 { 2195 OSL_ENSURE(rContext.get(), "PropertyMap has to be valid!"); 2196 if(!rContext.get()) 2197 return ; 2198 2199 sal_uInt32 nSprmId = rSprm.getId(); 2200 //needed for page properties 2201 SectionPropertyMap * pSectionContext = m_pImpl->GetSectionContext(); 2202 2203 //TODO: In rtl-paragraphs the meaning of left/right are to be exchanged 2204 bool bExchangeLeftRight = false; 2205 // if( nSprmId == NS_sprm::LN_PJcExtra && AlreadyInRTLPara() ) 2206 // bExchangeLeftRight = true; 2207 Value::Pointer_t pValue = rSprm.getValue(); 2208 sal_Int32 nIntValue = pValue->getInt(); 2209 rtl::OUString sStringValue = pValue->getString(); 2210 // printf ( "DomainMapper::sprm(0x%.4x, 0x%.4x) [%s]\n", (unsigned int)nSprmId, (unsigned int)nIntValue, ::rtl::OUStringToOString(sStringValue, RTL_TEXTENCODING_DONTKNOW).getStr()); 2211 /* WRITERFILTERSTATUS: table: sprmdata */ 2212 2213 switch(nSprmId) 2214 { 2215 case 2: // sprmPIstd 2216 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2217 case 0x4600: 2218 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2219 break; // sprmPIstd - style code 2220 case 3: // "sprmPIstdPermute 2221 case NS_sprm::LN_PIstdPermute: 2222 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2223 break; // sprmPIstdPermute 2224 case NS_sprm::LN_PIncLvl: 2225 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2226 break; // sprmPIncLvl 2227 case NS_sprm::LN_PJcExtra: // sprmPJc Asian (undocumented) 2228 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2229 case NS_sprm::LN_PJc: // sprmPJc 2230 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2231 handleParaJustification(nIntValue, rContext, bExchangeLeftRight); 2232 break; 2233 case NS_sprm::LN_PFSideBySide: 2234 /* WRITERFILTERSTATUS: done: 0, planned: 3, spent: 0 */ 2235 /* WRITERFILTERSTATUS: comment: */ 2236 break; // sprmPFSideBySide 2237 2238 case NS_sprm::LN_PFKeep: // sprmPFKeep 2239 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 2240 /* WRITERFILTERSTATUS: comment: */ 2241 rContext->Insert(PROP_PARA_SPLIT, true, uno::makeAny(nIntValue ? false : true)); 2242 break; 2243 case NS_sprm::LN_PFKeepFollow: // sprmPFKeepFollow 2244 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */ 2245 /* WRITERFILTERSTATUS: comment: */ 2246 rContext->Insert(PROP_PARA_KEEP_TOGETHER, true, uno::makeAny( nIntValue ? true : false) ); 2247 break; 2248 case NS_sprm::LN_PFPageBreakBefore: 2249 /* WRITERFILTERSTATUS: done: 100, planned: 3, spent: 0 */ 2250 /* WRITERFILTERSTATUS: comment: */ 2251 rContext->Insert(PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_PAGE_BEFORE ) ); 2252 break; // sprmPFPageBreakBefore 2253 case NS_sprm::LN_PBrcl: 2254 break; // sprmPBrcl 2255 case NS_sprm::LN_PBrcp: 2256 break; // sprmPBrcp 2257 case NS_sprm::LN_PIlvl: // sprmPIlvl 2258 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */ 2259 /* WRITERFILTERSTATUS: comment: */ 2260 //todo: Numbering level will be implemented in the near future (OOo 3.0?) 2261 if( m_pImpl->IsStyleSheetImport() ) 2262 { 2263 //style sheets cannot have a numbering rule attached 2264 StyleSheetPropertyMap* pStyleSheetPropertyMap = dynamic_cast< StyleSheetPropertyMap* >( rContext.get() ); 2265 pStyleSheetPropertyMap->SetListLevel( (sal_Int16)nIntValue ); 2266 } 2267 else 2268 rContext->Insert( PROP_NUMBERING_LEVEL, true, uno::makeAny( (sal_Int16)nIntValue )); 2269 break; 2270 case NS_sprm::LN_PIlfo: // sprmPIlfo 2271 /* WRITERFILTERSTATUS: done: 50, planned: 0, spent: 1 */ 2272 /* WRITERFILTERSTATUS: comment: */ 2273 { 2274 //convert the ListTable entry to a NumberingRules propery and apply it 2275 ListsManager::Pointer pListTable = m_pImpl->GetListTable(); 2276 ListDef::Pointer pList = pListTable->GetList( nIntValue ); 2277 if( pList.get( ) ) 2278 { 2279 if( m_pImpl->IsStyleSheetImport() ) 2280 { 2281 //style sheets cannot have a numbering rule attached 2282 StyleSheetPropertyMap* pStyleSheetPropertyMap = dynamic_cast< StyleSheetPropertyMap* >( rContext.get() ); 2283 pStyleSheetPropertyMap->SetListId( nIntValue ); 2284 } 2285 else 2286 { 2287 uno::Any aRules = uno::makeAny( pList->GetNumberingRules( ) ); 2288 rContext->Insert( PROP_NUMBERING_RULES, true, aRules ); 2289 } 2290 } 2291 else if ( !m_pImpl->IsStyleSheetImport( ) ) 2292 { 2293 rtl::OUString sNone; 2294 rContext->Insert( PROP_NUMBERING_STYLE_NAME, true, uno::makeAny( sNone ) ); 2295 } 2296 } 2297 break; 2298 case NS_sprm::LN_PFNoLineNumb: // sprmPFNoLineNumb 2299 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */ 2300 /* WRITERFILTERSTATUS: comment: */ 2301 rContext->Insert(PROP_PARA_LINE_NUMBER_COUNT, true, uno::makeAny( nIntValue ? false : true) ); 2302 break; 2303 case NS_sprm::LN_PChgTabsPapx: // sprmPChgTabsPapx 2304 /* WRITERFILTERSTATUS: done: 90, planned: 8, spent: 8 */ 2305 /* WRITERFILTERSTATUS: comment: bar tab stops a unavailable */ 2306 { 2307 // Initialize tab stop vector from style sheet 2308 uno::Any aValue = m_pImpl->GetPropertyFromStyleSheet(PROP_PARA_TAB_STOPS); 2309 uno::Sequence< style::TabStop > aStyleTabStops; 2310 if(aValue >>= aStyleTabStops) 2311 { 2312 m_pImpl->InitTabStopFromStyle( aStyleTabStops ); 2313 } 2314 2315 //create a new tab stop property - this is done with the contained properties 2316 resolveSprmProps(*this, rSprm); 2317 //add this property 2318 rContext->Insert(PROP_PARA_TAB_STOPS, true, uno::makeAny( m_pImpl->GetCurrentTabStopAndClear())); 2319 } 2320 break; 2321 case 0x845d: //right margin Asian - undocumented 2322 case 0x845e: //left margin Asian - undocumented 2323 case 16: // sprmPDxaRight - right margin 2324 case NS_sprm::LN_PDxaRight: // sprmPDxaRight - right margin 2325 case 17: 2326 case NS_sprm::LN_PDxaLeft: // sprmPDxaLeft 2327 /* WRITERFILTERSTATUS: done: 50, planned: 5, spent: 1 */ 2328 if( NS_sprm::LN_PDxaLeft == nSprmId || 0x17 == nSprmId|| (bExchangeLeftRight && nSprmId == 0x845d) || ( !bExchangeLeftRight && nSprmId == 0x845e)) 2329 rContext->Insert( 2330 eSprmType == SPRM_DEFAULT ? PROP_PARA_LEFT_MARGIN : PROP_LEFT_MARGIN, 2331 true, 2332 uno::makeAny( ConversionHelper::convertTwipToMM100( nIntValue ) )); 2333 else if(eSprmType == SPRM_DEFAULT) 2334 rContext->Insert( 2335 PROP_PARA_RIGHT_MARGIN, true, 2336 uno::makeAny( ConversionHelper::convertTwipToMM100(nIntValue ) )); 2337 //TODO: what happens to the right margins in numberings? 2338 break; 2339 case 18: // sprmPNest 2340 case NS_sprm::LN_PNest: // sprmPNest 2341 //not handled in the old WW8 filter 2342 break; 2343 case NS_sprm::LN_PDxaLeft1: // sprmPDxaLeft1 2344 case 19: 2345 case NS_sprm::LN_PDxaLeft180: // sprmPDxaLeft180 2346 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */ 2347 rContext->Insert( 2348 eSprmType == SPRM_DEFAULT ? PROP_PARA_FIRST_LINE_INDENT : PROP_FIRST_LINE_OFFSET, 2349 true, 2350 uno::makeAny( ConversionHelper::convertTwipToMM100(nIntValue ) )); 2351 break; 2352 case 20 : // sprmPDyaLine 2353 case NS_sprm::LN_PDyaLine: // sprmPDyaLine 2354 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */ 2355 { 2356 style::LineSpacing aSpacing; 2357 sal_Int16 nDistance = sal_Int16(nIntValue & 0xffff); 2358 if(nIntValue & 0xffff0000) 2359 { 2360 // single line in Writer is 100, in Word it is 240 2361 aSpacing.Mode = style::LineSpacingMode::PROP; 2362 aSpacing.Height = sal_Int16(sal_Int32(nDistance) * 100 /240); 2363 } 2364 else 2365 { 2366 if(nDistance < 0) 2367 { 2368 aSpacing.Mode = style::LineSpacingMode::FIX; 2369 aSpacing.Height = sal_Int16(ConversionHelper::convertTwipToMM100(-nDistance)); 2370 } 2371 else if(nDistance >0) 2372 { 2373 aSpacing.Mode = style::LineSpacingMode::MINIMUM; 2374 aSpacing.Height = sal_Int16(ConversionHelper::convertTwipToMM100(nDistance)); 2375 } 2376 } 2377 rContext->Insert(PROP_PARA_LINE_SPACING, true, uno::makeAny( aSpacing )); 2378 } 2379 break; 2380 case 21 : // legacy version 2381 case NS_sprm::LN_PDyaBefore: // sprmPDyaBefore 2382 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */ 2383 rContext->Insert(PROP_PARA_TOP_MARGIN, true, uno::makeAny( ConversionHelper::convertTwipToMM100( nIntValue ) )); 2384 break; 2385 case 22 : 2386 case NS_sprm::LN_PDyaAfter: // sprmPDyaAfter 2387 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */ 2388 rContext->Insert(PROP_PARA_BOTTOM_MARGIN, true, uno::makeAny( ConversionHelper::convertTwipToMM100( nIntValue ) )); 2389 break; 2390 2391 case 23: //sprmPChgTabs 2392 case NS_sprm::LN_PChgTabs: // sprmPChgTabs 2393 /* WRITERFILTERSTATUS: done: 0, planned: 3, spent: 0 */ 2394 OSL_ENSURE( false, "unhandled"); 2395 //tabs of list level? 2396 break; 2397 case 24: // "sprmPFInTable" 2398 case NS_sprm::LN_PFInTable: 2399 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2400 break; // sprmPFInTable 2401 case NS_sprm::LN_PTableDepth: //sprmPTableDepth 2402 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */ 2403 //not handled via sprm but via text( 0x07 ) 2404 break; 2405 case 25: // "sprmPTtp" pap.fTtp 2406 case NS_sprm::LN_PFTtp: // sprmPFTtp was: Read_TabRowEnd 2407 break; 2408 case 26: // "sprmPDxaAbs 2409 case NS_sprm::LN_PDxaAbs: 2410 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2411 break; // sprmPDxaAbs 2412 case 27: //sprmPDyaAbs 2413 case NS_sprm::LN_PDyaAbs: 2414 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2415 break; // sprmPDyaAbs 2416 case NS_sprm::LN_PDxaWidth: 2417 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2418 break; // sprmPDxaWidth 2419 case NS_sprm::LN_PPc: 2420 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2421 break; // sprmPPc 2422 case NS_sprm::LN_PBrcTop10: 2423 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2424 break; // sprmPBrcTop10 2425 case NS_sprm::LN_PBrcLeft10: 2426 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2427 break; // sprmPBrcLeft10 2428 case NS_sprm::LN_PBrcBottom10: 2429 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2430 break; // sprmPBrcBottom10 2431 case NS_sprm::LN_PBrcRight10: 2432 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2433 break; // sprmPBrcRight10 2434 case NS_sprm::LN_PBrcBetween10: 2435 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2436 break; // sprmPBrcBetween10 2437 case NS_sprm::LN_PBrcBar10: 2438 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2439 break; // sprmPBrcBar10 2440 case NS_sprm::LN_PDxaFromText10: 2441 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2442 break; // sprmPDxaFromText10 2443 case NS_sprm::LN_PWr: 2444 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2445 break; // sprmPWr 2446 2447 case NS_ooxml::LN_CT_PrBase_pBdr: //paragraph border 2448 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2449 resolveSprmProps(*this, rSprm); 2450 break; 2451 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2452 case NS_sprm::LN_PBrcTop: // sprmPBrcTop 2453 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2454 /* WRITERFILTERSTATUS: comment: page borders are no handled yet, conversion incomplete */ 2455 case NS_sprm::LN_PBrcLeft: // sprmPBrcLeft 2456 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2457 /* WRITERFILTERSTATUS: comment: page borders are no handled yet, conversion incomplete */ 2458 case NS_sprm::LN_PBrcBottom: // sprmPBrcBottom 2459 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2460 /* WRITERFILTERSTATUS: comment: page borders are no handled yet, conversion incomplete */ 2461 case NS_sprm::LN_PBrcRight: // sprmPBrcRight 2462 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2463 /* WRITERFILTERSTATUS: comment: page borders are no handled yet, conversion incomplete */ 2464 case NS_sprm::LN_PBrcBetween: // sprmPBrcBetween 2465 /* WRITERFILTERSTATUS: done: 0, planned: 8, spent: 0 */ 2466 /* WRITERFILTERSTATUS: comment: */ 2467 { 2468 //in binary format the borders are directly provided in OOXML they are inside of properties 2469 if( IsOOXMLImport() ) 2470 { 2471 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); 2472 if( pProperties.get()) 2473 { 2474 BorderHandlerPtr pBorderHandler( new BorderHandler( true ) ); 2475 pProperties->resolve(*pBorderHandler); 2476 PropertyIds eBorderId = PropertyIds( 0 ); 2477 PropertyIds eBorderDistId = PropertyIds( 0 ); 2478 switch( nSprmId ) 2479 { 2480 case NS_sprm::LN_PBrcTop: 2481 /* WRITERFILTERSTATUS: */ 2482 eBorderId = PROP_TOP_BORDER; 2483 eBorderDistId = PROP_TOP_BORDER_DISTANCE; 2484 break; 2485 case NS_sprm::LN_PBrcLeft: 2486 /* WRITERFILTERSTATUS: */ 2487 eBorderId = PROP_LEFT_BORDER; 2488 eBorderDistId = PROP_LEFT_BORDER_DISTANCE; 2489 break; 2490 case NS_sprm::LN_PBrcBottom: 2491 /* WRITERFILTERSTATUS: */ 2492 eBorderId = PROP_BOTTOM_BORDER ; 2493 eBorderDistId = PROP_BOTTOM_BORDER_DISTANCE; 2494 break; 2495 case NS_sprm::LN_PBrcRight: 2496 /* WRITERFILTERSTATUS: */ 2497 eBorderId = PROP_RIGHT_BORDER; 2498 eBorderDistId = PROP_RIGHT_BORDER_DISTANCE ; 2499 break; 2500 case NS_sprm::LN_PBrcBetween: 2501 /* WRITERFILTERSTATUS: */ 2502 //not supported 2503 break; 2504 default:; 2505 } 2506 if( eBorderId ) 2507 rContext->Insert( eBorderId, true, uno::makeAny( pBorderHandler->getBorderLine()) , true); 2508 if(eBorderDistId) 2509 rContext->Insert(eBorderDistId, true, uno::makeAny( pBorderHandler->getLineDistance()), true); 2510 } 2511 } 2512 else 2513 { 2514 table::BorderLine aBorderLine; 2515 sal_Int32 nLineDistance = ConversionHelper::MakeBorderLine( nIntValue, aBorderLine ); 2516 PropertyIds eBorderId = PROP_LEFT_BORDER; 2517 PropertyIds eBorderDistId = PROP_LEFT_BORDER_DISTANCE ; 2518 switch( nSprmId ) 2519 { 2520 case NS_sprm::LN_PBrcBetween: // sprmPBrcBetween 2521 /* WRITERFILTERSTATUS: */ 2522 OSL_ENSURE( false, "TODO: inner border is not handled"); 2523 break; 2524 case NS_sprm::LN_PBrcLeft: // sprmPBrcLeft 2525 /* WRITERFILTERSTATUS: */ 2526 eBorderId = PROP_LEFT_BORDER; 2527 eBorderDistId = PROP_LEFT_BORDER_DISTANCE ; 2528 break; 2529 case NS_sprm::LN_PBrcRight: // sprmPBrcRight 2530 /* WRITERFILTERSTATUS: */ 2531 eBorderId = PROP_RIGHT_BORDER ; 2532 eBorderDistId = PROP_RIGHT_BORDER_DISTANCE ; 2533 break; 2534 case NS_sprm::LN_PBrcTop: // sprmPBrcTop 2535 /* WRITERFILTERSTATUS: */ 2536 eBorderId = PROP_TOP_BORDER ; 2537 eBorderDistId = PROP_TOP_BORDER_DISTANCE; 2538 break; 2539 case NS_sprm::LN_PBrcBottom: // sprmPBrcBottom 2540 /* WRITERFILTERSTATUS: */ 2541 default: 2542 eBorderId = PROP_BOTTOM_BORDER ; 2543 eBorderDistId = PROP_BOTTOM_BORDER_DISTANCE; 2544 } 2545 rContext->Insert(eBorderId, true, uno::makeAny( aBorderLine )); 2546 rContext->Insert(eBorderDistId, true, uno::makeAny( nLineDistance )); 2547 } 2548 } 2549 break; 2550 case NS_sprm::LN_PBorderTop: 2551 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2552 /* WRITERFILTERSTATUS: comment: probably _real_ border colors, unhandled */ 2553 case NS_sprm::LN_PBorderLeft: 2554 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2555 /* WRITERFILTERSTATUS: comment: probably _real_ border colors, unhandled */ 2556 case NS_sprm::LN_PBorderBottom: 2557 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2558 /* WRITERFILTERSTATUS: comment: probably _real_ border colors, unhandled */ 2559 case NS_sprm::LN_PBorderRight: 2560 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2561 /* WRITERFILTERSTATUS: comment: probably _real_ border colors, unhandled */ 2562 OSL_ENSURE( false, "TODO: border color definition"); 2563 break; 2564 case NS_sprm::LN_PBrcBar: 2565 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2566 break; // sprmPBrcBar 2567 case NS_sprm::LN_PFNoAutoHyph: // sprmPFNoAutoHyph 2568 /* WRITERFILTERSTATUS: done: 100, planned: 1, spent: 0 */ 2569 rContext->Insert(PROP_PARA_IS_HYPHENATION, true, uno::makeAny( nIntValue ? false : true )); 2570 break; 2571 case NS_sprm::LN_PWHeightAbs: 2572 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2573 break; // sprmPWHeightAbs 2574 case NS_sprm::LN_PDcs: 2575 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2576 break; // sprmPDcs 2577 2578 case NS_sprm::LN_PShd: // sprmPShd 2579 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 2 */ 2580 { 2581 //contains fore color, back color and shadow percentage, results in a brush 2582 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); 2583 if( pProperties.get()) 2584 { 2585 CellColorHandlerPtr pCellColorHandler( new CellColorHandler ); 2586 pCellColorHandler->setParagraph(); 2587 pProperties->resolve(*pCellColorHandler); 2588 rContext->insert( pCellColorHandler->getProperties(), true ); 2589 } 2590 } 2591 break; 2592 case NS_sprm::LN_PDyaFromText: 2593 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2594 break; // sprmPDyaFromText 2595 case NS_sprm::LN_PDxaFromText: 2596 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2597 break; // sprmPDxaFromText 2598 case NS_sprm::LN_PFLocked: 2599 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2600 break; // sprmPFLocked 2601 case NS_sprm::LN_PFWidowControl: 2602 case NS_ooxml::LN_CT_PPrBase_widowControl: 2603 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2604 { 2605 uno::Any aVal( uno::makeAny( sal_Int8(nIntValue ? 2 : 0 ))); 2606 rContext->Insert( PROP_PARA_WIDOWS, true, aVal ); 2607 rContext->Insert( PROP_PARA_ORPHANS, true, aVal ); 2608 } 2609 break; // sprmPFWidowControl 2610 case NS_sprm::LN_PRuler: 2611 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2612 break; // sprmPRuler 2613 case NS_sprm::LN_PFKinsoku: 2614 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2615 break; // sprmPFKinsoku 2616 case NS_sprm::LN_PFWordWrap: 2617 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2618 break; // sprmPFWordWrap 2619 case NS_sprm::LN_PFOverflowPunct: ; // sprmPFOverflowPunct - hanging punctuation 2620 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2621 rContext->Insert(PROP_PARA_IS_HANGING_PUNCTUATION, true, uno::makeAny( nIntValue ? false : true )); 2622 break; 2623 case NS_sprm::LN_PFTopLinePunct: 2624 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2625 break; // sprmPFTopLinePunct 2626 case NS_sprm::LN_PFAutoSpaceDE: 2627 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2628 break; // sprmPFAutoSpaceDE 2629 case NS_sprm::LN_PFAutoSpaceDN: 2630 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2631 break; // sprmPFAutoSpaceDN 2632 case NS_sprm::LN_PWAlignFont: 2633 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2634 break; // sprmPWAlignFont 2635 case NS_sprm::LN_PFrameTextFlow: 2636 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2637 break; // sprmPFrameTextFlow 2638 case NS_sprm::LN_PISnapBaseLine: 2639 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2640 break; // sprmPISnapBaseLine 2641 case NS_sprm::LN_PAnld: 2642 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2643 break; // sprmPAnld 2644 case NS_sprm::LN_PPropRMark: 2645 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2646 break; // sprmPPropRMark 2647 case NS_sprm::LN_POutLvl: 2648 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2649 { 2650 sal_Int16 nLvl = static_cast< sal_Int16 >( nIntValue ); 2651 if( m_pImpl->IsStyleSheetImport() ) 2652 { 2653 2654 StyleSheetPropertyMap* pStyleSheetPropertyMap = dynamic_cast< StyleSheetPropertyMap* >( rContext.get() ); 2655 pStyleSheetPropertyMap->SetOutlineLevel( nLvl ); 2656 } 2657 else 2658 { 2659 nLvl = nLvl >= WW_OUTLINE_MIN && nLvl < WW_OUTLINE_MAX? nLvl+1 : 0; //0 means no outline level set on 2660 rContext->Insert(PROP_OUTLINE_LEVEL, true, uno::makeAny ( nLvl )); 2661 } 2662 } 2663 break; // sprmPOutLvl 2664 case NS_sprm::LN_PFBiDi: 2665 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2666 rContext->Insert(PROP_WRITING_MODE, false, uno::makeAny( text::WritingMode2::RL_TB )); 2667 rContext->Insert(PROP_PARA_ADJUST, false, uno::makeAny( style::ParagraphAdjust_RIGHT )); 2668 2669 break; // sprmPFBiDi 2670 case NS_ooxml::LN_EG_SectPrContents_bidi: 2671 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2672 if (pSectionContext != NULL) 2673 pSectionContext->Insert(PROP_WRITING_MODE,false, uno::makeAny( text::WritingMode2::RL_TB)); 2674 break; 2675 case NS_sprm::LN_PFNumRMIns: 2676 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2677 break; // sprmPFNumRMIns 2678 case NS_sprm::LN_PCrLf: 2679 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2680 break; // sprmPCrLf 2681 case NS_sprm::LN_PNumRM: 2682 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2683 break; // sprmPNumRM 2684 case NS_sprm::LN_PHugePapx: 2685 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2686 break; // sprmPHugePapx 2687 case NS_sprm::LN_PFUsePgsuSettings: 2688 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2689 break; // sprmPFUsePgsuSettings 2690 case NS_sprm::LN_PFAdjustRight: 2691 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2692 break; // sprmPFAdjustRight 2693 case NS_sprm::LN_CFRMarkDel: 2694 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2695 break; // sprmCFRMarkDel 2696 case NS_sprm::LN_CFRMark: 2697 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2698 break; // sprmCFRMark 2699 case NS_sprm::LN_CFFldVanish: 2700 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2701 break; // sprmCFFldVanish 2702 case NS_sprm::LN_CFSpec: // sprmCFSpec 2703 break; 2704 case NS_sprm::LN_CPicLocation: // sprmCPicLocation 2705 //is being resolved on the tokenizer side 2706 break; 2707 case NS_sprm::LN_CIbstRMark: 2708 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2709 break; // sprmCIbstRMark 2710 case NS_sprm::LN_CDttmRMark: 2711 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2712 break; // sprmCDttmRMark 2713 case NS_sprm::LN_CFData: 2714 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2715 break; // sprmCFData 2716 case NS_sprm::LN_CIdslRMark: 2717 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2718 break; // sprmCIdslRMark 2719 case NS_sprm::LN_CChs: 2720 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2721 break; // sprmCChs 2722 case NS_sprm::LN_CSymbol: // sprmCSymbol 2723 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2724 resolveSprmProps(*this, rSprm); //resolves LN_FONT and LN_CHAR 2725 break; 2726 case NS_sprm::LN_CFOle2: 2727 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2728 break; // sprmCFOle2 2729 case NS_sprm::LN_CIdCharType: 2730 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2731 break; // sprmCIdCharType 2732 case NS_sprm::LN_CHighlight: 2733 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2734 { 2735 sal_Int32 nColor = 0; 2736 if(true ==( mbIsHighlightSet = getColorFromIndex(nIntValue, nColor))) 2737 rContext->Insert(PROP_CHAR_BACK_COLOR, true, uno::makeAny( nColor )); 2738 else if (mnBackgroundColor) 2739 rContext->Insert(PROP_CHAR_BACK_COLOR, true, uno::makeAny( mnBackgroundColor )); 2740 } 2741 break; // sprmCHighlight 2742 case NS_sprm::LN_CObjLocation: 2743 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2744 break; // sprmCObjLocation 2745 case NS_sprm::LN_CFFtcAsciSymb: 2746 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2747 break; // sprmCFFtcAsciSymb 2748 case NS_sprm::LN_CIstd: 2749 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2750 break; // sprmCIstd 2751 case NS_sprm::LN_CIstdPermute: 2752 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2753 break; // sprmCIstdPermute 2754 case NS_sprm::LN_CDefault: 2755 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2756 break; // sprmCDefault 2757 case NS_sprm::LN_CPlain: 2758 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2759 break; // sprmCPlain 2760 case NS_sprm::LN_CKcd: 2761 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2762 rContext->Insert(PROP_CHAR_EMPHASIS, true, uno::makeAny ( getEmphasisValue (nIntValue))); 2763 break; // sprmCKcd 2764 case NS_sprm::LN_CFEmboss:// sprmCFEmboss 2765 /* WRITERFILTERSTATUS: done: 100, planned: , spent: 0.5 */ 2766 case 60:// sprmCFBold 2767 case NS_sprm::LN_CFBoldBi:// sprmCFBoldBi (offset 0x27 to normal bold) 2768 /* WRITERFILTERSTATUS: done: 100, planned: , spent: 0.5 */ 2769 case NS_sprm::LN_CFItalicBi:// sprmCFItalicBi (offset 0x27 to normal italic) 2770 /* WRITERFILTERSTATUS: done: 100, planned: , spent: 0.5 */ 2771 case NS_sprm::LN_CFBold: //sprmCFBold 2772 /* WRITERFILTERSTATUS: done: 100, planned: , spent: 0.5 */ 2773 case 61: /*sprmCFItalic*/ 2774 /* WRITERFILTERSTATUS: done: 100, planned: , spent: 0.5 */ 2775 case NS_sprm::LN_CFItalic: //sprmCFItalic 2776 /* WRITERFILTERSTATUS: done: 100, planned: , spent: 0.5 */ 2777 case NS_sprm::LN_CFStrike: //sprmCFStrike 2778 /* WRITERFILTERSTATUS: done: 100, planned: , spent: 0.5*/ 2779 case NS_sprm::LN_CFOutline: //sprmCFOutline 2780 /* WRITERFILTERSTATUS: done: 100, planned: , spent: 0.5 */ 2781 case NS_sprm::LN_CFShadow: //sprmCFShadow 2782 /* WRITERFILTERSTATUS: done: 100, planned: , spent: 0.5 */ 2783 case NS_sprm::LN_CFSmallCaps: //sprmCFSmallCaps 2784 /* WRITERFILTERSTATUS: done: 100, planned: , spent: 0.5 */ 2785 case NS_sprm::LN_CFCaps: //sprmCFCaps 2786 /* WRITERFILTERSTATUS: done: 100, planned: , spent: 0.5 */ 2787 case NS_sprm::LN_CFVanish: //sprmCFVanish 2788 /* WRITERFILTERSTATUS: done: 100, planned: , spent: 0.5 */ 2789 case NS_sprm::LN_CFDStrike: // sprmCFDStrike 2790 /* WRITERFILTERSTATUS: done: 100, planned: , spent: 0.5 */ 2791 { 2792 PropertyIds ePropertyId = PROP_CHAR_WEIGHT; //initialized to prevent warning! 2793 switch( nSprmId ) 2794 { 2795 case 60:// sprmCFBold 2796 case NS_sprm::LN_CFBoldBi: // sprmCFBoldBi 2797 case NS_sprm::LN_CFBold: /*sprmCFBold*/ 2798 /* WRITERFILTERSTATUS: */ 2799 ePropertyId = nSprmId != NS_sprm::LN_CFBoldBi ? PROP_CHAR_WEIGHT : PROP_CHAR_WEIGHT_COMPLEX; 2800 break; 2801 case 61: /*sprmCFItalic*/ 2802 case NS_sprm::LN_CFItalicBi: // sprmCFItalicBi 2803 case NS_sprm::LN_CFItalic: /*sprmCFItalic*/ 2804 /* WRITERFILTERSTATUS: */ 2805 ePropertyId = nSprmId == 0x836 ? PROP_CHAR_POSTURE : PROP_CHAR_POSTURE_COMPLEX; 2806 break; 2807 case NS_sprm::LN_CFStrike: /*sprmCFStrike*/ 2808 case NS_sprm::LN_CFDStrike : /*sprmCFDStrike double strike through*/ 2809 /* WRITERFILTERSTATUS: */ 2810 ePropertyId = PROP_CHAR_STRIKEOUT; 2811 break; 2812 case NS_sprm::LN_CFOutline: /*sprmCFOutline*/ 2813 /* WRITERFILTERSTATUS: */ 2814 ePropertyId = PROP_CHAR_CONTOURED; 2815 break; 2816 case NS_sprm::LN_CFShadow: /*sprmCFShadow*/ 2817 /* WRITERFILTERSTATUS: */ 2818 ePropertyId = PROP_CHAR_SHADOWED; 2819 break; 2820 case NS_sprm::LN_CFSmallCaps: /*sprmCFSmallCaps*/ 2821 case NS_sprm::LN_CFCaps: /*sprmCFCaps*/ 2822 /* WRITERFILTERSTATUS: */ 2823 ePropertyId = PROP_CHAR_CASE_MAP; 2824 break; 2825 case NS_sprm::LN_CFVanish: /*sprmCFVanish*/ 2826 /* WRITERFILTERSTATUS: */ 2827 ePropertyId = PROP_CHAR_HIDDEN; 2828 break; 2829 case NS_sprm::LN_CFEmboss: /*sprmCFEmboss*/ 2830 /* WRITERFILTERSTATUS: */ 2831 ePropertyId = PROP_CHAR_RELIEF; 2832 break; 2833 } 2834 //expected: 0,1,128,129 2835 if(nIntValue != 128) //inherited from paragraph - ignore 2836 { 2837 if( nIntValue == 129) //inverted style sheet value 2838 { 2839 //get value from style sheet and invert it 2840 sal_Int16 nStyleValue = 0; 2841 double fDoubleValue; 2842 uno::Any aStyleVal = m_pImpl->GetPropertyFromStyleSheet(ePropertyId); 2843 if( !aStyleVal.hasValue() ) 2844 { 2845 nIntValue = 0x83a == nSprmId ? 2846 4 : 1; 2847 } 2848 else if(aStyleVal.getValueTypeClass() == uno::TypeClass_FLOAT ) 2849 { 2850 //only in case of awt::FontWeight 2851 aStyleVal >>= fDoubleValue; 2852 nIntValue = fDoubleValue > 100. ? 0 : 1; 2853 } 2854 else if((aStyleVal >>= nStyleValue) || 2855 (nStyleValue = (sal_Int16)comphelper::getEnumAsINT32(aStyleVal)) >= 0 ) 2856 { 2857 nIntValue = 0x83a == nSprmId ? 2858 nStyleValue ? 0 : 4 : 2859 nStyleValue ? 0 : 1; 2860 } 2861 else 2862 { 2863 OSL_ENSURE( false, "what type was it"); 2864 } 2865 } 2866 2867 switch( nSprmId ) 2868 { 2869 case 60:/*sprmCFBold*/ 2870 case NS_sprm::LN_CFBold: /*sprmCFBold*/ 2871 case NS_sprm::LN_CFBoldBi: // sprmCFBoldBi 2872 /* WRITERFILTERSTATUS: */ 2873 { 2874 uno::Any aBold( uno::makeAny( nIntValue ? awt::FontWeight::BOLD : awt::FontWeight::NORMAL ) ); 2875 2876 rContext->Insert(ePropertyId, true, aBold ); 2877 if( nSprmId != NS_sprm::LN_CFBoldBi ) // sprmCFBoldBi 2878 rContext->Insert(PROP_CHAR_WEIGHT_ASIAN, true, aBold ); 2879 } 2880 break; 2881 case 61: /*sprmCFItalic*/ 2882 case NS_sprm::LN_CFItalic: /*sprmCFItalic*/ 2883 case NS_sprm::LN_CFItalicBi: // sprmCFItalicBi 2884 /* WRITERFILTERSTATUS: */ 2885 { 2886 uno::Any aPosture( uno::makeAny( nIntValue ? awt::FontSlant_ITALIC : awt::FontSlant_NONE ) ); 2887 rContext->Insert( ePropertyId, true, aPosture ); 2888 if( nSprmId != NS_sprm::LN_CFItalicBi ) // sprmCFItalicBi 2889 rContext->Insert(PROP_CHAR_POSTURE_ASIAN, true, aPosture ); 2890 } 2891 break; 2892 case NS_sprm::LN_CFStrike: /*sprmCFStrike*/ 2893 /* WRITERFILTERSTATUS: */ 2894 rContext->Insert(ePropertyId, true, 2895 uno::makeAny( nIntValue ? awt::FontStrikeout::SINGLE : awt::FontStrikeout::NONE ) ); 2896 break; 2897 case NS_sprm::LN_CFDStrike : /*sprmCFDStrike double strike through*/ 2898 /* WRITERFILTERSTATUS: */ 2899 rContext->Insert(ePropertyId, true, 2900 uno::makeAny( awt::FontStrikeout::DOUBLE ) ); 2901 break; 2902 case NS_sprm::LN_CFOutline: /*sprmCFOutline*/ 2903 case NS_sprm::LN_CFShadow: /*sprmCFShadow*/ 2904 case NS_sprm::LN_CFVanish: /*sprmCFVanish*/ 2905 /* WRITERFILTERSTATUS: */ 2906 rContext->Insert(ePropertyId, true, uno::makeAny( nIntValue ? true : false )); 2907 break; 2908 case NS_sprm::LN_CFSmallCaps: /*sprmCFSmallCaps*/ 2909 /* WRITERFILTERSTATUS: */ 2910 rContext->Insert(ePropertyId, true, 2911 uno::makeAny( nIntValue ? style::CaseMap::SMALLCAPS : style::CaseMap::NONE)); 2912 break; 2913 case NS_sprm::LN_CFCaps: /*sprmCFCaps*/ 2914 /* WRITERFILTERSTATUS: */ 2915 rContext->Insert(ePropertyId, true, 2916 uno::makeAny( nIntValue ? style::CaseMap::UPPERCASE : style::CaseMap::NONE)); 2917 break; 2918 case NS_sprm::LN_CFEmboss: /*sprmCFEmboss*/ 2919 /* WRITERFILTERSTATUS: */ 2920 rContext->Insert(ePropertyId, true, 2921 uno::makeAny( nIntValue ? awt::FontRelief::EMBOSSED : awt::FontRelief::NONE )); 2922 break; 2923 2924 } 2925 } 2926 } 2927 break; 2928 case NS_sprm::LN_CFtcDefault: 2929 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2930 break; // sprmCFtcDefault 2931 case NS_sprm::LN_CKul: // sprmCKul 2932 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2933 { 2934 // Parameter: 0 = none, 1 = single, 2 = by Word, 2935 // 3 = double, 4 = dotted, 5 = hidden 2936 // 6 = thick, 7 = dash, 8 = dot(not used) 2937 // 9 = dotdash 10 = dotdotdash 11 = wave 2938 handleUnderlineType(nIntValue, rContext); 2939 } 2940 break; 2941 case NS_sprm::LN_CSizePos: 2942 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2943 break; // sprmCSizePos 2944 case NS_sprm::LN_CLid: 2945 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2946 break; // sprmCLid 2947 case NS_sprm::LN_CIco: 2948 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2949 { 2950 sal_Int32 nColor = 0; 2951 if (getColorFromIndex(nIntValue, nColor)) 2952 rContext->Insert(PROP_CHAR_COLOR, true, uno::makeAny( nColor ) ); 2953 } 2954 break; // sprmCIco 2955 case NS_sprm::LN_CHpsBi: // sprmCHpsBi 2956 case NS_sprm::LN_CHps: // sprmCHps 2957 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2958 { 2959 //multiples of half points (12pt == 24) 2960 double fVal = double(nIntValue) / 2.; 2961 uno::Any aVal = uno::makeAny( fVal ); 2962 if( NS_sprm::LN_CHpsBi == nSprmId ) 2963 rContext->Insert( PROP_CHAR_HEIGHT_COMPLEX, true, aVal ); 2964 else 2965 { 2966 //Asian get the same value as Western 2967 rContext->Insert( PROP_CHAR_HEIGHT, true, aVal ); 2968 rContext->Insert( PROP_CHAR_HEIGHT_ASIAN, true, aVal ); 2969 } 2970 } 2971 break; 2972 case NS_sprm::LN_CHpsInc: 2973 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2974 break; // sprmCHpsInc 2975 case NS_sprm::LN_CHpsPos: 2976 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2977 { 2978 // FIXME: ww8 filter in ww8par6.cxx has a Read_SubSuperProp function 2979 // that counts the escapement from this value and font size. So it will be 2980 // on our TODO list 2981 sal_Int16 nEscapement = 0; 2982 sal_Int8 nProp = 100; 2983 if (nIntValue < 0) 2984 nEscapement = -58; 2985 else if (nIntValue > 0) 2986 nEscapement = 58; 2987 else /* (nIntValue == 0) */ 2988 nProp = 0; 2989 rContext->Insert(PROP_CHAR_ESCAPEMENT, true, uno::makeAny( nEscapement ) ); 2990 rContext->Insert(PROP_CHAR_ESCAPEMENT_HEIGHT, true, uno::makeAny( nProp ) ); 2991 } 2992 break; // sprmCHpsPos 2993 case NS_sprm::LN_CHpsPosAdj: 2994 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2995 break; // sprmCHpsPosAdj 2996 case NS_sprm::LN_CMajority: 2997 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2998 break; // sprmCMajority 2999 case NS_sprm::LN_CIss: // sprmCIss 3000 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3001 { 3002 //sub/super script 1: super, 2: sub, 0: normal 3003 sal_Int16 nEscapement = 0; 3004 sal_Int8 nProp = 58; 3005 switch(nIntValue) 3006 { 3007 case 1: //super 3008 nEscapement = 101; 3009 break; 3010 case 2: //sub 3011 nEscapement = -101; 3012 break; 3013 case 0: nProp = 0;break; //none 3014 } 3015 rContext->Insert(PROP_CHAR_ESCAPEMENT, true, uno::makeAny( nEscapement ) ); 3016 rContext->Insert(PROP_CHAR_ESCAPEMENT_HEIGHT, true, uno::makeAny( nProp ) ); 3017 } 3018 break; 3019 case NS_sprm::LN_CHpsNew50: 3020 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3021 break; // sprmCHpsNew50 3022 case NS_sprm::LN_CHpsInc1: 3023 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3024 break; // sprmCHpsInc1 3025 case 71 : //"sprmCDxaSpace" 3026 case 96 : //"sprmCDxaSpace" 3027 case NS_sprm::LN_CDxaSpace: // sprmCDxaSpace 3028 { 3029 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */ 3030 //Kerning half point values 3031 //TODO: there are two kerning values - 3032 // in ww8par6.cxx NS_sprm::LN_CHpsKern is used as boolean AutoKerning 3033 sal_Int16 nResult = static_cast<sal_Int16>(ConversionHelper::convertTwipToMM100(nIntValue)); 3034 if (m_pImpl->IsInComments()) 3035 { 3036 nResult = static_cast<sal_Int16>(nIntValue); 3037 } 3038 rContext->Insert(PROP_CHAR_CHAR_KERNING, true, uno::makeAny(nResult)); 3039 } 3040 break; 3041 case NS_sprm::LN_CHpsKern: // sprmCHpsKern auto kerning is bound to a minimum font size in Word - but not in Writer :-( 3042 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3043 rContext->Insert(PROP_CHAR_AUTO_KERNING, true, uno::makeAny( true ) ); 3044 break; 3045 case NS_sprm::LN_CMajority50: 3046 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3047 break; // sprmCMajority50 3048 case NS_sprm::LN_CHpsMul: 3049 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3050 break; // sprmCHpsMul 3051 case NS_sprm::LN_CYsri: 3052 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3053 break; // sprmCYsri 3054 case NS_sprm::LN_CRgFtc0: // sprmCRgFtc0 //ascii font index 3055 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3056 case NS_sprm::LN_CRgFtc1: // sprmCRgFtc1 //Asian font index 3057 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3058 case NS_sprm::LN_CRgFtc2: // sprmCRgFtc2 //CTL font index 3059 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3060 case NS_sprm::LN_CFtcBi: // sprmCFtcBi //font index of a CTL font 3061 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3062 { 3063 FontTablePtr pFontTable = m_pImpl->GetFontTable(); 3064 if(nIntValue >= 0 && pFontTable->size() > sal_uInt32(nIntValue)) 3065 { 3066 PropertyIds eFontName = PROP_CHAR_FONT_NAME; 3067 PropertyIds eFontStyle = PROP_CHAR_FONT_STYLE; 3068 PropertyIds eFontFamily = PROP_CHAR_FONT_FAMILY; 3069 PropertyIds eFontCharSet = PROP_CHAR_FONT_CHAR_SET; 3070 PropertyIds eFontPitch = PROP_CHAR_FONT_PITCH; 3071 switch(nSprmId) 3072 { 3073 case NS_sprm::LN_CRgFtc0: 3074 //already initialized 3075 break; 3076 case NS_sprm::LN_CRgFtc1: 3077 eFontName = PROP_CHAR_FONT_NAME_ASIAN; 3078 eFontStyle = PROP_CHAR_FONT_STYLE_ASIAN; 3079 eFontFamily = PROP_CHAR_FONT_FAMILY_ASIAN; 3080 eFontCharSet = PROP_CHAR_FONT_CHAR_SET_ASIAN; 3081 eFontPitch = PROP_CHAR_FONT_PITCH_ASIAN; 3082 break; 3083 case NS_sprm::LN_CRgFtc2: 3084 case NS_sprm::LN_CFtcBi: 3085 eFontName = PROP_CHAR_FONT_NAME_COMPLEX; 3086 eFontStyle = PROP_CHAR_FONT_STYLE_COMPLEX; 3087 eFontFamily = PROP_CHAR_FONT_FAMILY_COMPLEX; 3088 eFontCharSet = PROP_CHAR_FONT_CHAR_SET_COMPLEX; 3089 eFontPitch = PROP_CHAR_FONT_PITCH_COMPLEX; 3090 break; 3091 } 3092 const FontEntry::Pointer_t pFontEntry(pFontTable->getFontEntry(sal_uInt32(nIntValue))); 3093 rContext->Insert(eFontName, true, uno::makeAny( pFontEntry->sFontName )); 3094 // rContext->Insert(eFontStyle, uno::makeAny( pFontEntry-> )); 3095 // rContext->Insert(eFontFamily, uno::makeAny( pFontEntry-> )); 3096 rContext->Insert(eFontCharSet, true, uno::makeAny( (sal_Int16)pFontEntry->nTextEncoding )); 3097 rContext->Insert(eFontPitch, true, uno::makeAny( pFontEntry->nPitchRequest )); 3098 } 3099 } 3100 break; 3101 case NS_sprm::LN_CCharScale: // sprmCCharScale 3102 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3103 rContext->Insert(PROP_CHAR_SCALE_WIDTH, true, 3104 uno::makeAny( sal_Int16(nIntValue) )); 3105 break; 3106 case NS_sprm::LN_CFImprint: // sprmCFImprint 1 or 0 3107 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3108 // FontRelief: NONE, EMBOSSED, ENGRAVED 3109 rContext->Insert(PROP_CHAR_RELIEF, true, 3110 uno::makeAny( nIntValue ? awt::FontRelief::ENGRAVED : awt::FontRelief::NONE )); 3111 break; 3112 case NS_sprm::LN_CFObj: 3113 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3114 break; // sprmCFObj 3115 case NS_sprm::LN_CPropRMark: 3116 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3117 break; // sprmCPropRMark 3118 case NS_sprm::LN_CSfxText: 3119 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3120 // The file-format has many character animations. We have only 3121 // one, so we use it always. Suboptimal solution though. 3122 if (nIntValue) 3123 rContext->Insert(PROP_CHAR_FLASH, true, uno::makeAny( true )); 3124 else 3125 rContext->Insert(PROP_CHAR_FLASH, true, uno::makeAny( false )); 3126 break; // sprmCSfxText 3127 case NS_sprm::LN_CFBiDi: 3128 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3129 break; // sprmCFBiDi 3130 case NS_sprm::LN_CFDiacColor: 3131 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3132 break; // sprmCFDiacColor 3133 case NS_sprm::LN_CIcoBi: 3134 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3135 break; // sprmCIcoBi 3136 case NS_sprm::LN_CDispFldRMark: 3137 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3138 break; // sprmCDispFldRMark 3139 case NS_sprm::LN_CIbstRMarkDel: 3140 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3141 break; // sprmCIbstRMarkDel 3142 case NS_sprm::LN_CDttmRMarkDel: 3143 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3144 break; // sprmCDttmRMarkDel 3145 case NS_sprm::LN_CBrc: 3146 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3147 break; // sprmCBrc 3148 case NS_sprm::LN_CShd: 3149 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 3150 break; // sprmCShd 3151 case NS_sprm::LN_CIdslRMarkDel: 3152 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3153 break; // sprmCIdslRMarkDel 3154 case NS_sprm::LN_CFUsePgsuSettings: 3155 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3156 break; // sprmCFUsePgsuSettings 3157 case NS_sprm::LN_CCpg: 3158 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3159 break; // sprmCCpg 3160 case NS_sprm::LN_CLidBi: // sprmCLidBi language complex 3161 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3162 case NS_sprm::LN_CRgLid0_80: //sprmCRgLid0_80 3163 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 1 */ 3164 //undocumented but interpreted as western language 3165 case NS_sprm::LN_CRgLid0: // sprmCRgLid0 language Western 3166 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3167 case NS_sprm::LN_CRgLid1: // sprmCRgLid1 language Asian 3168 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3169 { 3170 lang::Locale aLocale; 3171 MsLangId::convertLanguageToLocale( (LanguageType)nIntValue, aLocale ); 3172 rContext->Insert(NS_sprm::LN_CRgLid0 == nSprmId ? PROP_CHAR_LOCALE : 3173 NS_sprm::LN_CRgLid1 == nSprmId ? PROP_CHAR_LOCALE_ASIAN : PROP_CHAR_LOCALE_COMPLEX, 3174 true, 3175 uno::makeAny( aLocale ) ); 3176 } 3177 break; 3178 3179 case NS_sprm::LN_CIdctHint: // sprmCIdctHint 3180 //list table - text offset??? 3181 break; 3182 case NS_sprm::LN_PicBrcl: 3183 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3184 break; // sprmPicBrcl 3185 case NS_sprm::LN_PicScale: 3186 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3187 break; // sprmPicScale 3188 case NS_sprm::LN_PicBrcTop: 3189 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3190 break; // sprmPicBrcTop 3191 case NS_sprm::LN_PicBrcLeft: 3192 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3193 break; // sprmPicBrcLeft 3194 case NS_sprm::LN_PicBrcBottom: 3195 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3196 break; // sprmPicBrcBoConversionHelper::convertTwipToMM100ttom 3197 case NS_sprm::LN_PicBrcRight: 3198 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3199 break; // sprmPicBrcRight 3200 case NS_sprm::LN_ScnsPgn: 3201 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3202 break; // sprmScnsPgn 3203 case NS_sprm::LN_SiHeadingPgn: 3204 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3205 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3206 if(pSectionContext) 3207 pSectionContext->SetEvenlySpaced( nIntValue > 0 ); 3208 3209 break; // sprmSiHeadingPgn 3210 case NS_sprm::LN_SOlstAnm: 3211 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3212 break; // sprmSOlstAnm 3213 case 136: 3214 case NS_sprm::LN_SDxaColWidth: // sprmSDxaColWidth 3215 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3216 // contains the twip width of the column as 3-byte-code 3217 // the lowet byte contains the index 3218 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3219 if(pSectionContext) 3220 pSectionContext->AppendColumnWidth( ConversionHelper::convertTwipToMM100( (nIntValue & 0xffff00) >> 8 )); 3221 break; 3222 case NS_sprm::LN_SDxaColSpacing: // sprmSDxaColSpacing 3223 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3224 // the lowet byte contains the index 3225 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3226 if(pSectionContext) 3227 pSectionContext->AppendColumnSpacing( ConversionHelper::convertTwipToMM100( (nIntValue & 0xffff00) >> 8 )); 3228 break; 3229 case 138: 3230 case NS_sprm::LN_SFEvenlySpaced: 3231 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3232 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3233 if(pSectionContext) 3234 pSectionContext->SetEvenlySpaced( nIntValue > 0 ); 3235 break; // sprmSFEvenlySpaced 3236 case NS_sprm::LN_SFProtected: // sprmSFProtected 3237 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3238 //todo: missing feature - unlocked sections in protected documents 3239 break; 3240 case NS_sprm::LN_SDmBinFirst: // sprmSDmBinFirst 3241 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3242 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3243 if(pSectionContext) 3244 pSectionContext->SetFirstPaperBin(nIntValue); 3245 break; 3246 case NS_sprm::LN_SDmBinOther: // sprmSDmBinOther 3247 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3248 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3249 if(pSectionContext) 3250 pSectionContext->SetPaperBin( nIntValue ); 3251 break; 3252 case NS_sprm::LN_SBkc: // sprmSBkc 3253 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */ 3254 /* break type 3255 0 - No break 3256 1 - New Colunn 3257 2 - New page 3258 3 - Even page 3259 4 - odd page 3260 */ 3261 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3262 if(pSectionContext) 3263 pSectionContext->SetBreakType( nIntValue ); 3264 break; 3265 case 143: 3266 case NS_sprm::LN_SFTitlePage: // sprmSFTitlePage 3267 case NS_ooxml::LN_EG_SectPrContents_titlePg: 3268 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3269 { 3270 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3271 if(pSectionContext) 3272 pSectionContext->SetTitlePage( nIntValue > 0 ? true : false );//section has title page 3273 } 3274 break; 3275 case 144: 3276 case NS_sprm::LN_SCcolumns: // sprmSCcolumns 3277 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3278 //no of columns - 1 3279 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3280 if(pSectionContext) 3281 pSectionContext->SetColumnCount( (sal_Int16) nIntValue ); 3282 break; 3283 case 145: 3284 case NS_sprm::LN_SDxaColumns: // sprmSDxaColumns 3285 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3286 //column distance - default 708 twip 3287 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3288 if(pSectionContext) 3289 pSectionContext->SetColumnDistance( ConversionHelper::convertTwipToMM100( nIntValue ) ); 3290 break; 3291 case NS_sprm::LN_SFAutoPgn: 3292 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3293 break; // sprmSFAutoPgn 3294 case 147: 3295 case NS_sprm::LN_SNfcPgn: // sprmSNfcPgn 3296 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3297 //page numbering 0 - Arab, 1 - ROMAN, 2 - roman, 3 - ABC, 4 abc 3298 sal_Int16 nNumbering; 3299 switch( nIntValue ) 3300 { 3301 case 1: nNumbering = style::NumberingType::ROMAN_UPPER; 3302 case 2: nNumbering = style::NumberingType::ROMAN_LOWER; 3303 case 3: nNumbering = style::NumberingType::CHARS_UPPER_LETTER; 3304 case 4: nNumbering = style::NumberingType::CHARS_LOWER_LETTER; 3305 case 0: 3306 default: 3307 nNumbering = style::NumberingType::ARABIC; 3308 } 3309 rContext->Insert( PROP_NUMBERING_TYPE, false, uno::makeAny( nNumbering ) ); 3310 break; 3311 case NS_sprm::LN_SDyaPgn: 3312 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3313 break; // sprmSDyaPgn 3314 case NS_sprm::LN_SDxaPgn: 3315 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3316 break; // sprmSDxaPgn 3317 case 150: 3318 case NS_sprm::LN_SFPgnRestart: // sprmSFPgnRestart 3319 { 3320 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3321 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3322 if(pSectionContext) 3323 pSectionContext->SetPageNoRestart( nIntValue > 0 ); 3324 } 3325 break; 3326 case NS_sprm::LN_SFEndnote: 3327 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3328 break; // sprmSFEndnote 3329 case 154: 3330 case NS_sprm::LN_SNLnnMod:// sprmSNLnnMod 3331 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3332 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3333 if( pSectionContext ) 3334 pSectionContext->SetLnnMod( nIntValue ); 3335 break; 3336 case 155: 3337 case NS_sprm::LN_SDxaLnn: // sprmSDxaLnn 3338 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3339 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3340 if( pSectionContext ) 3341 pSectionContext->SetdxaLnn( nIntValue ); 3342 break; 3343 case 152: 3344 case NS_sprm::LN_SLnc:// sprmSLnc 3345 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3346 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3347 if( pSectionContext ) 3348 pSectionContext->SetLnc( nIntValue ); 3349 break; 3350 case 160: 3351 case NS_sprm::LN_SLnnMin: // sprmSLnnMin 3352 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3353 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3354 if( pSectionContext ) 3355 pSectionContext->SetLnnMin( nIntValue ); 3356 break; 3357 3358 case NS_sprm::LN_SGprfIhdt: 3359 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3360 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3361 //flags about header/footer sharing and footnotes? 3362 /* ww8scan.hxx: 3363 * WW8_HEADER_EVEN = 0x01, WW8_HEADER_ODD = 0x02, WW8_FOOTER_EVEN = 0x04, 3364 * WW8_FOOTER_ODD = 0x08, WW8_HEADER_FIRST = 0x10, WW8_FOOTER_FIRST = 0x20 3365 */ 3366 3367 // if(pSectionContext) 3368 break; // sprmSGprfIhdt 3369 case NS_sprm::LN_SDyaHdrTop: // sprmSDyaHdrTop 3370 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3371 // default 720 twip 3372 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3373 if(pSectionContext) 3374 pSectionContext->SetHeaderTop( ConversionHelper::convertTwipToMM100( nIntValue )); 3375 break; 3376 case NS_sprm::LN_SDyaHdrBottom: // sprmSDyaHdrBottom 3377 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3378 // default 720 twip 3379 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3380 if(pSectionContext) 3381 pSectionContext->SetHeaderBottom( ConversionHelper::convertTwipToMM100( nIntValue ) ); 3382 break; 3383 case 158: 3384 case NS_sprm::LN_SLBetween: // sprmSLBetween 3385 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3386 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3387 if(pSectionContext) 3388 pSectionContext->SetSeparatorLine( nIntValue > 0 ); 3389 break; 3390 case NS_sprm::LN_SVjc: 3391 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3392 break; // sprmSVjc 3393 case 161: 3394 case NS_sprm::LN_SPgnStart: // sprmSPgnStart 3395 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3396 //page number 3397 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3398 if(pSectionContext) 3399 pSectionContext->SetPageNumber( nIntValue ); 3400 break; 3401 case 162: 3402 case NS_sprm::LN_SBOrientation: 3403 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3404 //todo: the old filter assumed that a value of 2 points to double-pages layout 3405 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3406 if(pSectionContext) 3407 pSectionContext->SetLandscape( nIntValue > 0 ); 3408 rContext->Insert( PROP_IS_LANDSCAPE , false, uno::makeAny( nIntValue > 0 )); 3409 break; // sprmSBOrientation 3410 case NS_sprm::LN_SBCustomize: 3411 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3412 break; // sprmSBCustomize 3413 case 165: 3414 case NS_sprm::LN_SYaPage: // sprmSYaPage 3415 { 3416 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3417 //page height, rounded to default values, default: 0x3dc0 twip 3418 sal_Int32 nHeight = ConversionHelper::convertTwipToMM100( nIntValue ); 3419 rContext->Insert( PROP_HEIGHT, false, uno::makeAny( PaperInfo::sloppyFitPageDimension( nHeight ) ) ); 3420 } 3421 break; 3422 case NS_sprm::LN_SXaPage: // sprmSXaPage 3423 { 3424 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3425 //page width, rounded to default values, default 0x2fd0 twip 3426 sal_Int32 nWidth = ConversionHelper::convertTwipToMM100( nIntValue ); 3427 rContext->Insert( PROP_WIDTH, false, uno::makeAny( PaperInfo::sloppyFitPageDimension( nWidth ) ) ); 3428 } 3429 break; 3430 case 166: 3431 case NS_sprm::LN_SDxaLeft: // sprmSDxaLeft 3432 { 3433 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3434 //left page margin default 0x708 twip 3435 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3436 sal_Int32 nConverted = ConversionHelper::convertTwipToMM100( nIntValue ); 3437 if(pSectionContext) 3438 pSectionContext->SetLeftMargin( nConverted ); 3439 rContext->Insert( PROP_LEFT_MARGIN, false, uno::makeAny( nConverted )); 3440 } 3441 break; 3442 case 167: 3443 case NS_sprm::LN_SDxaRight: // sprmSDxaRight 3444 { 3445 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3446 //right page margin default 0x708 twip 3447 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3448 sal_Int32 nConverted = ConversionHelper::convertTwipToMM100( nIntValue ); 3449 if(pSectionContext) 3450 pSectionContext->SetRightMargin( nConverted ); 3451 rContext->Insert( PROP_RIGHT_MARGIN, false, uno::makeAny( nConverted )); 3452 } 3453 break; 3454 case 168: 3455 case NS_sprm::LN_SDyaTop: // sprmSDyaTop 3456 { 3457 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3458 //top page margin default 1440 twip 3459 //todo: check cast of SVBT16 3460 sal_Int32 nConverted = ConversionHelper::convertTwipToMM100( static_cast< sal_Int16 >( nIntValue ) ); 3461 rContext->Insert( PROP_TOP_MARGIN, false, uno::makeAny( nConverted ) ); 3462 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3463 if(pSectionContext) 3464 pSectionContext->SetTopMargin( nConverted ); 3465 } 3466 break; 3467 case 169: 3468 case NS_sprm::LN_SDyaBottom: // sprmSDyaBottom 3469 { 3470 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3471 //bottom page margin default 1440 twip 3472 //todo: check cast of SVBT16 3473 sal_Int32 nConverted = ConversionHelper::convertTwipToMM100( static_cast< sal_Int16 >( nIntValue ) ); 3474 rContext->Insert( PROP_BOTTOM_MARGIN, false, uno::makeAny( nConverted) ); 3475 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3476 if(pSectionContext) 3477 pSectionContext->SetBottomMargin( nConverted ); 3478 } 3479 break; 3480 case 170: 3481 case NS_sprm::LN_SDzaGutter: // sprmSDzaGutter 3482 { 3483 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3484 // gutter is added to one of the margins of a section depending on RTL, can be placed on top either 3485 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3486 if(pSectionContext) 3487 { 3488 pSectionContext->SetDzaGutter( ConversionHelper::convertTwipToMM100( nIntValue ) ); 3489 } 3490 } 3491 break; 3492 case NS_sprm::LN_SDmPaperReq: // sprmSDmPaperReq 3493 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */ 3494 //paper code - no handled in old filter 3495 break; 3496 case NS_sprm::LN_SPropRMark: 3497 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3498 break; // sprmSPropRMark 3499 case NS_sprm::LN_SFBiDi:// sprmSFBiDi 3500 { 3501 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */ 3502 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3503 if(pSectionContext) 3504 pSectionContext->SetSFBiDi( nIntValue > 0 ); 3505 } 3506 break; 3507 case NS_sprm::LN_SFFacingCol: 3508 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3509 break; // sprmSFFacingCol 3510 case NS_sprm::LN_SFRTLGutter: // sprmSFRTLGutter 3511 { 3512 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3513 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3514 if(pSectionContext) 3515 pSectionContext->SetGutterRTL( nIntValue > 0 ); 3516 } 3517 break; 3518 case NS_sprm::LN_SBrcTop: // sprmSBrcTop 3519 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3520 case NS_sprm::LN_SBrcLeft: // sprmSBrcLeft 3521 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3522 case NS_sprm::LN_SBrcBottom: // sprmSBrcBottom 3523 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3524 case NS_sprm::LN_SBrcRight: // sprmSBrcRight 3525 /* WRITERFILTERSTATUS: Sectiondone: 100, planned: 0.5, spent: 0 */ 3526 { 3527 table::BorderLine aBorderLine; 3528 sal_Int32 nLineDistance = ConversionHelper::MakeBorderLine( nIntValue, aBorderLine ); 3529 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3530 if(pSectionContext) 3531 { 3532 static const BorderPosition aPositions[4] = 3533 { 3534 BORDER_TOP, 3535 BORDER_LEFT, 3536 BORDER_BOTTOM, 3537 BORDER_RIGHT 3538 }; 3539 pSectionContext->SetBorder( aPositions[nSprmId - NS_sprm::LN_SBrcTop], nLineDistance, aBorderLine ); 3540 } 3541 } 3542 break; 3543 3544 case NS_sprm::LN_SPgbProp: // sprmSPgbProp 3545 { 3546 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3547 if(pSectionContext) 3548 { 3549 pSectionContext->ApplyBorderToPageStyles( m_pImpl->GetPageStyles(), m_pImpl->GetTextFactory(), nIntValue ); 3550 } 3551 } 3552 break; 3553 case NS_sprm::LN_SDxtCharSpace: 3554 { 3555 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3556 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3557 if(pSectionContext) 3558 { 3559 pSectionContext->SetDxtCharSpace( nIntValue ); 3560 } 3561 } 3562 break; // sprmSDxtCharSpace 3563 case NS_sprm::LN_SDyaLinePitch: // sprmSDyaLinePitch 3564 { 3565 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3566 //see SwWW8ImplReader::SetDocumentGrid 3567 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3568 if(pSectionContext) 3569 { 3570 pSectionContext->SetGridLinePitch( ConversionHelper::convertTwipToMM100( nIntValue ) ); 3571 } 3572 } 3573 break; 3574 case 0x703a: //undocumented, grid related? 3575 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3576 OSL_ENSURE( false, "TODO: not handled yet"); //nIntValue like 0x008a2373 ? 3577 break; 3578 case NS_sprm::LN_SClm: 3579 { 3580 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3581 sal_Int16 nGridType = text::TextGridMode::NONE; 3582 switch( nIntValue ) 3583 { 3584 case 0: 3585 nGridType = text::TextGridMode::NONE; 3586 break; 3587 case 3: 3588 //Text snaps to char grid, this doesn't make a lot of sense to 3589 //me. This is closer than LINES_CHARS 3590 nGridType = text::TextGridMode::LINES; 3591 break; 3592 case 1: 3593 nGridType = text::TextGridMode::LINES_AND_CHARS; 3594 break; 3595 case 2: 3596 nGridType = text::TextGridMode::LINES; 3597 break; 3598 default:; 3599 } 3600 rContext->Insert( PROP_GRID_MODE, false, uno::makeAny( nGridType ) ); 3601 3602 //Seems to force this behaviour in word ? 3603 if(nGridType != text::TextGridMode::NONE) 3604 m_pImpl->SetDocumentSettingsProperty( 3605 PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_ADD_EXTERNAL_LEADING ), 3606 uno::makeAny( true ) ); 3607 } 3608 break; // sprmSClm 3609 case NS_sprm::LN_STextFlow: 3610 case NS_ooxml::LN_EG_SectPrContents_textDirection: 3611 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3612 { 3613 /* 0 HoriLR 1 Vert TR 2 Vert TR 3 Vert TT 4 HoriLT 3614 only 0 and 1 can be imported correctly 3615 */ 3616 sal_Int16 nDirection = text::WritingMode_LR_TB; 3617 switch( nIntValue ) 3618 { 3619 case 0: 3620 case 4: 3621 nDirection = text::WritingMode_LR_TB; 3622 break; 3623 case 1: 3624 case 2: 3625 case 3: 3626 nDirection = text::WritingMode_TB_RL; 3627 break; 3628 default:; 3629 } 3630 3631 PropertyMap * pTargetContext = rContext.get(); 3632 3633 if (pSectionContext != NULL && 3634 nSprmId == NS_ooxml::LN_EG_SectPrContents_textDirection) 3635 { 3636 pTargetContext = pSectionContext; 3637 } 3638 3639 pTargetContext->Insert(PROP_WRITING_MODE, false, uno::makeAny( nDirection ) ); 3640 } 3641 break; // sprmSTextFlow 3642 case NS_sprm::LN_TJc: // sprmTJc 3643 case NS_sprm::LN_TDxaLeft: 3644 case NS_sprm::LN_TDxaGapHalf: 3645 case NS_sprm::LN_TFCantSplit: 3646 case NS_sprm::LN_TTableHeader: 3647 case NS_sprm::LN_TTableBorders: // sprmTTableBorders 3648 { 3649 OSL_ENSURE( false, "table propeties should be handled by the table manager"); 3650 } 3651 break; 3652 case NS_sprm::LN_TDefTable10: 3653 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3654 break; // sprmTDefTable10 3655 case NS_sprm::LN_TDyaRowHeight: 3656 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3657 break; // sprmTDyaRowHeight 3658 case NS_sprm::LN_TDefTable: 3659 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3660 break; // sprmTDefTable 3661 case NS_sprm::LN_TDefTableShd: 3662 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3663 break; // sprmTDefTableShd 3664 case NS_sprm::LN_TTlp: 3665 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3666 break; // sprmTTlp 3667 case NS_sprm::LN_TFBiDi: 3668 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3669 break; // sprmTFBiDi 3670 case NS_sprm::LN_THTMLProps: 3671 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3672 break; // sprmTHTMLProps 3673 case NS_sprm::LN_TSetBrc: 3674 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3675 break; // sprmTSetBrc 3676 case NS_sprm::LN_TInsert: 3677 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3678 break; // sprmTInsert 3679 case NS_sprm::LN_TDelete: 3680 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3681 break; // sprmTDelete 3682 case NS_sprm::LN_TDxaCol: 3683 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3684 break; // sprmTDxaCol 3685 case NS_sprm::LN_TMerge: 3686 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3687 break; // sprmTMerge 3688 case NS_sprm::LN_TSplit: 3689 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3690 break; // sprmTSplit 3691 case NS_sprm::LN_TSetBrc10: 3692 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3693 break; // sprmTSetBrc10 3694 case 164: // sprmTSetShd 3695 case NS_sprm::LN_TSetShd: 3696 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3697 break; // sprmTSetShd 3698 case NS_sprm::LN_TSetShdOdd: 3699 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3700 break; // sprmTSetShdOdd 3701 case NS_sprm::LN_TTextFlow: 3702 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3703 break; // sprmTTextFlow 3704 case NS_sprm::LN_TDiagLine: 3705 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3706 break; // sprmTDiagLine 3707 case NS_sprm::LN_TVertMerge: 3708 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3709 break; // sprmTVertMerge 3710 case NS_sprm::LN_TVertAlign: 3711 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3712 break; // sprmTVertAlign 3713 // the following are not part of the official documentation 3714 case 0x6870: //TxtForeColor 3715 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3716 { 3717 //contains a color as 0xTTRRGGBB while SO uses 0xTTRRGGBB 3718 sal_Int32 nColor = ConversionHelper::ConvertColor(nIntValue); 3719 rContext->Insert(PROP_CHAR_COLOR, true, uno::makeAny( nColor ) ); 3720 } 3721 break; 3722 case 0x4874: 3723 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3724 break; //seems to be a language id for Asian text - undocumented 3725 case 0x6877: //underlining color 3726 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3727 { 3728 sal_Int32 nColor = ConversionHelper::ConvertColor(nIntValue); 3729 rContext->Insert(PROP_CHAR_UNDERLINE_HAS_COLOR, true, uno::makeAny( true ) ); 3730 rContext->Insert(PROP_CHAR_UNDERLINE_COLOR, true, uno::makeAny( nColor ) ); 3731 } 3732 break; 3733 case 0x6815: 3734 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3735 break; //undocumented 3736 case NS_sprm::LN_CIndrsid: 3737 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3738 break; //undocumented 3739 case 0x6467: 3740 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3741 break; //undocumented 3742 case 0xF617: 3743 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3744 break; //undocumented 3745 case 0xd634: // sprmTNewSpacing - table spacing ( see WW8TabBandDesc::ProcessSpacing() ) 3746 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3747 break; 3748 case NS_sprm::LN_TTRLeft: 3749 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3750 break; //undocumented 3751 case 0x4888: 3752 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3753 case 0x6887: 3754 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3755 //properties of list levels - undocumented 3756 break; 3757 case 0xd234: 3758 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3759 case 0xd235: 3760 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3761 case 0xd236: 3762 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3763 case 0xd237: 3764 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3765 break;//undocumented section properties 3766 case NS_sprm::LN_CEastAsianLayout: 3767 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3768 resolveSprmProps(*this, rSprm); 3769 break; 3770 case NS_ooxml::LN_CT_Tabs_tab: 3771 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3772 resolveSprmProps(*this, rSprm); 3773 m_pImpl->IncorporateTabStop(m_pImpl->m_aCurrentTabStop); 3774 m_pImpl->m_aCurrentTabStop = DeletableTabStop(); 3775 break; 3776 case NS_ooxml::LN_CT_PPrBase_tabs: 3777 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3778 { 3779 // Initialize tab stop vector from style sheet 3780 if( !m_pImpl->IsStyleSheetImport() ) 3781 { 3782 uno::Any aValue = m_pImpl->GetPropertyFromStyleSheet(PROP_PARA_TAB_STOPS); 3783 uno::Sequence< style::TabStop > aStyleTabStops; 3784 if(aValue >>= aStyleTabStops) 3785 { 3786 m_pImpl->InitTabStopFromStyle( aStyleTabStops ); 3787 } 3788 } 3789 resolveSprmProps(*this, rSprm); 3790 rContext->Insert(PROP_PARA_TAB_STOPS, true, uno::makeAny( m_pImpl->GetCurrentTabStopAndClear())); 3791 } 3792 break; 3793 3794 case NS_ooxml::LN_CT_PPr_sectPr: 3795 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3796 case NS_ooxml::LN_EG_RPrBase_color: 3797 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3798 case NS_ooxml::LN_EG_RPrBase_rFonts: 3799 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3800 case NS_ooxml::LN_EG_RPrBase_bdr: 3801 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3802 case NS_ooxml::LN_EG_RPrBase_eastAsianLayout: 3803 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3804 case NS_ooxml::LN_EG_RPrBase_u: 3805 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3806 case NS_ooxml::LN_EG_RPrBase_lang: 3807 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3808 case NS_ooxml::LN_CT_PPrBase_spacing: 3809 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3810 case NS_ooxml::LN_CT_PPrBase_ind: 3811 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3812 case NS_ooxml::LN_CT_RPrDefault_rPr: 3813 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3814 case NS_ooxml::LN_CT_PPrDefault_pPr: 3815 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3816 case NS_ooxml::LN_CT_DocDefaults_pPrDefault: 3817 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3818 case NS_ooxml::LN_CT_DocDefaults_rPrDefault: 3819 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3820 case NS_ooxml::LN_CT_Style_pPr: 3821 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3822 case NS_ooxml::LN_CT_Style_rPr: 3823 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3824 case NS_ooxml::LN_CT_PPr_rPr: 3825 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3826 case NS_ooxml::LN_CT_PPrBase_numPr: 3827 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3828 resolveSprmProps(*this, rSprm); 3829 break; 3830 case NS_ooxml::LN_EG_SectPrContents_footnotePr: 3831 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3832 case NS_ooxml::LN_EG_SectPrContents_endnotePr: 3833 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3834 m_pImpl->SetInFootnoteProperties( NS_ooxml::LN_EG_SectPrContents_footnotePr == nSprmId ); 3835 resolveSprmProps(*this, rSprm); 3836 break; 3837 case NS_ooxml::LN_EG_SectPrContents_lnNumType: 3838 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3839 { 3840 resolveSprmProps(*this, rSprm); 3841 LineNumberSettings aSettings = m_pImpl->GetLineNumberSettings(); 3842 aSettings.bIsOn = true; 3843 m_pImpl->SetLineNumberSettings( aSettings ); 3844 //apply settings at XLineNumberingProperties 3845 try 3846 { 3847 uno::Reference< text::XLineNumberingProperties > xLineNumberingProperties( m_pImpl->GetTextDocument(), uno::UNO_QUERY_THROW ); 3848 uno::Reference< beans::XPropertySet > xLineNumberingPropSet = xLineNumberingProperties->getLineNumberingProperties(); 3849 PropertyNameSupplier& rNameSupplier = PropertyNameSupplier::GetPropertyNameSupplier(); 3850 xLineNumberingPropSet->setPropertyValue(rNameSupplier.GetName( PROP_IS_ON ), uno::makeAny(true) ); 3851 if( aSettings.nInterval ) 3852 xLineNumberingPropSet->setPropertyValue(rNameSupplier.GetName( PROP_INTERVAL ), uno::makeAny((sal_Int16)aSettings.nInterval) ); 3853 if( aSettings.nDistance ) 3854 xLineNumberingPropSet->setPropertyValue(rNameSupplier.GetName( PROP_DISTANCE ), uno::makeAny(aSettings.nDistance) ); 3855 xLineNumberingPropSet->setPropertyValue(rNameSupplier.GetName( PROP_RESTART_AT_EACH_PAGE ), uno::makeAny(aSettings.bRestartAtEachPage) ); 3856 } 3857 catch( const uno::Exception& ) 3858 { 3859 } 3860 3861 } 3862 break; 3863 case NS_ooxml::LN_CT_PPrBase_framePr: 3864 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3865 { 3866 PropertyMapPtr pContext = m_pImpl->GetTopContextOfType(CONTEXT_PARAGRAPH); 3867 if( pContext.get() ) 3868 { 3869 ParagraphPropertyMap* pParaContext = dynamic_cast< ParagraphPropertyMap* >( pContext.get() ); 3870 pParaContext->SetFrameMode(); 3871 3872 } 3873 else 3874 { 3875 //TODO: What about style sheet import of frame properties 3876 } 3877 resolveSprmProps(*this, rSprm); 3878 } 3879 break; 3880 case NS_ooxml::LN_EG_SectPrContents_pgSz: 3881 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3882 CT_PageSz.code = 0; 3883 { 3884 PaperInfo aLetter(PAPER_LETTER); 3885 CT_PageSz.w = aLetter.getWidth(); 3886 CT_PageSz.h = aLetter.getHeight(); 3887 } 3888 CT_PageSz.orient = false; 3889 resolveSprmProps(*this, rSprm); 3890 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3891 if(pSectionContext) 3892 { 3893 pSectionContext->Insert( PROP_HEIGHT, false, uno::makeAny( CT_PageSz.h ) ); 3894 pSectionContext->Insert( PROP_IS_LANDSCAPE, false, uno::makeAny( CT_PageSz.orient )); 3895 pSectionContext->Insert( PROP_WIDTH, false, uno::makeAny( CT_PageSz.w ) ); 3896 pSectionContext->SetLandscape( CT_PageSz.orient ); 3897 } 3898 break; 3899 3900 case NS_ooxml::LN_EG_SectPrContents_pgMar: 3901 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3902 m_pImpl->InitPageMargins(); 3903 resolveSprmProps(*this, rSprm); 3904 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3905 if(pSectionContext) 3906 { 3907 const _PageMar& rPageMar = m_pImpl->GetPageMargins(); 3908 pSectionContext->SetTopMargin( rPageMar.top ); 3909 pSectionContext->SetRightMargin( rPageMar.right ); 3910 pSectionContext->SetBottomMargin( rPageMar.bottom ); 3911 pSectionContext->SetLeftMargin( rPageMar.left ); 3912 pSectionContext->SetHeaderTop( rPageMar.header ); 3913 pSectionContext->SetHeaderBottom( rPageMar.footer ); 3914 } 3915 break; 3916 3917 case NS_ooxml::LN_EG_SectPrContents_cols: 3918 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3919 { 3920 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); 3921 if( pProperties.get()) 3922 { 3923 3924 SectionColumnHandlerPtr pSectHdl( new SectionColumnHandler ); 3925 pProperties->resolve(*pSectHdl); 3926 if(pSectionContext) 3927 { 3928 if( pSectHdl->IsEqualWidth() ) 3929 { 3930 pSectionContext->SetEvenlySpaced( true ); 3931 pSectionContext->SetColumnCount( (sal_Int16) (pSectHdl->GetNum() - 1) ); 3932 pSectionContext->SetColumnDistance( pSectHdl->GetSpace() ); 3933 pSectionContext->SetSeparatorLine( pSectHdl->IsSeparator() ); 3934 } 3935 else if( !pSectHdl->GetColumns().empty() ) 3936 { 3937 pSectionContext->SetEvenlySpaced( false ); 3938 pSectionContext->SetColumnDistance( pSectHdl->GetSpace() ); 3939 pSectionContext->SetColumnCount( (sal_Int16)(pSectHdl->GetColumns().size() -1)); 3940 std::vector<_Column>::const_iterator tmpIter = pSectHdl->GetColumns().begin(); 3941 for (; tmpIter != pSectHdl->GetColumns().end(); tmpIter++) 3942 { 3943 pSectionContext->AppendColumnWidth( tmpIter->nWidth ); 3944 if ((tmpIter != pSectHdl->GetColumns().end() - 1) || (tmpIter->nSpace > 0)) 3945 pSectionContext->AppendColumnSpacing( tmpIter->nSpace ); 3946 } 3947 pSectionContext->SetSeparatorLine( pSectHdl->IsSeparator() ); 3948 } 3949 else if( pSectHdl->GetNum() > 0 ) 3950 { 3951 pSectionContext->SetColumnCount( (sal_Int16)pSectHdl->GetNum() - 1 ); 3952 pSectionContext->SetColumnDistance( pSectHdl->GetSpace() ); 3953 } 3954 } 3955 } 3956 } 3957 break; 3958 case NS_ooxml::LN_EG_SectPrContents_docGrid: 3959 resolveSprmProps(*this, rSprm); 3960 break; 3961 case NS_ooxml::LN_EG_SectPrContents_pgBorders: 3962 { 3963 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); 3964 if( pProperties.get( ) && pSectionContext ) 3965 { 3966 PageBordersHandlerPtr pHandler( new PageBordersHandler ); 3967 pProperties->resolve( *pHandler ); 3968 3969 // Set the borders to the context and apply them to the styles 3970 pHandler->SetBorders( pSectionContext ); 3971 pSectionContext->SetBorderParams( pHandler->GetDisplayOffset( ) ); 3972 } 3973 } 3974 break; 3975 3976 case NS_ooxml::LN_CT_PPrBase_pStyle: 3977 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3978 { 3979 m_pImpl->SetCurrentParaStyleId( sStringValue ); 3980 StyleSheetTablePtr pStyleTable = m_pImpl->GetStyleSheetTable(); 3981 const ::rtl::OUString sConvertedStyleName = pStyleTable->ConvertStyleName( sStringValue, true ); 3982 if (m_pImpl->GetTopContext() && m_pImpl->GetTopContextType() != CONTEXT_SECTION) 3983 m_pImpl->GetTopContext()->Insert( PROP_PARA_STYLE_NAME, true, uno::makeAny( sConvertedStyleName )); 3984 const StyleSheetEntryPtr pEntry = pStyleTable->FindStyleSheetByISTD(sStringValue); 3985 //apply numbering to paragraph if it was set at the style 3986 OSL_ENSURE( pEntry.get(), "no style sheet found" ); 3987 const StyleSheetPropertyMap* pStyleSheetProperties = dynamic_cast<const StyleSheetPropertyMap*>(pEntry ? pEntry->pProperties.get() : 0); 3988 3989 if( pStyleSheetProperties && pStyleSheetProperties->GetListId() >= 0 ) 3990 rContext->Insert( PROP_NUMBERING_STYLE_NAME, true, uno::makeAny( 3991 ListDef::GetStyleName( pStyleSheetProperties->GetListId( ) ) ), false); 3992 3993 if( pStyleSheetProperties && pStyleSheetProperties->GetListLevel() >= 0 ) 3994 rContext->Insert( PROP_NUMBERING_LEVEL, true, uno::makeAny(pStyleSheetProperties->GetListLevel()), false); 3995 } 3996 break; 3997 case NS_ooxml::LN_EG_RPrBase_rStyle: 3998 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3999 { 4000 rtl::OUString sConvertedName( m_pImpl->GetStyleSheetTable()->ConvertStyleName( sStringValue, true ) ); 4001 // First check if the style exists in the document. 4002 StyleSheetEntryPtr pEntry = m_pImpl->GetStyleSheetTable( )->FindStyleSheetByStyleName( sConvertedName ); 4003 bool bExists = pEntry.get( ) && ( pEntry->nStyleTypeCode == STYLE_TYPE_CHAR ); 4004 4005 // Add the property if the style exists 4006 if ( bExists && m_pImpl->GetTopContext() ) 4007 m_pImpl->GetTopContext()->Insert( PROP_CHAR_STYLE_NAME, true, uno::makeAny( sConvertedName ) ); 4008 } 4009 break; 4010 case NS_ooxml::LN_CT_TblPrBase_tblCellMar: //cell margins 4011 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4012 { 4013 resolveSprmProps(*this, rSprm);//contains LN_CT_TblCellMar_top, LN_CT_TblCellMar_left, LN_CT_TblCellMar_bottom, LN_CT_TblCellMar_right 4014 } 4015 break; 4016 case NS_ooxml::LN_CT_TblCellMar_top: 4017 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */ 4018 case NS_ooxml::LN_CT_TblCellMar_left: 4019 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */ 4020 case NS_ooxml::LN_CT_TblCellMar_bottom: 4021 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */ 4022 case NS_ooxml::LN_CT_TblCellMar_right: 4023 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */ 4024 { 4025 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); 4026 if( pProperties.get()) 4027 { 4028 MeasureHandlerPtr pMeasureHandler( new MeasureHandler ); 4029 pProperties->resolve(*pMeasureHandler); 4030 sal_Int32 nMeasureValue = pMeasureHandler->getMeasureValue(); 4031 PropertyIds eId = META_PROP_CELL_MAR_TOP; 4032 switch(nSprmId) 4033 { 4034 case NS_ooxml::LN_CT_TblCellMar_top: 4035 /* WRITERFILTERSTATUS: */ 4036 break; 4037 case NS_ooxml::LN_CT_TblCellMar_left: 4038 /* WRITERFILTERSTATUS: */ 4039 eId = META_PROP_CELL_MAR_LEFT; 4040 break; 4041 case NS_ooxml::LN_CT_TblCellMar_bottom: 4042 /* WRITERFILTERSTATUS: */ 4043 eId = META_PROP_CELL_MAR_BOTTOM; 4044 break; 4045 case NS_ooxml::LN_CT_TblCellMar_right: 4046 /* WRITERFILTERSTATUS: */ 4047 eId = META_PROP_CELL_MAR_RIGHT; 4048 break; 4049 default:; 4050 } 4051 rContext->Insert( eId, false, uno::makeAny(nMeasureValue), false); 4052 } 4053 } 4054 break; 4055 case NS_sprm::LN_CFNoProof: //0x875 no grammar and spell checking, unsupported 4056 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 4057 break; 4058 case NS_ooxml::LN_anchor_anchor: // at_character drawing 4059 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4060 case NS_ooxml::LN_inline_inline: // as_character drawing 4061 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4062 { 4063 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); 4064 if( pProperties.get()) 4065 { 4066 GraphicImportType eGraphicType = 4067 (NS_ooxml::LN_anchor_anchor == 4068 sal::static_int_cast<Id>(nSprmId)) ? 4069 IMPORT_AS_DETECTED_ANCHOR : 4070 IMPORT_AS_DETECTED_INLINE; 4071 GraphicImportPtr pGraphicImport = 4072 m_pImpl->GetGraphicImport(eGraphicType); 4073 pProperties->resolve(*pGraphicImport); 4074 m_pImpl->ImportGraphic(pProperties, eGraphicType); 4075 if( !pGraphicImport->IsGraphic() ) 4076 { 4077 m_pImpl->ResetGraphicImport(); 4078 // todo: It's a shape, now start shape import 4079 } 4080 } 4081 } 4082 break; 4083 case NS_ooxml::LN_EG_RPrBase_vertAlign: 4084 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4085 { 4086 sal_Int16 nEscapement = 0; 4087 sal_Int8 nProp = 58; 4088 if( sStringValue.equalsAscii( "superscript" )) 4089 nEscapement = 101; 4090 else if( sStringValue.equalsAscii( "subscript" )) 4091 nEscapement = -101; 4092 else 4093 nProp = 100; 4094 4095 rContext->Insert(PROP_CHAR_ESCAPEMENT, true, uno::makeAny( nEscapement ) ); 4096 rContext->Insert(PROP_CHAR_ESCAPEMENT_HEIGHT, true, uno::makeAny( nProp ) ); 4097 } 4098 break; 4099 // case NS_ooxml::LN_CT_FtnEdn_type 4100 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4101 // case NS_ooxml::LN_CT_FtnEdn_id 4102 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4103 // case NS_ooxml::LN_EG_FtnEdnNumProps_numRestart 4104 case NS_ooxml::LN_CT_FtnProps_pos: 4105 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4106 //footnotes in word can be at page end or beneath text - writer supports only the first 4107 //endnotes in word can be at section end or document end - writer supports only the latter 4108 // -> so this property can be ignored 4109 break; 4110 case NS_ooxml::LN_EG_FtnEdnNumProps_numStart: 4111 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4112 case NS_ooxml::LN_CT_FtnProps_numFmt: 4113 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4114 case NS_ooxml::LN_CT_EdnProps_numFmt: 4115 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4116 { 4117 try 4118 { 4119 uno::Reference< beans::XPropertySet > xFtnEdnSettings; 4120 if( m_pImpl->IsInFootnoteProperties() ) 4121 { 4122 uno::Reference< text::XFootnotesSupplier> xFootnotesSupplier( m_pImpl->GetTextDocument(), uno::UNO_QUERY ); 4123 xFtnEdnSettings = xFootnotesSupplier->getFootnoteSettings(); 4124 } 4125 else 4126 { 4127 uno::Reference< text::XEndnotesSupplier> xEndnotesSupplier( m_pImpl->GetTextDocument(), uno::UNO_QUERY ); 4128 xFtnEdnSettings = xEndnotesSupplier->getEndnoteSettings(); 4129 } 4130 if( NS_ooxml::LN_EG_FtnEdnNumProps_numStart == nSprmId ) 4131 { 4132 xFtnEdnSettings->setPropertyValue( 4133 PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_START_AT), 4134 uno::makeAny( sal_Int16( nIntValue - 1 ))); 4135 } 4136 else 4137 { 4138 sal_Int16 nNumType = ConversionHelper::ConvertNumberingType( nIntValue ); 4139 xFtnEdnSettings->setPropertyValue( 4140 PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_NUMBERING_TYPE), 4141 uno::makeAny( nNumType )); 4142 } 4143 } 4144 catch( const uno::Exception& ) 4145 { 4146 } 4147 } 4148 break; 4149 case NS_ooxml::LN_paratrackchange: 4150 m_pImpl->StartParaChange( ); 4151 case NS_ooxml::LN_trackchange: 4152 /* WRITERFILTERSTATUS: done: 100, planned: 5, spent: 0 */ 4153 case NS_ooxml::LN_EG_RPrContent_rPrChange: 4154 /* WRITERFILTERSTATUS: done: 100, planned: 5, spent: 0 */ 4155 { 4156 m_pImpl->AddNewRedline( ); 4157 resolveSprmProps(*this, rSprm ); 4158 // now the properties author, date and id should be available 4159 sal_Int32 nToken = m_pImpl->GetCurrentRedlineToken(); 4160 switch( nToken & 0xffff ) 4161 { 4162 case ooxml::OOXML_mod : 4163 case ooxml::OOXML_ins : 4164 case ooxml::OOXML_del : break; 4165 default: OSL_ENSURE( false, "redline token other than mod, ins or del" ); 4166 } 4167 m_pImpl->EndParaChange( ); 4168 } 4169 break; 4170 case NS_ooxml::LN_CT_RPrChange_rPr: 4171 /* WRITERFILTERSTATUS: done: 100, planned: 5, spent: 0 */ 4172 break; 4173 /* WRITERFILTERSTATUS: done: 0, planned: 4, spent: 0 */ 4174 case NS_ooxml::LN_object: 4175 { 4176 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); 4177 if( pProperties.get( ) ) 4178 { 4179 OLEHandlerPtr pOLEHandler( new OLEHandler ); 4180 pProperties->resolve(*pOLEHandler); 4181 if ( pOLEHandler->isOLEObject( ) ) 4182 { 4183 ::rtl::OUString sStreamName = pOLEHandler->copyOLEOStream( m_pImpl->GetTextDocument() ); 4184 if( sStreamName.getLength() ) 4185 { 4186 m_pImpl->appendOLE( sStreamName, pOLEHandler ); 4187 } 4188 } 4189 } 4190 } 4191 break; 4192 // case NS_ooxml::LN_CT_EdnProps_pos 4193 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4194 // case NS_ooxml::LN_CT_EdnProps_numFmt 4195 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4196 // case NS_ooxml::LN_CT_FtnDocProps_footnote 4197 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4198 // case NS_ooxml::LN_CT_EdnDocProps_endnote 4199 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4200 //break; 4201 case NS_ooxml::LN_EG_HdrFtrReferences_headerReference: // header reference - not needed 4202 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4203 case NS_ooxml::LN_EG_HdrFtrReferences_footerReference: // footer reference - not needed 4204 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4205 break; 4206 case NS_ooxml::LN_EG_RPrBase_snapToGrid: // "Use document grid settings for inter-paragraph spacing" 4207 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4208 break; 4209 case NS_sprm::LN_PContextualSpacing: 4210 //TODO: determines whether top/bottom paragraph spacing is added if equal styles are following - unsupported 4211 break; 4212 case NS_ooxml::LN_EG_SectPrContents_formProt: //section protection, only form editing is enabled - unsupported 4213 case NS_ooxml::LN_EG_SectPrContents_vAlign: 4214 case NS_ooxml::LN_EG_RPrBase_fitText: 4215 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 4216 break; 4217 case NS_ooxml::LN_ffdata: 4218 { 4219 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); 4220 if (pProperties.get() != NULL) 4221 { 4222 FFDataHandler::Pointer_t pFFDataHandler(new FFDataHandler()); 4223 4224 pProperties->resolve(*pFFDataHandler); 4225 m_pImpl->SetFieldFFData(pFFDataHandler); 4226 } 4227 } 4228 break; 4229 default: 4230 { 4231 #ifdef DEBUG_DOMAINMAPPER 4232 dmapper_logger->startElement("unhandled"); 4233 dmapper_logger->attribute("id", nSprmId); 4234 dmapper_logger->endElement("unhandled"); 4235 #endif 4236 } 4237 } 4238 } 4239 /*-- 09.06.2006 09:52:13--------------------------------------------------- 4240 4241 -----------------------------------------------------------------------*/ 4242 void DomainMapper::lcl_entry(int /*pos*/, 4243 writerfilter::Reference<Properties>::Pointer_t ref) 4244 { 4245 ref->resolve(*this); 4246 } 4247 /*-- 09.06.2006 09:52:13--------------------------------------------------- 4248 4249 -----------------------------------------------------------------------*/ 4250 void DomainMapper::data(const sal_uInt8* /*buf*/, size_t /*len*/, 4251 writerfilter::Reference<Properties>::Pointer_t /*ref*/) 4252 { 4253 } 4254 /*-- 09.06.2006 09:52:13--------------------------------------------------- 4255 4256 -----------------------------------------------------------------------*/ 4257 void DomainMapper::lcl_startSectionGroup() 4258 { 4259 m_pImpl->PushProperties(CONTEXT_SECTION); 4260 } 4261 /*-- 09.06.2006 09:52:13--------------------------------------------------- 4262 4263 -----------------------------------------------------------------------*/ 4264 void DomainMapper::lcl_endSectionGroup() 4265 { 4266 PropertyMapPtr pContext = m_pImpl->GetTopContextOfType(CONTEXT_SECTION); 4267 SectionPropertyMap* pSectionContext = dynamic_cast< SectionPropertyMap* >( pContext.get() ); 4268 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 4269 if(pSectionContext) 4270 pSectionContext->CloseSectionGroup( *m_pImpl ); 4271 m_pImpl->PopProperties(CONTEXT_SECTION); 4272 } 4273 /*-- 09.06.2006 09:52:13--------------------------------------------------- 4274 4275 -----------------------------------------------------------------------*/ 4276 void DomainMapper::lcl_startParagraphGroup() 4277 { 4278 m_pImpl->getTableManager().startParagraphGroup(); 4279 m_pImpl->PushProperties(CONTEXT_PARAGRAPH); 4280 static ::rtl::OUString sDefault( ::rtl::OUString::createFromAscii("Standard") ); 4281 if (m_pImpl->GetTopContext()) 4282 { 4283 m_pImpl->GetTopContext()->Insert( PROP_PARA_STYLE_NAME, true, uno::makeAny( sDefault ) ); 4284 if (m_pImpl->isBreakDeferred(PAGE_BREAK)) 4285 m_pImpl->GetTopContext()->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_PAGE_BEFORE) ); 4286 else if (m_pImpl->isBreakDeferred(COLUMN_BREAK)) 4287 m_pImpl->GetTopContext()->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_COLUMN_BEFORE) ); 4288 } 4289 m_pImpl->clearDeferredBreaks(); 4290 } 4291 /*-- 09.06.2006 09:52:14--------------------------------------------------- 4292 4293 -----------------------------------------------------------------------*/ 4294 void DomainMapper::lcl_endParagraphGroup() 4295 { 4296 m_pImpl->PopProperties(CONTEXT_PARAGRAPH); 4297 m_pImpl->getTableManager().endParagraphGroup(); 4298 //frame conversion has to be executed after table conversion 4299 m_pImpl->ExecuteFrameConversion(); 4300 } 4301 4302 void DomainMapper::markLastParagraphInSection( ) 4303 { 4304 m_pImpl->SetIsLastParagraphInSection( true ); 4305 } 4306 4307 void DomainMapper::lcl_startShape( uno::Reference< drawing::XShape > xShape ) 4308 { 4309 m_pImpl->PushShapeContext( xShape ); 4310 } 4311 4312 void DomainMapper::lcl_endShape( ) 4313 { 4314 m_pImpl->PopShapeContext( ); 4315 } 4316 4317 /*-- 13.06.2007 16:15:55--------------------------------------------------- 4318 4319 -----------------------------------------------------------------------*/ 4320 void DomainMapper::PushStyleSheetProperties( PropertyMapPtr pStyleProperties, bool bAffectTableMngr ) 4321 { 4322 m_pImpl->PushStyleProperties( pStyleProperties ); 4323 if ( bAffectTableMngr ) 4324 m_pImpl->getTableManager( ).SetStyleProperties( pStyleProperties ); 4325 } 4326 /*-- 13.06.2007 16:15:55--------------------------------------------------- 4327 4328 -----------------------------------------------------------------------*/ 4329 void DomainMapper::PopStyleSheetProperties( bool bAffectTableMngr ) 4330 { 4331 m_pImpl->PopProperties( CONTEXT_STYLESHEET ); 4332 if ( bAffectTableMngr ) 4333 { 4334 PropertyMapPtr emptyPtr; 4335 m_pImpl->getTableManager( ).SetStyleProperties( emptyPtr ); 4336 } 4337 } 4338 /*-- 28.01.2008 14:52:33--------------------------------------------------- 4339 4340 -----------------------------------------------------------------------*/ 4341 void DomainMapper::PushListProperties( ::boost::shared_ptr<PropertyMap> pListProperties ) 4342 { 4343 m_pImpl->PushListProperties( pListProperties ); 4344 } 4345 /*-- 28.01.2008 14:52:33--------------------------------------------------- 4346 4347 -----------------------------------------------------------------------*/ 4348 void DomainMapper::PopListProperties() 4349 { 4350 m_pImpl->PopProperties( CONTEXT_LIST ); 4351 } 4352 /*-- 09.06.2006 09:52:14--------------------------------------------------- 4353 4354 -----------------------------------------------------------------------*/ 4355 4356 void DomainMapper::lcl_startCharacterGroup() 4357 { 4358 m_pImpl->PushProperties(CONTEXT_CHARACTER); 4359 DomainMapperTableManager& rTableManager = m_pImpl->getTableManager(); 4360 if( rTableManager.getTableStyleName().getLength() ) 4361 { 4362 PropertyMapPtr pTopContext = m_pImpl->GetTopContext(); 4363 rTableManager.CopyTextProperties(pTopContext, m_pImpl->GetStyleSheetTable()); 4364 } 4365 } 4366 /*-- 09.06.2006 09:52:14--------------------------------------------------- 4367 4368 -----------------------------------------------------------------------*/ 4369 void DomainMapper::lcl_endCharacterGroup() 4370 { 4371 m_pImpl->PopProperties(CONTEXT_CHARACTER); 4372 } 4373 /*-- 09.06.2006 09:52:14--------------------------------------------------- 4374 4375 -----------------------------------------------------------------------*/ 4376 void DomainMapper::lcl_text(const sal_uInt8 * data_, size_t len) 4377 { 4378 //TODO: Determine the right text encoding (FIB?) 4379 ::rtl::OUString sText( (const sal_Char*) data_, len, RTL_TEXTENCODING_MS_1252 ); 4380 #ifdef DEBUG_DOMAINMAPPER 4381 dmapper_logger->startElement("text"); 4382 dmapper_logger->chars(sText); 4383 dmapper_logger->endElement("text"); 4384 #endif 4385 4386 try 4387 { 4388 if(len == 1) 4389 { 4390 switch(*data_) 4391 { 4392 case 0x02: return; //footnote character 4393 case 0x0c: //page break 4394 m_pImpl->deferBreak(PAGE_BREAK); 4395 return; 4396 case 0x0e: //column break 4397 m_pImpl->deferBreak(COLUMN_BREAK); 4398 return; 4399 case 0x07: 4400 m_pImpl->getTableManager().text(data_, len); 4401 case 0x0d: 4402 m_pImpl->finishParagraph(m_pImpl->GetTopContextOfType(CONTEXT_PARAGRAPH)); 4403 return; 4404 case 0x13: 4405 m_pImpl->PushFieldContext(); 4406 return; 4407 case 0x14: 4408 // delimiter not necessarily available 4409 // appears only if field contains further content 4410 m_pImpl->CloseFieldCommand(); 4411 return; 4412 case 0x15: /* end of field */ 4413 m_pImpl->PopFieldContext(); 4414 return; 4415 default: 4416 break; 4417 } 4418 } 4419 4420 PropertyMapPtr pContext = m_pImpl->GetTopContext(); 4421 if ( pContext && !pContext->GetFootnote().is() ) 4422 { 4423 if (m_pImpl->isBreakDeferred(PAGE_BREAK)) 4424 m_pImpl->GetTopContext()->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_PAGE_BEFORE) ); 4425 else if (m_pImpl->isBreakDeferred(COLUMN_BREAK)) 4426 m_pImpl->GetTopContext()->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_COLUMN_BEFORE) ); 4427 m_pImpl->clearDeferredBreaks(); 4428 } 4429 4430 if( pContext->GetFootnote().is() && m_pImpl->IsCustomFtnMark() ) 4431 { 4432 pContext->GetFootnote()->setLabel( sText ); 4433 m_pImpl->SetCustomFtnMark( false ); 4434 //otherwise ignore sText 4435 } 4436 else if( m_pImpl->IsOpenFieldCommand() ) 4437 m_pImpl->AppendFieldCommand(sText); 4438 else if( m_pImpl->IsOpenField() && m_pImpl->IsFieldResultAsString()) 4439 /*depending on the success of the field insert operation this result will be 4440 set at the field or directly inserted into the text*/ 4441 m_pImpl->SetFieldResult( sText ); 4442 else 4443 { 4444 //--> debug 4445 //sal_uInt32 nSize = pContext->size(); 4446 //<-- 4447 4448 if (pContext == NULL) 4449 pContext.reset(new PropertyMap()); 4450 4451 m_pImpl->appendTextPortion( sText, pContext ); 4452 } 4453 } 4454 catch( const uno::RuntimeException& ) 4455 { 4456 std::clog << __FILE__ << "(l" << __LINE__ << ")" << std::endl; 4457 } 4458 } 4459 /*-- 09.06.2006 09:52:15--------------------------------------------------- 4460 4461 -----------------------------------------------------------------------*/ 4462 void DomainMapper::lcl_utext(const sal_uInt8 * data_, size_t len) 4463 { 4464 OUString sText; 4465 OUStringBuffer aBuffer = OUStringBuffer(len); 4466 aBuffer.append( (const sal_Unicode *) data_, len); 4467 sText = aBuffer.makeStringAndClear(); 4468 4469 try 4470 { 4471 m_pImpl->getTableManager().utext(data_, len); 4472 4473 if(len == 1 && ((*data_) == 0x0d || (*data_) == 0x07)) 4474 m_pImpl->finishParagraph(m_pImpl->GetTopContextOfType(CONTEXT_PARAGRAPH)); 4475 else 4476 { 4477 4478 PropertyMapPtr pContext = m_pImpl->GetTopContext(); 4479 if ( pContext && !pContext->GetFootnote().is() ) 4480 { 4481 if (m_pImpl->isBreakDeferred(PAGE_BREAK)) 4482 m_pImpl->GetTopContext()->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_PAGE_BEFORE) ); 4483 else if (m_pImpl->isBreakDeferred(COLUMN_BREAK)) 4484 m_pImpl->GetTopContext()->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_COLUMN_BEFORE) ); 4485 m_pImpl->clearDeferredBreaks(); 4486 } 4487 4488 /* doesn't seem to be working 4489 if( pContext->GetFootnote().is() ) 4490 { 4491 //todo: the check for 0x0a is a hack! 4492 if( *data_ != 0x0a && !pContext->GetFootnoteSymbol() ) 4493 pContext->GetFootnote()->setLabel( sText ); 4494 //otherwise ignore sText 4495 } 4496 else */ 4497 if( pContext && pContext->GetFootnote().is() ) 4498 { 4499 if( !pContext->GetFootnoteSymbol() ) 4500 pContext->GetFootnote()->setLabel( sText ); 4501 //otherwise ignore sText 4502 } 4503 else if( m_pImpl->IsOpenFieldCommand() ) 4504 m_pImpl->AppendFieldCommand(sText); 4505 else if( m_pImpl->IsOpenField() && m_pImpl->IsFieldResultAsString()) 4506 /*depending on the success of the field insert operation this result will be 4507 set at the field or directly inserted into the text*/ 4508 m_pImpl->SetFieldResult( sText ); 4509 else 4510 { 4511 if (pContext == NULL) 4512 pContext.reset(new PropertyMap()); 4513 4514 m_pImpl->appendTextPortion( sText, pContext ); 4515 } 4516 4517 } 4518 } 4519 catch( const uno::RuntimeException& ) 4520 { 4521 } 4522 } 4523 /*-- 09.06.2006 09:52:15--------------------------------------------------- 4524 4525 -----------------------------------------------------------------------*/ 4526 void DomainMapper::lcl_props(writerfilter::Reference<Properties>::Pointer_t ref) 4527 { 4528 string sType = ref->getType(); 4529 if( sType == "PICF" ) 4530 { 4531 m_pImpl->ImportGraphic(ref, IMPORT_AS_GRAPHIC); 4532 } 4533 else if( sType == "FSPA" ) 4534 { 4535 m_pImpl->ImportGraphic(ref, IMPORT_AS_SHAPE); 4536 } 4537 else 4538 ref->resolve(*this); 4539 } 4540 /*-- 09.06.2006 09:52:15--------------------------------------------------- 4541 4542 -----------------------------------------------------------------------*/ 4543 void DomainMapper::lcl_table(Id name, writerfilter::Reference<Table>::Pointer_t ref) 4544 { 4545 // printf ( "DomainMapper::table(0x%.4x)\n", (unsigned int)name); 4546 m_pImpl->SetAnyTableImport(true); 4547 /* WRITERFILTERSTATUS: table: attributedata */ 4548 switch(name) 4549 { 4550 case NS_rtf::LN_FONTTABLE: 4551 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4552 4553 // create a font table object that listens to the attributes 4554 // each entry call inserts a new font entry 4555 ref->resolve( *m_pImpl->GetFontTable() ); 4556 break; 4557 case NS_rtf::LN_STYLESHEET: 4558 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4559 //same as above to import style sheets 4560 m_pImpl->SetStyleSheetImport( true ); 4561 ref->resolve( *m_pImpl->GetStyleSheetTable() ); 4562 m_pImpl->GetStyleSheetTable()->ApplyStyleSheets(m_pImpl->GetFontTable()); 4563 m_pImpl->SetStyleSheetImport( false ); 4564 break; 4565 case NS_ooxml::LN_NUMBERING: 4566 case NS_rtf::LN_LISTTABLE: 4567 { 4568 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4569 4570 //the same for list tables 4571 ref->resolve( *m_pImpl->GetListTable() ); 4572 m_pImpl->GetListTable( )->CreateNumberingRules( ); 4573 } 4574 break; 4575 case NS_rtf::LN_LFOTABLE: 4576 { 4577 m_pImpl->GetListTable( )->SetLFOImport( true ); 4578 ref->resolve( *m_pImpl->GetListTable() ); 4579 m_pImpl->GetListTable( )->CreateNumberingRules( ); 4580 m_pImpl->GetListTable( )->SetLFOImport( false ); 4581 } 4582 break; 4583 case NS_ooxml::LN_THEMETABLE: 4584 ref->resolve ( *m_pImpl->GetThemeTable() ); 4585 break; 4586 case NS_ooxml::LN_settings_settings: 4587 ref->resolve ( *m_pImpl->GetSettingsTable() ); 4588 m_pImpl->ApplySettingsTable(); 4589 break; 4590 default: 4591 OSL_ENSURE( false, "which table is to be filled here?"); 4592 } 4593 m_pImpl->SetAnyTableImport(false); 4594 } 4595 /*-- 09.06.2006 09:52:16--------------------------------------------------- 4596 4597 -----------------------------------------------------------------------*/ 4598 void DomainMapper::lcl_substream(Id rName, ::writerfilter::Reference<Stream>::Pointer_t ref) 4599 { 4600 m_pImpl->appendTableManager( ); 4601 m_pImpl->getTableManager().startLevel(); 4602 4603 //->debug 4604 //string sName = (*QNameToString::Instance())(rName); 4605 //--<debug 4606 //import of page header/footer 4607 4608 /* WRITERFILTERSTATUS: table: attributedata */ 4609 switch( rName ) 4610 { 4611 case NS_rtf::LN_headerl: 4612 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */ 4613 4614 m_pImpl->PushPageHeader(SectionPropertyMap::PAGE_LEFT); 4615 break; 4616 case NS_rtf::LN_headerr: 4617 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */ 4618 4619 m_pImpl->PushPageHeader(SectionPropertyMap::PAGE_RIGHT); 4620 break; 4621 case NS_rtf::LN_headerf: 4622 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */ 4623 4624 m_pImpl->PushPageHeader(SectionPropertyMap::PAGE_FIRST); 4625 break; 4626 case NS_rtf::LN_footerl: 4627 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */ 4628 4629 m_pImpl->PushPageFooter(SectionPropertyMap::PAGE_LEFT); 4630 break; 4631 case NS_rtf::LN_footerr: 4632 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */ 4633 4634 m_pImpl->PushPageFooter(SectionPropertyMap::PAGE_RIGHT); 4635 break; 4636 case NS_rtf::LN_footerf: 4637 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */ 4638 4639 m_pImpl->PushPageFooter(SectionPropertyMap::PAGE_FIRST); 4640 break; 4641 case NS_rtf::LN_footnote: 4642 case NS_rtf::LN_endnote: 4643 m_pImpl->PushFootOrEndnote( NS_rtf::LN_footnote == rName ); 4644 break; 4645 case NS_rtf::LN_annotation : 4646 m_pImpl->PushAnnotation(); 4647 break; 4648 } 4649 ref->resolve(*this); 4650 switch( rName ) 4651 { 4652 case NS_rtf::LN_headerl: 4653 case NS_rtf::LN_headerr: 4654 case NS_rtf::LN_headerf: 4655 case NS_rtf::LN_footerl: 4656 case NS_rtf::LN_footerr: 4657 case NS_rtf::LN_footerf: 4658 m_pImpl->PopPageHeaderFooter(); 4659 break; 4660 case NS_rtf::LN_footnote: 4661 case NS_rtf::LN_endnote: 4662 m_pImpl->PopFootOrEndnote(); 4663 break; 4664 case NS_rtf::LN_annotation : 4665 m_pImpl->PopAnnotation(); 4666 break; 4667 } 4668 4669 m_pImpl->getTableManager().endLevel(); 4670 m_pImpl->popTableManager( ); 4671 } 4672 /*-- 09.06.2006 09:52:16--------------------------------------------------- 4673 4674 -----------------------------------------------------------------------*/ 4675 void DomainMapper::lcl_info(const string & /*info_*/) 4676 { 4677 } 4678 4679 void DomainMapper::handleUnderlineType(const sal_Int32 nIntValue, const ::boost::shared_ptr<PropertyMap> pContext) 4680 { 4681 sal_Int16 eUnderline = awt::FontUnderline::NONE; 4682 4683 switch(nIntValue) 4684 { 4685 case 0: eUnderline = awt::FontUnderline::NONE; break; 4686 case 2: pContext->Insert(PROP_CHAR_WORD_MODE, true, uno::makeAny( true ) ); // TODO: how to get rid of it? 4687 case 1: eUnderline = awt::FontUnderline::SINGLE; break; 4688 case 3: eUnderline = awt::FontUnderline::DOUBLE; break; 4689 case 4: eUnderline = awt::FontUnderline::DOTTED; break; 4690 case 7: eUnderline = awt::FontUnderline::DASH; break; 4691 case 9: eUnderline = awt::FontUnderline::DASHDOT; break; 4692 case 10:eUnderline = awt::FontUnderline::DASHDOTDOT; break; 4693 case 6: eUnderline = awt::FontUnderline::BOLD; break; 4694 case 11:eUnderline = awt::FontUnderline::WAVE; break; 4695 case 20:eUnderline = awt::FontUnderline::BOLDDOTTED; break; 4696 case 23:eUnderline = awt::FontUnderline::BOLDDASH; break; 4697 case 39:eUnderline = awt::FontUnderline::LONGDASH; break; 4698 case 55:eUnderline = awt::FontUnderline::BOLDLONGDASH; break; 4699 case 25:eUnderline = awt::FontUnderline::BOLDDASHDOT; break; 4700 case 26:eUnderline = awt::FontUnderline::BOLDDASHDOTDOT;break; 4701 case 27:eUnderline = awt::FontUnderline::BOLDWAVE; break; 4702 case 43:eUnderline = awt::FontUnderline::DOUBLEWAVE; break; 4703 default: ; 4704 } 4705 pContext->Insert(PROP_CHAR_UNDERLINE, true, uno::makeAny( eUnderline ) ); 4706 } 4707 4708 void DomainMapper::handleParaJustification(const sal_Int32 nIntValue, const ::boost::shared_ptr<PropertyMap> pContext, const bool bExchangeLeftRight) 4709 { 4710 sal_Int16 nAdjust = 0; 4711 sal_Int16 nLastLineAdjust = 0; 4712 switch(nIntValue) 4713 { 4714 case 1: 4715 nAdjust = style::ParagraphAdjust_CENTER; 4716 break; 4717 case 2: 4718 nAdjust = static_cast< sal_Int16 > (bExchangeLeftRight ? style::ParagraphAdjust_LEFT : style::ParagraphAdjust_RIGHT); 4719 break; 4720 case 4: 4721 nLastLineAdjust = style::ParagraphAdjust_BLOCK; 4722 //no break; 4723 case 3: 4724 nAdjust = style::ParagraphAdjust_BLOCK; 4725 break; 4726 case 0: 4727 default: 4728 nAdjust = static_cast< sal_Int16 > (bExchangeLeftRight ? style::ParagraphAdjust_RIGHT : style::ParagraphAdjust_LEFT); 4729 break; 4730 } 4731 pContext->Insert( PROP_PARA_ADJUST, true, uno::makeAny( nAdjust ) ); 4732 pContext->Insert( PROP_PARA_LAST_LINE_ADJUST, true, uno::makeAny( nLastLineAdjust ) ); 4733 } 4734 4735 bool DomainMapper::getColorFromIndex(const sal_Int32 nIndex, sal_Int32 &nColor) 4736 { 4737 nColor = 0; 4738 if ((nIndex < 1) || (nIndex > 16)) 4739 return false; 4740 4741 switch (nIndex) 4742 { 4743 case 1: nColor=0x000000; break; //black 4744 case 2: nColor=0x0000ff; break; //blue 4745 case 3: nColor=0x00ffff; break; //cyan 4746 case 4: nColor=0x00ff00; break; //green 4747 case 5: nColor=0xff00ff; break; //magenta 4748 case 6: nColor=0xff0000; break; //red 4749 case 7: nColor=0xffff00; break; //yellow 4750 case 8: nColor=0xffffff; break; //white 4751 case 9: nColor=0x000080; break;//dark blue 4752 case 10: nColor=0x008080; break; //dark cyan 4753 case 11: nColor=0x008000; break; //dark green 4754 case 12: nColor=0x800080; break; //dark magenta 4755 case 13: nColor=0x800000; break; //dark red 4756 case 14: nColor=0x808000; break; //dark yellow 4757 case 15: nColor=0x808080; break; //dark gray 4758 case 16: nColor=0xC0C0C0; break; //light gray 4759 default: 4760 return false; 4761 } 4762 return true; 4763 } 4764 4765 sal_Int16 DomainMapper::getEmphasisValue(const sal_Int32 nIntValue) 4766 { 4767 switch (nIntValue) 4768 { 4769 case 1: 4770 return com::sun::star::text::FontEmphasis::DOT_ABOVE; 4771 case 2: 4772 return com::sun::star::text::FontEmphasis::ACCENT_ABOVE; 4773 case 3: 4774 return com::sun::star::text::FontEmphasis::CIRCLE_ABOVE; 4775 case 4: 4776 return com::sun::star::text::FontEmphasis::DOT_BELOW; 4777 default: 4778 return com::sun::star::text::FontEmphasis::NONE; 4779 } 4780 } 4781 4782 rtl::OUString DomainMapper::getBracketStringFromEnum(const sal_Int32 nIntValue, const bool bIsPrefix) 4783 { 4784 switch(nIntValue) 4785 { 4786 case 1: 4787 if (bIsPrefix) 4788 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "(" )); 4789 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( ")" )); 4790 4791 case 2: 4792 if (bIsPrefix) 4793 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "[" )); 4794 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "]" )); 4795 4796 case 3: 4797 if (bIsPrefix) 4798 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "<" )); 4799 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( ">" )); 4800 4801 case 4: 4802 if (bIsPrefix) 4803 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "{" )); 4804 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "}" )); 4805 4806 case 0: 4807 default: 4808 return rtl::OUString(); 4809 } 4810 } 4811 4812 com::sun::star::style::TabAlign DomainMapper::getTabAlignFromValue(const sal_Int32 nIntValue) 4813 { 4814 switch (nIntValue) 4815 { 4816 case 0: 4817 case 4: // bar not supported 4818 case 5: // num not supported 4819 return com::sun::star::style::TabAlign_LEFT; 4820 case 1: 4821 return com::sun::star::style::TabAlign_CENTER; 4822 case 2: 4823 return com::sun::star::style::TabAlign_RIGHT; 4824 case 3: 4825 return com::sun::star::style::TabAlign_DECIMAL; 4826 } 4827 return com::sun::star::style::TabAlign_LEFT; 4828 } 4829 4830 sal_Unicode DomainMapper::getFillCharFromValue(const sal_Int32 nIntValue) 4831 { 4832 switch (nIntValue) 4833 { 4834 case 1: // dot 4835 return sal_Unicode(0x002e); 4836 case 2: // hyphen 4837 return sal_Unicode(0x002d); 4838 case 3: // underscore 4839 case 4: // heavy FIXME ??? 4840 return sal_Unicode(0x005f); 4841 case NS_ooxml::LN_Value_ST_TabTlc_middleDot: // middleDot 4842 return sal_Unicode(0x00b7); 4843 case 0: // none 4844 default: 4845 return sal_Unicode(0x0020); // blank space 4846 } 4847 } 4848 /*-- 18.07.2007 14:59:00--------------------------------------------------- 4849 4850 -----------------------------------------------------------------------*/ 4851 bool DomainMapper::IsOOXMLImport() const 4852 { 4853 return m_pImpl->IsOOXMLImport(); 4854 } 4855 /*-- 18.07.2007 16:03:14--------------------------------------------------- 4856 4857 -----------------------------------------------------------------------*/ 4858 uno::Reference < lang::XMultiServiceFactory > DomainMapper::GetTextFactory() const 4859 { 4860 return m_pImpl->GetTextFactory(); 4861 } 4862 /*-- 12.11.2007 10:41:01--------------------------------------------------- 4863 4864 -----------------------------------------------------------------------*/ 4865 /*-- 31.01.2008 18:19:44--------------------------------------------------- 4866 4867 -----------------------------------------------------------------------*/ 4868 uno::Reference< text::XTextRange > DomainMapper::GetCurrentTextRange() 4869 { 4870 return m_pImpl->GetTopTextAppend()->getEnd(); 4871 } 4872 4873 /*-- 05.02.2008 10:26:26--------------------------------------------------- 4874 4875 -----------------------------------------------------------------------*/ 4876 ::rtl::OUString DomainMapper::getOrCreateCharStyle( PropertyValueVector_t& rCharProperties ) 4877 { 4878 StyleSheetTablePtr pStyleSheets = m_pImpl->GetStyleSheetTable(); 4879 return pStyleSheets->getOrCreateCharStyle( rCharProperties ); 4880 } 4881 4882 ListsManager::Pointer DomainMapper::GetListTable( ) 4883 { 4884 return m_pImpl->GetListTable( ); 4885 } 4886 4887 StyleSheetTablePtr DomainMapper::GetStyleSheetTable( ) 4888 { 4889 return m_pImpl->GetStyleSheetTable( ); 4890 } 4891 4892 } //namespace dmapper 4893 } //namespace writerfilter 4894