diff options
author | Zolnai Tamás <zolnaitamas2000@gmail.com> | 2013-08-21 21:30:41 +0200 |
---|---|---|
committer | Zolnai Tamás <zolnaitamas2000@gmail.com> | 2013-08-23 21:01:37 +0200 |
commit | f8b6c3949e2c1f23549a2ef879e728cdb7149235 (patch) | |
tree | 256fc0266b2f32d3cc2c868f26c954c8ecc21a04 /sw/source/ui/utlui | |
parent | 9509a46683e40fc2feea6631b701b766797b7882 (diff) |
CharBrd 7: Border shadow
1, New character attribute
- Add the three shadow members to font
(width, color, location)
2, Painting
- Extract the shadow painting to a local function
and use that for character shadow (paintfrm.cxx)
- Reduce the painting rectangle of background
(shadow doesn't inherites the background of content)
3, Border merge
- Use text portion join members to skip shadow
when neccessary.
4, Vertical text
- Get shadow space dependant from oritentation and
border merge.
5, UNO API and ODF filter
Paragraph: ParaShadowFormat -> Character: CharShadowFormat
Change-Id: Ief4669990d238016c3ffc18a2609a3df7d9dddbf
Diffstat (limited to 'sw/source/ui/utlui')
-rw-r--r-- | sw/source/ui/utlui/uitool.cxx | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/sw/source/ui/utlui/uitool.cxx b/sw/source/ui/utlui/uitool.cxx index 862a9544a442..455e738cc9e4 100644 --- a/sw/source/ui/utlui/uitool.cxx +++ b/sw/source/ui/utlui/uitool.cxx @@ -32,6 +32,7 @@ #include <editeng/pmdlitem.hxx> #include <editeng/tstpitem.hxx> #include <editeng/boxitem.hxx> +#include <editeng/shaditem.hxx> #include <editeng/sizeitem.hxx> #include <editeng/brushitem.hxx> #include <svx/pageitem.hxx> @@ -133,18 +134,28 @@ void ConvertAttrCharToGen(SfxItemSet& rSet, sal_uInt8 nMode) rSet.ClearItem(RES_BACKGROUND); } - // Border if( nMode == CONV_ATTR_STD ) { - const SfxPoolItem *pTmpBox; - if( SFX_ITEM_SET == rSet.GetItemState( RES_CHRATR_BOX, sal_True, &pTmpBox ) ) + // Border + const SfxPoolItem *pTmpItem; + if( SFX_ITEM_SET == rSet.GetItemState( RES_CHRATR_BOX, sal_True, &pTmpItem ) ) { - SvxBoxItem aTmpBox( *((SvxBoxItem*)pTmpBox) ); + SvxBoxItem aTmpBox( *((SvxBoxItem*)pTmpItem) ); aTmpBox.SetWhich( RES_BOX ); rSet.Put( aTmpBox ); } else rSet.ClearItem(RES_BOX); + + // Border shadow + if( SFX_ITEM_SET == rSet.GetItemState( RES_CHRATR_SHADOW, sal_False, &pTmpItem ) ) + { + SvxShadowItem aTmpShadow( *((SvxShadowItem*)pTmpItem) ); + aTmpShadow.SetWhich( RES_SHADOW ); + rSet.Put( aTmpShadow ); + } + else + rSet.ClearItem( RES_SHADOW ); } } @@ -162,17 +173,26 @@ void ConvertAttrGenToChar(SfxItemSet& rSet, sal_uInt8 nMode) rSet.ClearItem( RES_BACKGROUND ); } - // Border if( nMode == CONV_ATTR_STD ) { - const SfxPoolItem *pTmpBox; - if( SFX_ITEM_SET == rSet.GetItemState( RES_BOX, sal_False, &pTmpBox ) ) + // Border + const SfxPoolItem *pTmpItem; + if( SFX_ITEM_SET == rSet.GetItemState( RES_BOX, sal_False, &pTmpItem ) ) { - SvxBoxItem aTmpBox( *((SvxBoxItem*)pTmpBox) ); + SvxBoxItem aTmpBox( *((SvxBoxItem*)pTmpItem) ); aTmpBox.SetWhich( RES_CHRATR_BOX ); rSet.Put( aTmpBox ); } rSet.ClearItem( RES_BOX ); + + // Border shadow + if( SFX_ITEM_SET == rSet.GetItemState( RES_SHADOW, sal_False, &pTmpItem ) ) + { + SvxShadowItem aTmpShadow( *((SvxShadowItem*)pTmpItem) ); + aTmpShadow.SetWhich( RES_CHRATR_SHADOW ); + rSet.Put( aTmpShadow ); + } + rSet.ClearItem( RES_SHADOW ); } } |