diff options
author | Frank Meies <fme@openoffice.org> | 2001-04-10 13:45:09 +0000 |
---|---|---|
committer | Frank Meies <fme@openoffice.org> | 2001-04-10 13:45:09 +0000 |
commit | 995852689b2abd59457fdcf7c875a41eb3a05eff (patch) | |
tree | 3efa063b67d0efccaf047b37f2b51ad4fa43dc70 /sw | |
parent | aeb4d4f938fc07b4757a0d08bf5dcf60013064ce (diff) |
New: Asian punctuation kerning
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/text/atrstck.cxx | 22 | ||||
-rw-r--r-- | sw/source/core/text/frmcrsr.cxx | 6 | ||||
-rw-r--r-- | sw/source/core/text/frmpaint.cxx | 11 | ||||
-rw-r--r-- | sw/source/core/text/inftxt.hxx | 6 | ||||
-rw-r--r-- | sw/source/core/text/itrform2.cxx | 7 | ||||
-rw-r--r-- | sw/source/core/text/pormulti.cxx | 13 | ||||
-rw-r--r-- | sw/source/core/text/pormulti.hxx | 6 | ||||
-rw-r--r-- | sw/source/core/text/porrst.cxx | 12 | ||||
-rw-r--r-- | sw/source/core/text/redlnitr.cxx | 9 | ||||
-rw-r--r-- | sw/source/core/text/txtdrop.cxx | 6 | ||||
-rw-r--r-- | sw/source/core/text/txtfld.cxx | 16 | ||||
-rw-r--r-- | sw/source/core/text/txtfrm.cxx | 6 | ||||
-rw-r--r-- | sw/source/core/text/txtftn.cxx | 10 |
13 files changed, 75 insertions, 55 deletions
diff --git a/sw/source/core/text/atrstck.cxx b/sw/source/core/text/atrstck.cxx index 93ff43009de3..bc27e303e4b3 100644 --- a/sw/source/core/text/atrstck.cxx +++ b/sw/source/core/text/atrstck.cxx @@ -2,9 +2,9 @@ * * $RCSfile: atrstck.cxx,v $ * - * $Revision: 1.7 $ + * $Revision: 1.8 $ * - * last change: $Author: ama $ $Date: 2001-03-19 15:57:05 $ + * last change: $Author: fme $ $Date: 2001-04-10 14:37:24 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -152,6 +152,9 @@ #ifndef _TXTINET_HXX #include <txtinet.hxx> #endif +#ifndef _DOC_HXX +#include <doc.hxx> +#endif #define NUM_OBJECTS (RES_TXTATR_END - RES_CHRATR_BEGIN + 1) #define STACK_INCREMENT 4 @@ -362,16 +365,21 @@ SwAttrHandler::SwAttrHandler() * SwAttrHandler::Init() *************************************************************************/ -void SwAttrHandler::Init( const SwAttrSet& rAttrSet ) +void SwAttrHandler::Init( const SwAttrSet& rAttrSet, const SwDoc& rDoc ) { pAttrSet = &rAttrSet; + pDoc = &rDoc; + for ( USHORT i = RES_CHRATR_BEGIN; i < RES_CHRATR_END; i++ ) pDefaultArray[ StackPos[ i ] ] = &rAttrSet.Get( i, TRUE ); } -void SwAttrHandler::Init( const SfxPoolItem** pPoolItem, const SwAttrSet& rAS ) +void SwAttrHandler::Init( const SfxPoolItem** pPoolItem, const SwAttrSet& rAS, + const SwDoc& rDoc ) { pAttrSet = &rAS; + pDoc = &rDoc; + memcpy( pDefaultArray, pPoolItem, NUM_DEFAULT_VALUES * sizeof(SfxPoolItem*) ); } @@ -681,7 +689,11 @@ void SwAttrHandler::FontChg(const SfxPoolItem& rItem, SwFont& rFnt, sal_Bool bPu rFnt.SetWordLineMode( ((SvxWordLineModeItem&)rItem).GetValue() ); break; case RES_CHRATR_AUTOKERN : - rFnt.SetAutoKern( ((SvxAutoKernItem&)rItem).GetValue() ); + if( ((SvxAutoKernItem&)rItem).GetValue() ) + rFnt.SetAutoKern( ( !pDoc || !pDoc->IsKernAsianPunctuation() ) ? + KERNING_FONTSPECIFIC : KERNING_ASIAN ); + else + rFnt.SetAutoKern( 0 ); break; case RES_CHRATR_BLINK : rFnt.SetBlink( ((SvxBlinkItem&)rItem).GetValue() ); diff --git a/sw/source/core/text/frmcrsr.cxx b/sw/source/core/text/frmcrsr.cxx index acc94eb5f3d6..0177f8a1b7f6 100644 --- a/sw/source/core/text/frmcrsr.cxx +++ b/sw/source/core/text/frmcrsr.cxx @@ -2,9 +2,9 @@ * * $RCSfile: frmcrsr.cxx,v $ * - * $Revision: 1.4 $ + * $Revision: 1.5 $ * - * last change: $Author: fme $ $Date: 2001-04-09 10:41:08 $ + * last change: $Author: fme $ $Date: 2001-04-10 14:37:47 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -964,7 +964,7 @@ void SwTxtFrm::FillCrsrPos( SwFillData& rFill ) const aSet.Put( *GetTxtNode()->GetpSwAttrSet() ); aSet.SetParent( pSet ); pSet = &aSet; - pFnt = new SwFont( pSet ); + pFnt = new SwFont( pSet, GetNode()->GetDoc() ); } else { diff --git a/sw/source/core/text/frmpaint.cxx b/sw/source/core/text/frmpaint.cxx index 7b7313240c20..5efb055a67ed 100644 --- a/sw/source/core/text/frmpaint.cxx +++ b/sw/source/core/text/frmpaint.cxx @@ -2,9 +2,9 @@ * * $RCSfile: frmpaint.cxx,v $ * - * $Revision: 1.7 $ + * $Revision: 1.8 $ * - * last change: $Author: fme $ $Date: 2001-04-09 10:41:08 $ + * last change: $Author: fme $ $Date: 2001-04-10 14:38:04 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -208,7 +208,7 @@ SwExtraPainter::SwExtraPainter( const SwTxtFrm *pFrm, ViewShell *pVwSh, nX = pFrm->Frm().Left(); SwCharFmt* pFmt = rLineInf.GetCharFmt( *((SwDoc*)pFrm->GetNode()->GetDoc()) ); ASSERT( pFmt, "PaintExtraData without CharFmt" ); - pFnt = new SwFont( &pFmt->GetAttrSet() ); + pFnt = new SwFont( &pFmt->GetAttrSet(), pFrm->GetTxtNode()->GetDoc() ); pFnt->Invalidate(); pFnt->ChgPhysFnt( pSh, pSh->GetOut() ); nLineNr += pFrm->GetAllLines() - pFrm->GetThisLines(); @@ -504,7 +504,7 @@ sal_Bool SwTxtFrm::PaintEmpty( const SwRect &rRect, sal_Bool bCheck ) const if ( rTxtNode.HasSwAttrSet() ) { const SwAttrSet *pAttrSet = &( rTxtNode.GetSwAttrSet() ); - pFnt = new SwFont( pAttrSet ); + pFnt = new SwFont( pAttrSet, GetTxtNode()->GetDoc() ); } else { @@ -522,7 +522,8 @@ sal_Bool SwTxtFrm::PaintEmpty( const SwRect &rRect, sal_Bool bCheck ) const if( MSHRT_MAX != nRedlPos ) { SwAttrHandler aAttrHandler; - aAttrHandler.Init( GetTxtNode()->GetSwAttrSet() ); + aAttrHandler.Init( GetTxtNode()->GetSwAttrSet(), + *GetTxtNode()->GetDoc() ); SwRedlineItr aRedln( rTxtNode, *pFnt, aAttrHandler, nRedlPos, sal_True ); } } diff --git a/sw/source/core/text/inftxt.hxx b/sw/source/core/text/inftxt.hxx index 5c5e4010aaf7..8fd900276e04 100644 --- a/sw/source/core/text/inftxt.hxx +++ b/sw/source/core/text/inftxt.hxx @@ -2,9 +2,9 @@ * * $RCSfile: inftxt.hxx,v $ * - * $Revision: 1.19 $ + * $Revision: 1.20 $ * - * last change: $Author: fme $ $Date: 2001-04-09 10:41:08 $ + * last change: $Author: fme $ $Date: 2001-04-10 14:40:23 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -348,6 +348,8 @@ public: { return _HasHint( pFrm->GetTxtNode(), nPos ); } static sal_Bool _HasHint( const SwTxtNode* pTxtNode, xub_StrLen nPos ); + inline SwDoc* GetDoc() const { return pFrm->GetNode()->GetDoc(); }; + // // If Kana Compression is enabled, a minimum and maximum portion width // is calculated. We format lines with minimal size and share remaining diff --git a/sw/source/core/text/itrform2.cxx b/sw/source/core/text/itrform2.cxx index c982305c5b04..4ff64c2a62c0 100644 --- a/sw/source/core/text/itrform2.cxx +++ b/sw/source/core/text/itrform2.cxx @@ -2,9 +2,9 @@ * * $RCSfile: itrform2.cxx,v $ * - * $Revision: 1.24 $ + * $Revision: 1.25 $ * - * last change: $Author: fme $ $Date: 2001-04-09 10:41:08 $ + * last change: $Author: fme $ $Date: 2001-04-10 14:40:53 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -1276,7 +1276,8 @@ SwLinePortion *SwTxtFormatter::NewPortion( SwTxtFormatInfo &rInf ) if( SW_MC_RUBY == pCreate->nId ) { Seek( rInf.GetIdx() ); - pTmp = new SwRubyPortion( *pCreate, *rInf.GetFont(), nEnd ); + pTmp = new SwRubyPortion( *pCreate, *rInf.GetFont(), + *rInf.GetDoc(), nEnd ); } else if( SW_MC_ROTATE == pCreate->nId ) pTmp = new SwRotatedPortion( *pCreate, nEnd ); diff --git a/sw/source/core/text/pormulti.cxx b/sw/source/core/text/pormulti.cxx index c76c43579111..e1a0b8f2ebe5 100644 --- a/sw/source/core/text/pormulti.cxx +++ b/sw/source/core/text/pormulti.cxx @@ -2,9 +2,9 @@ * * $RCSfile: pormulti.cxx,v $ * - * $Revision: 1.26 $ + * $Revision: 1.27 $ * - * last change: $Author: ama $ $Date: 2001-03-29 12:01:19 $ + * last change: $Author: fme $ $Date: 2001-04-10 14:41:34 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -600,7 +600,7 @@ SwDoubleLinePortion::~SwDoubleLinePortion() * --------------------------------------------------*/ SwRubyPortion::SwRubyPortion( const SwMultiCreator& rCreate, const SwFont& rFnt, - xub_StrLen nEnd, xub_StrLen nOffs ) : SwMultiPortion( nEnd ) + const SwDoc& rDoc, xub_StrLen nEnd, xub_StrLen nOffs ) : SwMultiPortion( nEnd ) { SetRuby(); ASSERT( SW_MC_RUBY == rCreate.nId, "Ruby exspected" ); @@ -615,7 +615,7 @@ SwRubyPortion::SwRubyPortion( const SwMultiCreator& rCreate, const SwFont& rFnt, { const SwAttrSet& rSet = pFmt->GetAttrSet(); pRubyFont = new SwFont( rFnt ); - pRubyFont->SetDiffFnt( &rSet ); + pRubyFont->SetDiffFnt( &rSet, &rDoc ); } else pRubyFont = NULL; @@ -1872,8 +1872,9 @@ SwLinePortion* SwTxtFormatter::MakeRestPortion( const SwLineLayout* pLine, if( pMulti->IsDouble() ) pTmp = new SwDoubleLinePortion( *pCreate, nMultiPos ); else if( pMulti->IsRuby() ) - pTmp = new SwRubyPortion( *pCreate, *GetInfo().GetFont(), nMultiPos, - ((SwRubyPortion*)pMulti)->GetRubyOffset() ); + pTmp = new SwRubyPortion( *pCreate, *GetInfo().GetFont(), + *GetInfo().GetDoc(), nMultiPos, + ((SwRubyPortion*)pMulti)->GetRubyOffset() ); else if( pMulti->GetDirection() ) pTmp = new SwRotatedPortion( nMultiPos, pMulti->GetDirection() ); else diff --git a/sw/source/core/text/pormulti.hxx b/sw/source/core/text/pormulti.hxx index 433f0d987f01..e3c1727e471c 100644 --- a/sw/source/core/text/pormulti.hxx +++ b/sw/source/core/text/pormulti.hxx @@ -2,9 +2,9 @@ * * $RCSfile: pormulti.hxx,v $ * - * $Revision: 1.14 $ + * $Revision: 1.15 $ * - * last change: $Author: ama $ $Date: 2001-02-16 15:27:07 $ + * last change: $Author: fme $ $Date: 2001-04-10 14:41:52 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -228,7 +228,7 @@ public: : SwMultiPortion( nEnd ), nRubyOffset( nOfst ), nAdjustment( nAdj ) { SetRuby(); SetTop(!nPos); } SwRubyPortion( const SwMultiCreator& rCreate, const SwFont& rFnt, - xub_StrLen nEnd, xub_StrLen nOffs = 0 ); + const SwDoc& rDoc, xub_StrLen nEnd, xub_StrLen nOffs = 0 ); void CalcRubyOffset(); inline void Adjust( SwTxtFormatInfo &rInf ) { if(nAdjustment && GetRoot().GetNext()) _Adjust(rInf); } diff --git a/sw/source/core/text/porrst.cxx b/sw/source/core/text/porrst.cxx index d8f857758c86..1785a7d50080 100644 --- a/sw/source/core/text/porrst.cxx +++ b/sw/source/core/text/porrst.cxx @@ -2,9 +2,9 @@ * * $RCSfile: porrst.cxx,v $ * - * $Revision: 1.4 $ + * $Revision: 1.5 $ * - * last change: $Author: ama $ $Date: 2001-03-15 15:54:33 $ + * last change: $Author: fme $ $Date: 2001-04-10 14:42:43 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -353,7 +353,7 @@ SwTwips SwTxtFrm::EmptyHeight() const if ( rTxtNode.HasSwAttrSet() ) { const SwAttrSet *pAttrSet = &( rTxtNode.GetSwAttrSet() ); - pFnt = new SwFont( pAttrSet ); + pFnt = new SwFont( pAttrSet, GetTxtNode()->GetDoc() ); } else { @@ -377,8 +377,10 @@ SwTwips SwTxtFrm::EmptyHeight() const if( MSHRT_MAX != nRedlPos ) { SwAttrHandler aAttrHandler; - aAttrHandler.Init( GetTxtNode()->GetSwAttrSet() ); - SwRedlineItr aRedln( rTxtNode, *pFnt, aAttrHandler, nRedlPos, sal_True ); + aAttrHandler.Init( GetTxtNode()->GetSwAttrSet(), + *GetTxtNode()->GetDoc() ); + SwRedlineItr aRedln( rTxtNode, *pFnt, aAttrHandler, + nRedlPos, sal_True ); } } diff --git a/sw/source/core/text/redlnitr.cxx b/sw/source/core/text/redlnitr.cxx index 25bd3227a378..77a11551ffc4 100644 --- a/sw/source/core/text/redlnitr.cxx +++ b/sw/source/core/text/redlnitr.cxx @@ -2,9 +2,9 @@ * * $RCSfile: redlnitr.cxx,v $ * - * $Revision: 1.15 $ + * $Revision: 1.16 $ * - * last change: $Author: fme $ $Date: 2001-04-09 10:41:08 $ + * last change: $Author: fme $ $Date: 2001-04-10 14:43:06 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -160,7 +160,7 @@ void SwAttrIter::CtorInit( SwTxtNode& rTxtNode, SwScriptInfo& rScrInf ) if ( rTxtNode.HasSwAttrSet() ) { // no style template found - aAttrHandler.Init( *pAttrSet ); + aAttrHandler.Init( *pAttrSet, *rTxtNode.GetDoc() ); pFnt = new SwFont( aAttrHandler ); } else @@ -170,7 +170,8 @@ void SwAttrIter::CtorInit( SwTxtNode& rTxtNode, SwScriptInfo& rScrInf ) // we are using a style template, caching the resulting font for SwFontAccess aFontAccess( &rTxtNode.GetAnyFmtColl(), pShell ); //FEATURE::CONDCOLL - aAttrHandler.Init( aFontAccess.Get()->GetDefault(), *pAttrSet ); + aAttrHandler.Init( aFontAccess.Get()->GetDefault(), *pAttrSet, + *rTxtNode.GetDoc() ); pFnt = new SwFont( *aFontAccess.Get()->GetFont() ); } diff --git a/sw/source/core/text/txtdrop.cxx b/sw/source/core/text/txtdrop.cxx index 8ff0a639e375..54663afc0ec6 100644 --- a/sw/source/core/text/txtdrop.cxx +++ b/sw/source/core/text/txtdrop.cxx @@ -2,9 +2,9 @@ * * $RCSfile: txtdrop.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: fme $ $Date: 2001-04-09 10:41:08 $ + * last change: $Author: fme $ $Date: 2001-04-10 14:43:35 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -449,7 +449,7 @@ SwDropPortion *SwTxtFormatter::NewDropPortion( SwTxtFormatInfo &rInf ) const } SwFont *pTmpFnt = new SwFont( pDropFmt->GetCharFmt() ? &pDropFmt->GetCharFmt()->GetAttrSet() - : &rInf.GetCharAttr() ); + : &rInf.GetCharAttr(), rInf.GetDoc() ); if( GetDropHeight() ) pDropPor = new SwDropPortion( pTmpFnt, GetDropLines(), GetDropHeight(), GetDropDescent(), diff --git a/sw/source/core/text/txtfld.cxx b/sw/source/core/text/txtfld.cxx index 173f525110cc..7d11db459b10 100644 --- a/sw/source/core/text/txtfld.cxx +++ b/sw/source/core/text/txtfld.cxx @@ -2,9 +2,9 @@ * * $RCSfile: txtfld.cxx,v $ * - * $Revision: 1.7 $ + * $Revision: 1.8 $ * - * last change: $Author: os $ $Date: 2001-02-23 12:45:23 $ + * last change: $Author: fme $ $Date: 2001-04-10 14:44:14 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -287,10 +287,10 @@ SwExpandPortion *SwTxtFormatter::NewFldPortion( SwTxtFormatInfo &rInf, aTmpSet.Set( pChFmt->GetAttrSet() ); aTmpSet.Differentiate( aSet ); if( aTmpSet.Count() ) - pTmpFnt->SetDiffFnt( &aTmpSet ); + pTmpFnt->SetDiffFnt( &aTmpSet, rInf.GetDoc() ); } else - pTmpFnt->SetDiffFnt( &pChFmt->GetAttrSet() ); + pTmpFnt->SetDiffFnt( &pChFmt->GetAttrSet(), rInf.GetDoc() ); } pRet = new SwFldPortion( pFld->GetCntnt( bName ), pTmpFnt ); } @@ -421,9 +421,9 @@ SwNumberPortion *SwTxtFormatter::NewNumberPortion( SwTxtFormatInfo &rInf ) const if( SVX_NUM_CHAR_SPECIAL == rNumFmt.GetNumberingType() ) { const Font *pFmtFnt = rNumFmt.GetBulletFont(); - pNumFnt = new SwFont( &rInf.GetCharAttr() ); + pNumFnt = new SwFont( &rInf.GetCharAttr(), rInf.GetDoc() ); if( pFmt ) - pNumFnt->SetDiffFnt( pFmt ); + pNumFnt->SetDiffFnt( pFmt, rInf.GetDoc() ); if ( pFmtFnt ) { const BYTE nAct = pNumFnt->GetActual(); @@ -447,9 +447,9 @@ SwNumberPortion *SwTxtFormatter::NewNumberPortion( SwTxtFormatInfo &rInf ) const // vorliegt! if( aTxt.Len() ) { - pNumFnt = new SwFont( &rInf.GetCharAttr() ); + pNumFnt = new SwFont( &rInf.GetCharAttr(), rInf.GetDoc() ); if( pFmt ) - pNumFnt->SetDiffFnt( pFmt ); + pNumFnt->SetDiffFnt( pFmt, rInf.GetDoc() ); // Die SSize muss erhalten bleiben // pNumFnt->ChangeSize( rInf.GetFont()->GetSize() ); pRet = new SwNumberPortion( aTxt, pNumFnt, bLeft, bCenter, diff --git a/sw/source/core/text/txtfrm.cxx b/sw/source/core/text/txtfrm.cxx index 4825ede670ca..6c9c5c33a98c 100644 --- a/sw/source/core/text/txtfrm.cxx +++ b/sw/source/core/text/txtfrm.cxx @@ -2,9 +2,9 @@ * * $RCSfile: txtfrm.cxx,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: ama $ $Date: 2001-03-05 12:50:28 $ + * last change: $Author: fme $ $Date: 2001-04-10 14:44:48 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -1655,7 +1655,7 @@ KSHORT SwTxtFrm::GetLineSpace() const if ( pPrt && ((Printer*)pPrt)->IsValid() ) pOut = pPrt; } - SwFont aFont( pSet ); + SwFont aFont( pSet, GetTxtNode()->GetDoc() ); // Wir muessen dafuer sorgen, dass am OutputDevice der Font // korrekt restauriert wird, sonst droht ein Last!=Owner. if ( pLastFont ) diff --git a/sw/source/core/text/txtftn.cxx b/sw/source/core/text/txtftn.cxx index d011d7d2e4a2..970f77828a36 100644 --- a/sw/source/core/text/txtftn.cxx +++ b/sw/source/core/text/txtftn.cxx @@ -2,9 +2,9 @@ * * $RCSfile: txtftn.cxx,v $ * - * $Revision: 1.7 $ + * $Revision: 1.8 $ * - * last change: $Author: ama $ $Date: 2001-03-05 12:49:31 $ + * last change: $Author: fme $ $Date: 2001-04-10 14:45:09 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -971,8 +971,8 @@ SwNumberPortion *SwTxtFormatter::NewFtnNumPortion( SwTxtFormatInfo &rInf ) const const SwAttrSet& rSet = pInfo->GetCharFmt(*pDoc)->GetAttrSet(); const SwAttrSet* pParSet = &rInf.GetCharAttr(); - SwFont *pFnt = new SwFont( pParSet ); - pFnt->SetDiffFnt(&rSet); + SwFont *pFnt = new SwFont( pParSet, rInf.GetDoc() ); + pFnt->SetDiffFnt(&rSet, rInf.GetDoc() ); SwTxtFtn* pTxtFtn = rFtn.GetTxtFtn(); if( pTxtFtn ) { @@ -1270,7 +1270,7 @@ SwFtnSave::SwFtnSave( const SwTxtSizeInfo &rInf, const SwTxtFtn* pTxtFtn ) else pInfo = &pDoc->GetFtnInfo(); const SwAttrSet& rSet = pInfo->GetAnchorCharFmt((SwDoc&)*pDoc)->GetAttrSet(); - pFnt->SetDiffFnt( &rSet ); + pFnt->SetDiffFnt( &rSet, rInf.GetDoc() ); pFnt->ChgPhysFnt( pInf->GetVsh(), pInf->GetOut() ); const SfxPoolItem* pItem; if( SFX_ITEM_SET == rSet.GetItemState( RES_CHRATR_BACKGROUND, |