Files
libreoffice/editeng/source/rtf/svxrtf.cxx

1378 lines
45 KiB
C++
Raw Normal View History

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
re-base on ALv2 code. Includes (at least) relevant parts of: linecap: Reintegrating finished LineCap feature Patch contributed by Regina Henschel http://svn.apache.org/viewvc?view=revision&revision=1232507 Patches contributed by Sven Jacobi impress212: #i81610# fixed animation export http://svn.apache.org/viewvc?view=revision&revision=1167620 impress212: drawinglayer gbuild environment changes http://svn.apache.org/viewvc?view=revision&revision=1167627 http://svn.apache.org/viewvc?view=revision&revision=1167628 impress212: DffPropSet -> minor code improvements, removing table http://svn.apache.org/viewvc?view=revision&revision=1167634 impress212: #158494# fixed excel import (text rotation) http://svn.apache.org/viewvc?view=revision&revision=1167638 Patches contributed by Armin Le Grand Svg: Reintegrated Svg replacement from /branches/alg/svgreplavement http://svn.apache.org/viewvc?view=revision&revision=1220836 #118728# changed indentifying definitions for Svg file detection http://svn.apache.org/viewvc?view=revision&revision=1229961 #118838# LineGeometry creation for complicated cases optimized to create single Polygons http://svn.apache.org/viewvc?view=revision&revision=1236232 #119176# corrected file type detection for SVG for svg files without xml header http://svn.apache.org/viewvc?view=revision&revision=1309445 #118728# Extended Svg file detection http://svn.apache.org/viewvc?view=revision&revision=1230531 #118529# solve break converters and convert commands for OLEs and images http://svn.apache.org/viewvc?view=revision&revision=1186168 svg: added WaE changes from branch svgreplacement to trunc http://svn.apache.org/viewvc?view=revision&revision=1222974 svg: corrected missing member initialization http://svn.apache.org/viewvc?view=revision&revision=1226134 fix for #118525#: Using primitives for chart sub-geometry visualisation http://svn.apache.org/viewvc?view=revision&revision=1226879 #118898# Adapted ImpGraphic::ImplGetBitmap to correctly convert metafiles to bitmapEx ... http://svn.apache.org/viewvc?view=revision&revision=1293316 fix for #118525#: removed no longer used variable maOriginalMapMode, one more exception eliminated http://svn.apache.org/viewvc?view=revision&revision=1227097 #16758# Added buffering to the VDev usages of the VclProcessor2D derivates... http://svn.apache.org/viewvc?view=revision&revision=1229521 #116758# Secured VDev buffer device to Vcl deinit http://svn.apache.org/viewvc?view=revision&revision=1230574 #116758# added remembering allocated VDevs for VDevBuffer to be able to also delete these when vcl goes down; it should never happen, but You never know http://svn.apache.org/viewvc?view=revision&revision=1230927 #118730# Changed SvgClipPathNode to use MaskPrimitive2D for primitive representation instead of TransparencePrimitive2D http://svn.apache.org/viewvc?view=revision&revision=1231198 #118822# secured 3D geometry creation (slices) by subdividing the 2D source polyPolygon early http://svn.apache.org/viewvc?view=revision&revision=1234749 #118829# enhanced Svg gradient quality, obstacles avoided http://svn.apache.org/viewvc?view=revision&revision=1235361 #118834# Unified usage of TextBreakupHelper as single tooling class for i18n text primitive breakup http://svn.apache.org/viewvc?view=revision&revision=1236110 #118853# added square pixel size limit to conversion of TransparencePrimitive2D to Metafile action http://svn.apache.org/viewvc?view=revision&revision=1237656 #118824# coreccted mirroring and boundrect when the graphicmanager is used for bitmap output http://svn.apache.org/viewvc?view=revision&revision=1240097 #115092# Corrected VclProcessor2D::RenderPolygonStrokePrimitive2D for various optimization scenarios http://svn.apache.org/viewvc?view=revision&revision=1241434 #118783# Corrected errors in ID strings, corrected Svg line/fill export, corrected polygon close state http://svn.apache.org/viewvc?view=revision&revision=1232006 #118796# corrected null-pointer usage in SVG text exporter http://svn.apache.org/viewvc?view=revision&revision=1240262 #118729# Use GraphicStreamUrl and GraphicUrl to allow multi image import with linked graphics, too http://svn.apache.org/viewvc?view=revision&revision=1229962 #118898# corrected error in GDIMetaFile::GetBoundRect in handling MetaFloatTransparentAction http://svn.apache.org/viewvc?view=revision&revision=1293349 #118855# Corrected handling of possibly created empty clipRegions after PolyPolygon clipping http://svn.apache.org/viewvc?view=revision&revision=1237725 #115962# Better (but not yet optimal, see comments in task) handling of MetaFloatTransparentAction in PDF export http://svn.apache.org/viewvc?view=revision&revision=1241078 IP clearance: #118466# This patch removes librsvg, libcroco, libgsf, ... http://svn.apache.org/viewvc?view=revision&revision=1200879 118779# Added svg content streaming in/out to ImpGraphic stream operators http://svn.apache.org/viewvc?view=revision&revision=1231908 linecap: correctons for WaE and mac drawing http://svn.apache.org/viewvc?view=revision&revision=1232793 svg: uses current system Dpi for Svg replacement image creation http://svn.apache.org/viewvc?view=revision&revision=1233948 Patches contributed by Mathias Bauer (and others) gnumake4 work variously http://svn.apache.org/viewvc?view=revision&revision=1394326 http://svn.apache.org/viewvc?view=revision&revision=1396797 http://svn.apache.org/viewvc?view=revision&revision=1397315 http://svn.apache.org/viewvc?view=revision&revision=1394326 Remove duplicate header includes. cws mba34issues01: #i117720#: convert assertion into warning http://svn.apache.org/viewvc?view=revision&revision=1172352 118485 - Styles for OLEs are not saved. Submitted by Armin Le Grand. http://svn.apache.org/viewvc?view=revision&revision=1182166 cws mba34issues01: #i117714#: remove assertion http://svn.apache.org/viewvc?view=revision&revision=1172357 Patch contributed by Jurgen Schmidt add some additional checks to ensure proper reading operations http://svn.apache.org/viewvc?view=revision&revision=1209022 mostly prefer our stream / bounds checking work. Patches contributed by Herbert Duerr #i118816# add clarifying comment regarding Font::*Color*() methods http://svn.apache.org/viewvc?view=revision&revision=1233833 extend macro->string handling for empty strings http://svn.apache.org/viewvc?view=revision&revision=1175801 avoid magic constants for SALCOLOR_NONE http://svn.apache.org/viewvc?view=revision&revision=1177543 initialize slant properly in ImplFontMetricData constructor (author=iorsh) http://svn.apache.org/viewvc?view=revision&revision=1177551 #i118675# make check for extension updates more stable http://svn.apache.org/viewvc?view=revision&revision=1214797 #a118617# remove VBasicEventListener.dll binary There are no known users depending on its CLSID http://svn.apache.org/viewvc?view=revision&revision=1203697 Patches contributed by Ariel Constenla-Haile Fix build breaker on Linux/gcc http://svn.apache.org/viewvc?view=revision&revision=1221104 Fix crash when trying to instantiate css.graphic.GraphicRasterizer_RSVG http://svn.apache.org/viewvc?view=revision&revision=1215559 Patches contributed by Oliver-Rainer Wittmann sw34bf06: #i117962# - method <SwFlyFrm::IsPaint(..)> - consider instances of <SwFlyDrawObj> http://svn.apache.org/viewvc?view=revision&revision=1172120 sw34bf06: #i117783# - Writer's implementation of XPagePrintable - apply print settings to new printing routines http://svn.apache.org/viewvc?view=revision&revision=1172115 gnumake4 work variously from Hans-Joachim Lankenau http://svn.apache.org/viewvc?view=revision&revision=1397315 http://svn.apache.org/viewvc?view=revision&revision=1396797 http://svn.apache.org/viewvc?view=revision&revision=1396782 http://svn.apache.org/viewvc?view=revision&revision=1394707 plus some amount of re-splitting of legacy headers. Patch contributed by Pavel Janik WaE: Remove unused variables. http://svn.apache.org/viewvc?view=revision&revision=1230697 Patches contributed by Takashi Ono mingwport35: i#117795: MinGW port fix for vcl2gnumake http://svn.apache.org/viewvc?view=revision&revision=1172091 mingwport35: i#117795: MinGW port fix for vcl2gnumake http://svn.apache.org/viewvc?view=revision&revision=1172091 Patch contributed by Christian Lippka impress212: #i98044# re enable Text menu for outline and title shapes http://svn.apache.org/viewvc?view=revision&revision=1167639 Patch contributed by Andre Fischer 118674: Made category B code optional and disabled by default. http://svn.apache.org/viewvc?view=revision&revision=1215131 118881: Ignore empty paragraphs after bullets. http://svn.apache.org/viewvc?view=revision&revision=1296205 Patches contributed by Philipp Lohmann ooo340fixes: #i117780# use rtl allocator http://svn.apache.org/viewvc?view=revision&revision=1172087 ooo34gsl02: #i117807# fix an off by one error (index actually inside the pfb section header) http://svn.apache.org/viewvc?view=revision&revision=1167576 various cleanups, related compilation fixes, warning cleanups, re-working of obsolete stl template pieces to use boost instead, changed string classes, re-adapt KDE about data, about dialog, fixing warnings, and other fixes & improvements. Disable svg import / render for about/ branding code-paths for now. Restore full icon theme set. Remove OS/2 conditionals and sources. Remove conflicting gtk/full-screen monitors support. Retain existing svg rasterizer files - temporarily disabled. Standardize stringificaiton and fixup dllpostfix issues. Rename SvgGradientHelper::== to equalTo to avoid overloading issues. Use the flat GdiPlus API for LineCaps calls.
2012-10-09 12:22:23 +01:00
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
2000-09-18 16:07:07 +00:00
2000-09-18 16:07:07 +00:00
#include <ctype.h>
2012-07-27 17:30:49 +02:00
#include <tools/diagnose_ex.h>
2000-09-18 16:07:07 +00:00
#include <rtl/tencinfo.h>
#include <svl/itemiter.hxx>
#include <svl/whiter.hxx>
2000-09-18 16:07:07 +00:00
#include <svtools/rtftoken.h>
#include <svl/itempool.hxx>
2000-09-18 16:07:07 +00:00
#include <comphelper/string.hxx>
#include <com/sun/star/lang/Locale.hpp>
#include <editeng/scriptspaceitem.hxx>
#include <editeng/fontitem.hxx>
#include <editeng/colritem.hxx>
#include <editeng/svxrtf.hxx>
#include <editeng/editids.hrc>
#include <vcl/svapp.hxx>
#include <vcl/settings.hxx>
2000-09-18 16:07:07 +00:00
#include <com/sun/star/document/XDocumentProperties.hpp>
using namespace ::com::sun::star;
static rtl_TextEncoding lcl_GetDefaultTextEncodingForRTF()
{
OUString aLangString( Application::GetSettings().GetLanguageTag().getLanguage());
2012-04-06 14:09:04 +02:00
if ( aLangString == "ru" || aLangString == "uk" )
return RTL_TEXTENCODING_MS_1251;
2012-04-06 14:09:04 +02:00
if ( aLangString == "tr" )
return RTL_TEXTENCODING_MS_1254;
else
return RTL_TEXTENCODING_MS_1252;
}
2000-09-18 16:07:07 +00:00
2011-02-16 16:34:02 -05:00
// -------------- Methods --------------------
2000-09-18 16:07:07 +00:00
SvxRTFParser::SvxRTFParser( SfxItemPool& rPool, SvStream& rIn,
uno::Reference<document::XDocumentProperties> i_xDocProps,
bool const bReadNewDoc )
: SvRTFParser( rIn, 5 )
, rStrm(rIn)
, aPlainMap(rPool)
, aPardMap(rPool)
, pInsPos( 0 )
, pAttrPool( &rPool )
, m_xDocProps( i_xDocProps )
, pRTFDefaults( 0 )
, nVersionNo( 0 )
, nDfltFont( 0)
, bNewDoc( bReadNewDoc )
, bNewGroup( false)
, bIsSetDfltTab( false)
, bChkStyleAttr( false )
, bCalcValue( false )
, bPardTokenRead( false)
, bReadDocInfo( false )
, bIsLeftToRightDef( true)
, bIsInReadStyleTab( false)
2000-09-18 16:07:07 +00:00
{
pDfltFont = new vcl::Font;
2000-09-18 16:07:07 +00:00
pDfltColor = new Color;
}
SvxRTFParser::~SvxRTFParser()
{
if( !aColorTbl.empty() )
2000-09-18 16:07:07 +00:00
ClearColorTbl();
if( !aAttrStack.empty() )
2000-09-18 16:07:07 +00:00
ClearAttrStack();
delete pRTFDefaults;
2000-09-18 16:07:07 +00:00
delete pInsPos;
delete pDfltFont;
delete pDfltColor;
}
void SvxRTFParser::SetInsPos( const SvxPosition& rNew )
{
delete pInsPos;
2000-09-18 16:07:07 +00:00
pInsPos = rNew.Clone();
}
SvParserState SvxRTFParser::CallParser()
{
2011-02-16 16:34:02 -05:00
DBG_ASSERT( pInsPos, "no insertion position");
2000-09-18 16:07:07 +00:00
if( !pInsPos )
return SVPAR_ERROR;
if( !aColorTbl.empty() )
2000-09-18 16:07:07 +00:00
ClearColorTbl();
if( !aFontTbl.empty() )
2000-09-18 16:07:07 +00:00
ClearFontTbl();
if( !aStyleTbl.empty() )
2000-09-18 16:07:07 +00:00
ClearStyleTbl();
if( !aAttrStack.empty() )
2000-09-18 16:07:07 +00:00
ClearAttrStack();
bIsSetDfltTab = false;
bNewGroup = false;
2000-09-18 16:07:07 +00:00
nDfltFont = 0;
sBaseURL.clear();
2000-09-18 16:07:07 +00:00
2011-02-16 16:34:02 -05:00
// generate the correct WhichId table from the set WhichIds.
BuildWhichTable();
2000-09-18 16:07:07 +00:00
return SvRTFParser::CallParser();
}
void SvxRTFParser::Continue( int nToken )
{
SvRTFParser::Continue( nToken );
if( SVPAR_PENDING != GetStatus() )
2001-03-27 20:34:02 +00:00
{
2000-09-18 16:07:07 +00:00
SetAllAttrOfStk();
//Regardless of what "color 0" is, word defaults to auto as the default colour.
//e.g. see #i7713#
2001-03-27 20:34:02 +00:00
}
2000-09-18 16:07:07 +00:00
}
2011-02-16 16:34:02 -05:00
// is called for each token that is recognized in CallParser
2000-09-18 16:07:07 +00:00
void SvxRTFParser::NextToken( int nToken )
{
sal_Unicode cCh;
switch( nToken )
{
case RTF_COLORTBL: ReadColorTable(); break;
case RTF_FONTTBL: ReadFontTable(); break;
case RTF_STYLESHEET: ReadStyleTable(); break;
case RTF_DEFF:
if( bNewDoc )
{
if( !aFontTbl.empty() )
2011-02-16 16:34:02 -05:00
// Can immediately be set
SetDefault( nToken, nTokenValue );
2000-09-18 16:07:07 +00:00
else
2011-02-16 16:34:02 -05:00
// is set after reading the font table
2000-09-18 16:07:07 +00:00
nDfltFont = int(nTokenValue);
}
break;
case RTF_DEFTAB:
case RTF_DEFLANG:
if( bNewDoc )
SetDefault( nToken, nTokenValue );
2000-09-18 16:07:07 +00:00
break;
case RTF_PICT: ReadBitmapData(); break;
case RTF_LINE: cCh = '\n'; goto INSINGLECHAR;
case RTF_TAB: cCh = '\t'; goto INSINGLECHAR;
case RTF_SUBENTRYINDEX: cCh = ':'; goto INSINGLECHAR;
case RTF_EMDASH: cCh = 0x2014; goto INSINGLECHAR;
case RTF_ENDASH: cCh = 0x2013; goto INSINGLECHAR;
case RTF_BULLET: cCh = 0x2022; goto INSINGLECHAR;
case RTF_LQUOTE: cCh = 0x2018; goto INSINGLECHAR;
case RTF_RQUOTE: cCh = 0x2019; goto INSINGLECHAR;
case RTF_LDBLQUOTE: cCh = 0x201C; goto INSINGLECHAR;
case RTF_RDBLQUOTE: cCh = 0x201D; goto INSINGLECHAR;
2000-09-18 16:07:07 +00:00
INSINGLECHAR:
aToken = OUString(cCh);
2011-02-16 16:34:02 -05:00
// no Break, aToken is set as Text
2000-09-18 16:07:07 +00:00
case RTF_TEXTTOKEN:
{
InsertText();
2011-02-16 16:34:02 -05:00
// all collected Attributes are set
for( sal_uInt16 n = aAttrSetList.size(); n; )
2000-09-18 16:07:07 +00:00
{
SvxRTFItemStackType* pStkSet = &aAttrSetList[--n];
2000-09-18 16:07:07 +00:00
SetAttrSet( *pStkSet );
aAttrSetList.pop_back();
2000-09-18 16:07:07 +00:00
}
}
break;
case RTF_PAR:
InsertPara();
break;
case '{':
2011-02-16 16:34:02 -05:00
if (bNewGroup) // Nesting!
2000-09-18 16:07:07 +00:00
_GetAttrSet();
bNewGroup = true;
2000-09-18 16:07:07 +00:00
break;
case '}':
2011-02-16 16:34:02 -05:00
if( !bNewGroup ) // Empty Group ??
2000-09-18 16:07:07 +00:00
AttrGroupEnd();
bNewGroup = false;
2000-09-18 16:07:07 +00:00
break;
case RTF_INFO:
if (bReadDocInfo && bNewDoc && m_xDocProps.is())
2000-09-18 16:07:07 +00:00
ReadInfo();
else
SkipGroup();
break;
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2011-02-16 16:34:02 -05:00
// First overwrite all (all have to be in one group!!)
// Could also appear in the RTF-filewithout the IGNORE-Flag; all Groups
// with the IGNORE-Flag are overwritten in the default branch.
2000-09-18 16:07:07 +00:00
case RTF_SWG_PRTDATA:
case RTF_FIELD:
case RTF_ATNID:
case RTF_ANNOTATION:
case RTF_BKMKSTART:
case RTF_BKMKEND:
case RTF_BKMK_KEY:
case RTF_XE:
case RTF_TC:
case RTF_NEXTFILE:
case RTF_TEMPLATE:
2010-10-18 19:37:48 +01:00
// RTF_SHPRSLT disabled for #i19718#
2000-09-18 16:07:07 +00:00
SkipGroup();
break;
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
case RTF_PGDSCNO:
case RTF_PGBRK:
case RTF_SHADOW:
if( RTF_IGNOREFLAG != GetStackPtr( -1 )->nTokenId )
break;
nToken = SkipToken( -1 );
if( '{' == GetStackPtr( -1 )->nTokenId )
nToken = SkipToken( -1 );
ReadAttr( nToken, &GetAttrSet() );
break;
default:
switch( nToken & ~(0xff | RTF_SWGDEFS) )
{
case RTF_PARFMT: // hier gibts keine Swg-Defines
ReadAttr( nToken, &GetAttrSet() );
break;
case RTF_CHRFMT:
case RTF_BRDRDEF:
case RTF_TABSTOPDEF:
if( RTF_SWGDEFS & nToken)
{
if( RTF_IGNOREFLAG != GetStackPtr( -1 )->nTokenId )
break;
nToken = SkipToken( -1 );
if( '{' == GetStackPtr( -1 )->nTokenId )
{
nToken = SkipToken( -1 );
}
}
ReadAttr( nToken, &GetAttrSet() );
break;
default:
{
if( /*( '{' == GetStackPtr( -1 )->nTokenId ) ||*/
( RTF_IGNOREFLAG == GetStackPtr( -1 )->nTokenId &&
'{' == GetStackPtr( -2 )->nTokenId ) )
SkipGroup();
}
break;
}
break;
}
}
void SvxRTFParser::ReadStyleTable()
{
int nToken, bSaveChkStyleAttr = bChkStyleAttr ? 1 : 0;
sal_uInt16 nStyleNo = 0;
2011-02-16 16:34:02 -05:00
int _nOpenBrakets = 1; // the first was already detected earlier!!
2011-10-29 13:24:48 +02:00
SvxRTFStyleType* pStyle = new SvxRTFStyleType( *pAttrPool, &aWhichMap[0] );
pStyle->aAttrSet.Put( GetRTFDefaults() );
2000-09-18 16:07:07 +00:00
bIsInReadStyleTab = true;
bChkStyleAttr = false; // Do not check Attribute against the Styles
2000-09-18 16:07:07 +00:00
while( _nOpenBrakets && IsParserWorking() )
2000-09-18 16:07:07 +00:00
{
switch( nToken = GetNextToken() )
{
case '}': if( --_nOpenBrakets && IsParserWorking() )
2011-02-16 16:34:02 -05:00
// Style has been completely read,
// so this is still a stable status
2000-09-18 16:07:07 +00:00
SaveState( RTF_STYLESHEET );
break;
case '{':
{
if( RTF_IGNOREFLAG != GetNextToken() )
nToken = SkipToken( -1 );
else if( RTF_UNKNOWNCONTROL != ( nToken = GetNextToken() ) &&
RTF_PN != nToken )
nToken = SkipToken( -2 );
else
{
2011-02-16 16:34:02 -05:00
// filter out at once
2000-09-18 16:07:07 +00:00
ReadUnknownData();
nToken = GetNextToken();
if( '}' != nToken )
eState = SVPAR_ERROR;
break;
}
++_nOpenBrakets;
2000-09-18 16:07:07 +00:00
}
break;
case RTF_SBASEDON: pStyle->nBasedOn = sal_uInt16(nTokenValue); pStyle->bBasedOnIsSet=true; break;
case RTF_SNEXT: pStyle->nNext = sal_uInt16(nTokenValue); break;
2000-09-18 16:07:07 +00:00
case RTF_OUTLINELEVEL:
case RTF_SOUTLVL: pStyle->nOutlineNo = sal_uInt8(nTokenValue); break;
2000-09-18 16:07:07 +00:00
case RTF_S: nStyleNo = (short)nTokenValue; break;
case RTF_CS: nStyleNo = (short)nTokenValue;
pStyle->bIsCharFmt = true;
2000-09-18 16:07:07 +00:00
break;
case RTF_TEXTTOKEN:
{
pStyle->sName = DelCharAtEnd( aToken, ';' );
if( !aStyleTbl.empty() )
2000-09-18 16:07:07 +00:00
{
aStyleTbl.erase(nStyleNo);
2000-09-18 16:07:07 +00:00
}
2011-02-16 16:34:02 -05:00
// All data from the font is available, so off to the table
aStyleTbl.insert( nStyleNo , pStyle);
2011-10-29 13:24:48 +02:00
pStyle = new SvxRTFStyleType( *pAttrPool, &aWhichMap[0] );
pStyle->aAttrSet.Put( GetRTFDefaults() );
2000-09-18 16:07:07 +00:00
nStyleNo = 0;
}
break;
default:
switch( nToken & ~(0xff | RTF_SWGDEFS) )
{
case RTF_PARFMT: // hier gibts keine Swg-Defines
ReadAttr( nToken, &pStyle->aAttrSet );
break;
case RTF_CHRFMT:
case RTF_BRDRDEF:
case RTF_TABSTOPDEF:
if( RTF_SWGDEFS & nToken)
{
if( RTF_IGNOREFLAG != GetStackPtr( -1 )->nTokenId )
break;
nToken = SkipToken( -1 );
if( '{' == GetStackPtr( -1 )->nTokenId )
{
nToken = SkipToken( -1 );
}
}
ReadAttr( nToken, &pStyle->aAttrSet );
break;
}
break;
}
}
2011-02-16 16:34:02 -05:00
delete pStyle; // Delete the Last Style
SkipToken( -1 ); // the closing brace is evaluated "above"
2000-09-18 16:07:07 +00:00
2011-02-16 16:34:02 -05:00
// Flag back to old state
2000-09-18 16:07:07 +00:00
bChkStyleAttr = bSaveChkStyleAttr;
bIsInReadStyleTab = false;
2000-09-18 16:07:07 +00:00
}
void SvxRTFParser::ReadColorTable()
{
int nToken;
sal_uInt8 nRed = 0xff, nGreen = 0xff, nBlue = 0xff;
2000-09-18 16:07:07 +00:00
while( '}' != ( nToken = GetNextToken() ) && IsParserWorking() )
{
switch( nToken )
{
case RTF_RED: nRed = sal_uInt8(nTokenValue); break;
case RTF_GREEN: nGreen = sal_uInt8(nTokenValue); break;
case RTF_BLUE: nBlue = sal_uInt8(nTokenValue); break;
2000-09-18 16:07:07 +00:00
2011-02-16 16:34:02 -05:00
case RTF_TEXTTOKEN:
if( 1 == aToken.getLength()
? aToken[ 0 ] != ';'
: -1 == aToken.indexOf( ";" ) )
2011-02-16 16:34:02 -05:00
break; // At least the ';' must be found
2000-09-18 16:07:07 +00:00
2011-02-16 16:34:02 -05:00
// else no break !!
2000-09-18 16:07:07 +00:00
case ';':
if( IsParserWorking() )
{
2011-02-16 16:34:02 -05:00
// one color is finished, fill in the table
// try to map the values to SV internal names
2001-03-27 20:34:02 +00:00
ColorPtr pColor = new Color( nRed, nGreen, nBlue );
if( aColorTbl.empty() &&
sal_uInt8(-1) == nRed && sal_uInt8(-1) == nGreen && sal_uInt8(-1) == nBlue )
2001-03-27 20:34:02 +00:00
pColor->SetColor( COL_AUTO );
aColorTbl.push_back( pColor );
2000-09-18 16:07:07 +00:00
nRed = 0, nGreen = 0, nBlue = 0;
2011-02-16 16:34:02 -05:00
// Color has been completely read,
// so this is still a stable status
2000-09-18 16:07:07 +00:00
SaveState( RTF_COLORTBL );
}
break;
}
}
2011-02-16 16:34:02 -05:00
SkipToken( -1 ); // the closing brace is evaluated "above"
2000-09-18 16:07:07 +00:00
}
void SvxRTFParser::ReadFontTable()
{
int nToken = 0;
2011-02-16 16:34:02 -05:00
int _nOpenBrakets = 1; // the first was already detected earlier!!
vcl::Font* pFont = new vcl::Font();
short nFontNo(0), nInsFontNo (0);
OUString sAltNm, sFntNm;
bool bIsAltFntNm = false;
2000-09-18 16:07:07 +00:00
rtl_TextEncoding nSystemChar = lcl_GetDefaultTextEncodingForRTF();
pFont->SetCharSet( nSystemChar );
SetEncoding( nSystemChar );
while( _nOpenBrakets && IsParserWorking() )
2000-09-18 16:07:07 +00:00
{
bool bCheckNewFont = false;
2000-09-18 16:07:07 +00:00
switch( ( nToken = GetNextToken() ))
{
case '}':
bIsAltFntNm = false;
2011-02-16 16:34:02 -05:00
// Style has been completely read,
// so this is still a stable status
if( --_nOpenBrakets <= 1 && IsParserWorking() )
SaveState( RTF_FONTTBL );
bCheckNewFont = true;
nInsFontNo = nFontNo;
break;
case '{':
2000-09-18 16:07:07 +00:00
if( RTF_IGNOREFLAG != GetNextToken() )
nToken = SkipToken( -1 );
2011-02-16 16:34:02 -05:00
// immediately skip unknown and all known but non-evaluated
// groups
2000-09-18 16:07:07 +00:00
else if( RTF_UNKNOWNCONTROL != ( nToken = GetNextToken() ) &&
RTF_PANOSE != nToken && RTF_FNAME != nToken &&
2000-09-18 16:07:07 +00:00
RTF_FONTEMB != nToken && RTF_FONTFILE != nToken )
nToken = SkipToken( -2 );
else
{
2011-02-16 16:34:02 -05:00
// filter out at once
2000-09-18 16:07:07 +00:00
ReadUnknownData();
nToken = GetNextToken();
if( '}' != nToken )
eState = SVPAR_ERROR;
break;
}
++_nOpenBrakets;
break;
case RTF_FROMAN:
pFont->SetFamily( FAMILY_ROMAN );
break;
case RTF_FSWISS:
pFont->SetFamily( FAMILY_SWISS );
break;
case RTF_FMODERN:
pFont->SetFamily( FAMILY_MODERN );
break;
case RTF_FSCRIPT:
pFont->SetFamily( FAMILY_SCRIPT );
break;
case RTF_FDECOR:
pFont->SetFamily( FAMILY_DECORATIVE );
break;
// for technical/symbolic font of the rtl_TextEncoding is changed!
case RTF_FTECH:
pFont->SetCharSet( RTL_TEXTENCODING_SYMBOL );
// deliberate fall through
case RTF_FNIL:
pFont->SetFamily( FAMILY_DONTKNOW );
break;
case RTF_FCHARSET:
if (-1 != nTokenValue)
{
rtl_TextEncoding nrtl_TextEncoding = rtl_getTextEncodingFromWindowsCharset(
(sal_uInt8)nTokenValue);
pFont->SetCharSet(nrtl_TextEncoding);
//When we're in a font, the fontname is in the font
//charset, except for symbol fonts I believe
if (nrtl_TextEncoding == RTL_TEXTENCODING_SYMBOL)
nrtl_TextEncoding = RTL_TEXTENCODING_DONTKNOW;
SetEncoding(nrtl_TextEncoding);
}
break;
case RTF_FPRQ:
switch( nTokenValue )
{
case 1:
pFont->SetPitch( PITCH_FIXED );
break;
case 2:
pFont->SetPitch( PITCH_VARIABLE );
break;
}
break;
case RTF_F:
bCheckNewFont = true;
nInsFontNo = nFontNo;
nFontNo = (short)nTokenValue;
break;
case RTF_FALT:
bIsAltFntNm = true;
break;
case RTF_TEXTTOKEN:
DelCharAtEnd( aToken, ';' );
if ( !aToken.isEmpty() )
2000-09-18 16:07:07 +00:00
{
if( bIsAltFntNm )
sAltNm = aToken;
else
sFntNm = aToken;
2000-09-18 16:07:07 +00:00
}
break;
2000-09-18 16:07:07 +00:00
}
if( bCheckNewFont && 1 >= _nOpenBrakets && !sFntNm.isEmpty() ) // one font is ready
{
2011-02-16 16:34:02 -05:00
// All data from the font is available, so off to the table
if (!sAltNm.isEmpty())
sFntNm = sFntNm + ";" + sAltNm;
pFont->SetName( sFntNm );
aFontTbl.insert( nInsFontNo, pFont );
pFont = new vcl::Font();
pFont->SetCharSet( nSystemChar );
sAltNm.clear();
sFntNm.clear();
}
2000-09-18 16:07:07 +00:00
}
2011-02-16 16:34:02 -05:00
// the last one we have to delete manually
2000-09-18 16:07:07 +00:00
delete pFont;
2011-02-16 16:34:02 -05:00
SkipToken( -1 ); // the closing brace is evaluated "above"
2000-09-18 16:07:07 +00:00
2011-02-16 16:34:02 -05:00
// set the default font in the Document
2000-09-18 16:07:07 +00:00
if( bNewDoc && IsParserWorking() )
SetDefault( RTF_DEFF, nDfltFont );
}
void SvxRTFParser::ReadBitmapData()
{
SvRTFParser::ReadBitmapData();
}
void SvxRTFParser::ReadOLEData()
{
SvRTFParser::ReadOLEData();
}
OUString& SvxRTFParser::GetTextToEndGroup( OUString& rStr )
2000-09-18 16:07:07 +00:00
{
rStr.clear();
int _nOpenBrakets = 1, nToken = 0; // the first was already detected earlier!!
2000-09-18 16:07:07 +00:00
while( _nOpenBrakets && IsParserWorking() )
2000-09-18 16:07:07 +00:00
{
switch( nToken = GetNextToken() )
{
case '}': --_nOpenBrakets; break;
2000-09-18 16:07:07 +00:00
case '{':
{
2000-11-08 15:00:25 +00:00
if( RTF_IGNOREFLAG != GetNextToken() )
nToken = SkipToken( -1 );
else if( RTF_UNKNOWNCONTROL != GetNextToken() )
nToken = SkipToken( -2 );
else
{
2011-02-16 16:34:02 -05:00
// filter out at once
2000-11-08 15:00:25 +00:00
ReadUnknownData();
nToken = GetNextToken();
if( '}' != nToken )
eState = SVPAR_ERROR;
break;
}
++_nOpenBrakets;
2000-09-18 16:07:07 +00:00
}
break;
case RTF_TEXTTOKEN:
rStr += aToken;
break;
}
}
2011-02-16 16:34:02 -05:00
SkipToken( -1 ); // the closing brace is evaluated "above"
2000-09-18 16:07:07 +00:00
return rStr;
}
util::DateTime SvxRTFParser::GetDateTimeStamp( )
2000-09-18 16:07:07 +00:00
{
util::DateTime aDT;
bool bContinue = true;
while( bContinue && IsParserWorking() )
2000-09-18 16:07:07 +00:00
{
int nToken = GetNextToken();
switch( nToken )
2000-09-18 16:07:07 +00:00
{
case RTF_YR: aDT.Year = (sal_uInt16)nTokenValue; break;
case RTF_MO: aDT.Month = (sal_uInt16)nTokenValue; break;
case RTF_DY: aDT.Day = (sal_uInt16)nTokenValue; break;
case RTF_HR: aDT.Hours = (sal_uInt16)nTokenValue; break;
case RTF_MIN: aDT.Minutes = (sal_uInt16)nTokenValue; break;
2000-09-18 16:07:07 +00:00
default:
bContinue = false;
2000-09-18 16:07:07 +00:00
}
}
2011-02-16 16:34:02 -05:00
SkipToken( -1 ); // the closing brace is evaluated "above"
return aDT;
2000-09-18 16:07:07 +00:00
}
void SvxRTFParser::ReadInfo( const sal_Char* pChkForVerNo )
{
int _nOpenBrakets = 1, nToken = 0; // the first was already detected earlier!!
DBG_ASSERT(m_xDocProps.is(),
"SvxRTFParser::ReadInfo: no DocumentProperties");
OUString sStr, sComment;
long nVersNo = 0;
2000-09-18 16:07:07 +00:00
while( _nOpenBrakets && IsParserWorking() )
2000-09-18 16:07:07 +00:00
{
switch( nToken = GetNextToken() )
{
case '}': --_nOpenBrakets; break;
2000-09-18 16:07:07 +00:00
case '{':
{
if( RTF_IGNOREFLAG != GetNextToken() )
nToken = SkipToken( -1 );
else if( RTF_UNKNOWNCONTROL != GetNextToken() )
nToken = SkipToken( -2 );
else
{
2011-02-16 16:34:02 -05:00
// filter out at once
2000-09-18 16:07:07 +00:00
ReadUnknownData();
nToken = GetNextToken();
if( '}' != nToken )
eState = SVPAR_ERROR;
break;
}
++_nOpenBrakets;
2000-09-18 16:07:07 +00:00
}
break;
case RTF_TITLE:
m_xDocProps->setTitle( GetTextToEndGroup( sStr ) );
2000-09-18 16:07:07 +00:00
break;
case RTF_SUBJECT:
m_xDocProps->setSubject( GetTextToEndGroup( sStr ) );
2000-09-18 16:07:07 +00:00
break;
case RTF_AUTHOR:
m_xDocProps->setAuthor( GetTextToEndGroup( sStr ) );
2000-09-18 16:07:07 +00:00
break;
case RTF_OPERATOR:
m_xDocProps->setModifiedBy( GetTextToEndGroup( sStr ) );
2000-09-18 16:07:07 +00:00
break;
case RTF_KEYWORDS:
{
OUString sTemp = GetTextToEndGroup( sStr );
m_xDocProps->setKeywords(
::comphelper::string::convertCommaSeparated(sTemp) );
break;
}
2000-09-18 16:07:07 +00:00
case RTF_DOCCOMM:
m_xDocProps->setDescription( GetTextToEndGroup( sStr ) );
2000-09-18 16:07:07 +00:00
break;
case RTF_HLINKBASE:
sBaseURL = GetTextToEndGroup( sStr ) ;
break;
case RTF_CREATIM:
m_xDocProps->setCreationDate( GetDateTimeStamp() );
2000-09-18 16:07:07 +00:00
break;
case RTF_REVTIM:
m_xDocProps->setModificationDate( GetDateTimeStamp() );
2000-09-18 16:07:07 +00:00
break;
case RTF_PRINTIM:
m_xDocProps->setPrintDate( GetDateTimeStamp() );
2000-09-18 16:07:07 +00:00
break;
case RTF_COMMENT:
GetTextToEndGroup( sComment );
break;
case RTF_BUPTIM:
SkipGroup();
break;
case RTF_VERN:
nVersNo = nTokenValue;
break;
case RTF_EDMINS:
case RTF_ID:
case RTF_VERSION:
case RTF_NOFPAGES:
case RTF_NOFWORDS:
case RTF_NOFCHARS:
NextToken( nToken );
break;
// default:
}
}
if( pChkForVerNo &&
sComment == OUString::createFromAscii( pChkForVerNo ) )
2000-09-18 16:07:07 +00:00
nVersionNo = nVersNo;
2011-02-16 16:34:02 -05:00
SkipToken( -1 ); // the closing brace is evaluated "above"
2000-09-18 16:07:07 +00:00
}
void SvxRTFParser::ClearColorTbl()
{
2010-09-26 20:54:30 +02:00
while ( !aColorTbl.empty() )
{
delete aColorTbl.back();
aColorTbl.pop_back();
}
2000-09-18 16:07:07 +00:00
}
void SvxRTFParser::ClearFontTbl()
{
aFontTbl.clear();
2000-09-18 16:07:07 +00:00
}
void SvxRTFParser::ClearStyleTbl()
{
aStyleTbl.clear();
2000-09-18 16:07:07 +00:00
}
void SvxRTFParser::ClearAttrStack()
{
SvxRTFItemStackType* pTmp;
for( size_t nCnt = aAttrStack.size(); nCnt; --nCnt )
2000-09-18 16:07:07 +00:00
{
pTmp = aAttrStack.back();
aAttrStack.pop_back();
2000-09-18 16:07:07 +00:00
delete pTmp;
}
}
OUString& SvxRTFParser::DelCharAtEnd( OUString& rStr, const sal_Unicode cDel )
2000-09-18 16:07:07 +00:00
{
if( !rStr.isEmpty() && ' ' == rStr[ 0 ])
rStr = comphelper::string::stripStart(rStr, ' ');
if( !rStr.isEmpty() && ' ' == rStr[ rStr.getLength()-1 ])
rStr = comphelper::string::stripEnd(rStr, ' ');
if( !rStr.isEmpty() && cDel == rStr[ rStr.getLength()-1 ])
rStr = rStr.copy( 0, rStr.getLength()-1 );
2000-09-18 16:07:07 +00:00
return rStr;
}
const vcl::Font& SvxRTFParser::GetFont( sal_uInt16 nId )
2000-09-18 16:07:07 +00:00
{
SvxRTFFontTbl::const_iterator it = aFontTbl.find( nId );
const vcl::Font* pFont;
if( it == aFontTbl.end() )
2000-09-18 16:07:07 +00:00
{
const SvxFontItem& rDfltFont = static_cast<const SvxFontItem&>(
pAttrPool->GetDefaultItem( aPlainMap.nFont ));
pDfltFont->SetName( rDfltFont.GetStyleName() );
pDfltFont->SetFamily( rDfltFont.GetFamily() );
2000-09-18 16:07:07 +00:00
pFont = pDfltFont;
}
else
pFont = it->second;
2000-09-18 16:07:07 +00:00
return *pFont;
}
SvxRTFItemStackType* SvxRTFParser::_GetAttrSet( bool const bCopyAttr )
2000-09-18 16:07:07 +00:00
{
2010-11-19 14:24:51 +01:00
SvxRTFItemStackType* pAkt = aAttrStack.empty() ? 0 : aAttrStack.back();
2000-09-18 16:07:07 +00:00
SvxRTFItemStackType* pNew;
if( pAkt )
pNew = new SvxRTFItemStackType( *pAkt, *pInsPos, bCopyAttr );
else
2011-10-29 13:24:48 +02:00
pNew = new SvxRTFItemStackType( *pAttrPool, &aWhichMap[0],
*pInsPos );
pNew->SetRTFDefaults( GetRTFDefaults() );
2000-09-18 16:07:07 +00:00
aAttrStack.push_back( pNew );
bNewGroup = false;
2000-09-18 16:07:07 +00:00
return pNew;
}
void SvxRTFParser::_ClearStyleAttr( SvxRTFItemStackType& rStkType )
{
// check attributes to the attributes of the stylesheet or to
// the default attrs of the document
SfxItemSet &rSet = rStkType.GetAttrSet();
const SfxItemPool& rPool = *rSet.GetPool();
const SfxPoolItem* pItem;
SfxWhichIter aIter( rSet );
if( !IsChkStyleAttr() ||
!rStkType.GetAttrSet().Count() ||
aStyleTbl.count( rStkType.nStyleNo ) == 0 )
2000-09-18 16:07:07 +00:00
{
for( sal_uInt16 nWhich = aIter.GetCurWhich(); nWhich; nWhich = aIter.NextWhich() )
2000-09-18 16:07:07 +00:00
{
if( SFX_WHICH_MAX > nWhich &&
SfxItemState::SET == rSet.GetItemState( nWhich, false, &pItem ) &&
2000-09-18 16:07:07 +00:00
rPool.GetDefaultItem( nWhich ) == *pItem )
2011-02-16 16:34:02 -05:00
rSet.ClearItem( nWhich ); // delete
2000-09-18 16:07:07 +00:00
}
}
else
{
2011-02-16 16:34:02 -05:00
// Delete all Attributes, which are already defined in the Style,
// from the current AttrSet.
SvxRTFStyleType* pStyle = aStyleTbl.find( rStkType.nStyleNo )->second;
2000-09-18 16:07:07 +00:00
SfxItemSet &rStyleSet = pStyle->aAttrSet;
const SfxPoolItem* pSItem;
for( sal_uInt16 nWhich = aIter.GetCurWhich(); nWhich; nWhich = aIter.NextWhich() )
2000-09-18 16:07:07 +00:00
{
if( SfxItemState::SET == rStyleSet.GetItemState( nWhich, true, &pSItem ))
2000-09-18 16:07:07 +00:00
{
if( SfxItemState::SET == rSet.GetItemState( nWhich, false, &pItem )
2000-09-18 16:07:07 +00:00
&& *pItem == *pSItem )
2011-02-16 16:34:02 -05:00
rSet.ClearItem( nWhich ); // delete
2000-09-18 16:07:07 +00:00
}
else if( SFX_WHICH_MAX > nWhich &&
SfxItemState::SET == rSet.GetItemState( nWhich, false, &pItem ) &&
2000-09-18 16:07:07 +00:00
rPool.GetDefaultItem( nWhich ) == *pItem )
2011-02-16 16:34:02 -05:00
rSet.ClearItem( nWhich ); // delete
2000-09-18 16:07:07 +00:00
}
}
}
2011-02-16 16:34:02 -05:00
void SvxRTFParser::AttrGroupEnd() // process the current, delete from Stack
2000-09-18 16:07:07 +00:00
{
if( !aAttrStack.empty() )
2000-09-18 16:07:07 +00:00
{
2010-11-19 14:24:51 +01:00
SvxRTFItemStackType *pOld = aAttrStack.empty() ? 0 : aAttrStack.back();
aAttrStack.pop_back();
2010-11-19 14:24:51 +01:00
SvxRTFItemStackType *pAkt = aAttrStack.empty() ? 0 : aAttrStack.back();
2000-09-18 16:07:07 +00:00
do { // middle check loop
sal_Int32 nOldSttNdIdx = pOld->pSttNd->GetIdx();
2000-09-18 16:07:07 +00:00
if( !pOld->pChildList &&
((!pOld->aAttrSet.Count() && !pOld->nStyleNo ) ||
(nOldSttNdIdx == pInsPos->GetNodeIdx() &&
pOld->nSttCnt == pInsPos->GetCntIdx() )))
2011-02-16 16:34:02 -05:00
break; // no attributes or Area
2000-09-18 16:07:07 +00:00
2011-02-16 16:34:02 -05:00
// set only the attributes that are different from the parent
2000-09-18 16:07:07 +00:00
if( pAkt && pOld->aAttrSet.Count() )
{
SfxItemIter aIter( pOld->aAttrSet );
const SfxPoolItem* pItem = aIter.GetCurItem(), *pGet;
while( true )
2000-09-18 16:07:07 +00:00
{
if( SfxItemState::SET == pAkt->aAttrSet.GetItemState(
pItem->Which(), false, &pGet ) &&
2000-09-18 16:07:07 +00:00
*pItem == *pGet )
pOld->aAttrSet.ClearItem( pItem->Which() );
if( aIter.IsAtEnd() )
break;
pItem = aIter.NextItem();
}
if( !pOld->aAttrSet.Count() && !pOld->pChildList &&
!pOld->nStyleNo )
break;
}
2011-02-16 16:34:02 -05:00
// Set all attributes which have been defined from start until here
bool bCrsrBack = !pInsPos->GetCntIdx();
2000-09-18 16:07:07 +00:00
if( bCrsrBack )
{
2011-02-16 16:34:02 -05:00
// at the beginning of a paragraph? Move back one position
sal_Int32 nNd = pInsPos->GetNodeIdx();
MovePos(false);
2000-09-18 16:07:07 +00:00
// if can not move backward then later dont move forward !
bCrsrBack = nNd != pInsPos->GetNodeIdx();
}
if( ( pOld->pSttNd->GetIdx() < pInsPos->GetNodeIdx() ||
( pOld->pSttNd->GetIdx() == pInsPos->GetNodeIdx() &&
pOld->nSttCnt <= pInsPos->GetCntIdx() ))
)
{
if( !bCrsrBack )
{
2011-02-16 16:34:02 -05:00
// all pard attributes are only valid until the previous
// paragraph !!
2000-09-18 16:07:07 +00:00
if( nOldSttNdIdx == pInsPos->GetNodeIdx() )
{
}
else
{
2011-02-16 16:34:02 -05:00
// Now it gets complicated:
// - all character attributes sre keep the area
// - all paragraph attributes to get the area
// up to the previous paragraph
2000-09-18 16:07:07 +00:00
SvxRTFItemStackType* pNew = new SvxRTFItemStackType(
*pOld, *pInsPos, true );
2000-09-18 16:07:07 +00:00
pNew->aAttrSet.SetParent( pOld->aAttrSet.GetParent() );
2011-02-16 16:34:02 -05:00
// Delete all paragraph attributes from pNew
for( sal_uInt16 n = 0; n < (sizeof(aPardMap) / sizeof(sal_uInt16)) &&
2000-09-18 16:07:07 +00:00
pNew->aAttrSet.Count(); ++n )
if( reinterpret_cast<sal_uInt16*>(&aPardMap)[n] )
pNew->aAttrSet.ClearItem( reinterpret_cast<sal_uInt16*>(&aPardMap)[n] );
pNew->SetRTFDefaults( GetRTFDefaults() );
2000-09-18 16:07:07 +00:00
2011-02-16 16:34:02 -05:00
// Were there any?
2000-09-18 16:07:07 +00:00
if( pNew->aAttrSet.Count() == pOld->aAttrSet.Count() )
2011-02-16 16:34:02 -05:00
delete pNew;
2000-09-18 16:07:07 +00:00
else
{
pNew->nStyleNo = 0;
2011-02-16 16:34:02 -05:00
// Now span the real area of pNew from old
2000-09-18 16:07:07 +00:00
SetEndPrevPara( pOld->pEndNd, pOld->nEndCnt );
pNew->nSttCnt = 0;
if( IsChkStyleAttr() )
{
2000-09-18 16:07:07 +00:00
_ClearStyleAttr( *pOld );
_ClearStyleAttr( *pNew ); //#i10381#, methinks.
}
2000-09-18 16:07:07 +00:00
if( pAkt )
{
pAkt->Add( pOld );
pAkt->Add( pNew );
}
else
{
2011-02-16 16:34:02 -05:00
// Last off the stack, thus cache it until the next text was
// read. (Span no attributes!)
aAttrSetList.push_back( pOld );
aAttrSetList.push_back( pNew );
2000-09-18 16:07:07 +00:00
}
2011-02-16 16:34:02 -05:00
pOld = 0; // Do not delete pOld
break;
2000-09-18 16:07:07 +00:00
}
}
}
pOld->pEndNd = pInsPos->MakeNodeIdx();
pOld->nEndCnt = pInsPos->GetCntIdx();
/*
#i21422#
If the parent (pAkt) sets something e.g. , and the child (pOld)
unsets it and the style both are based on has it unset then
clearing the pOld by looking at the style is clearly a disaster
as the text ends up with pAkts bold and not pOlds no bold, this
should be rethought out. For the moment its safest to just do
the clean if we have no parent, all we suffer is too many
redundant properties.
*/
if (IsChkStyleAttr() && !pAkt)
_ClearStyleAttr( *pOld );
2000-09-18 16:07:07 +00:00
if( pAkt )
{
2000-09-18 16:07:07 +00:00
pAkt->Add( pOld );
// split up and create new entry, because it make no sense
// to create a "so long" depend list. Bug 95010
if( bCrsrBack && 50 < pAkt->pChildList->size() )
{
2011-02-16 16:34:02 -05:00
// at the beginning of a paragraph? Move back one position
MovePos(true);
bCrsrBack = false;
2011-02-16 16:34:02 -05:00
// Open a new Group.
SvxRTFItemStackType* pNew = new SvxRTFItemStackType(
*pAkt, *pInsPos, true );
pNew->SetRTFDefaults( GetRTFDefaults() );
2011-02-16 16:34:02 -05:00
// Set all until here valid Attributes
AttrGroupEnd();
2010-11-19 14:24:51 +01:00
pAkt = aAttrStack.empty() ? 0 : aAttrStack.back(); // can be changed after AttrGroupEnd!
pNew->aAttrSet.SetParent( pAkt ? &pAkt->aAttrSet : 0 );
aAttrStack.push_back( pNew );
pAkt = pNew;
}
}
2000-09-18 16:07:07 +00:00
else
2011-02-16 16:34:02 -05:00
// Last off the stack, thus cache it until the next text was
// read. (Span no attributes!)
aAttrSetList.push_back( pOld );
2000-09-18 16:07:07 +00:00
pOld = 0;
}
if( bCrsrBack )
2011-02-16 16:34:02 -05:00
// at the beginning of a paragraph? Move back one position
MovePos(true);
2000-09-18 16:07:07 +00:00
} while( false );
2000-09-18 16:07:07 +00:00
delete pOld;
2000-09-18 16:07:07 +00:00
bNewGroup = false;
2000-09-18 16:07:07 +00:00
}
}
void SvxRTFParser::SetAllAttrOfStk() // end all Attr. and set it into doc
{
// repeat until all attributes will be taken from stack
while( !aAttrStack.empty() )
2000-09-18 16:07:07 +00:00
AttrGroupEnd();
for( sal_uInt16 n = aAttrSetList.size(); n; )
2000-09-18 16:07:07 +00:00
{
SvxRTFItemStackType* pStkSet = &aAttrSetList[--n];
2000-09-18 16:07:07 +00:00
SetAttrSet( *pStkSet );
aAttrSetList.pop_back();
2000-09-18 16:07:07 +00:00
}
}
2011-02-16 16:34:02 -05:00
// sets all the attributes that are different from the current
2000-09-18 16:07:07 +00:00
void SvxRTFParser::SetAttrSet( SvxRTFItemStackType &rSet )
{
2011-02-16 16:34:02 -05:00
// Was DefTab never read? then set to default
2000-09-18 16:07:07 +00:00
if( !bIsSetDfltTab )
SetDefault( RTF_DEFTAB, 720 );
if( rSet.pChildList )
rSet.Compress( *this );
if( rSet.aAttrSet.Count() || rSet.nStyleNo )
SetAttrInDoc( rSet );
2011-02-16 16:34:02 -05:00
// then process all the children
2000-09-18 16:07:07 +00:00
if( rSet.pChildList )
for( size_t n = 0; n < rSet.pChildList->size(); ++n )
SetAttrSet( (*rSet.pChildList)[ n ] );
2000-09-18 16:07:07 +00:00
}
// Has no text been inserted yet? (SttPos from the top Stack entry!)
bool SvxRTFParser::IsAttrSttPos()
2000-09-18 16:07:07 +00:00
{
2010-11-19 14:24:51 +01:00
SvxRTFItemStackType* pAkt = aAttrStack.empty() ? 0 : aAttrStack.back();
2000-09-18 16:07:07 +00:00
return !pAkt || (pAkt->pSttNd->GetIdx() == pInsPos->GetNodeIdx() &&
pAkt->nSttCnt == pInsPos->GetCntIdx());
}
void SvxRTFParser::SetAttrInDoc( SvxRTFItemStackType & )
{
}
void SvxRTFParser::BuildWhichTable()
2000-09-18 16:07:07 +00:00
{
2011-10-29 13:24:48 +02:00
aWhichMap.clear();
aWhichMap.push_back( 0 );
2000-09-18 16:07:07 +00:00
// Building a Which-Map 'rWhichMap' from an array of
// 'pWhichIds' from Which-Ids. It has the long 'nWhichIds'.
2011-02-16 16:34:02 -05:00
// The Which-Map is not going to be deleted.
SvParser::BuildWhichTable( aWhichMap, reinterpret_cast<sal_uInt16*>(&aPardMap), sizeof(aPardMap) / sizeof(sal_uInt16) );
SvParser::BuildWhichTable( aWhichMap, reinterpret_cast<sal_uInt16*>(&aPlainMap), sizeof(aPlainMap) / sizeof(sal_uInt16) );
2000-09-18 16:07:07 +00:00
}
const SfxItemSet& SvxRTFParser::GetRTFDefaults()
{
if( !pRTFDefaults )
{
2011-10-29 13:24:48 +02:00
pRTFDefaults = new SfxItemSet( *pAttrPool, &aWhichMap[0] );
sal_uInt16 nId;
if( 0 != ( nId = aPardMap.nScriptSpace ))
{
SvxScriptSpaceItem aItem( false, nId );
if( bNewDoc )
pAttrPool->SetPoolDefaultItem( aItem );
else
pRTFDefaults->Put( aItem );
}
}
return *pRTFDefaults;
}
2000-09-18 16:07:07 +00:00
SvxRTFStyleType::SvxRTFStyleType( SfxItemPool& rPool, const sal_uInt16* pWhichRange )
2000-09-18 16:07:07 +00:00
: aAttrSet( rPool, pWhichRange )
{
Merge commit 'ooo/DEV300_m101' into integration/dev300_m101 Conflicts: avmedia/inc/avmedia/mediaitem.hxx avmedia/prj/build.lst avmedia/source/framework/mediaitem.cxx avmedia/source/gstreamer/gstcommon.hxx avmedia/source/gstreamer/gstframegrabber.cxx avmedia/source/gstreamer/gstframegrabber.hxx avmedia/source/gstreamer/gstmanager.cxx avmedia/source/gstreamer/gstmanager.hxx avmedia/source/gstreamer/gstplayer.cxx avmedia/source/gstreamer/gstplayer.hxx avmedia/source/gstreamer/gstuno.cxx avmedia/source/gstreamer/gstwindow.cxx avmedia/source/gstreamer/gstwindow.hxx avmedia/source/gstreamer/makefile.mk avmedia/source/quicktime/quicktimeuno.cxx avmedia/source/viewer/mediawindow.cxx avmedia/source/viewer/mediawindow_impl.cxx avmedia/source/viewer/mediawindow_impl.hxx avmedia/source/viewer/mediawindowbase_impl.cxx avmedia/source/win/winuno.cxx basic/inc/basic/basmgr.hxx basic/inc/basic/mybasic.hxx basic/inc/basic/process.hxx basic/inc/basic/sbmeth.hxx basic/inc/basic/sbmod.hxx basic/inc/basic/sbxdef.hxx basic/inc/basic/sbxvar.hxx basic/source/app/app.cxx basic/source/app/app.hxx basic/source/app/appbased.cxx basic/source/app/appedit.cxx basic/source/app/appwin.cxx basic/source/app/appwin.hxx basic/source/app/brkpnts.cxx basic/source/app/brkpnts.hxx basic/source/app/dialogs.cxx basic/source/app/dialogs.hxx basic/source/app/msgedit.cxx basic/source/app/mybasic.cxx basic/source/app/process.cxx basic/source/app/processw.hxx basic/source/app/textedit.cxx basic/source/basmgr/basicmanagerrepository.cxx basic/source/basmgr/basmgr.cxx basic/source/classes/disas.cxx basic/source/classes/eventatt.cxx basic/source/classes/image.cxx basic/source/classes/sb.cxx basic/source/classes/sbunoobj.cxx basic/source/classes/sbxmod.cxx basic/source/comp/codegen.cxx basic/source/comp/dim.cxx basic/source/comp/exprgen.cxx basic/source/comp/exprnode.cxx basic/source/comp/exprtree.cxx basic/source/comp/sbcomp.cxx basic/source/inc/expr.hxx basic/source/inc/object.hxx basic/source/inc/sbunoobj.hxx basic/source/runtime/dllmgr-x86.cxx basic/source/runtime/iosys.cxx basic/source/runtime/makefile.mk basic/source/runtime/methods.cxx basic/source/runtime/methods1.cxx basic/source/runtime/runtime.cxx basic/source/runtime/stdobj.cxx basic/source/runtime/step0.cxx basic/source/runtime/step1.cxx basic/source/runtime/step2.cxx basic/source/sbx/sbxarray.cxx basic/source/sbx/sbxbase.cxx basic/source/sbx/sbxbool.cxx basic/source/sbx/sbxbyte.cxx basic/source/sbx/sbxcoll.cxx basic/source/sbx/sbxconv.hxx basic/source/sbx/sbxcurr.cxx basic/source/sbx/sbxexec.cxx basic/source/sbx/sbxint.cxx basic/source/sbx/sbxobj.cxx basic/source/sbx/sbxscan.cxx basic/source/sbx/sbxstr.cxx basic/source/sbx/sbxvals.cxx basic/source/sbx/sbxvalue.cxx basic/source/sbx/sbxvar.cxx basic/workben/mgrtest.cxx configmgr/prj/build.lst configmgr/source/access.cxx configmgr/source/configurationprovider.cxx configmgr/source/defaultprovider.cxx configmgr/source/pad.cxx configmgr/source/services.cxx configmgr/source/update.cxx configmgr/source/xmlreader.cxx configmgr/source/xmlreader.hxx connectivity/prj/build.lst connectivity/qa/complex/connectivity/TestCase.java connectivity/source/cpool/Zregistration.cxx connectivity/source/drivers/adabas/Bservices.cxx connectivity/source/drivers/ado/Aservices.cxx connectivity/source/drivers/calc/Cservices.cxx connectivity/source/drivers/calc/makefile.mk connectivity/source/drivers/dbase/DIndex.cxx connectivity/source/drivers/dbase/DIndexIter.cxx connectivity/source/drivers/dbase/DNoException.cxx connectivity/source/drivers/dbase/DTable.cxx connectivity/source/drivers/dbase/Dservices.cxx connectivity/source/drivers/dbase/dindexnode.cxx connectivity/source/drivers/evoab/LNoException.cxx connectivity/source/drivers/evoab/LServices.cxx connectivity/source/drivers/evoab2/NServices.cxx connectivity/source/drivers/file/FNoException.cxx connectivity/source/drivers/file/FPreparedStatement.cxx connectivity/source/drivers/file/FResultSet.cxx connectivity/source/drivers/file/FStatement.cxx connectivity/source/drivers/file/quotedstring.cxx connectivity/source/drivers/flat/ETable.cxx connectivity/source/drivers/flat/Eservices.cxx connectivity/source/drivers/hsqldb/Hservices.cxx connectivity/source/drivers/jdbc/jservices.cxx connectivity/source/drivers/kab/KServices.cxx connectivity/source/drivers/macab/MacabServices.cxx connectivity/source/drivers/mozab/MResultSet.cxx connectivity/source/drivers/mozab/bootstrap/MNSFolders.cxx connectivity/source/drivers/mozab/bootstrap/MNSProfileDiscover.cxx connectivity/source/drivers/mysql/Yservices.cxx connectivity/source/drivers/odbc/OFunctions.cxx connectivity/source/drivers/odbc/oservices.cxx connectivity/source/inc/dbase/DIndexPage.hxx connectivity/source/inc/file/FTable.hxx connectivity/source/manager/mregistration.cxx connectivity/source/parse/PColumn.cxx desktop/prj/build.lst desktop/qa/deployment_misc/test_dp_version.cxx desktop/source/app/app.cxx desktop/source/app/appfirststart.cxx desktop/source/app/cmdlineargs.cxx desktop/source/app/cmdlineargs.hxx desktop/source/app/sofficemain.cxx desktop/source/deployment/gui/dp_gui.hrc desktop/source/deployment/gui/dp_gui_dialog2.cxx desktop/source/deployment/gui/dp_gui_dialog2.hxx desktop/source/deployment/gui/dp_gui_updatedialog.cxx desktop/source/deployment/gui/dp_gui_updatedialog.hxx desktop/source/deployment/manager/dp_extensionmanager.cxx desktop/source/deployment/manager/dp_extensionmanager.hxx desktop/source/deployment/misc/dp_misc.src desktop/source/deployment/registry/component/dp_component.cxx desktop/source/deployment/registry/configuration/dp_configuration.cxx desktop/source/deployment/registry/dp_backend.cxx desktop/source/deployment/registry/help/dp_help.cxx desktop/source/deployment/registry/script/dp_script.cxx desktop/source/migration/pages.cxx desktop/source/migration/pages.hxx desktop/source/migration/wizard.cxx desktop/source/migration/wizard.hrc desktop/source/migration/wizard.hxx desktop/source/migration/wizard.src desktop/source/pkgchk/unopkg/unopkg_shared.h desktop/source/so_comp/services.cxx desktop/source/splash/makefile.mk desktop/source/splash/services_spl.cxx desktop/source/splash/splash.cxx drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx editeng/inc/editeng/adjitem.hxx editeng/inc/editeng/bolnitem.hxx editeng/inc/editeng/borderline.hxx editeng/inc/editeng/boxitem.hxx editeng/inc/editeng/brkitem.hxx editeng/inc/editeng/brshitem.hxx editeng/inc/editeng/bulitem.hxx editeng/inc/editeng/charreliefitem.hxx editeng/inc/editeng/charrotateitem.hxx editeng/inc/editeng/charscaleitem.hxx editeng/inc/editeng/cmapitem.hxx editeng/inc/editeng/colritem.hxx editeng/inc/editeng/crsditem.hxx editeng/inc/editeng/editdata.hxx editeng/inc/editeng/editeng.hxx editeng/inc/editeng/editobj.hxx editeng/inc/editeng/editstat.hxx editeng/inc/editeng/editview.hxx editeng/inc/editeng/emphitem.hxx editeng/inc/editeng/escpitem.hxx editeng/inc/editeng/fhgtitem.hxx editeng/inc/editeng/flstitem.hxx editeng/inc/editeng/fontitem.hxx editeng/inc/editeng/frmdiritem.hxx editeng/inc/editeng/fwdtitem.hxx editeng/inc/editeng/hyznitem.hxx editeng/inc/editeng/kernitem.hxx editeng/inc/editeng/langitem.hxx editeng/inc/editeng/lrspitem.hxx editeng/inc/editeng/lspcitem.hxx editeng/inc/editeng/numitem.hxx editeng/inc/editeng/outliner.hxx editeng/inc/editeng/paravertalignitem.hxx editeng/inc/editeng/pmdlitem.hxx editeng/inc/editeng/postitem.hxx editeng/inc/editeng/protitem.hxx editeng/inc/editeng/shaditem.hxx editeng/inc/editeng/sizeitem.hxx editeng/inc/editeng/svxacorr.hxx editeng/inc/editeng/svxfont.hxx editeng/inc/editeng/svxrtf.hxx editeng/inc/editeng/swafopt.hxx editeng/inc/editeng/tstpitem.hxx editeng/inc/editeng/twolinesitem.hxx editeng/inc/editeng/txtrange.hxx editeng/inc/editeng/udlnitem.hxx editeng/inc/editeng/ulspitem.hxx editeng/inc/editeng/wghtitem.hxx editeng/inc/editeng/writingmodeitem.hxx editeng/inc/editeng/xmlcnitm.hxx editeng/inc/helpid.hrc editeng/inc/pch/precompiled_editeng.hxx editeng/source/editeng/editdbg.cxx editeng/source/editeng/editdoc.cxx editeng/source/editeng/editdoc.hxx editeng/source/editeng/editdoc2.cxx editeng/source/editeng/editeng.cxx editeng/source/editeng/editobj.cxx editeng/source/editeng/editobj2.hxx editeng/source/editeng/editsel.cxx editeng/source/editeng/editundo.cxx editeng/source/editeng/editundo.hxx editeng/source/editeng/editview.cxx editeng/source/editeng/edtspell.hxx editeng/source/editeng/eehtml.cxx editeng/source/editeng/eehtml.hxx editeng/source/editeng/eeobj.cxx editeng/source/editeng/eerdll.cxx editeng/source/editeng/eertfpar.cxx editeng/source/editeng/impedit.cxx editeng/source/editeng/impedit.hxx editeng/source/editeng/impedit2.cxx editeng/source/editeng/impedit3.cxx editeng/source/editeng/impedit4.cxx editeng/source/editeng/impedit5.cxx editeng/source/editeng/makefile.mk editeng/source/items/bulitem.cxx editeng/source/items/charhiddenitem.cxx editeng/source/items/flditem.cxx editeng/source/items/frmitems.cxx editeng/source/items/makefile.mk editeng/source/items/numitem.cxx editeng/source/items/paraitem.cxx editeng/source/items/svxfont.cxx editeng/source/items/textitem.cxx editeng/source/items/writingmodeitem.cxx editeng/source/items/xmlcnitm.cxx editeng/source/misc/SvXMLAutoCorrectImport.cxx editeng/source/misc/svxacorr.cxx editeng/source/misc/txtrange.cxx editeng/source/misc/unolingu.cxx editeng/source/outliner/outleeng.cxx editeng/source/outliner/outliner.cxx editeng/source/outliner/outlundo.hxx editeng/source/outliner/outlvw.cxx editeng/source/outliner/paralist.cxx editeng/source/outliner/paralist.hxx editeng/source/rtf/rtfgrf.cxx editeng/source/rtf/rtfitem.cxx editeng/source/rtf/svxrtf.cxx editeng/source/uno/unoipset.cxx editeng/util/makefile.mk embeddedobj/prj/build.lst embeddedobj/source/commonembedding/miscobj.cxx eventattacher/prj/build.lst fileaccess/source/FileAccess.cxx formula/inc/formula/FormulaCompiler.hxx formula/inc/formula/token.hxx formula/inc/formula/tokenarray.hxx formula/source/core/api/FormulaCompiler.cxx formula/source/core/api/token.cxx formula/source/ui/dlg/FormulaHelper.cxx formula/source/ui/dlg/formula.cxx formula/source/ui/dlg/parawin.cxx formula/source/ui/dlg/structpg.cxx fpicker/prj/d.lst fpicker/source/aqua/FPentry.cxx fpicker/source/office/OfficeControlAccess.cxx fpicker/source/office/iodlg.cxx fpicker/source/office/iodlg.hxx fpicker/source/office/iodlg.src fpicker/source/office/iodlgimp.cxx fpicker/source/unx/gnome/FPentry.cxx fpicker/source/unx/gnome/SalGtkFilePicker.cxx fpicker/source/unx/gnome/SalGtkPicker.cxx fpicker/source/unx/kde4/KDE4FPEntry.cxx fpicker/source/win32/filepicker/FPentry.cxx framework/AllLangResTarget_fwe.mk framework/inc/dispatch/interaction.hxx framework/inc/framework/addonmenu.hxx framework/inc/framework/addonsoptions.hxx framework/inc/framework/bmkmenu.hxx framework/inc/framework/imageproducer.hxx framework/inc/framework/sfxhelperfunctions.hxx framework/inc/framework/statusbarconfiguration.hxx framework/inc/framework/titlehelper.hxx framework/inc/framework/toolboxconfiguration.hxx framework/inc/threadhelp/lockhelper.hxx framework/inc/xml/eventsdocumenthandler.hxx framework/inc/xml/statusbardocumenthandler.hxx framework/inc/xml/toolboxconfiguration.hxx framework/inc/xml/toolboxconfigurationdefines.hxx framework/inc/xml/toolboxdocumenthandler.hxx framework/prj/build.lst framework/qa/complex/ModuleManager/makefile.mk framework/qa/complex/accelerators/makefile.mk framework/qa/complex/framework/recovery/makefile.mk framework/qa/complex/imageManager/_XInitialization.java framework/source/classes/menumanager.cxx framework/source/dispatch/interaction.cxx framework/source/fwe/classes/bmkmenu.cxx framework/source/fwe/helper/actiontriggerhelper.cxx framework/source/fwe/helper/imageproducer.cxx framework/source/fwe/xml/menuconfiguration.cxx framework/source/fwe/xml/toolboxdocumenthandler.cxx framework/source/helper/uiconfigelementwrapperbase.cxx framework/source/helper/uielementwrapperbase.cxx framework/source/inc/pattern/window.hxx framework/source/jobs/jobdata.cxx framework/source/layoutmanager/layoutmanager.cxx framework/source/layoutmanager/panel.hxx framework/source/loadenv/loadenv.cxx framework/source/register/registerservices.cxx framework/source/services/menudocumenthandler.cxx framework/source/uiconfiguration/moduleuiconfigurationmanager.cxx framework/source/uiconfiguration/uiconfigurationmanager.cxx framework/source/uiconfiguration/uiconfigurationmanagerimpl.cxx framework/source/uielement/addonstoolbarmanager.cxx framework/source/uielement/controlmenucontroller.cxx framework/source/uielement/fontsizemenucontroller.cxx framework/source/uielement/imagebuttontoolbarcontroller.cxx framework/source/uielement/macrosmenucontroller.cxx framework/source/uielement/menubarmanager.cxx framework/source/uielement/newmenucontroller.cxx framework/source/uielement/togglebuttontoolbarcontroller.cxx framework/source/uielement/toolbarmanager.cxx framework/source/uielement/toolbarsmenucontroller.cxx framework/test/makefile.mk framework/test/threadtest/makefile.mk framework/test/typecfg/makefile.mk framework/util/guiapps/makefile.mk framework/util/makefile.mk idl/inc/bastype.hxx idl/inc/hash.hxx idl/inc/lex.hxx idl/inc/module.hxx idl/inc/object.hxx idl/inc/slot.hxx idl/inc/types.hxx idl/source/cmptools/hash.cxx idl/source/cmptools/lex.cxx idl/source/objects/basobj.cxx idl/source/objects/bastype.cxx idl/source/objects/module.cxx idl/source/objects/object.cxx idl/source/objects/slot.cxx idl/source/objects/types.cxx idl/source/prj/command.cxx idl/source/prj/database.cxx idl/source/prj/globals.cxx idl/source/prj/svidl.cxx linguistic/inc/linguistic/misc.hxx linguistic/prj/build.lst linguistic/source/convdic.cxx linguistic/source/convdiclist.cxx linguistic/source/dicimp.cxx linguistic/source/dlistimp.cxx linguistic/source/gciterator.cxx linguistic/source/iprcache.cxx linguistic/source/lngopt.cxx linguistic/source/lngprophelp.cxx linguistic/source/lngsvcmgr.cxx linguistic/source/lngsvcmgr.hxx linguistic/source/misc2.cxx linguistic/workben/sprophelp.cxx officecfg/registry/data/org/openoffice/VCL.xcu officecfg/util/makefile.mk oovbaapi/ooo/vba/XApplicationBase.idl oovbaapi/ooo/vba/XVBAAppService.idl oovbaapi/ooo/vba/XVBADocService.idl oovbaapi/ooo/vba/excel/XApplication.idl oovbaapi/ooo/vba/excel/XRange.idl oovbaapi/ooo/vba/excel/XWorkbook.idl oovbaapi/ooo/vba/excel/XWorksheet.idl oovbaapi/ooo/vba/word/XApplication.idl oovbaapi/ooo/vba/word/XGlobals.idl oovbaapi/ooo/vba/word/XTableOfContents.idl readlicense_oo/prj/build.lst scripting/prj/build.lst scripting/prj/d.lst scripting/source/basprov/basprov.cxx scripting/source/basprov/basscript.cxx scripting/source/basprov/basscript.hxx scripting/source/dlgprov/dlgprov.cxx scripting/source/inc/util/util.hxx scripting/source/protocolhandler/scripthandler.cxx scripting/source/provider/ProviderCache.cxx scripting/source/pyprov/makefile.mk scripting/source/runtimemgr/ScriptNameResolverImpl.cxx scripting/source/runtimemgr/ScriptRuntimeManager.cxx scripting/source/runtimemgr/StorageBridge.cxx scripting/source/storage/ScriptMetadataImporter.cxx scripting/source/storage/ScriptSecurityManager.cxx scripting/source/storage/ScriptStorage.cxx scripting/source/storage/ScriptStorageManager.cxx sfx2/inc/about.hxx sfx2/inc/brokenpackageint.hxx sfx2/inc/docvor.hxx sfx2/inc/pch/precompiled_sfx2.hxx sfx2/inc/sfx2/app.hxx sfx2/inc/sfx2/basmgr.hxx sfx2/inc/sfx2/bindings.hxx sfx2/inc/sfx2/childwin.hxx sfx2/inc/sfx2/ctrlitem.hxx sfx2/inc/sfx2/dinfdlg.hxx sfx2/inc/sfx2/dispatch.hxx sfx2/inc/sfx2/docfilt.hxx sfx2/inc/sfx2/evntconf.hxx sfx2/inc/sfx2/fcontnr.hxx sfx2/inc/sfx2/frame.hxx sfx2/inc/sfx2/imagemgr.hxx sfx2/inc/sfx2/imgmgr.hxx sfx2/inc/sfx2/linksrc.hxx sfx2/inc/sfx2/macrconf.hxx sfx2/inc/sfx2/macropg.hxx sfx2/inc/sfx2/mnuitem.hxx sfx2/inc/sfx2/mnumgr.hxx sfx2/inc/sfx2/module.hxx sfx2/inc/sfx2/msg.hxx sfx2/inc/sfx2/objsh.hxx sfx2/inc/sfx2/passwd.hxx sfx2/inc/sfx2/prnmon.hxx sfx2/inc/sfx2/request.hxx sfx2/inc/sfx2/sfx.hrc sfx2/inc/sfx2/sfxbasemodel.hxx sfx2/inc/sfx2/sfxhtml.hxx sfx2/inc/sfx2/sfxresid.hxx sfx2/inc/sfx2/sfxsids.hrc sfx2/inc/sfx2/sfxuno.hxx sfx2/inc/sfx2/shell.hxx sfx2/inc/sfx2/stbitem.hxx sfx2/inc/sfx2/styfitem.hxx sfx2/inc/sfx2/tabdlg.hxx sfx2/inc/sfx2/tbxctrl.hxx sfx2/inc/sfx2/tplpitem.hxx sfx2/inc/sfx2/viewfrm.hxx sfx2/inc/sfx2/viewsh.hxx sfx2/inc/sfxbasic.hxx sfx2/inc/sorgitm.hxx sfx2/prj/build.lst sfx2/qa/complex/docinfo/makefile.mk sfx2/qa/cppunit/makefile.mk sfx2/sdi/makefile.mk sfx2/source/appl/app.cxx sfx2/source/appl/app.hrc sfx2/source/appl/app.src sfx2/source/appl/appbas.cxx sfx2/source/appl/appcfg.cxx sfx2/source/appl/appchild.cxx sfx2/source/appl/appmain.cxx sfx2/source/appl/appmisc.cxx sfx2/source/appl/appopen.cxx sfx2/source/appl/appquit.cxx sfx2/source/appl/appserv.cxx sfx2/source/appl/appuno.cxx sfx2/source/appl/childwin.cxx sfx2/source/appl/fileobj.cxx sfx2/source/appl/helpinterceptor.cxx sfx2/source/appl/imagemgr.cxx sfx2/source/appl/impldde.cxx sfx2/source/appl/impldde.hxx sfx2/source/appl/linkmgr2.cxx sfx2/source/appl/lnkbase2.cxx sfx2/source/appl/makefile.mk sfx2/source/appl/module.cxx sfx2/source/appl/newhelp.cxx sfx2/source/appl/opengrf.cxx sfx2/source/appl/sfxdll.cxx sfx2/source/appl/sfxhelp.cxx sfx2/source/appl/shutdownicon.cxx sfx2/source/appl/shutdowniconunx.cxx sfx2/source/appl/workwin.cxx sfx2/source/bastyp/fltfnc.cxx sfx2/source/bastyp/frmhtml.cxx sfx2/source/bastyp/frmhtmlw.cxx sfx2/source/bastyp/helper.cxx sfx2/source/bastyp/minarray.cxx sfx2/source/bastyp/progress.cxx sfx2/source/bastyp/sfxhtml.cxx sfx2/source/config/evntconf.cxx sfx2/source/control/bindings.cxx sfx2/source/control/ctrlitem.cxx sfx2/source/control/dispatch.cxx sfx2/source/control/macrconf.cxx sfx2/source/control/macro.cxx sfx2/source/control/makefile.mk sfx2/source/control/minfitem.cxx sfx2/source/control/msg.cxx sfx2/source/control/msgpool.cxx sfx2/source/control/objface.cxx sfx2/source/control/request.cxx sfx2/source/control/shell.cxx sfx2/source/control/sorgitm.cxx sfx2/source/dialog/about.cxx sfx2/source/dialog/basedlgs.cxx sfx2/source/dialog/dinfdlg.cxx sfx2/source/dialog/dinfedt.cxx sfx2/source/dialog/dockwin.cxx sfx2/source/dialog/filedlghelper.cxx sfx2/source/dialog/mailmodel.cxx sfx2/source/dialog/mailmodelapi.cxx sfx2/source/dialog/makefile.mk sfx2/source/dialog/mgetempl.cxx sfx2/source/dialog/passwd.cxx sfx2/source/dialog/passwd.hrc sfx2/source/dialog/printopt.cxx sfx2/source/dialog/securitypage.cxx sfx2/source/dialog/splitwin.cxx sfx2/source/dialog/styfitem.cxx sfx2/source/dialog/tabdlg.cxx sfx2/source/dialog/taskpane.cxx sfx2/source/dialog/templdlg.cxx sfx2/source/dialog/tplpitem.cxx sfx2/source/dialog/versdlg.cxx sfx2/source/doc/QuerySaveDocument.cxx sfx2/source/doc/SfxDocumentMetaData.cxx sfx2/source/doc/applet.cxx sfx2/source/doc/doc.hrc sfx2/source/doc/doc.src sfx2/source/doc/docfile.cxx sfx2/source/doc/docinf.cxx sfx2/source/doc/doctempl.cxx sfx2/source/doc/doctemplates.cxx sfx2/source/doc/docvor.cxx sfx2/source/doc/guisaveas.cxx sfx2/source/doc/makefile.mk sfx2/source/doc/objcont.cxx sfx2/source/doc/objitem.cxx sfx2/source/doc/objmisc.cxx sfx2/source/doc/objserv.cxx sfx2/source/doc/printhelper.cxx sfx2/source/doc/sfxacldetect.cxx sfx2/source/doc/sfxbasemodel.cxx sfx2/source/inc/applet.hxx sfx2/source/inc/fltoptint.hxx sfx2/source/inc/sfxlocal.hrc sfx2/source/inc/virtmenu.hxx sfx2/source/inc/workwin.hxx sfx2/source/menu/mnuitem.cxx sfx2/source/menu/objmnctl.cxx sfx2/source/menu/virtmenu.cxx sfx2/source/notify/eventsupplier.cxx sfx2/source/notify/makefile.mk sfx2/source/toolbox/imgmgr.cxx sfx2/source/toolbox/tbxitem.cxx sfx2/source/view/frame.cxx sfx2/source/view/orgmgr.cxx sfx2/source/view/printer.cxx sfx2/source/view/prnmon.cxx sfx2/source/view/viewfrm.cxx sfx2/source/view/viewprn.cxx sfx2/source/view/viewsh.cxx sfx2/util/makefile.mk sfx2/workben/custompanel/makefile.mk shell/source/backends/desktopbe/desktopbackend.cxx shell/source/backends/gconfbe/gconfbackend.cxx shell/source/backends/kde4be/kde4backend.cxx shell/source/backends/kdebe/kdebackend.cxx shell/source/win32/SysShentry.cxx shell/source/win32/shlxthandler/propsheets/propsheets.cxx shell/source/win32/simplemail/smplmailentry.cxx svx/inc/float3d.hrc svx/inc/fmhelp.hrc svx/inc/globlmn_tmpl.hrc svx/inc/helpid.hrc svx/inc/pch/precompiled_svx.hxx svx/inc/sjctrl.hxx svx/inc/srchitem.hxx svx/inc/svdibrow.hxx svx/inc/svx/SmartTagItem.hxx svx/inc/svx/algitem.hxx svx/inc/svx/camera3d.hxx svx/inc/svx/chrtitem.hxx svx/inc/svx/clipfmtitem.hxx svx/inc/svx/ctredlin.hxx svx/inc/svx/dbtoolsclient.hxx svx/inc/svx/deflt3d.hxx svx/inc/svx/dialogs.hrc svx/inc/svx/drawitem.hxx svx/inc/svx/e3ditem.hxx svx/inc/svx/extrud3d.hxx svx/inc/svx/flagsdef.hxx svx/inc/svx/float3d.hxx svx/inc/svx/frmsel.hxx svx/inc/svx/gallery.hxx svx/inc/svx/gallery1.hxx svx/inc/svx/galtheme.hxx svx/inc/svx/grfcrop.hxx svx/inc/svx/hdft.hxx svx/inc/svx/hlnkitem.hxx svx/inc/svx/hyprlink.hxx svx/inc/svx/itemwin.hxx svx/inc/svx/lathe3d.hxx svx/inc/svx/linkwarn.hxx svx/inc/svx/modctrl.hxx svx/inc/svx/msdffdef.hxx svx/inc/svx/obj3d.hxx svx/inc/svx/optgenrl.hxx svx/inc/svx/optgrid.hxx svx/inc/svx/pageitem.hxx svx/inc/svx/paraprev.hxx svx/inc/svx/postattr.hxx svx/inc/svx/rotmodit.hxx svx/inc/svx/ruler.hxx svx/inc/svx/rulritem.hxx svx/inc/svx/scene3d.hxx svx/inc/svx/sdasaitm.hxx svx/inc/svx/sdasitm.hxx svx/inc/svx/sdggaitm.hxx svx/inc/svx/sdmetitm.hxx svx/inc/svx/sdtaaitm.hxx svx/inc/svx/sdtaditm.hxx svx/inc/svx/sdtaitm.hxx svx/inc/svx/sdtakitm.hxx svx/inc/svx/sdtfchim.hxx svx/inc/svx/sdtfsitm.hxx svx/inc/svx/srchdlg.hxx svx/inc/svx/svddrag.hxx svx/inc/svx/svdetc.hxx svx/inc/svx/svdglue.hxx svx/inc/svx/svdhlpln.hxx svx/inc/svx/svdlayer.hxx svx/inc/svx/svdmark.hxx svx/inc/svx/svdmodel.hxx svx/inc/svx/svdoashp.hxx svx/inc/svx/svdobj.hxx svx/inc/svx/svdocirc.hxx svx/inc/svx/svdoedge.hxx svx/inc/svx/svdogrp.hxx svx/inc/svx/svdomeas.hxx svx/inc/svx/svdoole2.hxx svx/inc/svx/svdorect.hxx svx/inc/svx/svdotable.hxx svx/inc/svx/svdotext.hxx svx/inc/svx/svdovirt.hxx svx/inc/svx/svdpage.hxx svx/inc/svx/svdsnpv.hxx svx/inc/svx/svdtrans.hxx svx/inc/svx/svdundo.hxx svx/inc/svx/svimbase.hxx svx/inc/svx/svx3ditems.hxx svx/inc/svx/svxdlg.hxx svx/inc/svx/sxcikitm.hxx svx/inc/svx/sxekitm.hxx svx/inc/svx/sxelditm.hxx svx/inc/svx/sxenditm.hxx svx/inc/svx/sxmkitm.hxx svx/inc/svx/sxmtpitm.hxx svx/inc/svx/sxmuitm.hxx svx/inc/svx/tabarea.hxx svx/inc/svx/tabline.hxx svx/inc/svx/unoprov.hxx svx/inc/svx/viewlayoutitem.hxx svx/inc/svx/xbitmap.hxx svx/inc/svx/xbtmpit.hxx svx/inc/svx/xcolit.hxx svx/inc/svx/xfillit0.hxx svx/inc/svx/xflclit.hxx svx/inc/svx/xflftrit.hxx svx/inc/svx/xflgrit.hxx svx/inc/svx/xflhtit.hxx svx/inc/svx/xftadit.hxx svx/inc/svx/xftsfit.hxx svx/inc/svx/xftshit.hxx svx/inc/svx/xlineit0.hxx svx/inc/svx/xlinjoit.hxx svx/inc/svx/xlnclit.hxx svx/inc/svx/xlndsit.hxx svx/inc/svx/xlnedcit.hxx svx/inc/svx/xlnedit.hxx svx/inc/svx/xlnedwit.hxx svx/inc/svx/xlnstcit.hxx svx/inc/svx/xlnstit.hxx svx/inc/svx/xlnstwit.hxx svx/inc/svx/xlnwtit.hxx svx/inc/svx/xtextit0.hxx svx/inc/svx/zoomitem.hxx svx/inc/svx/zoomslideritem.hxx svx/inc/xpolyimp.hxx svx/inc/zoom_def.hxx svx/prj/d.lst svx/source/accessibility/AccessibleShape.cxx svx/source/accessibility/DescriptionGenerator.cxx svx/source/customshapes/EnhancedCustomShapeEngine.cxx svx/source/customshapes/EnhancedCustomShapeFontWork.cxx svx/source/dialog/_bmpmask.cxx svx/source/dialog/_contdlg.cxx svx/source/dialog/connctrl.cxx svx/source/dialog/contwnd.cxx svx/source/dialog/ctredlin.cxx svx/source/dialog/ctredlin.hrc svx/source/dialog/ctredlin.src svx/source/dialog/dialcontrol.cxx svx/source/dialog/dlgctrl.cxx svx/source/dialog/docrecovery.cxx svx/source/dialog/fntctrl.cxx svx/source/dialog/fontwork.cxx svx/source/dialog/frmsel.cxx svx/source/dialog/graphctl.cxx svx/source/dialog/grfflt.cxx svx/source/dialog/hdft.cxx svx/source/dialog/hyperdlg.cxx svx/source/dialog/hyprdlg.hxx svx/source/dialog/hyprlink.cxx svx/source/dialog/hyprlink.hxx svx/source/dialog/hyprlink.src svx/source/dialog/imapdlg.cxx svx/source/dialog/imapwnd.cxx svx/source/dialog/linkwarn.hrc svx/source/dialog/makefile.mk svx/source/dialog/optgrid.cxx svx/source/dialog/orienthelper.cxx svx/source/dialog/pagectrl.cxx svx/source/dialog/prtqry.cxx svx/source/dialog/rlrcitem.cxx svx/source/dialog/rubydialog.cxx svx/source/dialog/rulritem.cxx svx/source/dialog/simptabl.cxx svx/source/dialog/srchdlg.cxx svx/source/dialog/svxbmpnumvalueset.cxx svx/source/dialog/svxruler.cxx svx/source/dialog/swframeexample.cxx svx/source/engine3d/float3d.cxx svx/source/engine3d/float3d.src svx/source/engine3d/svx3ditems.cxx svx/source/fmcomp/gridctrl.cxx svx/source/fmcomp/trace.cxx svx/source/form/ParseContext.cxx svx/source/form/datanavi.cxx svx/source/form/filtnav.cxx svx/source/form/fmexch.cxx svx/source/form/fmexpl.cxx svx/source/form/fmobjfac.cxx svx/source/form/fmpage.cxx svx/source/form/fmshell.cxx svx/source/form/fmshimp.cxx svx/source/form/fmsrcimp.cxx svx/source/form/fmvwimp.cxx svx/source/form/makefile.mk svx/source/form/tabwin.cxx svx/source/form/tbxform.cxx svx/source/form/typemap.cxx svx/source/gallery2/galbrws1.cxx svx/source/gallery2/galbrws2.cxx svx/source/gallery2/galexpl.cxx svx/source/gallery2/gallery1.cxx svx/source/gallery2/galtheme.cxx svx/source/gallery2/makefile.mk svx/source/gengal/gengal.cxx svx/source/gengal/makefile.mk svx/source/inc/fmgroup.hxx svx/source/intro/about_ooo.hrc svx/source/intro/iso.src svx/source/intro/ooo.src svx/source/items/SmartTagItem.cxx svx/source/items/algitem.cxx svx/source/items/chrtitem.cxx svx/source/items/clipfmtitem.cxx svx/source/items/customshapeitem.cxx svx/source/items/drawitem.cxx svx/source/items/e3ditem.cxx svx/source/items/grfitem.cxx svx/source/items/hlnkitem.cxx svx/source/items/makefile.mk svx/source/items/pageitem.cxx svx/source/items/rotmodit.cxx svx/source/items/viewlayoutitem.cxx svx/source/items/zoomitem.cxx svx/source/items/zoomslideritem.cxx svx/source/src/app.hrc svx/source/stbctrls/makefile.mk svx/source/stbctrls/modctrl.cxx svx/source/stbctrls/xmlsecctrl.cxx svx/source/stbctrls/zoomctrl.cxx svx/source/svdraw/clonelist.cxx svx/source/svdraw/svdattr.cxx svx/source/svdraw/svdcrtv.cxx svx/source/svdraw/svdedtv1.cxx svx/source/svdraw/svdedtv2.cxx svx/source/svdraw/svdedxv.cxx svx/source/svdraw/svdetc.cxx svx/source/svdraw/svdfmtf.cxx svx/source/svdraw/svdfmtf.hxx svx/source/svdraw/svdglue.cxx svx/source/svdraw/svdhdl.cxx svx/source/svdraw/svdhlpln.cxx svx/source/svdraw/svdibrow.cxx svx/source/svdraw/svdlayer.cxx svx/source/svdraw/svdmodel.cxx svx/source/svdraw/svdoashp.cxx svx/source/svdraw/svdobj.cxx svx/source/svdraw/svdocapt.cxx svx/source/svdraw/svdocirc.cxx svx/source/svdraw/svdoedge.cxx svx/source/svdraw/svdograf.cxx svx/source/svdraw/svdogrp.cxx svx/source/svdraw/svdomeas.cxx svx/source/svdraw/svdomedia.cxx svx/source/svdraw/svdopath.cxx svx/source/svdraw/svdotext.cxx svx/source/svdraw/svdotxdr.cxx svx/source/svdraw/svdotxed.cxx svx/source/svdraw/svdotxfl.cxx svx/source/svdraw/svdotxln.cxx svx/source/svdraw/svdotxtr.cxx svx/source/svdraw/svdoutl.cxx svx/source/svdraw/svdpage.cxx svx/source/svdraw/svdpagv.cxx svx/source/svdraw/svdpntv.cxx svx/source/svdraw/svdpoev.cxx svx/source/svdraw/svdsnpv.cxx svx/source/svdraw/svdstr.src svx/source/svdraw/svdtrans.cxx svx/source/svdraw/svdundo.cxx svx/source/svdraw/svdview.cxx svx/source/svdraw/svdxcgv.cxx svx/source/table/svdotable.cxx svx/source/tbxctrls/colorwindow.hxx svx/source/tbxctrls/extrusioncontrols.cxx svx/source/tbxctrls/fillctrl.cxx svx/source/tbxctrls/grafctrl.cxx svx/source/tbxctrls/itemwin.cxx svx/source/tbxctrls/layctrl.cxx svx/source/tbxctrls/lboxctrl.cxx svx/source/tbxctrls/linectrl.cxx svx/source/tbxctrls/tbcontrl.cxx svx/source/tbxctrls/verttexttbxctrl.cxx svx/source/unodraw/unomod.cxx svx/source/unodraw/unopage.cxx svx/source/unodraw/unoprov.cxx svx/source/unodraw/unoshape.cxx svx/source/unodraw/unoshtxt.cxx svx/source/xml/xmlxtexp.cxx svx/source/xoutdev/_xpoly.cxx svx/source/xoutdev/xattr.cxx svx/source/xoutdev/xattr2.cxx svx/source/xoutdev/xattrbmp.cxx svx/source/xoutdev/xtabcolr.cxx svx/util/makefile.mk svx/workben/edittest.cxx sysui/desktop/productversion.mk ucb/prj/build.lst ucb/source/cacher/cacheserv.cxx ucb/source/core/ucb1.component ucb/source/core/ucbserv.cxx ucb/source/core/ucbstore.cxx ucb/source/core/ucbstore.hxx ucb/source/sorter/sortmain.cxx ucb/source/ucp/file/prov.cxx ucb/source/ucp/file/shell.cxx ucb/source/ucp/ftp/ftpservices.cxx ucb/source/ucp/gio/gio_provider.cxx ucb/source/ucp/gvfs/gvfs_provider.cxx ucb/source/ucp/hierarchy/hierarchyservices.cxx ucb/source/ucp/odma/odma_lib.cxx ucb/source/ucp/odma/odma_services.cxx ucb/source/ucp/package/pkgservices.cxx ucb/source/ucp/tdoc/tdoc_services.cxx ucb/source/ucp/webdav/ContentProperties.cxx ucb/source/ucp/webdav/NeonHeadRequest.cxx ucb/source/ucp/webdav/webdavcontent.cxx ucb/source/ucp/webdav/webdavservices.cxx uui/source/iahndl.cxx uui/source/iahndl.hxx uui/source/loginerr.hxx uui/source/nameclashdlg.hxx uui/source/passcrtdlg.cxx uui/source/passworddlg.cxx uui/source/passworddlg.hxx uui/source/services.cxx vbahelper/inc/vbahelper/vbahelper.hxx vbahelper/prj/build.lst vbahelper/prj/d.lst vbahelper/source/msforms/makefile.mk vbahelper/source/msforms/vbauserform.cxx vbahelper/source/vbahelper/makefile.mk vbahelper/source/vbahelper/vbaapplicationbase.cxx vbahelper/source/vbahelper/vbacommandbarcontrol.cxx vbahelper/source/vbahelper/vbadocumentbase.cxx vbahelper/source/vbahelper/vbadocumentsbase.cxx vbahelper/source/vbahelper/vbahelper.cxx vbahelper/util/makefile.mk xmlhelp/source/cxxhelp/provider/databases.cxx xmlhelp/source/cxxhelp/provider/services.cxx xmlhelp/source/treeview/tvfactory.cxx xmloff/JunitTest_xmloff_unoapi.mk xmloff/inc/functional.hxx xmloff/inc/xmloff/formlayerexport.hxx xmloff/inc/xmloff/formlayerimport.hxx xmloff/inc/xmloff/functional.hxx xmloff/inc/xmloff/shapeimport.hxx xmloff/inc/xmloff/xmlcnitm.hxx xmloff/inc/xmloff/xmlnumfi.hxx xmloff/prj/build.lst xmloff/source/chart/SchXMLChartContext.cxx xmloff/source/chart/SchXMLExport.cxx xmloff/source/chart/SchXMLImport.cxx xmloff/source/chart/SchXMLLegendContext.hxx xmloff/source/chart/SchXMLPlotAreaContext.cxx xmloff/source/core/xmluconv.cxx xmloff/source/draw/sdxmlexp.cxx xmloff/source/draw/shapeexport4.cxx xmloff/source/draw/ximp3dobject.cxx xmloff/source/draw/ximp3dscene.cxx xmloff/source/forms/formlayerexport.cxx xmloff/source/forms/formlayerimport.cxx xmloff/source/forms/handler/vcl_time_handler.hxx xmloff/source/forms/layerimport.cxx xmloff/source/forms/layerimport.hxx xmloff/source/forms/property_meta_data.hxx xmloff/source/style/PageHeaderFooterContext.cxx xmloff/source/style/PageMasterStyleMap.cxx xmloff/source/style/prstylei.cxx xmloff/source/style/xmlimppr.cxx xmloff/source/style/xmlnumfi.cxx xmloff/source/style/xmlstyle.cxx xmloff/source/table/tabledesignsimporter.cxx xmloff/source/text/XMLTextNumRuleInfo.cxx xmloff/source/text/XMLTextShapeStyleContext.cxx xmloff/source/text/txtstyle.cxx xmloff/source/transform/ChartOOoTContext.cxx xmloff/source/transform/EventOOoTContext.cxx xmloff/source/transform/TransformerBase.cxx xmloff/util/makefile.mk xmlscript/util/xcr.component
2011-03-12 02:42:58 +01:00
nOutlineNo = sal_uInt8(-1); // not set
2000-09-18 16:07:07 +00:00
nBasedOn = 0;
bBasedOnIsSet = false; //$flr #117411#
2000-09-18 16:07:07 +00:00
nNext = 0;
bIsCharFmt = false;
2000-09-18 16:07:07 +00:00
}
SvxRTFItemStackType::SvxRTFItemStackType(
SfxItemPool& rPool, const sal_uInt16* pWhichRange,
2000-09-18 16:07:07 +00:00
const SvxPosition& rPos )
: aAttrSet( rPool, pWhichRange ),
pChildList( 0 ),
nStyleNo( 0 )
2000-09-18 16:07:07 +00:00
{
pSttNd = rPos.MakeNodeIdx();
nSttCnt = rPos.GetCntIdx();
pEndNd = pSttNd;
nEndCnt = nSttCnt;
}
SvxRTFItemStackType::SvxRTFItemStackType(
const SvxRTFItemStackType& rCpy,
const SvxPosition& rPos,
bool const bCopyAttr )
2000-09-18 16:07:07 +00:00
: aAttrSet( *rCpy.aAttrSet.GetPool(), rCpy.aAttrSet.GetRanges() ),
pChildList( 0 ),
nStyleNo( rCpy.nStyleNo )
{
pSttNd = rPos.MakeNodeIdx();
nSttCnt = rPos.GetCntIdx();
pEndNd = pSttNd;
nEndCnt = nSttCnt;
aAttrSet.SetParent( &rCpy.aAttrSet );
if( bCopyAttr )
aAttrSet.Put( rCpy.aAttrSet );
}
SvxRTFItemStackType::~SvxRTFItemStackType()
{
if( pChildList )
delete pChildList;
if( pSttNd != pEndNd )
delete pEndNd;
delete pSttNd;
}
void SvxRTFItemStackType::Add( SvxRTFItemStackType* pIns )
{
if( !pChildList )
pChildList = new SvxRTFItemStackList();
pChildList->push_back( pIns );
2000-09-18 16:07:07 +00:00
}
void SvxRTFItemStackType::SetStartPos( const SvxPosition& rPos )
{
if (pSttNd != pEndNd)
delete pEndNd;
delete pSttNd;
pSttNd = rPos.MakeNodeIdx();
pEndNd = pSttNd;
nSttCnt = rPos.GetCntIdx();
}
void SvxRTFItemStackType::MoveFullNode(const SvxNodeIdx &rOldNode,
const SvxNodeIdx &rNewNode)
{
bool bSameEndAsStart = (pSttNd == pEndNd);
if (GetSttNodeIdx() == rOldNode.GetIdx())
{
delete pSttNd;
pSttNd = rNewNode.Clone();
if (bSameEndAsStart)
pEndNd = pSttNd;
}
2000-09-18 16:07:07 +00:00
if (!bSameEndAsStart && GetEndNodeIdx() == rOldNode.GetIdx())
{
delete pEndNd;
pEndNd = rNewNode.Clone();
}
//And the same for all the children
sal_Int32 nCount = pChildList ? pChildList->size() : 0;
for (sal_Int32 i = 0; i < nCount; ++i)
{
SvxRTFItemStackType* pStk = &(*pChildList)[i];
pStk->MoveFullNode(rOldNode, rNewNode);
}
}
2000-09-18 16:07:07 +00:00
void SvxRTFItemStackType::Compress( const SvxRTFParser& rParser )
{
2012-07-27 17:30:49 +02:00
ENSURE_OR_RETURN_VOID(pChildList, "Compress: no ChildList" );
ENSURE_OR_RETURN_VOID(!pChildList->empty(), "Compress: ChildList empty");
2000-09-18 16:07:07 +00:00
sal_uInt16 n;
SvxRTFItemStackType* pTmp = &(*pChildList)[0];
2000-09-18 16:07:07 +00:00
if( !pTmp->aAttrSet.Count() ||
pSttNd->GetIdx() != pTmp->pSttNd->GetIdx() ||
nSttCnt != pTmp->nSttCnt )
return;
SvxNodeIdx* pLastNd = pTmp->pEndNd;
sal_Int32 nLastCnt = pTmp->nEndCnt;
2000-09-18 16:07:07 +00:00
SfxItemSet aMrgSet( pTmp->aAttrSet );
for( n = 1; n < pChildList->size(); ++n )
2000-09-18 16:07:07 +00:00
{
pTmp = &(*pChildList)[n];
2000-09-18 16:07:07 +00:00
if( pTmp->pChildList )
pTmp->Compress( rParser );
if( !pTmp->nSttCnt
? (pLastNd->GetIdx()+1 != pTmp->pSttNd->GetIdx() ||
!rParser.IsEndPara( pLastNd, nLastCnt ) )
: ( pTmp->nSttCnt != nLastCnt ||
pLastNd->GetIdx() != pTmp->pSttNd->GetIdx() ))
{
while( ++n < pChildList->size() )
if( (pTmp = &(*pChildList)[n])->pChildList )
2000-09-18 16:07:07 +00:00
pTmp->Compress( rParser );
return;
}
if( n )
{
2011-02-16 16:34:02 -05:00
// Search for all which are set over the whole area
2000-09-18 16:07:07 +00:00
SfxItemIter aIter( aMrgSet );
const SfxPoolItem* pItem;
do {
sal_uInt16 nWhich = aIter.GetCurItem()->Which();
if( SfxItemState::SET != pTmp->aAttrSet.GetItemState( nWhich,
false, &pItem ) || *pItem != *aIter.GetCurItem() )
2000-09-18 16:07:07 +00:00
aMrgSet.ClearItem( nWhich );
if( aIter.IsAtEnd() )
break;
aIter.NextItem();
} while( true );
2000-09-18 16:07:07 +00:00
if( !aMrgSet.Count() )
return;
}
pLastNd = pTmp->pEndNd;
nLastCnt = pTmp->nEndCnt;
}
if( pEndNd->GetIdx() != pLastNd->GetIdx() || nEndCnt != nLastCnt )
return;
2011-02-16 16:34:02 -05:00
// It can be merged
2000-09-18 16:07:07 +00:00
aAttrSet.Put( aMrgSet );
for( n = 0; n < pChildList->size(); ++n )
2000-09-18 16:07:07 +00:00
{
pTmp = &(*pChildList)[n];
2000-09-18 16:07:07 +00:00
pTmp->aAttrSet.Differentiate( aMrgSet );
if( !pTmp->pChildList && !pTmp->aAttrSet.Count() && !pTmp->nStyleNo )
{
pChildList->erase( pChildList->begin() + n );
2000-09-18 16:07:07 +00:00
--n;
}
}
if( pChildList->empty() )
2000-09-18 16:07:07 +00:00
{
delete pChildList;
pChildList = 0;
}
}
void SvxRTFItemStackType::SetRTFDefaults( const SfxItemSet& rDefaults )
{
if( rDefaults.Count() )
{
SfxItemIter aIter( rDefaults );
do {
sal_uInt16 nWhich = aIter.GetCurItem()->Which();
if( SfxItemState::SET != aAttrSet.GetItemState( nWhich, false ))
aAttrSet.Put( *aIter.GetCurItem() );
if( aIter.IsAtEnd() )
break;
aIter.NextItem();
} while( true );
}
}
2000-09-18 16:07:07 +00:00
RTFPlainAttrMapIds::RTFPlainAttrMapIds( const SfxItemPool& rPool )
{
nCaseMap = rPool.GetTrueWhich( SID_ATTR_CHAR_CASEMAP, false );
nBgColor = rPool.GetTrueWhich( SID_ATTR_BRUSH_CHAR, false );
nColor = rPool.GetTrueWhich( SID_ATTR_CHAR_COLOR, false );
nContour = rPool.GetTrueWhich( SID_ATTR_CHAR_CONTOUR, false );
nCrossedOut = rPool.GetTrueWhich( SID_ATTR_CHAR_STRIKEOUT, false );
nEscapement = rPool.GetTrueWhich( SID_ATTR_CHAR_ESCAPEMENT, false );
nFont = rPool.GetTrueWhich( SID_ATTR_CHAR_FONT, false );
nFontHeight = rPool.GetTrueWhich( SID_ATTR_CHAR_FONTHEIGHT, false );
nKering = rPool.GetTrueWhich( SID_ATTR_CHAR_KERNING, false );
nLanguage = rPool.GetTrueWhich( SID_ATTR_CHAR_LANGUAGE, false );
nPosture = rPool.GetTrueWhich( SID_ATTR_CHAR_POSTURE, false );
nShadowed = rPool.GetTrueWhich( SID_ATTR_CHAR_SHADOWED, false );
nUnderline = rPool.GetTrueWhich( SID_ATTR_CHAR_UNDERLINE, false );
nOverline = rPool.GetTrueWhich( SID_ATTR_CHAR_OVERLINE, false );
nWeight = rPool.GetTrueWhich( SID_ATTR_CHAR_WEIGHT, false );
nWordlineMode = rPool.GetTrueWhich( SID_ATTR_CHAR_WORDLINEMODE, false );
nAutoKerning = rPool.GetTrueWhich( SID_ATTR_CHAR_AUTOKERN, false );
nCJKFont = rPool.GetTrueWhich( SID_ATTR_CHAR_CJK_FONT, false );
nCJKFontHeight = rPool.GetTrueWhich( SID_ATTR_CHAR_CJK_FONTHEIGHT, false );
nCJKLanguage = rPool.GetTrueWhich( SID_ATTR_CHAR_CJK_LANGUAGE, false );
nCJKPosture = rPool.GetTrueWhich( SID_ATTR_CHAR_CJK_POSTURE, false );
nCJKWeight = rPool.GetTrueWhich( SID_ATTR_CHAR_CJK_WEIGHT, false );
nCTLFont = rPool.GetTrueWhich( SID_ATTR_CHAR_CTL_FONT, false );
nCTLFontHeight = rPool.GetTrueWhich( SID_ATTR_CHAR_CTL_FONTHEIGHT, false );
nCTLLanguage = rPool.GetTrueWhich( SID_ATTR_CHAR_CTL_LANGUAGE, false );
nCTLPosture = rPool.GetTrueWhich( SID_ATTR_CHAR_CTL_POSTURE, false );
nCTLWeight = rPool.GetTrueWhich( SID_ATTR_CHAR_CTL_WEIGHT, false );
nEmphasis = rPool.GetTrueWhich( SID_ATTR_CHAR_EMPHASISMARK, false );
nTwoLines = rPool.GetTrueWhich( SID_ATTR_CHAR_TWO_LINES, false );
nRuby = 0; //rPool.GetTrueWhich( SID_ATTR_CHAR_CJK_RUBY, sal_False );
nCharScaleX = rPool.GetTrueWhich( SID_ATTR_CHAR_SCALEWIDTH, false );
nHorzVert = rPool.GetTrueWhich( SID_ATTR_CHAR_ROTATED, false );
nRelief = rPool.GetTrueWhich( SID_ATTR_CHAR_RELIEF, false );
nHidden = rPool.GetTrueWhich( SID_ATTR_CHAR_HIDDEN, false );
2000-09-18 16:07:07 +00:00
}
RTFPardAttrMapIds ::RTFPardAttrMapIds ( const SfxItemPool& rPool )
{
nLinespacing = rPool.GetTrueWhich( SID_ATTR_PARA_LINESPACE, false );
nAdjust = rPool.GetTrueWhich( SID_ATTR_PARA_ADJUST, false );
nTabStop = rPool.GetTrueWhich( SID_ATTR_TABSTOP, false );
nHyphenzone = rPool.GetTrueWhich( SID_ATTR_PARA_HYPHENZONE, false );
nLRSpace = rPool.GetTrueWhich( SID_ATTR_LRSPACE, false );
nULSpace = rPool.GetTrueWhich( SID_ATTR_ULSPACE, false );
nBrush = rPool.GetTrueWhich( SID_ATTR_BRUSH, false );
nBox = rPool.GetTrueWhich( SID_ATTR_BORDER_OUTER, false );
nShadow = rPool.GetTrueWhich( SID_ATTR_BORDER_SHADOW, false );
nOutlineLvl = rPool.GetTrueWhich( SID_ATTR_PARA_OUTLLEVEL, false );
nSplit = rPool.GetTrueWhich( SID_ATTR_PARA_SPLIT, false );
nKeep = rPool.GetTrueWhich( SID_ATTR_PARA_KEEP, false );
nFontAlign = rPool.GetTrueWhich( SID_PARA_VERTALIGN, false );
nScriptSpace = rPool.GetTrueWhich( SID_ATTR_PARA_SCRIPTSPACE, false );
nHangPunct = rPool.GetTrueWhich( SID_ATTR_PARA_HANGPUNCTUATION, false );
nForbRule = rPool.GetTrueWhich( SID_ATTR_PARA_FORBIDDEN_RULES, false );
nDirection = rPool.GetTrueWhich( SID_ATTR_FRAMEDIRECTION, false );
2000-09-18 16:07:07 +00:00
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */