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_CT_Comment_initials: 2078 m_pImpl->SetCurrentRedlineInitials(sStringValue); 2079 break; 2080 case NS_ooxml::LN_EG_RangeMarkupElements_commentRangeStart: 2081 m_pImpl->AddAnnotationPosition( true, nIntValue ); 2082 break; 2083 case NS_ooxml::LN_EG_RangeMarkupElements_commentRangeEnd: 2084 m_pImpl->AddAnnotationPosition( false, nIntValue ); 2085 break; 2086 case NS_ooxml::LN_token: 2087 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2088 m_pImpl->SetCurrentRedlineToken( nIntValue ); 2089 break; 2090 case NS_ooxml::LN_CT_LineNumber_countBy: 2091 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 2092 case NS_ooxml::LN_CT_LineNumber_restart: 2093 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 2094 { 2095 //line numbering in Writer is a global document setting 2096 //in Word is a section setting 2097 //if line numbering is switched on anywhere in the document it's set at the global settings 2098 LineNumberSettings aSettings = m_pImpl->GetLineNumberSettings(); 2099 switch( nName ) 2100 { 2101 case NS_ooxml::LN_CT_LineNumber_countBy: 2102 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2103 aSettings.nInterval = nIntValue; 2104 break; 2105 case NS_ooxml::LN_CT_LineNumber_start: 2106 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2107 aSettings.nStartValue = nIntValue; // todo: has to be set at (each) first paragraph 2108 break; 2109 case NS_ooxml::LN_CT_LineNumber_distance: 2110 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2111 aSettings.nDistance = ConversionHelper::convertTwipToMM100( nIntValue ); 2112 break; 2113 case NS_ooxml::LN_CT_LineNumber_restart: 2114 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2115 //page:empty, probably 0,section:1,continuous:2; 2116 aSettings.bRestartAtEachPage = nIntValue < 1; 2117 break; 2118 default:; 2119 } 2120 m_pImpl->SetLineNumberSettings( aSettings ); 2121 } 2122 break; 2123 case NS_ooxml::LN_CT_FtnEdnRef_customMarkFollows: 2124 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2125 m_pImpl->SetCustomFtnMark( true ); 2126 break; 2127 case NS_ooxml::LN_CT_FtnEdnRef_id: 2128 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 2129 // footnote or endnote reference id - not needed 2130 case NS_ooxml::LN_CT_Color_themeColor: 2131 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 2132 case NS_ooxml::LN_CT_Color_themeTint: 2133 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 2134 case NS_ooxml::LN_CT_Color_themeShade: 2135 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 2136 //unsupported 2137 break; 2138 case NS_ooxml::LN_endtrackchange: 2139 m_pImpl->RemoveCurrentRedline( ); 2140 break; 2141 case NS_ooxml::LN_CT_DocGrid_linePitch: 2142 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 2143 { 2144 //see SwWW8ImplReader::SetDocumentGrid 2145 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 2146 if(pSectionContext) 2147 { 2148 pSectionContext->SetGridLinePitch( ConversionHelper::convertTwipToMM100( nIntValue ) ); 2149 } 2150 } 2151 break; 2152 case NS_ooxml::LN_CT_DocGrid_charSpace: 2153 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2154 { 2155 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 2156 if(pSectionContext) 2157 { 2158 pSectionContext->SetDxtCharSpace( nIntValue ); 2159 } 2160 } 2161 break; 2162 case NS_ooxml::LN_CT_DocGrid_type: 2163 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2164 { 2165 if (pSectionContext != NULL) 2166 { 2167 pSectionContext->SetGridType(nIntValue); 2168 } 2169 } 2170 break; 2171 default: 2172 { 2173 #if OSL_DEBUG_LEVEL > 0 2174 ::rtl::OString sMessage( "DomainMapper::attribute() - Id: "); 2175 sMessage += ::rtl::OString::valueOf( sal_Int32( nName ), 10 ); 2176 sMessage += ::rtl::OString(" / 0x"); 2177 sMessage += ::rtl::OString::valueOf( sal_Int32( nName ), 16 ); 2178 // sMessage += ::rtl::OString(" / "); 2179 // sMessage += ::rtl::OString 2180 // ((*QNameToString::Instance())(nName).c_str()); 2181 sMessage += ::rtl::OString(" value: "); 2182 sMessage += ::rtl::OString::valueOf( sal_Int32( nIntValue ), 10 ); 2183 sMessage += ::rtl::OString(" / 0x"); 2184 sMessage += ::rtl::OString::valueOf( sal_Int32( nIntValue ), 16 ); 2185 OSL_ENSURE( false, sMessage.getStr()); // 2186 #endif 2187 } 2188 } 2189 } 2190 } 2191 /*-- 09.06.2006 09:52:12--------------------------------------------------- 2192 2193 -----------------------------------------------------------------------*/ 2194 void DomainMapper::lcl_sprm(Sprm & rSprm) 2195 { 2196 if( !m_pImpl->getTableManager().sprm(rSprm)) 2197 sprmWithProps( rSprm, m_pImpl->GetTopContext() ); 2198 } 2199 /*-- 20.06.2006 09:58:33--------------------------------------------------- 2200 2201 -----------------------------------------------------------------------*/ 2202 void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType eSprmType ) 2203 { 2204 OSL_ENSURE(rContext.get(), "PropertyMap has to be valid!"); 2205 if(!rContext.get()) 2206 return ; 2207 2208 sal_uInt32 nSprmId = rSprm.getId(); 2209 //needed for page properties 2210 SectionPropertyMap * pSectionContext = m_pImpl->GetSectionContext(); 2211 2212 //TODO: In rtl-paragraphs the meaning of left/right are to be exchanged 2213 bool bExchangeLeftRight = false; 2214 // if( nSprmId == NS_sprm::LN_PJcExtra && AlreadyInRTLPara() ) 2215 // bExchangeLeftRight = true; 2216 Value::Pointer_t pValue = rSprm.getValue(); 2217 sal_Int32 nIntValue = pValue->getInt(); 2218 const rtl::OUString sStringValue = pValue->getString(); 2219 // printf ( "DomainMapper::sprm(0x%.4x, 0x%.4x) [%s]\n", (unsigned int)nSprmId, (unsigned int)nIntValue, ::rtl::OUStringToOString(sStringValue, RTL_TEXTENCODING_DONTKNOW).getStr()); 2220 /* WRITERFILTERSTATUS: table: sprmdata */ 2221 2222 switch(nSprmId) 2223 { 2224 case 2: // sprmPIstd 2225 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2226 case 0x4600: 2227 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2228 break; // sprmPIstd - style code 2229 case 3: // "sprmPIstdPermute 2230 case NS_sprm::LN_PIstdPermute: 2231 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2232 break; // sprmPIstdPermute 2233 case NS_sprm::LN_PIncLvl: 2234 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2235 break; // sprmPIncLvl 2236 case NS_sprm::LN_PJcExtra: // sprmPJc Asian (undocumented) 2237 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2238 case NS_sprm::LN_PJc: // sprmPJc 2239 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2240 handleParaJustification(nIntValue, rContext, bExchangeLeftRight); 2241 break; 2242 case NS_sprm::LN_PFSideBySide: 2243 /* WRITERFILTERSTATUS: done: 0, planned: 3, spent: 0 */ 2244 /* WRITERFILTERSTATUS: comment: */ 2245 break; // sprmPFSideBySide 2246 2247 case NS_sprm::LN_PFKeep: // sprmPFKeep 2248 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 2249 /* WRITERFILTERSTATUS: comment: */ 2250 rContext->Insert(PROP_PARA_SPLIT, true, uno::makeAny(nIntValue ? false : true)); 2251 break; 2252 case NS_sprm::LN_PFKeepFollow: // sprmPFKeepFollow 2253 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */ 2254 /* WRITERFILTERSTATUS: comment: */ 2255 rContext->Insert(PROP_PARA_KEEP_TOGETHER, true, uno::makeAny( nIntValue ? true : false) ); 2256 break; 2257 2258 case NS_sprm::LN_PFPageBreakBefore: 2259 if ( nIntValue == 1 ) 2260 { 2261 rContext->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_PAGE_BEFORE ) ); 2262 } 2263 break; // sprmPFPageBreakBefore 2264 2265 case NS_sprm::LN_PBrcl: 2266 break; // sprmPBrcl 2267 case NS_sprm::LN_PBrcp: 2268 break; // sprmPBrcp 2269 2270 case NS_sprm::LN_PIlvl: // sprmPIlvl 2271 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */ 2272 /* WRITERFILTERSTATUS: comment: */ 2273 { 2274 StyleSheetPropertyMap* pStyleSheetPropertyMap = NULL; 2275 if ( m_pImpl->IsStyleSheetImport() ) 2276 { 2277 pStyleSheetPropertyMap = dynamic_cast< StyleSheetPropertyMap* >( rContext.get() ); 2278 } 2279 2280 if ( pStyleSheetPropertyMap != NULL ) 2281 { 2282 pStyleSheetPropertyMap->SetListLevel( (sal_Int16)nIntValue ); 2283 } 2284 else 2285 { 2286 rContext->Insert( PROP_NUMBERING_LEVEL, true, uno::makeAny( (sal_Int16)nIntValue )); 2287 } 2288 } 2289 break; 2290 2291 case NS_sprm::LN_PIlfo: // sprmPIlfo 2292 /* WRITERFILTERSTATUS: done: 50, planned: 0, spent: 1 */ 2293 /* WRITERFILTERSTATUS: comment: */ 2294 { 2295 //convert the ListTable entry to a NumberingRules propery and apply it 2296 StyleSheetPropertyMap* pStyleSheetPropertyMap = NULL; 2297 if ( m_pImpl->IsStyleSheetImport() ) 2298 { 2299 pStyleSheetPropertyMap = dynamic_cast< StyleSheetPropertyMap* >( rContext.get() ); 2300 } 2301 2302 ListsManager::Pointer pListTable = m_pImpl->GetListTable(); 2303 ListDef::Pointer pList = pListTable->GetList( nIntValue ); 2304 if( pList.get( ) ) 2305 { 2306 if ( pStyleSheetPropertyMap != NULL ) 2307 { 2308 pStyleSheetPropertyMap->SetListId( nIntValue ); 2309 } 2310 else 2311 { 2312 uno::Any aRules = uno::makeAny( pList->GetNumberingRules( ) ); 2313 rContext->Insert( PROP_NUMBERING_RULES, true, aRules ); 2314 } 2315 } 2316 else 2317 { 2318 if ( pStyleSheetPropertyMap != NULL ) 2319 { 2320 // set the number id for AbstractNum references 2321 pStyleSheetPropertyMap->SetNumId( nIntValue ); 2322 } 2323 else 2324 { 2325 rtl::OUString sNone; 2326 rContext->Insert( PROP_NUMBERING_STYLE_NAME, true, uno::makeAny( sNone ) ); 2327 } 2328 } 2329 } 2330 break; 2331 2332 case NS_sprm::LN_PFNoLineNumb: // sprmPFNoLineNumb 2333 rContext->Insert(PROP_PARA_LINE_NUMBER_COUNT, true, uno::makeAny( nIntValue != 0 ? false : true) ); 2334 break; 2335 2336 case NS_sprm::LN_PChgTabsPapx: // sprmPChgTabsPapx 2337 /* WRITERFILTERSTATUS: done: 90, planned: 8, spent: 8 */ 2338 /* WRITERFILTERSTATUS: comment: bar tab stops a unavailable */ 2339 { 2340 // Initialize tab stop vector from style sheet 2341 uno::Any aValue = m_pImpl->GetPropertyFromStyleSheet(PROP_PARA_TAB_STOPS); 2342 uno::Sequence< style::TabStop > aStyleTabStops; 2343 if(aValue >>= aStyleTabStops) 2344 { 2345 m_pImpl->InitTabStopFromStyle( aStyleTabStops ); 2346 } 2347 2348 //create a new tab stop property - this is done with the contained properties 2349 resolveSprmProps(*this, rSprm); 2350 //add this property 2351 rContext->Insert(PROP_PARA_TAB_STOPS, true, uno::makeAny( m_pImpl->GetCurrentTabStopAndClear())); 2352 } 2353 break; 2354 case 0x845d: //right margin Asian - undocumented 2355 case 0x845e: //left margin Asian - undocumented 2356 case 16: // sprmPDxaRight - right margin 2357 case NS_sprm::LN_PDxaRight: // sprmPDxaRight - right margin 2358 case 17: 2359 case NS_sprm::LN_PDxaLeft: // sprmPDxaLeft 2360 /* WRITERFILTERSTATUS: done: 50, planned: 5, spent: 1 */ 2361 if( NS_sprm::LN_PDxaLeft == nSprmId || 0x17 == nSprmId|| (bExchangeLeftRight && nSprmId == 0x845d) || ( !bExchangeLeftRight && nSprmId == 0x845e)) 2362 rContext->Insert( 2363 eSprmType == SPRM_DEFAULT ? PROP_PARA_LEFT_MARGIN : PROP_LEFT_MARGIN, 2364 true, 2365 uno::makeAny( ConversionHelper::convertTwipToMM100( nIntValue ) )); 2366 else if(eSprmType == SPRM_DEFAULT) 2367 rContext->Insert( 2368 PROP_PARA_RIGHT_MARGIN, true, 2369 uno::makeAny( ConversionHelper::convertTwipToMM100(nIntValue ) )); 2370 //TODO: what happens to the right margins in numberings? 2371 break; 2372 case 18: // sprmPNest 2373 case NS_sprm::LN_PNest: // sprmPNest 2374 //not handled in the old WW8 filter 2375 break; 2376 case NS_sprm::LN_PDxaLeft1: // sprmPDxaLeft1 2377 case 19: 2378 case NS_sprm::LN_PDxaLeft180: // sprmPDxaLeft180 2379 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */ 2380 rContext->Insert( 2381 eSprmType == SPRM_DEFAULT ? PROP_PARA_FIRST_LINE_INDENT : PROP_FIRST_LINE_OFFSET, 2382 true, 2383 uno::makeAny( ConversionHelper::convertTwipToMM100(nIntValue ) )); 2384 break; 2385 case 20 : // sprmPDyaLine 2386 case NS_sprm::LN_PDyaLine: // sprmPDyaLine 2387 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */ 2388 { 2389 style::LineSpacing aSpacing; 2390 sal_Int16 nDistance = sal_Int16(nIntValue & 0xffff); 2391 if(nIntValue & 0xffff0000) 2392 { 2393 // single line in Writer is 100, in Word it is 240 2394 aSpacing.Mode = style::LineSpacingMode::PROP; 2395 aSpacing.Height = sal_Int16(sal_Int32(nDistance) * 100 /240); 2396 } 2397 else 2398 { 2399 if(nDistance < 0) 2400 { 2401 aSpacing.Mode = style::LineSpacingMode::FIX; 2402 aSpacing.Height = sal_Int16(ConversionHelper::convertTwipToMM100(-nDistance)); 2403 } 2404 else if(nDistance >0) 2405 { 2406 aSpacing.Mode = style::LineSpacingMode::MINIMUM; 2407 aSpacing.Height = sal_Int16(ConversionHelper::convertTwipToMM100(nDistance)); 2408 } 2409 } 2410 rContext->Insert(PROP_PARA_LINE_SPACING, true, uno::makeAny( aSpacing )); 2411 } 2412 break; 2413 case 21 : // legacy version 2414 case NS_sprm::LN_PDyaBefore: // sprmPDyaBefore 2415 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */ 2416 rContext->Insert(PROP_PARA_TOP_MARGIN, true, uno::makeAny( ConversionHelper::convertTwipToMM100( nIntValue ) )); 2417 break; 2418 case 22 : 2419 case NS_sprm::LN_PDyaAfter: // sprmPDyaAfter 2420 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */ 2421 rContext->Insert(PROP_PARA_BOTTOM_MARGIN, true, uno::makeAny( ConversionHelper::convertTwipToMM100( nIntValue ) )); 2422 break; 2423 2424 case 23: //sprmPChgTabs 2425 case NS_sprm::LN_PChgTabs: // sprmPChgTabs 2426 /* WRITERFILTERSTATUS: done: 0, planned: 3, spent: 0 */ 2427 OSL_ENSURE( false, "unhandled"); 2428 //tabs of list level? 2429 break; 2430 case 24: // "sprmPFInTable" 2431 case NS_sprm::LN_PFInTable: 2432 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2433 break; // sprmPFInTable 2434 case NS_sprm::LN_PTableDepth: //sprmPTableDepth 2435 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */ 2436 //not handled via sprm but via text( 0x07 ) 2437 break; 2438 case 25: // "sprmPTtp" pap.fTtp 2439 case NS_sprm::LN_PFTtp: // sprmPFTtp was: Read_TabRowEnd 2440 break; 2441 case 26: // "sprmPDxaAbs 2442 case NS_sprm::LN_PDxaAbs: 2443 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2444 break; // sprmPDxaAbs 2445 case 27: //sprmPDyaAbs 2446 case NS_sprm::LN_PDyaAbs: 2447 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2448 break; // sprmPDyaAbs 2449 case NS_sprm::LN_PDxaWidth: 2450 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2451 break; // sprmPDxaWidth 2452 case NS_sprm::LN_PPc: 2453 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2454 break; // sprmPPc 2455 case NS_sprm::LN_PBrcTop10: 2456 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2457 break; // sprmPBrcTop10 2458 case NS_sprm::LN_PBrcLeft10: 2459 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2460 break; // sprmPBrcLeft10 2461 case NS_sprm::LN_PBrcBottom10: 2462 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2463 break; // sprmPBrcBottom10 2464 case NS_sprm::LN_PBrcRight10: 2465 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2466 break; // sprmPBrcRight10 2467 case NS_sprm::LN_PBrcBetween10: 2468 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2469 break; // sprmPBrcBetween10 2470 case NS_sprm::LN_PBrcBar10: 2471 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2472 break; // sprmPBrcBar10 2473 case NS_sprm::LN_PDxaFromText10: 2474 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2475 break; // sprmPDxaFromText10 2476 case NS_sprm::LN_PWr: 2477 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2478 break; // sprmPWr 2479 2480 case NS_ooxml::LN_CT_PrBase_pBdr: //paragraph border 2481 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2482 resolveSprmProps(*this, rSprm); 2483 break; 2484 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2485 case NS_sprm::LN_PBrcTop: // sprmPBrcTop 2486 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2487 /* WRITERFILTERSTATUS: comment: page borders are no handled yet, conversion incomplete */ 2488 case NS_sprm::LN_PBrcLeft: // sprmPBrcLeft 2489 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2490 /* WRITERFILTERSTATUS: comment: page borders are no handled yet, conversion incomplete */ 2491 case NS_sprm::LN_PBrcBottom: // sprmPBrcBottom 2492 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2493 /* WRITERFILTERSTATUS: comment: page borders are no handled yet, conversion incomplete */ 2494 case NS_sprm::LN_PBrcRight: // sprmPBrcRight 2495 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2496 /* WRITERFILTERSTATUS: comment: page borders are no handled yet, conversion incomplete */ 2497 case NS_sprm::LN_PBrcBetween: // sprmPBrcBetween 2498 /* WRITERFILTERSTATUS: done: 0, planned: 8, spent: 0 */ 2499 /* WRITERFILTERSTATUS: comment: */ 2500 { 2501 //in binary format the borders are directly provided in OOXML they are inside of properties 2502 if( IsOOXMLImport() ) 2503 { 2504 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); 2505 if( pProperties.get()) 2506 { 2507 BorderHandlerPtr pBorderHandler( new BorderHandler( true ) ); 2508 pProperties->resolve(*pBorderHandler); 2509 PropertyIds eBorderId = PropertyIds( 0 ); 2510 PropertyIds eBorderDistId = PropertyIds( 0 ); 2511 switch( nSprmId ) 2512 { 2513 case NS_sprm::LN_PBrcTop: 2514 /* WRITERFILTERSTATUS: */ 2515 eBorderId = PROP_TOP_BORDER; 2516 eBorderDistId = PROP_TOP_BORDER_DISTANCE; 2517 break; 2518 case NS_sprm::LN_PBrcLeft: 2519 /* WRITERFILTERSTATUS: */ 2520 eBorderId = PROP_LEFT_BORDER; 2521 eBorderDistId = PROP_LEFT_BORDER_DISTANCE; 2522 break; 2523 case NS_sprm::LN_PBrcBottom: 2524 /* WRITERFILTERSTATUS: */ 2525 eBorderId = PROP_BOTTOM_BORDER ; 2526 eBorderDistId = PROP_BOTTOM_BORDER_DISTANCE; 2527 break; 2528 case NS_sprm::LN_PBrcRight: 2529 /* WRITERFILTERSTATUS: */ 2530 eBorderId = PROP_RIGHT_BORDER; 2531 eBorderDistId = PROP_RIGHT_BORDER_DISTANCE ; 2532 break; 2533 case NS_sprm::LN_PBrcBetween: 2534 /* WRITERFILTERSTATUS: */ 2535 //not supported 2536 break; 2537 default:; 2538 } 2539 if( eBorderId ) 2540 rContext->Insert( eBorderId, true, uno::makeAny( pBorderHandler->getBorderLine()) , true); 2541 if(eBorderDistId) 2542 rContext->Insert(eBorderDistId, true, uno::makeAny( pBorderHandler->getLineDistance()), true); 2543 } 2544 } 2545 else 2546 { 2547 table::BorderLine aBorderLine; 2548 sal_Int32 nLineDistance = ConversionHelper::MakeBorderLine( nIntValue, aBorderLine ); 2549 PropertyIds eBorderId = PROP_LEFT_BORDER; 2550 PropertyIds eBorderDistId = PROP_LEFT_BORDER_DISTANCE ; 2551 switch( nSprmId ) 2552 { 2553 case NS_sprm::LN_PBrcBetween: // sprmPBrcBetween 2554 /* WRITERFILTERSTATUS: */ 2555 OSL_ENSURE( false, "TODO: inner border is not handled"); 2556 break; 2557 case NS_sprm::LN_PBrcLeft: // sprmPBrcLeft 2558 /* WRITERFILTERSTATUS: */ 2559 eBorderId = PROP_LEFT_BORDER; 2560 eBorderDistId = PROP_LEFT_BORDER_DISTANCE ; 2561 break; 2562 case NS_sprm::LN_PBrcRight: // sprmPBrcRight 2563 /* WRITERFILTERSTATUS: */ 2564 eBorderId = PROP_RIGHT_BORDER ; 2565 eBorderDistId = PROP_RIGHT_BORDER_DISTANCE ; 2566 break; 2567 case NS_sprm::LN_PBrcTop: // sprmPBrcTop 2568 /* WRITERFILTERSTATUS: */ 2569 eBorderId = PROP_TOP_BORDER ; 2570 eBorderDistId = PROP_TOP_BORDER_DISTANCE; 2571 break; 2572 case NS_sprm::LN_PBrcBottom: // sprmPBrcBottom 2573 /* WRITERFILTERSTATUS: */ 2574 default: 2575 eBorderId = PROP_BOTTOM_BORDER ; 2576 eBorderDistId = PROP_BOTTOM_BORDER_DISTANCE; 2577 } 2578 rContext->Insert(eBorderId, true, uno::makeAny( aBorderLine )); 2579 rContext->Insert(eBorderDistId, true, uno::makeAny( nLineDistance )); 2580 } 2581 } 2582 break; 2583 case NS_sprm::LN_PBorderTop: 2584 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2585 /* WRITERFILTERSTATUS: comment: probably _real_ border colors, unhandled */ 2586 case NS_sprm::LN_PBorderLeft: 2587 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2588 /* WRITERFILTERSTATUS: comment: probably _real_ border colors, unhandled */ 2589 case NS_sprm::LN_PBorderBottom: 2590 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2591 /* WRITERFILTERSTATUS: comment: probably _real_ border colors, unhandled */ 2592 case NS_sprm::LN_PBorderRight: 2593 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2594 /* WRITERFILTERSTATUS: comment: probably _real_ border colors, unhandled */ 2595 OSL_ENSURE( false, "TODO: border color definition"); 2596 break; 2597 case NS_sprm::LN_PBrcBar: 2598 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2599 break; // sprmPBrcBar 2600 2601 case NS_sprm::LN_PFNoAutoHyph: // sprmPFNoAutoHyph 2602 rContext->Insert(PROP_PARA_IS_HYPHENATION, true, uno::makeAny( nIntValue != 0 ? false : true )); 2603 break; 2604 2605 case NS_sprm::LN_PWHeightAbs: 2606 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2607 break; // sprmPWHeightAbs 2608 case NS_sprm::LN_PDcs: 2609 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2610 break; // sprmPDcs 2611 2612 case NS_sprm::LN_PShd: // sprmPShd 2613 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 2 */ 2614 { 2615 //contains fore color, back color and shadow percentage, results in a brush 2616 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); 2617 if( pProperties.get()) 2618 { 2619 CellColorHandlerPtr pCellColorHandler( new CellColorHandler ); 2620 pCellColorHandler->setParagraph(); 2621 pProperties->resolve(*pCellColorHandler); 2622 rContext->insert( pCellColorHandler->getProperties(), true ); 2623 } 2624 } 2625 break; 2626 case NS_sprm::LN_PDyaFromText: 2627 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2628 break; // sprmPDyaFromText 2629 case NS_sprm::LN_PDxaFromText: 2630 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2631 break; // sprmPDxaFromText 2632 case NS_sprm::LN_PFLocked: 2633 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2634 break; // sprmPFLocked 2635 2636 case NS_sprm::LN_PFWidowControl: 2637 case NS_ooxml::LN_CT_PPrBase_widowControl: 2638 { 2639 uno::Any aVal( uno::makeAny( sal_Int8(nIntValue != 0 ? 2 : 0 ))); 2640 rContext->Insert( PROP_PARA_WIDOWS, true, aVal ); 2641 rContext->Insert( PROP_PARA_ORPHANS, true, aVal ); 2642 } 2643 break; // sprmPFWidowControl 2644 2645 case NS_sprm::LN_PRuler: 2646 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2647 break; // sprmPRuler 2648 case NS_sprm::LN_PFKinsoku: 2649 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2650 break; // sprmPFKinsoku 2651 case NS_sprm::LN_PFWordWrap: 2652 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2653 break; // sprmPFWordWrap 2654 case NS_sprm::LN_PFOverflowPunct: ; // sprmPFOverflowPunct - hanging punctuation 2655 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2656 rContext->Insert(PROP_PARA_IS_HANGING_PUNCTUATION, true, uno::makeAny( nIntValue ? false : true )); 2657 break; 2658 case NS_sprm::LN_PFTopLinePunct: 2659 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2660 break; // sprmPFTopLinePunct 2661 case NS_sprm::LN_PFAutoSpaceDE: 2662 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2663 break; // sprmPFAutoSpaceDE 2664 case NS_sprm::LN_PFAutoSpaceDN: 2665 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2666 break; // sprmPFAutoSpaceDN 2667 case NS_sprm::LN_PWAlignFont: 2668 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2669 break; // sprmPWAlignFont 2670 case NS_sprm::LN_PFrameTextFlow: 2671 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2672 break; // sprmPFrameTextFlow 2673 case NS_sprm::LN_PISnapBaseLine: 2674 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2675 break; // sprmPISnapBaseLine 2676 case NS_sprm::LN_PAnld: 2677 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2678 break; // sprmPAnld 2679 case NS_sprm::LN_PPropRMark: 2680 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2681 break; // sprmPPropRMark 2682 2683 case NS_sprm::LN_POutLvl: 2684 { 2685 // - nIntValue == WW_OUTLINE_MAX --> no outline level 2686 // - WW_OUTLINE_MIN <= nIntValue < WW_OUTLINE_MAX --> outline level = nIntValue+1 2687 // - nIntValue > WW_OUTLINE_MAX are treated as no outline level 2688 const sal_Int16 nOutlineLevel = nIntValue >= WW_OUTLINE_MIN && nIntValue < WW_OUTLINE_MAX 2689 ? static_cast< sal_Int16 >(nIntValue+1) 2690 : 0; 2691 StyleSheetPropertyMap* pStyleSheetPropertyMap = NULL; 2692 if ( m_pImpl->IsStyleSheetImport() ) 2693 { 2694 pStyleSheetPropertyMap = dynamic_cast< StyleSheetPropertyMap* >( rContext.get() ); 2695 } 2696 if ( pStyleSheetPropertyMap != 0 ) 2697 { 2698 pStyleSheetPropertyMap->SetOutlineLevel( nOutlineLevel ); 2699 } 2700 else 2701 { 2702 rContext->Insert(PROP_OUTLINE_LEVEL, true, uno::makeAny ( nOutlineLevel )); 2703 } 2704 } 2705 break; // sprmPOutLvl 2706 2707 case NS_sprm::LN_PFBiDi: 2708 if ( nIntValue == 1 ) 2709 { 2710 rContext->Insert(PROP_WRITING_MODE, false, uno::makeAny( text::WritingMode2::RL_TB )); 2711 rContext->Insert(PROP_PARA_ADJUST, false, uno::makeAny( style::ParagraphAdjust_RIGHT )); 2712 } 2713 break; // sprmPFBiDi 2714 2715 case NS_ooxml::LN_EG_SectPrContents_bidi: 2716 if ( nIntValue == 1 ) 2717 { 2718 if ( pSectionContext != NULL ) 2719 pSectionContext->Insert( PROP_WRITING_MODE, false, uno::makeAny( text::WritingMode2::RL_TB ) ); 2720 } 2721 break; 2722 2723 case NS_sprm::LN_PFNumRMIns: 2724 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2725 break; // sprmPFNumRMIns 2726 case NS_sprm::LN_PCrLf: 2727 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2728 break; // sprmPCrLf 2729 case NS_sprm::LN_PNumRM: 2730 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2731 break; // sprmPNumRM 2732 case NS_sprm::LN_PHugePapx: 2733 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2734 break; // sprmPHugePapx 2735 case NS_sprm::LN_PFUsePgsuSettings: 2736 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2737 break; // sprmPFUsePgsuSettings 2738 case NS_sprm::LN_PFAdjustRight: 2739 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2740 break; // sprmPFAdjustRight 2741 case NS_sprm::LN_CFRMarkDel: 2742 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2743 break; // sprmCFRMarkDel 2744 case NS_sprm::LN_CFRMark: 2745 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2746 break; // sprmCFRMark 2747 case NS_sprm::LN_CFFldVanish: 2748 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2749 break; // sprmCFFldVanish 2750 case NS_sprm::LN_CFSpec: // sprmCFSpec 2751 break; 2752 case NS_sprm::LN_CPicLocation: // sprmCPicLocation 2753 //is being resolved on the tokenizer side 2754 break; 2755 case NS_sprm::LN_CIbstRMark: 2756 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2757 break; // sprmCIbstRMark 2758 case NS_sprm::LN_CDttmRMark: 2759 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2760 break; // sprmCDttmRMark 2761 case NS_sprm::LN_CFData: 2762 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2763 break; // sprmCFData 2764 case NS_sprm::LN_CIdslRMark: 2765 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2766 break; // sprmCIdslRMark 2767 case NS_sprm::LN_CChs: 2768 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2769 break; // sprmCChs 2770 case NS_sprm::LN_CSymbol: // sprmCSymbol 2771 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2772 resolveSprmProps(*this, rSprm); //resolves LN_FONT and LN_CHAR 2773 break; 2774 case NS_sprm::LN_CFOle2: 2775 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2776 break; // sprmCFOle2 2777 case NS_sprm::LN_CIdCharType: 2778 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2779 break; // sprmCIdCharType 2780 case NS_sprm::LN_CHighlight: 2781 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2782 { 2783 sal_Int32 nColor = 0; 2784 if(true ==( mbIsHighlightSet = getColorFromIndex(nIntValue, nColor))) 2785 rContext->Insert(PROP_CHAR_BACK_COLOR, true, uno::makeAny( nColor )); 2786 else if (mnBackgroundColor) 2787 rContext->Insert(PROP_CHAR_BACK_COLOR, true, uno::makeAny( mnBackgroundColor )); 2788 } 2789 break; // sprmCHighlight 2790 case NS_sprm::LN_CObjLocation: 2791 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2792 break; // sprmCObjLocation 2793 case NS_sprm::LN_CFFtcAsciSymb: 2794 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2795 break; // sprmCFFtcAsciSymb 2796 case NS_sprm::LN_CIstd: 2797 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2798 break; // sprmCIstd 2799 case NS_sprm::LN_CIstdPermute: 2800 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2801 break; // sprmCIstdPermute 2802 case NS_sprm::LN_CDefault: 2803 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2804 break; // sprmCDefault 2805 case NS_sprm::LN_CPlain: 2806 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2807 break; // sprmCPlain 2808 case NS_sprm::LN_CKcd: 2809 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2810 rContext->Insert(PROP_CHAR_EMPHASIS, true, uno::makeAny ( getEmphasisValue (nIntValue))); 2811 break; // sprmCKcd 2812 2813 case NS_sprm::LN_CFEmboss:// sprmCFEmboss 2814 case 60:// sprmCFBold 2815 case NS_sprm::LN_CFBoldBi:// sprmCFBoldBi (offset 0x27 to normal bold) 2816 case NS_sprm::LN_CFItalicBi:// sprmCFItalicBi (offset 0x27 to normal italic) 2817 case NS_sprm::LN_CFBold: //sprmCFBold 2818 case 61: /*sprmCFItalic*/ 2819 case NS_sprm::LN_CFItalic: //sprmCFItalic 2820 case NS_sprm::LN_CFStrike: //sprmCFStrike 2821 case NS_sprm::LN_CFOutline: //sprmCFOutline 2822 case NS_sprm::LN_CFShadow: //sprmCFShadow 2823 case NS_sprm::LN_CFSmallCaps: //sprmCFSmallCaps 2824 case NS_sprm::LN_CFCaps: //sprmCFCaps 2825 case NS_sprm::LN_CFVanish: //sprmCFVanish 2826 case NS_sprm::LN_CFDStrike: // sprmCFDStrike 2827 { 2828 PropertyIds ePropertyId = PROP_CHAR_WEIGHT; //initialized to prevent warning! 2829 switch( nSprmId ) 2830 { 2831 case 60:// sprmCFBold 2832 case NS_sprm::LN_CFBold: /*sprmCFBold*/ 2833 ePropertyId = PROP_CHAR_WEIGHT; 2834 break; 2835 case NS_sprm::LN_CFBoldBi: // sprmCFBoldBi 2836 ePropertyId = PROP_CHAR_WEIGHT_COMPLEX; 2837 break; 2838 2839 case 61: /*sprmCFItalic*/ 2840 case NS_sprm::LN_CFItalicBi: // sprmCFItalicBi 2841 case NS_sprm::LN_CFItalic: /*sprmCFItalic*/ 2842 ePropertyId = nSprmId == 0x836 ? PROP_CHAR_POSTURE : PROP_CHAR_POSTURE_COMPLEX; 2843 break; 2844 2845 case NS_sprm::LN_CFStrike: /*sprmCFStrike*/ 2846 case NS_sprm::LN_CFDStrike : /*sprmCFDStrike double strike through*/ 2847 ePropertyId = PROP_CHAR_STRIKEOUT; 2848 break; 2849 2850 case NS_sprm::LN_CFOutline: /*sprmCFOutline*/ 2851 ePropertyId = PROP_CHAR_CONTOURED; 2852 break; 2853 2854 case NS_sprm::LN_CFShadow: /*sprmCFShadow*/ 2855 ePropertyId = PROP_CHAR_SHADOWED; 2856 break; 2857 2858 case NS_sprm::LN_CFSmallCaps: /*sprmCFSmallCaps*/ 2859 case NS_sprm::LN_CFCaps: /*sprmCFCaps*/ 2860 ePropertyId = PROP_CHAR_CASE_MAP; 2861 break; 2862 2863 case NS_sprm::LN_CFVanish: /*sprmCFVanish*/ 2864 ePropertyId = PROP_CHAR_HIDDEN; 2865 break; 2866 2867 case NS_sprm::LN_CFEmboss: /*sprmCFEmboss*/ 2868 ePropertyId = PROP_CHAR_RELIEF; 2869 break; 2870 } 2871 //expected: 0,1,128,129 2872 if(nIntValue != 128) //inherited from paragraph - ignore 2873 { 2874 if( nIntValue == 129) //inverted style sheet value 2875 { 2876 //get value from style sheet and invert it 2877 sal_Int16 nStyleValue = 0; 2878 double fDoubleValue = 0; 2879 uno::Any aStyleVal = m_pImpl->GetPropertyFromStyleSheet(ePropertyId); 2880 if( !aStyleVal.hasValue() ) 2881 { 2882 nIntValue = 0x83a == nSprmId ? 2883 4 : 1; 2884 } 2885 else if(aStyleVal.getValueTypeClass() == uno::TypeClass_FLOAT ) 2886 { 2887 //only in case of awt::FontWeight 2888 aStyleVal >>= fDoubleValue; 2889 nIntValue = fDoubleValue > 100. ? 0 : 1; 2890 } 2891 else if((aStyleVal >>= nStyleValue) || 2892 (nStyleValue = (sal_Int16)comphelper::getEnumAsINT32(aStyleVal)) >= 0 ) 2893 { 2894 nIntValue = 0x83a == nSprmId ? 2895 nStyleValue ? 0 : 4 : 2896 nStyleValue ? 0 : 1; 2897 } 2898 else 2899 { 2900 OSL_ENSURE( false, "what type was it"); 2901 } 2902 } 2903 2904 switch( nSprmId ) 2905 { 2906 case 60:/*sprmCFBold*/ 2907 case NS_sprm::LN_CFBold: /*sprmCFBold*/ 2908 case NS_sprm::LN_CFBoldBi: // sprmCFBoldBi 2909 { 2910 uno::Any aBold( uno::makeAny( nIntValue != 0 ? awt::FontWeight::BOLD : awt::FontWeight::NORMAL ) ); 2911 2912 rContext->Insert(ePropertyId, true, aBold ); 2913 if( nSprmId != NS_sprm::LN_CFBoldBi ) // sprmCFBoldBi 2914 rContext->Insert(PROP_CHAR_WEIGHT_ASIAN, true, aBold ); 2915 } 2916 break; 2917 2918 case 61: /*sprmCFItalic*/ 2919 case NS_sprm::LN_CFItalic: /*sprmCFItalic*/ 2920 case NS_sprm::LN_CFItalicBi: // sprmCFItalicBi 2921 { 2922 uno::Any aPosture( uno::makeAny( nIntValue != 0 ? awt::FontSlant_ITALIC : awt::FontSlant_NONE ) ); 2923 rContext->Insert( ePropertyId, true, aPosture ); 2924 if( nSprmId != NS_sprm::LN_CFItalicBi ) // sprmCFItalicBi 2925 rContext->Insert(PROP_CHAR_POSTURE_ASIAN, true, aPosture ); 2926 } 2927 break; 2928 2929 case NS_sprm::LN_CFStrike: /*sprmCFStrike*/ 2930 rContext->Insert(ePropertyId, true, 2931 uno::makeAny( nIntValue != 0 ? awt::FontStrikeout::SINGLE : awt::FontStrikeout::NONE ) ); 2932 break; 2933 2934 case NS_sprm::LN_CFDStrike : /*sprmCFDStrike double strike through*/ 2935 rContext->Insert(ePropertyId, true, 2936 uno::makeAny( nIntValue != 0 ? awt::FontStrikeout::DOUBLE : awt::FontStrikeout::NONE ) ); 2937 break; 2938 2939 case NS_sprm::LN_CFOutline: /*sprmCFOutline*/ 2940 case NS_sprm::LN_CFShadow: /*sprmCFShadow*/ 2941 case NS_sprm::LN_CFVanish: /*sprmCFVanish*/ 2942 rContext->Insert(ePropertyId, true, uno::makeAny( nIntValue != 0 ? true : false )); 2943 break; 2944 2945 case NS_sprm::LN_CFSmallCaps: /*sprmCFSmallCaps*/ 2946 rContext->Insert(ePropertyId, true, 2947 uno::makeAny( nIntValue != 0 ? style::CaseMap::SMALLCAPS : style::CaseMap::NONE)); 2948 break; 2949 2950 case NS_sprm::LN_CFCaps: /*sprmCFCaps*/ 2951 rContext->Insert(ePropertyId, true, 2952 uno::makeAny( nIntValue != 0 ? style::CaseMap::UPPERCASE : style::CaseMap::NONE)); 2953 break; 2954 2955 case NS_sprm::LN_CFEmboss: /*sprmCFEmboss*/ 2956 rContext->Insert(ePropertyId, true, 2957 uno::makeAny( nIntValue != 0 ? awt::FontRelief::EMBOSSED : awt::FontRelief::NONE )); 2958 break; 2959 2960 } 2961 } 2962 } 2963 break; 2964 case NS_sprm::LN_CFtcDefault: 2965 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2966 break; // sprmCFtcDefault 2967 case NS_sprm::LN_CKul: // sprmCKul 2968 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2969 { 2970 // Parameter: 0 = none, 1 = single, 2 = by Word, 2971 // 3 = double, 4 = dotted, 5 = hidden 2972 // 6 = thick, 7 = dash, 8 = dot(not used) 2973 // 9 = dotdash 10 = dotdotdash 11 = wave 2974 handleUnderlineType(nIntValue, rContext); 2975 } 2976 break; 2977 case NS_sprm::LN_CSizePos: 2978 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2979 break; // sprmCSizePos 2980 case NS_sprm::LN_CLid: 2981 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2982 break; // sprmCLid 2983 case NS_sprm::LN_CIco: 2984 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 2985 { 2986 sal_Int32 nColor = 0; 2987 if (getColorFromIndex(nIntValue, nColor)) 2988 rContext->Insert(PROP_CHAR_COLOR, true, uno::makeAny( nColor ) ); 2989 } 2990 break; // sprmCIco 2991 case NS_sprm::LN_CHpsBi: // sprmCHpsBi 2992 case NS_sprm::LN_CHps: // sprmCHps 2993 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 2994 { 2995 //multiples of half points (12pt == 24) 2996 double fVal = double(nIntValue) / 2.; 2997 uno::Any aVal = uno::makeAny( fVal ); 2998 if( NS_sprm::LN_CHpsBi == nSprmId ) 2999 rContext->Insert( PROP_CHAR_HEIGHT_COMPLEX, true, aVal ); 3000 else 3001 { 3002 //Asian get the same value as Western 3003 rContext->Insert( PROP_CHAR_HEIGHT, true, aVal ); 3004 rContext->Insert( PROP_CHAR_HEIGHT_ASIAN, true, aVal ); 3005 } 3006 } 3007 break; 3008 case NS_sprm::LN_CHpsInc: 3009 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3010 break; // sprmCHpsInc 3011 3012 case NS_sprm::LN_CHpsPos: 3013 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3014 { 3015 // FIXME: ww8 filter in ww8par6.cxx has a Read_SubSuperProp function 3016 // that counts the escapement from this value and font size. So it will be 3017 // on our TODO list 3018 sal_Int16 nEscapement = 0; 3019 sal_Int8 nProp = 100; 3020 if (nIntValue < 0) 3021 nEscapement = -58; 3022 else if (nIntValue > 0) 3023 nEscapement = 58; 3024 else /* (nIntValue == 0) */ 3025 nProp = 0; 3026 rContext->Insert(PROP_CHAR_ESCAPEMENT, true, uno::makeAny( nEscapement ) ); 3027 rContext->Insert(PROP_CHAR_ESCAPEMENT_HEIGHT, true, uno::makeAny( nProp ) ); 3028 } 3029 break; // sprmCHpsPos 3030 3031 case NS_sprm::LN_CHpsPosAdj: 3032 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3033 break; // sprmCHpsPosAdj 3034 case NS_sprm::LN_CMajority: 3035 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3036 break; // sprmCMajority 3037 case NS_sprm::LN_CIss: // sprmCIss 3038 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3039 { 3040 //sub/super script 1: super, 2: sub, 0: normal 3041 sal_Int16 nEscapement = 0; 3042 sal_Int8 nProp = 58; 3043 switch(nIntValue) 3044 { 3045 case 1: //super 3046 nEscapement = 101; 3047 break; 3048 case 2: //sub 3049 nEscapement = -101; 3050 break; 3051 case 0: nProp = 0;break; //none 3052 } 3053 rContext->Insert(PROP_CHAR_ESCAPEMENT, true, uno::makeAny( nEscapement ) ); 3054 rContext->Insert(PROP_CHAR_ESCAPEMENT_HEIGHT, true, uno::makeAny( nProp ) ); 3055 } 3056 break; 3057 case NS_sprm::LN_CHpsNew50: 3058 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3059 break; // sprmCHpsNew50 3060 case NS_sprm::LN_CHpsInc1: 3061 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3062 break; // sprmCHpsInc1 3063 case 71 : //"sprmCDxaSpace" 3064 case 96 : //"sprmCDxaSpace" 3065 case NS_sprm::LN_CDxaSpace: // sprmCDxaSpace 3066 { 3067 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */ 3068 //Kerning half point values 3069 //TODO: there are two kerning values - 3070 // in ww8par6.cxx NS_sprm::LN_CHpsKern is used as boolean AutoKerning 3071 sal_Int16 nResult = static_cast<sal_Int16>(ConversionHelper::convertTwipToMM100(nIntValue)); 3072 if (m_pImpl->IsInComments()) 3073 { 3074 nResult = static_cast<sal_Int16>(nIntValue); 3075 } 3076 rContext->Insert(PROP_CHAR_CHAR_KERNING, true, uno::makeAny(nResult)); 3077 } 3078 break; 3079 3080 case NS_sprm::LN_CHpsKern: // sprmCHpsKern auto kerning is bound to a minimum font size in Word - but not in Writer :-( 3081 rContext->Insert(PROP_CHAR_AUTO_KERNING, true, uno::makeAny( true ) ); 3082 break; 3083 3084 case NS_sprm::LN_CMajority50: 3085 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3086 break; // sprmCMajority50 3087 case NS_sprm::LN_CHpsMul: 3088 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3089 break; // sprmCHpsMul 3090 case NS_sprm::LN_CYsri: 3091 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3092 break; // sprmCYsri 3093 case NS_sprm::LN_CRgFtc0: // sprmCRgFtc0 //ascii font index 3094 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3095 case NS_sprm::LN_CRgFtc1: // sprmCRgFtc1 //Asian font index 3096 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3097 case NS_sprm::LN_CRgFtc2: // sprmCRgFtc2 //CTL font index 3098 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3099 case NS_sprm::LN_CFtcBi: // sprmCFtcBi //font index of a CTL font 3100 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3101 { 3102 FontTablePtr pFontTable = m_pImpl->GetFontTable(); 3103 if(nIntValue >= 0 && pFontTable->size() > sal_uInt32(nIntValue)) 3104 { 3105 PropertyIds eFontName = PROP_CHAR_FONT_NAME; 3106 PropertyIds eFontStyle = PROP_CHAR_FONT_STYLE; 3107 PropertyIds eFontFamily = PROP_CHAR_FONT_FAMILY; 3108 PropertyIds eFontCharSet = PROP_CHAR_FONT_CHAR_SET; 3109 PropertyIds eFontPitch = PROP_CHAR_FONT_PITCH; 3110 switch(nSprmId) 3111 { 3112 case NS_sprm::LN_CRgFtc0: 3113 //already initialized 3114 break; 3115 case NS_sprm::LN_CRgFtc1: 3116 eFontName = PROP_CHAR_FONT_NAME_ASIAN; 3117 eFontStyle = PROP_CHAR_FONT_STYLE_ASIAN; 3118 eFontFamily = PROP_CHAR_FONT_FAMILY_ASIAN; 3119 eFontCharSet = PROP_CHAR_FONT_CHAR_SET_ASIAN; 3120 eFontPitch = PROP_CHAR_FONT_PITCH_ASIAN; 3121 break; 3122 case NS_sprm::LN_CRgFtc2: 3123 case NS_sprm::LN_CFtcBi: 3124 eFontName = PROP_CHAR_FONT_NAME_COMPLEX; 3125 eFontStyle = PROP_CHAR_FONT_STYLE_COMPLEX; 3126 eFontFamily = PROP_CHAR_FONT_FAMILY_COMPLEX; 3127 eFontCharSet = PROP_CHAR_FONT_CHAR_SET_COMPLEX; 3128 eFontPitch = PROP_CHAR_FONT_PITCH_COMPLEX; 3129 break; 3130 } 3131 const FontEntry::Pointer_t pFontEntry(pFontTable->getFontEntry(sal_uInt32(nIntValue))); 3132 rContext->Insert(eFontName, true, uno::makeAny( pFontEntry->sFontName )); 3133 // rContext->Insert(eFontStyle, uno::makeAny( pFontEntry-> )); 3134 // rContext->Insert(eFontFamily, uno::makeAny( pFontEntry-> )); 3135 rContext->Insert(eFontCharSet, true, uno::makeAny( (sal_Int16)pFontEntry->nTextEncoding )); 3136 rContext->Insert(eFontPitch, true, uno::makeAny( pFontEntry->nPitchRequest )); 3137 } 3138 } 3139 break; 3140 3141 case NS_sprm::LN_CCharScale: // sprmCCharScale 3142 rContext->Insert( PROP_CHAR_SCALE_WIDTH, true, uno::makeAny( sal_Int16(nIntValue) )); 3143 break; 3144 3145 case NS_sprm::LN_CFImprint: // sprmCFImprint 1 or 0 3146 // FontRelief: NONE, EMBOSSED, ENGRAVED 3147 rContext->Insert(PROP_CHAR_RELIEF, true, 3148 uno::makeAny( nIntValue != 0 ? awt::FontRelief::ENGRAVED : awt::FontRelief::NONE )); 3149 break; 3150 3151 case NS_sprm::LN_CFObj: 3152 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3153 break; // sprmCFObj 3154 case NS_sprm::LN_CPropRMark: 3155 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3156 break; // sprmCPropRMark 3157 case NS_sprm::LN_CSfxText: 3158 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3159 // The file-format has many character animations. We have only 3160 // one, so we use it always. Suboptimal solution though. 3161 if (nIntValue) 3162 rContext->Insert(PROP_CHAR_FLASH, true, uno::makeAny( true )); 3163 else 3164 rContext->Insert(PROP_CHAR_FLASH, true, uno::makeAny( false )); 3165 break; // sprmCSfxText 3166 case NS_sprm::LN_CFBiDi: 3167 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3168 break; // sprmCFBiDi 3169 case NS_sprm::LN_CFDiacColor: 3170 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3171 break; // sprmCFDiacColor 3172 case NS_sprm::LN_CIcoBi: 3173 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3174 break; // sprmCIcoBi 3175 case NS_sprm::LN_CDispFldRMark: 3176 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3177 break; // sprmCDispFldRMark 3178 case NS_sprm::LN_CIbstRMarkDel: 3179 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3180 break; // sprmCIbstRMarkDel 3181 case NS_sprm::LN_CDttmRMarkDel: 3182 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3183 break; // sprmCDttmRMarkDel 3184 case NS_sprm::LN_CBrc: 3185 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3186 break; // sprmCBrc 3187 case NS_sprm::LN_CShd: 3188 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 3189 break; // sprmCShd 3190 case NS_sprm::LN_CIdslRMarkDel: 3191 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3192 break; // sprmCIdslRMarkDel 3193 case NS_sprm::LN_CFUsePgsuSettings: 3194 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3195 break; // sprmCFUsePgsuSettings 3196 case NS_sprm::LN_CCpg: 3197 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3198 break; // sprmCCpg 3199 case NS_sprm::LN_CLidBi: // sprmCLidBi language complex 3200 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3201 case NS_sprm::LN_CRgLid0_80: //sprmCRgLid0_80 3202 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 1 */ 3203 //undocumented but interpreted as western language 3204 case NS_sprm::LN_CRgLid0: // sprmCRgLid0 language Western 3205 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3206 case NS_sprm::LN_CRgLid1: // sprmCRgLid1 language Asian 3207 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3208 { 3209 lang::Locale aLocale; 3210 MsLangId::convertLanguageToLocale( (LanguageType)nIntValue, aLocale ); 3211 rContext->Insert(NS_sprm::LN_CRgLid0 == nSprmId ? PROP_CHAR_LOCALE : 3212 NS_sprm::LN_CRgLid1 == nSprmId ? PROP_CHAR_LOCALE_ASIAN : PROP_CHAR_LOCALE_COMPLEX, 3213 true, 3214 uno::makeAny( aLocale ) ); 3215 } 3216 break; 3217 3218 case NS_sprm::LN_CIdctHint: // sprmCIdctHint 3219 //list table - text offset??? 3220 break; 3221 case NS_sprm::LN_PicBrcl: 3222 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3223 break; // sprmPicBrcl 3224 case NS_sprm::LN_PicScale: 3225 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3226 break; // sprmPicScale 3227 case NS_sprm::LN_PicBrcTop: 3228 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3229 break; // sprmPicBrcTop 3230 case NS_sprm::LN_PicBrcLeft: 3231 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3232 break; // sprmPicBrcLeft 3233 case NS_sprm::LN_PicBrcBottom: 3234 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3235 break; // sprmPicBrcBoConversionHelper::convertTwipToMM100ttom 3236 case NS_sprm::LN_PicBrcRight: 3237 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3238 break; // sprmPicBrcRight 3239 case NS_sprm::LN_ScnsPgn: 3240 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3241 break; // sprmScnsPgn 3242 case NS_sprm::LN_SiHeadingPgn: 3243 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3244 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3245 if(pSectionContext) 3246 pSectionContext->SetEvenlySpaced( nIntValue > 0 ); 3247 3248 break; // sprmSiHeadingPgn 3249 case NS_sprm::LN_SOlstAnm: 3250 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3251 break; // sprmSOlstAnm 3252 case 136: 3253 case NS_sprm::LN_SDxaColWidth: // sprmSDxaColWidth 3254 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3255 // contains the twip width of the column as 3-byte-code 3256 // the lowet byte contains the index 3257 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3258 if(pSectionContext) 3259 pSectionContext->AppendColumnWidth( ConversionHelper::convertTwipToMM100( (nIntValue & 0xffff00) >> 8 )); 3260 break; 3261 case NS_sprm::LN_SDxaColSpacing: // sprmSDxaColSpacing 3262 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3263 // the lowet byte contains the index 3264 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3265 if(pSectionContext) 3266 pSectionContext->AppendColumnSpacing( ConversionHelper::convertTwipToMM100( (nIntValue & 0xffff00) >> 8 )); 3267 break; 3268 case 138: 3269 case NS_sprm::LN_SFEvenlySpaced: 3270 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3271 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3272 if(pSectionContext) 3273 pSectionContext->SetEvenlySpaced( nIntValue > 0 ); 3274 break; // sprmSFEvenlySpaced 3275 case NS_sprm::LN_SFProtected: // sprmSFProtected 3276 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3277 //todo: missing feature - unlocked sections in protected documents 3278 break; 3279 case NS_sprm::LN_SDmBinFirst: // sprmSDmBinFirst 3280 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3281 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3282 if(pSectionContext) 3283 pSectionContext->SetFirstPaperBin(nIntValue); 3284 break; 3285 case NS_sprm::LN_SDmBinOther: // sprmSDmBinOther 3286 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3287 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3288 if(pSectionContext) 3289 pSectionContext->SetPaperBin( nIntValue ); 3290 break; 3291 case NS_sprm::LN_SBkc: // sprmSBkc 3292 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */ 3293 /* break type 3294 0 - No break 3295 1 - New Column 3296 2 - New page 3297 3 - Even page 3298 4 - odd page 3299 */ 3300 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3301 if(pSectionContext) 3302 pSectionContext->SetBreakType( nIntValue ); 3303 break; 3304 case 143: 3305 case NS_sprm::LN_SFTitlePage: // sprmSFTitlePage 3306 case NS_ooxml::LN_EG_SectPrContents_titlePg: 3307 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3308 { 3309 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3310 if(pSectionContext) 3311 pSectionContext->SetTitlePage( nIntValue > 0 ? true : false );//section has title page 3312 } 3313 break; 3314 case 144: 3315 case NS_sprm::LN_SCcolumns: // sprmSCcolumns 3316 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3317 //no of columns - 1 3318 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3319 if(pSectionContext) 3320 pSectionContext->SetColumnCount( (sal_Int16) nIntValue ); 3321 break; 3322 case 145: 3323 case NS_sprm::LN_SDxaColumns: // sprmSDxaColumns 3324 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3325 //column distance - default 708 twip 3326 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3327 if(pSectionContext) 3328 pSectionContext->SetColumnDistance( ConversionHelper::convertTwipToMM100( nIntValue ) ); 3329 break; 3330 case NS_sprm::LN_SFAutoPgn: 3331 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3332 break; // sprmSFAutoPgn 3333 case 147: 3334 case NS_sprm::LN_SNfcPgn: // sprmSNfcPgn 3335 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3336 //page numbering 0 - Arab, 1 - ROMAN, 2 - roman, 3 - ABC, 4 abc 3337 sal_Int16 nNumbering; 3338 switch( nIntValue ) 3339 { 3340 case 1: nNumbering = style::NumberingType::ROMAN_UPPER; 3341 case 2: nNumbering = style::NumberingType::ROMAN_LOWER; 3342 case 3: nNumbering = style::NumberingType::CHARS_UPPER_LETTER; 3343 case 4: nNumbering = style::NumberingType::CHARS_LOWER_LETTER; 3344 case 0: 3345 default: 3346 nNumbering = style::NumberingType::ARABIC; 3347 } 3348 rContext->Insert( PROP_NUMBERING_TYPE, false, uno::makeAny( nNumbering ) ); 3349 break; 3350 case NS_sprm::LN_SDyaPgn: 3351 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3352 break; // sprmSDyaPgn 3353 case NS_sprm::LN_SDxaPgn: 3354 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3355 break; // sprmSDxaPgn 3356 case 150: 3357 case NS_sprm::LN_SFPgnRestart: // sprmSFPgnRestart 3358 { 3359 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3360 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3361 if(pSectionContext) 3362 pSectionContext->SetPageNoRestart( nIntValue > 0 ); 3363 } 3364 break; 3365 case NS_sprm::LN_SFEndnote: 3366 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3367 break; // sprmSFEndnote 3368 case 154: 3369 case NS_sprm::LN_SNLnnMod:// sprmSNLnnMod 3370 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3371 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3372 if( pSectionContext ) 3373 pSectionContext->SetLnnMod( nIntValue ); 3374 break; 3375 case 155: 3376 case NS_sprm::LN_SDxaLnn: // sprmSDxaLnn 3377 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3378 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3379 if( pSectionContext ) 3380 pSectionContext->SetdxaLnn( nIntValue ); 3381 break; 3382 case 152: 3383 case NS_sprm::LN_SLnc:// sprmSLnc 3384 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3385 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3386 if( pSectionContext ) 3387 pSectionContext->SetLnc( nIntValue ); 3388 break; 3389 case 160: 3390 case NS_sprm::LN_SLnnMin: // sprmSLnnMin 3391 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3392 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3393 if( pSectionContext ) 3394 pSectionContext->SetLnnMin( nIntValue ); 3395 break; 3396 3397 case NS_sprm::LN_SGprfIhdt: 3398 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3399 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3400 //flags about header/footer sharing and footnotes? 3401 /* ww8scan.hxx: 3402 * WW8_HEADER_EVEN = 0x01, WW8_HEADER_ODD = 0x02, WW8_FOOTER_EVEN = 0x04, 3403 * WW8_FOOTER_ODD = 0x08, WW8_HEADER_FIRST = 0x10, WW8_FOOTER_FIRST = 0x20 3404 */ 3405 3406 // if(pSectionContext) 3407 break; // sprmSGprfIhdt 3408 case NS_sprm::LN_SDyaHdrTop: // sprmSDyaHdrTop 3409 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3410 // default 720 twip 3411 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3412 if(pSectionContext) 3413 pSectionContext->SetHeaderTop( ConversionHelper::convertTwipToMM100( nIntValue )); 3414 break; 3415 case NS_sprm::LN_SDyaHdrBottom: // sprmSDyaHdrBottom 3416 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3417 // default 720 twip 3418 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3419 if(pSectionContext) 3420 pSectionContext->SetHeaderBottom( ConversionHelper::convertTwipToMM100( nIntValue ) ); 3421 break; 3422 case 158: 3423 case NS_sprm::LN_SLBetween: // sprmSLBetween 3424 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3425 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3426 if(pSectionContext) 3427 pSectionContext->SetSeparatorLine( nIntValue > 0 ); 3428 break; 3429 case NS_sprm::LN_SVjc: 3430 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3431 break; // sprmSVjc 3432 case 161: 3433 case NS_sprm::LN_SPgnStart: // sprmSPgnStart 3434 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3435 //page number 3436 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3437 if(pSectionContext) 3438 pSectionContext->SetPageNumber( nIntValue ); 3439 break; 3440 case 162: 3441 case NS_sprm::LN_SBOrientation: 3442 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3443 //todo: the old filter assumed that a value of 2 points to double-pages layout 3444 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3445 if(pSectionContext) 3446 pSectionContext->SetLandscape( nIntValue > 0 ); 3447 rContext->Insert( PROP_IS_LANDSCAPE , false, uno::makeAny( nIntValue > 0 )); 3448 break; // sprmSBOrientation 3449 case NS_sprm::LN_SBCustomize: 3450 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3451 break; // sprmSBCustomize 3452 case 165: 3453 case NS_sprm::LN_SYaPage: // sprmSYaPage 3454 { 3455 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3456 //page height, rounded to default values, default: 0x3dc0 twip 3457 sal_Int32 nHeight = ConversionHelper::convertTwipToMM100( nIntValue ); 3458 rContext->Insert( PROP_HEIGHT, false, uno::makeAny( PaperInfo::sloppyFitPageDimension( nHeight ) ) ); 3459 } 3460 break; 3461 case NS_sprm::LN_SXaPage: // sprmSXaPage 3462 { 3463 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3464 //page width, rounded to default values, default 0x2fd0 twip 3465 sal_Int32 nWidth = ConversionHelper::convertTwipToMM100( nIntValue ); 3466 rContext->Insert( PROP_WIDTH, false, uno::makeAny( PaperInfo::sloppyFitPageDimension( nWidth ) ) ); 3467 } 3468 break; 3469 case 166: 3470 case NS_sprm::LN_SDxaLeft: // sprmSDxaLeft 3471 { 3472 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3473 //left page margin default 0x708 twip 3474 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3475 sal_Int32 nConverted = ConversionHelper::convertTwipToMM100( nIntValue ); 3476 if(pSectionContext) 3477 pSectionContext->SetLeftMargin( nConverted ); 3478 rContext->Insert( PROP_LEFT_MARGIN, false, uno::makeAny( nConverted )); 3479 } 3480 break; 3481 case 167: 3482 case NS_sprm::LN_SDxaRight: // sprmSDxaRight 3483 { 3484 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3485 //right page margin default 0x708 twip 3486 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3487 sal_Int32 nConverted = ConversionHelper::convertTwipToMM100( nIntValue ); 3488 if(pSectionContext) 3489 pSectionContext->SetRightMargin( nConverted ); 3490 rContext->Insert( PROP_RIGHT_MARGIN, false, uno::makeAny( nConverted )); 3491 } 3492 break; 3493 case 168: 3494 case NS_sprm::LN_SDyaTop: // sprmSDyaTop 3495 { 3496 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3497 //top page margin default 1440 twip 3498 //todo: check cast of SVBT16 3499 sal_Int32 nConverted = ConversionHelper::convertTwipToMM100( static_cast< sal_Int16 >( nIntValue ) ); 3500 rContext->Insert( PROP_TOP_MARGIN, false, uno::makeAny( nConverted ) ); 3501 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3502 if(pSectionContext) 3503 pSectionContext->SetTopMargin( nConverted ); 3504 } 3505 break; 3506 case 169: 3507 case NS_sprm::LN_SDyaBottom: // sprmSDyaBottom 3508 { 3509 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3510 //bottom page margin default 1440 twip 3511 //todo: check cast of SVBT16 3512 sal_Int32 nConverted = ConversionHelper::convertTwipToMM100( static_cast< sal_Int16 >( nIntValue ) ); 3513 rContext->Insert( PROP_BOTTOM_MARGIN, false, uno::makeAny( nConverted) ); 3514 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3515 if(pSectionContext) 3516 pSectionContext->SetBottomMargin( nConverted ); 3517 } 3518 break; 3519 case 170: 3520 case NS_sprm::LN_SDzaGutter: // sprmSDzaGutter 3521 { 3522 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3523 // gutter is added to one of the margins of a section depending on RTL, can be placed on top either 3524 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3525 if(pSectionContext) 3526 { 3527 pSectionContext->SetDzaGutter( ConversionHelper::convertTwipToMM100( nIntValue ) ); 3528 } 3529 } 3530 break; 3531 case NS_sprm::LN_SDmPaperReq: // sprmSDmPaperReq 3532 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */ 3533 //paper code - no handled in old filter 3534 break; 3535 case NS_sprm::LN_SPropRMark: 3536 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3537 break; // sprmSPropRMark 3538 case NS_sprm::LN_SFBiDi:// sprmSFBiDi 3539 { 3540 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */ 3541 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3542 if(pSectionContext) 3543 pSectionContext->SetSFBiDi( nIntValue > 0 ); 3544 } 3545 break; 3546 case NS_sprm::LN_SFFacingCol: 3547 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3548 break; // sprmSFFacingCol 3549 case NS_sprm::LN_SFRTLGutter: // sprmSFRTLGutter 3550 { 3551 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3552 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3553 if(pSectionContext) 3554 pSectionContext->SetGutterRTL( nIntValue > 0 ); 3555 } 3556 break; 3557 case NS_sprm::LN_SBrcTop: // sprmSBrcTop 3558 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3559 case NS_sprm::LN_SBrcLeft: // sprmSBrcLeft 3560 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3561 case NS_sprm::LN_SBrcBottom: // sprmSBrcBottom 3562 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3563 case NS_sprm::LN_SBrcRight: // sprmSBrcRight 3564 /* WRITERFILTERSTATUS: Sectiondone: 100, planned: 0.5, spent: 0 */ 3565 { 3566 table::BorderLine aBorderLine; 3567 sal_Int32 nLineDistance = ConversionHelper::MakeBorderLine( nIntValue, aBorderLine ); 3568 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3569 if(pSectionContext) 3570 { 3571 static const BorderPosition aPositions[4] = 3572 { 3573 BORDER_TOP, 3574 BORDER_LEFT, 3575 BORDER_BOTTOM, 3576 BORDER_RIGHT 3577 }; 3578 pSectionContext->SetBorder( aPositions[nSprmId - NS_sprm::LN_SBrcTop], nLineDistance, aBorderLine ); 3579 } 3580 } 3581 break; 3582 3583 case NS_sprm::LN_SPgbProp: // sprmSPgbProp 3584 { 3585 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3586 if(pSectionContext) 3587 { 3588 pSectionContext->ApplyBorderToPageStyles( m_pImpl->GetPageStyles(), m_pImpl->GetTextFactory(), nIntValue ); 3589 } 3590 } 3591 break; 3592 case NS_sprm::LN_SDxtCharSpace: 3593 { 3594 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3595 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3596 if(pSectionContext) 3597 { 3598 pSectionContext->SetDxtCharSpace( nIntValue ); 3599 } 3600 } 3601 break; // sprmSDxtCharSpace 3602 case NS_sprm::LN_SDyaLinePitch: // sprmSDyaLinePitch 3603 { 3604 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3605 //see SwWW8ImplReader::SetDocumentGrid 3606 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3607 if(pSectionContext) 3608 { 3609 pSectionContext->SetGridLinePitch( ConversionHelper::convertTwipToMM100( nIntValue ) ); 3610 } 3611 } 3612 break; 3613 case 0x703a: //undocumented, grid related? 3614 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3615 OSL_ENSURE( false, "TODO: not handled yet"); //nIntValue like 0x008a2373 ? 3616 break; 3617 case NS_sprm::LN_SClm: 3618 { 3619 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3620 sal_Int16 nGridType = text::TextGridMode::NONE; 3621 switch( nIntValue ) 3622 { 3623 case 0: 3624 nGridType = text::TextGridMode::NONE; 3625 break; 3626 case 3: 3627 //Text snaps to char grid, this doesn't make a lot of sense to 3628 //me. This is closer than LINES_CHARS 3629 nGridType = text::TextGridMode::LINES; 3630 break; 3631 case 1: 3632 nGridType = text::TextGridMode::LINES_AND_CHARS; 3633 break; 3634 case 2: 3635 nGridType = text::TextGridMode::LINES; 3636 break; 3637 default:; 3638 } 3639 rContext->Insert( PROP_GRID_MODE, false, uno::makeAny( nGridType ) ); 3640 3641 //Seems to force this behaviour in word ? 3642 if(nGridType != text::TextGridMode::NONE) 3643 m_pImpl->SetDocumentSettingsProperty( 3644 PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_ADD_EXTERNAL_LEADING ), 3645 uno::makeAny( true ) ); 3646 } 3647 break; // sprmSClm 3648 case NS_sprm::LN_STextFlow: 3649 case NS_ooxml::LN_EG_SectPrContents_textDirection: 3650 /* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */ 3651 { 3652 /* 0 HoriLR 1 Vert TR 2 Vert TR 3 Vert TT 4 HoriLT 3653 only 0 and 1 can be imported correctly 3654 */ 3655 sal_Int16 nDirection = text::WritingMode_LR_TB; 3656 switch( nIntValue ) 3657 { 3658 case 0: 3659 case 4: 3660 nDirection = text::WritingMode_LR_TB; 3661 break; 3662 case 1: 3663 case 2: 3664 case 3: 3665 nDirection = text::WritingMode_TB_RL; 3666 break; 3667 default:; 3668 } 3669 3670 PropertyMap * pTargetContext = rContext.get(); 3671 3672 if (pSectionContext != NULL && 3673 nSprmId == NS_ooxml::LN_EG_SectPrContents_textDirection) 3674 { 3675 pTargetContext = pSectionContext; 3676 } 3677 3678 pTargetContext->Insert(PROP_WRITING_MODE, false, uno::makeAny( nDirection ) ); 3679 } 3680 break; // sprmSTextFlow 3681 case NS_sprm::LN_TJc: // sprmTJc 3682 case NS_sprm::LN_TDxaLeft: 3683 case NS_sprm::LN_TDxaGapHalf: 3684 case NS_sprm::LN_TFCantSplit: 3685 case NS_sprm::LN_TTableHeader: 3686 case NS_sprm::LN_TTableBorders: // sprmTTableBorders 3687 { 3688 OSL_ENSURE( false, "table propeties should be handled by the table manager"); 3689 } 3690 break; 3691 case NS_sprm::LN_TDefTable10: 3692 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3693 break; // sprmTDefTable10 3694 case NS_sprm::LN_TDyaRowHeight: 3695 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3696 break; // sprmTDyaRowHeight 3697 case NS_sprm::LN_TDefTable: 3698 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3699 break; // sprmTDefTable 3700 case NS_sprm::LN_TDefTableShd: 3701 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3702 break; // sprmTDefTableShd 3703 case NS_sprm::LN_TTlp: 3704 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3705 break; // sprmTTlp 3706 case NS_sprm::LN_TFBiDi: 3707 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3708 break; // sprmTFBiDi 3709 case NS_sprm::LN_THTMLProps: 3710 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3711 break; // sprmTHTMLProps 3712 case NS_sprm::LN_TSetBrc: 3713 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3714 break; // sprmTSetBrc 3715 case NS_sprm::LN_TInsert: 3716 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3717 break; // sprmTInsert 3718 case NS_sprm::LN_TDelete: 3719 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3720 break; // sprmTDelete 3721 case NS_sprm::LN_TDxaCol: 3722 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3723 break; // sprmTDxaCol 3724 case NS_sprm::LN_TMerge: 3725 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3726 break; // sprmTMerge 3727 case NS_sprm::LN_TSplit: 3728 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3729 break; // sprmTSplit 3730 case NS_sprm::LN_TSetBrc10: 3731 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3732 break; // sprmTSetBrc10 3733 case 164: // sprmTSetShd 3734 case NS_sprm::LN_TSetShd: 3735 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3736 break; // sprmTSetShd 3737 case NS_sprm::LN_TSetShdOdd: 3738 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3739 break; // sprmTSetShdOdd 3740 case NS_sprm::LN_TTextFlow: 3741 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3742 break; // sprmTTextFlow 3743 case NS_sprm::LN_TDiagLine: 3744 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3745 break; // sprmTDiagLine 3746 case NS_sprm::LN_TVertMerge: 3747 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3748 break; // sprmTVertMerge 3749 case NS_sprm::LN_TVertAlign: 3750 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3751 break; // sprmTVertAlign 3752 // the following are not part of the official documentation 3753 case 0x6870: //TxtForeColor 3754 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3755 { 3756 //contains a color as 0xTTRRGGBB while SO uses 0xTTRRGGBB 3757 sal_Int32 nColor = ConversionHelper::ConvertColor(nIntValue); 3758 rContext->Insert(PROP_CHAR_COLOR, true, uno::makeAny( nColor ) ); 3759 } 3760 break; 3761 case 0x4874: 3762 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3763 break; //seems to be a language id for Asian text - undocumented 3764 case 0x6877: //underlining color 3765 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3766 { 3767 sal_Int32 nColor = ConversionHelper::ConvertColor(nIntValue); 3768 rContext->Insert(PROP_CHAR_UNDERLINE_HAS_COLOR, true, uno::makeAny( true ) ); 3769 rContext->Insert(PROP_CHAR_UNDERLINE_COLOR, true, uno::makeAny( nColor ) ); 3770 } 3771 break; 3772 case 0x6815: 3773 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3774 break; //undocumented 3775 case NS_sprm::LN_CIndrsid: 3776 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3777 break; //undocumented 3778 case 0x6467: 3779 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3780 break; //undocumented 3781 case 0xF617: 3782 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3783 break; //undocumented 3784 case 0xd634: // sprmTNewSpacing - table spacing ( see WW8TabBandDesc::ProcessSpacing() ) 3785 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3786 break; 3787 case NS_sprm::LN_TTRLeft: 3788 /* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */ 3789 break; //undocumented 3790 case 0x4888: 3791 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3792 case 0x6887: 3793 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3794 //properties of list levels - undocumented 3795 break; 3796 case 0xd234: 3797 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3798 case 0xd235: 3799 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3800 case 0xd236: 3801 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3802 case 0xd237: 3803 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3804 break;//undocumented section properties 3805 case NS_sprm::LN_CEastAsianLayout: 3806 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3807 resolveSprmProps(*this, rSprm); 3808 break; 3809 case NS_ooxml::LN_CT_Tabs_tab: 3810 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3811 resolveSprmProps(*this, rSprm); 3812 m_pImpl->IncorporateTabStop(m_pImpl->m_aCurrentTabStop); 3813 m_pImpl->m_aCurrentTabStop = DeletableTabStop(); 3814 break; 3815 case NS_ooxml::LN_CT_PPrBase_tabs: 3816 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3817 { 3818 // Initialize tab stop vector from style sheet 3819 if( !m_pImpl->IsStyleSheetImport() ) 3820 { 3821 uno::Any aValue = m_pImpl->GetPropertyFromStyleSheet(PROP_PARA_TAB_STOPS); 3822 uno::Sequence< style::TabStop > aStyleTabStops; 3823 if(aValue >>= aStyleTabStops) 3824 { 3825 m_pImpl->InitTabStopFromStyle( aStyleTabStops ); 3826 } 3827 } 3828 resolveSprmProps(*this, rSprm); 3829 rContext->Insert(PROP_PARA_TAB_STOPS, true, uno::makeAny( m_pImpl->GetCurrentTabStopAndClear())); 3830 } 3831 break; 3832 3833 case NS_ooxml::LN_CT_PPr_sectPr: 3834 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3835 case NS_ooxml::LN_EG_RPrBase_color: 3836 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3837 case NS_ooxml::LN_EG_RPrBase_rFonts: 3838 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3839 case NS_ooxml::LN_EG_RPrBase_bdr: 3840 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3841 case NS_ooxml::LN_EG_RPrBase_eastAsianLayout: 3842 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3843 case NS_ooxml::LN_EG_RPrBase_u: 3844 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3845 case NS_ooxml::LN_EG_RPrBase_lang: 3846 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3847 case NS_ooxml::LN_CT_PPrBase_spacing: 3848 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3849 case NS_ooxml::LN_CT_PPrBase_ind: 3850 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3851 case NS_ooxml::LN_CT_RPrDefault_rPr: 3852 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3853 case NS_ooxml::LN_CT_PPrDefault_pPr: 3854 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3855 case NS_ooxml::LN_CT_DocDefaults_pPrDefault: 3856 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3857 case NS_ooxml::LN_CT_DocDefaults_rPrDefault: 3858 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3859 case NS_ooxml::LN_CT_Style_pPr: 3860 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3861 case NS_ooxml::LN_CT_Style_rPr: 3862 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3863 case NS_ooxml::LN_CT_PPr_rPr: 3864 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3865 case NS_ooxml::LN_CT_PPrBase_numPr: 3866 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3867 resolveSprmProps(*this, rSprm); 3868 break; 3869 3870 case NS_ooxml::LN_EG_SectPrContents_footnotePr: 3871 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3872 case NS_ooxml::LN_EG_SectPrContents_endnotePr: 3873 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3874 m_pImpl->SetInFootnoteProperties( NS_ooxml::LN_EG_SectPrContents_footnotePr == nSprmId ); 3875 resolveSprmProps(*this, rSprm); 3876 break; 3877 3878 case NS_ooxml::LN_EG_SectPrContents_lnNumType: 3879 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 3880 { 3881 resolveSprmProps(*this, rSprm); 3882 LineNumberSettings aSettings = m_pImpl->GetLineNumberSettings(); 3883 aSettings.bIsOn = true; 3884 m_pImpl->SetLineNumberSettings( aSettings ); 3885 //apply settings at XLineNumberingProperties 3886 try 3887 { 3888 uno::Reference< text::XLineNumberingProperties > xLineNumberingProperties( m_pImpl->GetTextDocument(), uno::UNO_QUERY_THROW ); 3889 uno::Reference< beans::XPropertySet > xLineNumberingPropSet = xLineNumberingProperties->getLineNumberingProperties(); 3890 PropertyNameSupplier& rNameSupplier = PropertyNameSupplier::GetPropertyNameSupplier(); 3891 xLineNumberingPropSet->setPropertyValue(rNameSupplier.GetName( PROP_IS_ON ), uno::makeAny(true) ); 3892 if( aSettings.nInterval ) 3893 xLineNumberingPropSet->setPropertyValue(rNameSupplier.GetName( PROP_INTERVAL ), uno::makeAny((sal_Int16)aSettings.nInterval) ); 3894 if( aSettings.nDistance ) 3895 xLineNumberingPropSet->setPropertyValue(rNameSupplier.GetName( PROP_DISTANCE ), uno::makeAny(aSettings.nDistance) ); 3896 xLineNumberingPropSet->setPropertyValue(rNameSupplier.GetName( PROP_RESTART_AT_EACH_PAGE ), uno::makeAny(aSettings.bRestartAtEachPage) ); 3897 } 3898 catch( const uno::Exception& ) 3899 { 3900 } 3901 3902 } 3903 break; 3904 case NS_ooxml::LN_CT_PPrBase_framePr: 3905 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3906 { 3907 PropertyMapPtr pContext = m_pImpl->GetTopContextOfType(CONTEXT_PARAGRAPH); 3908 if( pContext.get() ) 3909 { 3910 ParagraphPropertyMap* pParaContext = dynamic_cast< ParagraphPropertyMap* >( pContext.get() ); 3911 pParaContext->SetFrameMode(); 3912 3913 } 3914 else 3915 { 3916 //TODO: What about style sheet import of frame properties 3917 } 3918 resolveSprmProps(*this, rSprm); 3919 } 3920 break; 3921 case NS_ooxml::LN_EG_SectPrContents_pgSz: 3922 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3923 CT_PageSz.code = 0; 3924 { 3925 PaperInfo aLetter(PAPER_LETTER); 3926 CT_PageSz.w = aLetter.getWidth(); 3927 CT_PageSz.h = aLetter.getHeight(); 3928 } 3929 CT_PageSz.orient = false; 3930 resolveSprmProps(*this, rSprm); 3931 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3932 if(pSectionContext) 3933 { 3934 pSectionContext->Insert( PROP_HEIGHT, false, uno::makeAny( CT_PageSz.h ) ); 3935 pSectionContext->Insert( PROP_IS_LANDSCAPE, false, uno::makeAny( CT_PageSz.orient )); 3936 pSectionContext->Insert( PROP_WIDTH, false, uno::makeAny( CT_PageSz.w ) ); 3937 pSectionContext->SetLandscape( CT_PageSz.orient ); 3938 } 3939 break; 3940 3941 case NS_ooxml::LN_EG_SectPrContents_pgMar: 3942 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3943 m_pImpl->InitPageMargins(); 3944 resolveSprmProps(*this, rSprm); 3945 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 3946 if(pSectionContext) 3947 { 3948 const _PageMar& rPageMar = m_pImpl->GetPageMargins(); 3949 pSectionContext->SetTopMargin( rPageMar.top ); 3950 pSectionContext->SetRightMargin( rPageMar.right ); 3951 pSectionContext->SetBottomMargin( rPageMar.bottom ); 3952 pSectionContext->SetLeftMargin( rPageMar.left ); 3953 pSectionContext->SetHeaderTop( rPageMar.header ); 3954 pSectionContext->SetHeaderBottom( rPageMar.footer ); 3955 } 3956 break; 3957 3958 case NS_ooxml::LN_EG_SectPrContents_cols: 3959 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 3960 { 3961 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); 3962 if( pProperties.get()) 3963 { 3964 3965 SectionColumnHandlerPtr pSectHdl( new SectionColumnHandler ); 3966 pProperties->resolve(*pSectHdl); 3967 if(pSectionContext) 3968 { 3969 if( pSectHdl->IsEqualWidth() ) 3970 { 3971 pSectionContext->SetEvenlySpaced( true ); 3972 pSectionContext->SetColumnCount( (sal_Int16) (pSectHdl->GetNum() - 1) ); 3973 pSectionContext->SetColumnDistance( pSectHdl->GetSpace() ); 3974 pSectionContext->SetSeparatorLine( pSectHdl->IsSeparator() ); 3975 } 3976 else if( !pSectHdl->GetColumns().empty() ) 3977 { 3978 pSectionContext->SetEvenlySpaced( false ); 3979 pSectionContext->SetColumnDistance( pSectHdl->GetSpace() ); 3980 pSectionContext->SetColumnCount( (sal_Int16)(pSectHdl->GetColumns().size() -1)); 3981 std::vector<_Column>::const_iterator tmpIter = pSectHdl->GetColumns().begin(); 3982 for (; tmpIter != pSectHdl->GetColumns().end(); tmpIter++) 3983 { 3984 pSectionContext->AppendColumnWidth( tmpIter->nWidth ); 3985 if ((tmpIter != pSectHdl->GetColumns().end() - 1) || (tmpIter->nSpace > 0)) 3986 pSectionContext->AppendColumnSpacing( tmpIter->nSpace ); 3987 } 3988 pSectionContext->SetSeparatorLine( pSectHdl->IsSeparator() ); 3989 } 3990 else if( pSectHdl->GetNum() > 0 ) 3991 { 3992 pSectionContext->SetColumnCount( (sal_Int16)pSectHdl->GetNum() - 1 ); 3993 pSectionContext->SetColumnDistance( pSectHdl->GetSpace() ); 3994 } 3995 } 3996 } 3997 } 3998 break; 3999 case NS_ooxml::LN_EG_SectPrContents_docGrid: 4000 resolveSprmProps(*this, rSprm); 4001 break; 4002 case NS_ooxml::LN_EG_SectPrContents_pgBorders: 4003 { 4004 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); 4005 if( pProperties.get( ) && pSectionContext ) 4006 { 4007 PageBordersHandlerPtr pHandler( new PageBordersHandler ); 4008 pProperties->resolve( *pHandler ); 4009 4010 // Set the borders to the context and apply them to the styles 4011 pHandler->SetBorders( pSectionContext ); 4012 pSectionContext->SetBorderParams( pHandler->GetDisplayOffset( ) ); 4013 } 4014 } 4015 break; 4016 4017 case NS_ooxml::LN_CT_PPrBase_pStyle: 4018 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4019 { 4020 m_pImpl->SetCurrentParaStyleId( sStringValue ); 4021 StyleSheetTablePtr pStyleTable = m_pImpl->GetStyleSheetTable(); 4022 const ::rtl::OUString sConvertedStyleName = pStyleTable->ConvertStyleName( sStringValue, true ); 4023 if (m_pImpl->GetTopContext() && m_pImpl->GetTopContextType() != CONTEXT_SECTION) 4024 m_pImpl->GetTopContext()->Insert( PROP_PARA_STYLE_NAME, true, uno::makeAny( sConvertedStyleName )); 4025 const StyleSheetEntryPtr pEntry = pStyleTable->FindStyleSheetByISTD(sStringValue); 4026 //apply numbering to paragraph if it was set at the style 4027 OSL_ENSURE( pEntry.get(), "no style sheet found" ); 4028 const StyleSheetPropertyMap* pStyleSheetProperties = dynamic_cast<const StyleSheetPropertyMap*>(pEntry ? pEntry->pProperties.get() : 0); 4029 4030 if( pStyleSheetProperties && pStyleSheetProperties->GetListId() >= 0 ) 4031 rContext->Insert( PROP_NUMBERING_STYLE_NAME, true, uno::makeAny( 4032 ListDef::GetStyleName( pStyleSheetProperties->GetListId( ) ) ), false); 4033 4034 if( pStyleSheetProperties && pStyleSheetProperties->GetListLevel() >= 0 ) 4035 rContext->Insert( PROP_NUMBERING_LEVEL, true, uno::makeAny(pStyleSheetProperties->GetListLevel()), false); 4036 } 4037 break; 4038 case NS_ooxml::LN_EG_RPrBase_rStyle: 4039 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4040 { 4041 rtl::OUString sConvertedName( m_pImpl->GetStyleSheetTable()->ConvertStyleName( sStringValue, true ) ); 4042 // First check if the style exists in the document. 4043 StyleSheetEntryPtr pEntry = m_pImpl->GetStyleSheetTable( )->FindStyleSheetByStyleName( sConvertedName ); 4044 bool bExists = pEntry.get( ) && ( pEntry->nStyleTypeCode == STYLE_TYPE_CHAR ); 4045 4046 // Add the property if the style exists 4047 if ( bExists && m_pImpl->GetTopContext() ) 4048 m_pImpl->GetTopContext()->Insert( PROP_CHAR_STYLE_NAME, true, uno::makeAny( sConvertedName ) ); 4049 } 4050 break; 4051 case NS_ooxml::LN_CT_TblPrBase_tblCellMar: //cell margins 4052 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4053 { 4054 resolveSprmProps(*this, rSprm);//contains LN_CT_TblCellMar_top, LN_CT_TblCellMar_left, LN_CT_TblCellMar_bottom, LN_CT_TblCellMar_right 4055 } 4056 break; 4057 case NS_ooxml::LN_CT_TblCellMar_top: 4058 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */ 4059 case NS_ooxml::LN_CT_TblCellMar_left: 4060 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */ 4061 case NS_ooxml::LN_CT_TblCellMar_bottom: 4062 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */ 4063 case NS_ooxml::LN_CT_TblCellMar_right: 4064 /* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */ 4065 { 4066 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); 4067 if( pProperties.get()) 4068 { 4069 MeasureHandlerPtr pMeasureHandler( new MeasureHandler ); 4070 pProperties->resolve(*pMeasureHandler); 4071 sal_Int32 nMeasureValue = pMeasureHandler->getMeasureValue(); 4072 PropertyIds eId = META_PROP_CELL_MAR_TOP; 4073 switch(nSprmId) 4074 { 4075 case NS_ooxml::LN_CT_TblCellMar_top: 4076 /* WRITERFILTERSTATUS: */ 4077 break; 4078 case NS_ooxml::LN_CT_TblCellMar_left: 4079 /* WRITERFILTERSTATUS: */ 4080 eId = META_PROP_CELL_MAR_LEFT; 4081 break; 4082 case NS_ooxml::LN_CT_TblCellMar_bottom: 4083 /* WRITERFILTERSTATUS: */ 4084 eId = META_PROP_CELL_MAR_BOTTOM; 4085 break; 4086 case NS_ooxml::LN_CT_TblCellMar_right: 4087 /* WRITERFILTERSTATUS: */ 4088 eId = META_PROP_CELL_MAR_RIGHT; 4089 break; 4090 default:; 4091 } 4092 rContext->Insert( eId, false, uno::makeAny(nMeasureValue), false); 4093 } 4094 } 4095 break; 4096 case NS_sprm::LN_CFNoProof: //0x875 no grammar and spell checking, unsupported 4097 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 4098 break; 4099 case NS_ooxml::LN_anchor_anchor: // at_character drawing 4100 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4101 case NS_ooxml::LN_inline_inline: // as_character drawing 4102 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4103 { 4104 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); 4105 if( pProperties.get()) 4106 { 4107 GraphicImportType eGraphicType = 4108 (NS_ooxml::LN_anchor_anchor == 4109 sal::static_int_cast<Id>(nSprmId)) ? 4110 IMPORT_AS_DETECTED_ANCHOR : 4111 IMPORT_AS_DETECTED_INLINE; 4112 GraphicImportPtr pGraphicImport = 4113 m_pImpl->GetGraphicImport(eGraphicType); 4114 pProperties->resolve(*pGraphicImport); 4115 m_pImpl->ImportGraphic(pProperties, eGraphicType); 4116 if( !pGraphicImport->IsGraphic() ) 4117 { 4118 m_pImpl->ResetGraphicImport(); 4119 // todo: It's a shape, now start shape import 4120 } 4121 } 4122 } 4123 break; 4124 4125 case NS_ooxml::LN_EG_RPrBase_vertAlign: 4126 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4127 { 4128 sal_Int16 nEscapement = 0; 4129 sal_Int8 nProp = 58; 4130 if( sStringValue.equalsAscii( "superscript" )) 4131 nEscapement = 101; 4132 else if( sStringValue.equalsAscii( "subscript" )) 4133 nEscapement = -101; 4134 else 4135 nProp = 100; 4136 4137 rContext->Insert(PROP_CHAR_ESCAPEMENT, true, uno::makeAny( nEscapement ) ); 4138 rContext->Insert(PROP_CHAR_ESCAPEMENT_HEIGHT, true, uno::makeAny( nProp ) ); 4139 } 4140 break; 4141 4142 // case NS_ooxml::LN_CT_FtnEdn_type 4143 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4144 // case NS_ooxml::LN_CT_FtnEdn_id 4145 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4146 // case NS_ooxml::LN_EG_FtnEdnNumProps_numRestart 4147 case NS_ooxml::LN_CT_FtnProps_pos: 4148 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4149 //footnotes in word can be at page end or beneath text - writer supports only the first 4150 //endnotes in word can be at section end or document end - writer supports only the latter 4151 // -> so this property can be ignored 4152 break; 4153 case NS_ooxml::LN_EG_FtnEdnNumProps_numStart: 4154 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4155 case NS_ooxml::LN_CT_FtnProps_numFmt: 4156 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4157 case NS_ooxml::LN_CT_EdnProps_numFmt: 4158 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4159 { 4160 try 4161 { 4162 uno::Reference< beans::XPropertySet > xFtnEdnSettings; 4163 if( m_pImpl->IsInFootnoteProperties() ) 4164 { 4165 uno::Reference< text::XFootnotesSupplier> xFootnotesSupplier( m_pImpl->GetTextDocument(), uno::UNO_QUERY ); 4166 xFtnEdnSettings = xFootnotesSupplier->getFootnoteSettings(); 4167 } 4168 else 4169 { 4170 uno::Reference< text::XEndnotesSupplier> xEndnotesSupplier( m_pImpl->GetTextDocument(), uno::UNO_QUERY ); 4171 xFtnEdnSettings = xEndnotesSupplier->getEndnoteSettings(); 4172 } 4173 if( NS_ooxml::LN_EG_FtnEdnNumProps_numStart == nSprmId ) 4174 { 4175 xFtnEdnSettings->setPropertyValue( 4176 PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_START_AT), 4177 uno::makeAny( sal_Int16( nIntValue - 1 ))); 4178 } 4179 else 4180 { 4181 sal_Int16 nNumType = ConversionHelper::ConvertNumberingType( nIntValue ); 4182 xFtnEdnSettings->setPropertyValue( 4183 PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_NUMBERING_TYPE), 4184 uno::makeAny( nNumType )); 4185 } 4186 } 4187 catch( const uno::Exception& ) 4188 { 4189 } 4190 } 4191 break; 4192 case NS_ooxml::LN_paratrackchange: 4193 m_pImpl->StartParaChange( ); 4194 case NS_ooxml::LN_trackchange: 4195 /* WRITERFILTERSTATUS: done: 100, planned: 5, spent: 0 */ 4196 case NS_ooxml::LN_EG_RPrContent_rPrChange: 4197 /* WRITERFILTERSTATUS: done: 100, planned: 5, spent: 0 */ 4198 { 4199 m_pImpl->AddNewRedline( ); 4200 resolveSprmProps(*this, rSprm ); 4201 // now the properties author, date and id should be available 4202 sal_Int32 nToken = m_pImpl->GetCurrentRedlineToken(); 4203 switch( nToken & 0xffff ) 4204 { 4205 case ooxml::OOXML_mod : 4206 case ooxml::OOXML_ins : 4207 case ooxml::OOXML_del : break; 4208 default: OSL_ENSURE( false, "redline token other than mod, ins or del" ); 4209 } 4210 m_pImpl->EndParaChange( ); 4211 } 4212 break; 4213 case NS_ooxml::LN_CT_RPrChange_rPr: 4214 /* WRITERFILTERSTATUS: done: 100, planned: 5, spent: 0 */ 4215 break; 4216 /* WRITERFILTERSTATUS: done: 0, planned: 4, spent: 0 */ 4217 case NS_ooxml::LN_object: 4218 { 4219 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); 4220 if( pProperties.get( ) ) 4221 { 4222 OLEHandlerPtr pOLEHandler( new OLEHandler ); 4223 pProperties->resolve(*pOLEHandler); 4224 if ( pOLEHandler->isOLEObject( ) ) 4225 { 4226 ::rtl::OUString sStreamName = pOLEHandler->copyOLEOStream( m_pImpl->GetTextDocument() ); 4227 if( sStreamName.getLength() ) 4228 { 4229 m_pImpl->appendOLE( sStreamName, pOLEHandler ); 4230 } 4231 } 4232 } 4233 } 4234 break; 4235 // case NS_ooxml::LN_CT_EdnProps_pos 4236 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4237 // case NS_ooxml::LN_CT_EdnProps_numFmt 4238 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4239 // case NS_ooxml::LN_CT_FtnDocProps_footnote 4240 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4241 // case NS_ooxml::LN_CT_EdnDocProps_endnote 4242 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4243 //break; 4244 case NS_ooxml::LN_EG_HdrFtrReferences_headerReference: // header reference - not needed 4245 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4246 case NS_ooxml::LN_EG_HdrFtrReferences_footerReference: // footer reference - not needed 4247 /* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */ 4248 break; 4249 case NS_ooxml::LN_EG_RPrBase_snapToGrid: // "Use document grid settings for inter-paragraph spacing" 4250 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4251 break; 4252 case NS_sprm::LN_PContextualSpacing: 4253 //TODO: determines whether top/bottom paragraph spacing is added if equal styles are following - unsupported 4254 break; 4255 case NS_ooxml::LN_EG_SectPrContents_formProt: //section protection, only form editing is enabled - unsupported 4256 case NS_ooxml::LN_EG_SectPrContents_vAlign: 4257 case NS_ooxml::LN_EG_RPrBase_fitText: 4258 /* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */ 4259 break; 4260 case NS_ooxml::LN_ffdata: 4261 { 4262 writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); 4263 if (pProperties.get() != NULL) 4264 { 4265 FFDataHandler::Pointer_t pFFDataHandler(new FFDataHandler()); 4266 4267 pProperties->resolve(*pFFDataHandler); 4268 m_pImpl->SetFieldFFData(pFFDataHandler); 4269 } 4270 } 4271 break; 4272 default: 4273 { 4274 #ifdef DEBUG_DOMAINMAPPER 4275 dmapper_logger->startElement("unhandled"); 4276 dmapper_logger->attribute("id", nSprmId); 4277 dmapper_logger->endElement("unhandled"); 4278 #endif 4279 } 4280 } 4281 } 4282 /*-- 09.06.2006 09:52:13--------------------------------------------------- 4283 4284 -----------------------------------------------------------------------*/ 4285 void DomainMapper::lcl_entry(int /*pos*/, 4286 writerfilter::Reference<Properties>::Pointer_t ref) 4287 { 4288 ref->resolve(*this); 4289 } 4290 /*-- 09.06.2006 09:52:13--------------------------------------------------- 4291 4292 -----------------------------------------------------------------------*/ 4293 void DomainMapper::data(const sal_uInt8* /*buf*/, size_t /*len*/, 4294 writerfilter::Reference<Properties>::Pointer_t /*ref*/) 4295 { 4296 } 4297 /*-- 09.06.2006 09:52:13--------------------------------------------------- 4298 4299 -----------------------------------------------------------------------*/ 4300 void DomainMapper::lcl_startSectionGroup() 4301 { 4302 m_pImpl->PushProperties(CONTEXT_SECTION); 4303 } 4304 /*-- 09.06.2006 09:52:13--------------------------------------------------- 4305 4306 -----------------------------------------------------------------------*/ 4307 void DomainMapper::lcl_endSectionGroup() 4308 { 4309 PropertyMapPtr pContext = m_pImpl->GetTopContextOfType(CONTEXT_SECTION); 4310 SectionPropertyMap* pSectionContext = dynamic_cast< SectionPropertyMap* >( pContext.get() ); 4311 OSL_ENSURE(pSectionContext, "SectionContext unavailable!"); 4312 if(pSectionContext) 4313 pSectionContext->CloseSectionGroup( *m_pImpl ); 4314 m_pImpl->PopProperties(CONTEXT_SECTION); 4315 } 4316 /*-- 09.06.2006 09:52:13--------------------------------------------------- 4317 4318 -----------------------------------------------------------------------*/ 4319 void DomainMapper::lcl_startParagraphGroup() 4320 { 4321 m_pImpl->getTableManager().startParagraphGroup(); 4322 m_pImpl->PushProperties(CONTEXT_PARAGRAPH); 4323 static ::rtl::OUString sDefault( ::rtl::OUString::createFromAscii("Standard") ); 4324 if (m_pImpl->GetTopContext()) 4325 { 4326 m_pImpl->GetTopContext()->Insert( PROP_PARA_STYLE_NAME, true, uno::makeAny( sDefault ) ); 4327 if (m_pImpl->isBreakDeferred(PAGE_BREAK)) 4328 m_pImpl->GetTopContext()->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_PAGE_BEFORE) ); 4329 else if (m_pImpl->isBreakDeferred(COLUMN_BREAK)) 4330 m_pImpl->GetTopContext()->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_COLUMN_BEFORE) ); 4331 } 4332 m_pImpl->clearDeferredBreaks(); 4333 } 4334 /*-- 09.06.2006 09:52:14--------------------------------------------------- 4335 4336 -----------------------------------------------------------------------*/ 4337 void DomainMapper::lcl_endParagraphGroup() 4338 { 4339 m_pImpl->PopProperties(CONTEXT_PARAGRAPH); 4340 m_pImpl->getTableManager().endParagraphGroup(); 4341 //frame conversion has to be executed after table conversion 4342 m_pImpl->ExecuteFrameConversion(); 4343 } 4344 4345 void DomainMapper::markLastParagraphInSection( ) 4346 { 4347 m_pImpl->SetIsLastParagraphInSection( true ); 4348 } 4349 4350 void DomainMapper::lcl_startShape( uno::Reference< drawing::XShape > xShape ) 4351 { 4352 m_pImpl->PushShapeContext( xShape ); 4353 } 4354 4355 void DomainMapper::lcl_endShape( ) 4356 { 4357 m_pImpl->PopShapeContext( ); 4358 } 4359 4360 /*-- 13.06.2007 16:15:55--------------------------------------------------- 4361 4362 -----------------------------------------------------------------------*/ 4363 void DomainMapper::PushStyleSheetProperties( PropertyMapPtr pStyleProperties, bool bAffectTableMngr ) 4364 { 4365 m_pImpl->PushStyleProperties( pStyleProperties ); 4366 if ( bAffectTableMngr ) 4367 m_pImpl->getTableManager( ).SetStyleProperties( pStyleProperties ); 4368 } 4369 /*-- 13.06.2007 16:15:55--------------------------------------------------- 4370 4371 -----------------------------------------------------------------------*/ 4372 void DomainMapper::PopStyleSheetProperties( bool bAffectTableMngr ) 4373 { 4374 m_pImpl->PopProperties( CONTEXT_STYLESHEET ); 4375 if ( bAffectTableMngr ) 4376 { 4377 PropertyMapPtr emptyPtr; 4378 m_pImpl->getTableManager( ).SetStyleProperties( emptyPtr ); 4379 } 4380 } 4381 /*-- 28.01.2008 14:52:33--------------------------------------------------- 4382 4383 -----------------------------------------------------------------------*/ 4384 void DomainMapper::PushListProperties( ::boost::shared_ptr<PropertyMap> pListProperties ) 4385 { 4386 m_pImpl->PushListProperties( pListProperties ); 4387 } 4388 /*-- 28.01.2008 14:52:33--------------------------------------------------- 4389 4390 -----------------------------------------------------------------------*/ 4391 void DomainMapper::PopListProperties() 4392 { 4393 m_pImpl->PopProperties( CONTEXT_LIST ); 4394 } 4395 /*-- 09.06.2006 09:52:14--------------------------------------------------- 4396 4397 -----------------------------------------------------------------------*/ 4398 4399 void DomainMapper::lcl_startCharacterGroup() 4400 { 4401 m_pImpl->PushProperties(CONTEXT_CHARACTER); 4402 } 4403 /*-- 09.06.2006 09:52:14--------------------------------------------------- 4404 4405 -----------------------------------------------------------------------*/ 4406 void DomainMapper::lcl_endCharacterGroup() 4407 { 4408 m_pImpl->PopProperties(CONTEXT_CHARACTER); 4409 } 4410 /*-- 09.06.2006 09:52:14--------------------------------------------------- 4411 4412 -----------------------------------------------------------------------*/ 4413 void DomainMapper::lcl_text(const sal_uInt8 * data_, size_t len) 4414 { 4415 //TODO: Determine the right text encoding (FIB?) 4416 ::rtl::OUString sText( (const sal_Char*) data_, len, RTL_TEXTENCODING_MS_1252 ); 4417 #ifdef DEBUG_DOMAINMAPPER 4418 dmapper_logger->startElement("text"); 4419 dmapper_logger->chars(sText); 4420 dmapper_logger->endElement("text"); 4421 #endif 4422 4423 try 4424 { 4425 if(len == 1) 4426 { 4427 switch(*data_) 4428 { 4429 case 0x02: return; //footnote character 4430 case 0x0c: //page break 4431 m_pImpl->deferBreak(PAGE_BREAK); 4432 return; 4433 case 0x0e: //column break 4434 m_pImpl->deferBreak(COLUMN_BREAK); 4435 return; 4436 case 0x07: 4437 m_pImpl->getTableManager().text(data_, len); 4438 case 0x0d: 4439 m_pImpl->finishParagraph(m_pImpl->GetTopContextOfType(CONTEXT_PARAGRAPH)); 4440 return; 4441 case 0x13: 4442 m_pImpl->PushFieldContext(); 4443 return; 4444 case 0x14: 4445 // delimiter not necessarily available 4446 // appears only if field contains further content 4447 m_pImpl->CloseFieldCommand(); 4448 return; 4449 case 0x15: /* end of field */ 4450 m_pImpl->PopFieldContext(); 4451 return; 4452 default: 4453 break; 4454 } 4455 } 4456 4457 PropertyMapPtr pContext = m_pImpl->GetTopContext(); 4458 if ( pContext && !pContext->GetFootnote().is() ) 4459 { 4460 if (m_pImpl->isBreakDeferred(PAGE_BREAK)) 4461 m_pImpl->GetTopContext()->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_PAGE_BEFORE) ); 4462 else if (m_pImpl->isBreakDeferred(COLUMN_BREAK)) 4463 m_pImpl->GetTopContext()->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_COLUMN_BEFORE) ); 4464 m_pImpl->clearDeferredBreaks(); 4465 } 4466 4467 if( pContext->GetFootnote().is() && m_pImpl->IsCustomFtnMark() ) 4468 { 4469 pContext->GetFootnote()->setLabel( sText ); 4470 m_pImpl->SetCustomFtnMark( false ); 4471 //otherwise ignore sText 4472 } 4473 else if( m_pImpl->IsOpenFieldCommand() ) 4474 m_pImpl->AppendFieldCommand(sText); 4475 else if( m_pImpl->IsOpenField() && m_pImpl->IsFieldResultAsString()) 4476 /*depending on the success of the field insert operation this result will be 4477 set at the field or directly inserted into the text*/ 4478 m_pImpl->SetFieldResult( sText ); 4479 else 4480 { 4481 //--> debug 4482 //sal_uInt32 nSize = pContext->size(); 4483 //<-- 4484 4485 if( !bool(pContext)) 4486 pContext.reset(new PropertyMap()); 4487 4488 m_pImpl->appendTextPortion( sText, pContext ); 4489 } 4490 } 4491 catch( const uno::RuntimeException& ) 4492 { 4493 std::clog << __FILE__ << "(l" << __LINE__ << ")" << std::endl; 4494 } 4495 } 4496 /*-- 09.06.2006 09:52:15--------------------------------------------------- 4497 4498 -----------------------------------------------------------------------*/ 4499 void DomainMapper::lcl_utext(const sal_uInt8 * data_, size_t len) 4500 { 4501 OUString sText; 4502 OUStringBuffer aBuffer = OUStringBuffer(len); 4503 aBuffer.append( (const sal_Unicode *) data_, len); 4504 sText = aBuffer.makeStringAndClear(); 4505 4506 try 4507 { 4508 m_pImpl->getTableManager().utext(data_, len); 4509 4510 if(len == 1 && ((*data_) == 0x0d || (*data_) == 0x07)) 4511 m_pImpl->finishParagraph(m_pImpl->GetTopContextOfType(CONTEXT_PARAGRAPH)); 4512 else 4513 { 4514 4515 PropertyMapPtr pContext = m_pImpl->GetTopContext(); 4516 if ( pContext && !pContext->GetFootnote().is() ) 4517 { 4518 if (m_pImpl->isBreakDeferred(PAGE_BREAK)) 4519 m_pImpl->GetTopContext()->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_PAGE_BEFORE) ); 4520 else if (m_pImpl->isBreakDeferred(COLUMN_BREAK)) 4521 m_pImpl->GetTopContext()->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_COLUMN_BEFORE) ); 4522 m_pImpl->clearDeferredBreaks(); 4523 } 4524 4525 /* doesn't seem to be working 4526 if( pContext->GetFootnote().is() ) 4527 { 4528 //todo: the check for 0x0a is a hack! 4529 if( *data_ != 0x0a && !pContext->GetFootnoteSymbol() ) 4530 pContext->GetFootnote()->setLabel( sText ); 4531 //otherwise ignore sText 4532 } 4533 else */ 4534 if( pContext && pContext->GetFootnote().is() ) 4535 { 4536 if( !pContext->GetFootnoteSymbol() ) 4537 pContext->GetFootnote()->setLabel( sText ); 4538 //otherwise ignore sText 4539 } 4540 else if( m_pImpl->IsOpenFieldCommand() ) 4541 m_pImpl->AppendFieldCommand(sText); 4542 else if( m_pImpl->IsOpenField() && m_pImpl->IsFieldResultAsString()) 4543 /*depending on the success of the field insert operation this result will be 4544 set at the field or directly inserted into the text*/ 4545 m_pImpl->SetFieldResult( sText ); 4546 else 4547 { 4548 if( !bool(pContext)) 4549 pContext.reset(new PropertyMap()); 4550 4551 m_pImpl->appendTextPortion( sText, pContext ); 4552 } 4553 4554 } 4555 } 4556 catch( const uno::RuntimeException& ) 4557 { 4558 } 4559 } 4560 /*-- 09.06.2006 09:52:15--------------------------------------------------- 4561 4562 -----------------------------------------------------------------------*/ 4563 void DomainMapper::lcl_props(writerfilter::Reference<Properties>::Pointer_t ref) 4564 { 4565 string sType = ref->getType(); 4566 if( sType == "PICF" ) 4567 { 4568 m_pImpl->ImportGraphic(ref, IMPORT_AS_GRAPHIC); 4569 } 4570 else if( sType == "FSPA" ) 4571 { 4572 m_pImpl->ImportGraphic(ref, IMPORT_AS_SHAPE); 4573 } 4574 else 4575 ref->resolve(*this); 4576 } 4577 /*-- 09.06.2006 09:52:15--------------------------------------------------- 4578 4579 -----------------------------------------------------------------------*/ 4580 void DomainMapper::lcl_table(Id name, writerfilter::Reference<Table>::Pointer_t ref) 4581 { 4582 // printf ( "DomainMapper::table(0x%.4x)\n", (unsigned int)name); 4583 m_pImpl->SetAnyTableImport(true); 4584 /* WRITERFILTERSTATUS: table: attributedata */ 4585 switch(name) 4586 { 4587 case NS_rtf::LN_FONTTABLE: 4588 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4589 4590 // create a font table object that listens to the attributes 4591 // each entry call inserts a new font entry 4592 ref->resolve( *m_pImpl->GetFontTable() ); 4593 break; 4594 case NS_rtf::LN_STYLESHEET: 4595 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4596 //same as above to import style sheets 4597 m_pImpl->SetStyleSheetImport( true ); 4598 ref->resolve( *m_pImpl->GetStyleSheetTable() ); 4599 m_pImpl->GetStyleSheetTable()->ApplyStyleSheets(m_pImpl->GetFontTable()); 4600 m_pImpl->SetStyleSheetImport( false ); 4601 break; 4602 case NS_ooxml::LN_NUMBERING: 4603 case NS_rtf::LN_LISTTABLE: 4604 { 4605 /* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */ 4606 4607 //the same for list tables 4608 ref->resolve( *m_pImpl->GetListTable() ); 4609 m_pImpl->GetListTable( )->CreateNumberingRules( ); 4610 } 4611 break; 4612 case NS_rtf::LN_LFOTABLE: 4613 { 4614 m_pImpl->GetListTable( )->SetLFOImport( true ); 4615 ref->resolve( *m_pImpl->GetListTable() ); 4616 m_pImpl->GetListTable( )->CreateNumberingRules( ); 4617 m_pImpl->GetListTable( )->SetLFOImport( false ); 4618 } 4619 break; 4620 case NS_ooxml::LN_THEMETABLE: 4621 ref->resolve ( *m_pImpl->GetThemeTable() ); 4622 break; 4623 case NS_ooxml::LN_settings_settings: 4624 ref->resolve ( *m_pImpl->GetSettingsTable() ); 4625 m_pImpl->ApplySettingsTable(); 4626 break; 4627 default: 4628 OSL_ENSURE( false, "which table is to be filled here?"); 4629 } 4630 m_pImpl->SetAnyTableImport(false); 4631 } 4632 /*-- 09.06.2006 09:52:16--------------------------------------------------- 4633 4634 -----------------------------------------------------------------------*/ 4635 void DomainMapper::lcl_substream(Id rName, ::writerfilter::Reference<Stream>::Pointer_t ref) 4636 { 4637 m_pImpl->appendTableManager( ); 4638 m_pImpl->getTableManager().startLevel(); 4639 4640 //->debug 4641 //string sName = (*QNameToString::Instance())(rName); 4642 //--<debug 4643 //import of page header/footer 4644 4645 /* WRITERFILTERSTATUS: table: attributedata */ 4646 switch( rName ) 4647 { 4648 case NS_rtf::LN_headerl: 4649 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */ 4650 4651 m_pImpl->PushPageHeader(SectionPropertyMap::PAGE_LEFT); 4652 break; 4653 case NS_rtf::LN_headerr: 4654 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */ 4655 4656 m_pImpl->PushPageHeader(SectionPropertyMap::PAGE_RIGHT); 4657 break; 4658 case NS_rtf::LN_headerf: 4659 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */ 4660 4661 m_pImpl->PushPageHeader(SectionPropertyMap::PAGE_FIRST); 4662 break; 4663 case NS_rtf::LN_footerl: 4664 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */ 4665 4666 m_pImpl->PushPageFooter(SectionPropertyMap::PAGE_LEFT); 4667 break; 4668 case NS_rtf::LN_footerr: 4669 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */ 4670 4671 m_pImpl->PushPageFooter(SectionPropertyMap::PAGE_RIGHT); 4672 break; 4673 case NS_rtf::LN_footerf: 4674 /* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */ 4675 4676 m_pImpl->PushPageFooter(SectionPropertyMap::PAGE_FIRST); 4677 break; 4678 case NS_rtf::LN_footnote: 4679 case NS_rtf::LN_endnote: 4680 m_pImpl->PushFootOrEndnote( NS_rtf::LN_footnote == rName ); 4681 break; 4682 case NS_rtf::LN_annotation : 4683 m_pImpl->PushAnnotation(); 4684 break; 4685 } 4686 ref->resolve(*this); 4687 switch( rName ) 4688 { 4689 case NS_rtf::LN_headerl: 4690 case NS_rtf::LN_headerr: 4691 case NS_rtf::LN_headerf: 4692 case NS_rtf::LN_footerl: 4693 case NS_rtf::LN_footerr: 4694 case NS_rtf::LN_footerf: 4695 m_pImpl->PopPageHeaderFooter(); 4696 break; 4697 case NS_rtf::LN_footnote: 4698 case NS_rtf::LN_endnote: 4699 m_pImpl->PopFootOrEndnote(); 4700 break; 4701 case NS_rtf::LN_annotation : 4702 m_pImpl->PopAnnotation(); 4703 break; 4704 } 4705 4706 m_pImpl->getTableManager().endLevel(); 4707 m_pImpl->popTableManager( ); 4708 } 4709 /*-- 09.06.2006 09:52:16--------------------------------------------------- 4710 4711 -----------------------------------------------------------------------*/ 4712 void DomainMapper::lcl_info(const string & /*info_*/) 4713 { 4714 } 4715 4716 void DomainMapper::handleUnderlineType(const sal_Int32 nIntValue, const ::boost::shared_ptr<PropertyMap> pContext) 4717 { 4718 sal_Int16 eUnderline = awt::FontUnderline::NONE; 4719 4720 switch(nIntValue) 4721 { 4722 case 0: eUnderline = awt::FontUnderline::NONE; break; 4723 case 2: pContext->Insert(PROP_CHAR_WORD_MODE, true, uno::makeAny( true ) ); // TODO: how to get rid of it? 4724 case 1: eUnderline = awt::FontUnderline::SINGLE; break; 4725 case 3: eUnderline = awt::FontUnderline::DOUBLE; break; 4726 case 4: eUnderline = awt::FontUnderline::DOTTED; break; 4727 case 7: eUnderline = awt::FontUnderline::DASH; break; 4728 case 9: eUnderline = awt::FontUnderline::DASHDOT; break; 4729 case 10:eUnderline = awt::FontUnderline::DASHDOTDOT; break; 4730 case 6: eUnderline = awt::FontUnderline::BOLD; break; 4731 case 11:eUnderline = awt::FontUnderline::WAVE; break; 4732 case 20:eUnderline = awt::FontUnderline::BOLDDOTTED; break; 4733 case 23:eUnderline = awt::FontUnderline::BOLDDASH; break; 4734 case 39:eUnderline = awt::FontUnderline::LONGDASH; break; 4735 case 55:eUnderline = awt::FontUnderline::BOLDLONGDASH; break; 4736 case 25:eUnderline = awt::FontUnderline::BOLDDASHDOT; break; 4737 case 26:eUnderline = awt::FontUnderline::BOLDDASHDOTDOT;break; 4738 case 27:eUnderline = awt::FontUnderline::BOLDWAVE; break; 4739 case 43:eUnderline = awt::FontUnderline::DOUBLEWAVE; break; 4740 default: ; 4741 } 4742 pContext->Insert(PROP_CHAR_UNDERLINE, true, uno::makeAny( eUnderline ) ); 4743 } 4744 4745 void DomainMapper::handleParaJustification(const sal_Int32 nIntValue, const ::boost::shared_ptr<PropertyMap> pContext, const bool bExchangeLeftRight) 4746 { 4747 sal_Int16 nAdjust = 0; 4748 sal_Int16 nLastLineAdjust = 0; 4749 switch(nIntValue) 4750 { 4751 case 1: 4752 nAdjust = style::ParagraphAdjust_CENTER; 4753 break; 4754 case 2: 4755 nAdjust = static_cast< sal_Int16 > (bExchangeLeftRight ? style::ParagraphAdjust_LEFT : style::ParagraphAdjust_RIGHT); 4756 break; 4757 case 4: 4758 nLastLineAdjust = style::ParagraphAdjust_BLOCK; 4759 //no break; 4760 case 3: 4761 nAdjust = style::ParagraphAdjust_BLOCK; 4762 break; 4763 case 0: 4764 default: 4765 nAdjust = static_cast< sal_Int16 > (bExchangeLeftRight ? style::ParagraphAdjust_RIGHT : style::ParagraphAdjust_LEFT); 4766 break; 4767 } 4768 pContext->Insert( PROP_PARA_ADJUST, true, uno::makeAny( nAdjust ) ); 4769 pContext->Insert( PROP_PARA_LAST_LINE_ADJUST, true, uno::makeAny( nLastLineAdjust ) ); 4770 } 4771 4772 bool DomainMapper::getColorFromIndex(const sal_Int32 nIndex, sal_Int32 &nColor) 4773 { 4774 nColor = 0; 4775 if ((nIndex < 1) || (nIndex > 16)) 4776 return false; 4777 4778 switch (nIndex) 4779 { 4780 case 1: nColor=0x000000; break; //black 4781 case 2: nColor=0x0000ff; break; //blue 4782 case 3: nColor=0x00ffff; break; //cyan 4783 case 4: nColor=0x00ff00; break; //green 4784 case 5: nColor=0xff00ff; break; //magenta 4785 case 6: nColor=0xff0000; break; //red 4786 case 7: nColor=0xffff00; break; //yellow 4787 case 8: nColor=0xffffff; break; //white 4788 case 9: nColor=0x000080; break;//dark blue 4789 case 10: nColor=0x008080; break; //dark cyan 4790 case 11: nColor=0x008000; break; //dark green 4791 case 12: nColor=0x800080; break; //dark magenta 4792 case 13: nColor=0x800000; break; //dark red 4793 case 14: nColor=0x808000; break; //dark yellow 4794 case 15: nColor=0x808080; break; //dark gray 4795 case 16: nColor=0xC0C0C0; break; //light gray 4796 default: 4797 return false; 4798 } 4799 return true; 4800 } 4801 4802 sal_Int16 DomainMapper::getEmphasisValue(const sal_Int32 nIntValue) 4803 { 4804 switch (nIntValue) 4805 { 4806 case 1: 4807 return com::sun::star::text::FontEmphasis::DOT_ABOVE; 4808 case 2: 4809 return com::sun::star::text::FontEmphasis::ACCENT_ABOVE; 4810 case 3: 4811 return com::sun::star::text::FontEmphasis::CIRCLE_ABOVE; 4812 case 4: 4813 return com::sun::star::text::FontEmphasis::DOT_BELOW; 4814 default: 4815 return com::sun::star::text::FontEmphasis::NONE; 4816 } 4817 } 4818 4819 rtl::OUString DomainMapper::getBracketStringFromEnum(const sal_Int32 nIntValue, const bool bIsPrefix) 4820 { 4821 switch(nIntValue) 4822 { 4823 case 1: 4824 if (bIsPrefix) 4825 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "(" )); 4826 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( ")" )); 4827 4828 case 2: 4829 if (bIsPrefix) 4830 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "[" )); 4831 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "]" )); 4832 4833 case 3: 4834 if (bIsPrefix) 4835 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "<" )); 4836 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( ">" )); 4837 4838 case 4: 4839 if (bIsPrefix) 4840 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "{" )); 4841 return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "}" )); 4842 4843 case 0: 4844 default: 4845 return rtl::OUString(); 4846 } 4847 } 4848 4849 com::sun::star::style::TabAlign DomainMapper::getTabAlignFromValue(const sal_Int32 nIntValue) 4850 { 4851 switch (nIntValue) 4852 { 4853 case 0: 4854 case 4: // bar not supported 4855 case 5: // num not supported 4856 return com::sun::star::style::TabAlign_LEFT; 4857 case 1: 4858 return com::sun::star::style::TabAlign_CENTER; 4859 case 2: 4860 return com::sun::star::style::TabAlign_RIGHT; 4861 case 3: 4862 return com::sun::star::style::TabAlign_DECIMAL; 4863 } 4864 return com::sun::star::style::TabAlign_LEFT; 4865 } 4866 4867 sal_Unicode DomainMapper::getFillCharFromValue(const sal_Int32 nIntValue) 4868 { 4869 switch (nIntValue) 4870 { 4871 case 1: // dot 4872 return sal_Unicode(0x002e); 4873 case 2: // hyphen 4874 return sal_Unicode(0x002d); 4875 case 3: // underscore 4876 case 4: // heavy FIXME ??? 4877 return sal_Unicode(0x005f); 4878 case NS_ooxml::LN_Value_ST_TabTlc_middleDot: // middleDot 4879 return sal_Unicode(0x00b7); 4880 case 0: // none 4881 default: 4882 return sal_Unicode(0x0020); // blank space 4883 } 4884 } 4885 /*-- 18.07.2007 14:59:00--------------------------------------------------- 4886 4887 -----------------------------------------------------------------------*/ 4888 bool DomainMapper::IsOOXMLImport() const 4889 { 4890 return m_pImpl->IsOOXMLImport(); 4891 } 4892 /*-- 18.07.2007 16:03:14--------------------------------------------------- 4893 4894 -----------------------------------------------------------------------*/ 4895 uno::Reference < lang::XMultiServiceFactory > DomainMapper::GetTextFactory() const 4896 { 4897 return m_pImpl->GetTextFactory(); 4898 } 4899 /*-- 12.11.2007 10:41:01--------------------------------------------------- 4900 4901 -----------------------------------------------------------------------*/ 4902 /*-- 31.01.2008 18:19:44--------------------------------------------------- 4903 4904 -----------------------------------------------------------------------*/ 4905 uno::Reference< text::XTextRange > DomainMapper::GetCurrentTextRange() 4906 { 4907 return m_pImpl->GetTopTextAppend()->getEnd(); 4908 } 4909 4910 /*-- 05.02.2008 10:26:26--------------------------------------------------- 4911 4912 -----------------------------------------------------------------------*/ 4913 ::rtl::OUString DomainMapper::getOrCreateCharStyle( PropertyValueVector_t& rCharProperties ) 4914 { 4915 StyleSheetTablePtr pStyleSheets = m_pImpl->GetStyleSheetTable(); 4916 return pStyleSheets->getOrCreateCharStyle( rCharProperties ); 4917 } 4918 4919 ListsManager::Pointer DomainMapper::GetListTable( ) 4920 { 4921 return m_pImpl->GetListTable( ); 4922 } 4923 4924 StyleSheetTablePtr DomainMapper::GetStyleSheetTable( ) 4925 { 4926 return m_pImpl->GetStyleSheetTable( ); 4927 } 4928 4929 } //namespace dmapper 4930 } //namespace writerfilter 4931