editeng/source/editeng/editattr.cxx | 31 +++++++++++++++++++++++++++- editeng/source/editeng/editattr.hxx | 13 ++++++++++++ editeng/source/editeng/impedit3.cxx | 17 +++++++++++++++ editeng/source/items/textitem.cxx | 39 ++++++++++++++++++++++++++++++++++++ include/editeng/colritem.hxx | 25 +++++++++++++++++++++++ include/editeng/eeitem.hxx | 18 ++++++++-------- include/vcl/font.hxx | 8 ++----- vcl/source/gdi/font.cxx | 11 ++++++++++ vcl/source/outdev/outdevstate.cxx | 2 - vcl/source/outdev/text.cxx | 31 ++++++++++------------------ 10 files changed, 158 insertions(+), 37 deletions(-)
New commits: commit ad6a2607f09d2f770e683a21ad7243a077d65a7a Author: matteocam <matteo.campane...@gmail.com> Date: Thu May 29 16:31:28 2014 -0400 Added class SvxBackgroundColorItem Change-Id: If10795bbbd9fc911896b57bbab5410bc1e62f71f diff --git a/editeng/source/editeng/editattr.cxx b/editeng/source/editeng/editattr.cxx index 0a36c2f..e04c8fd 100644 --- a/editeng/source/editeng/editattr.cxx +++ b/editeng/source/editeng/editattr.cxx @@ -136,7 +136,6 @@ void EditCharAttribUnderline::SetFont( SvxFont& rFont, OutputDevice* pOutDev ) //pOutDev->SetTextLineColor( ((const SvxUnderlineItem*)GetItem())->GetColor() ); // FIXME(matteocam) - if ( pOutDev ) pOutDev->SetTextFillColor(aColor); } @@ -230,6 +229,28 @@ void EditCharAttribColor::SetFont( SvxFont& rFont, OutputDevice* ) //fprintf(stderr, "Called SetFont with Color %d\n", aColor.GetColor()); } +// class EditCharAttribBackgroundColor + +EditCharAttribBackgroundColor::EditCharAttribBackgroundColor( + const SvxBackgroundColorItem& rAttr, + sal_uInt16 _nStart, + sal_uInt16 _nEnd ) + : EditCharAttrib( rAttr, _nStart, _nEnd ) +{ + // FIXME(matteocam) + //DBG_ASSERT( rAttr.Which() == EE_CHAR_BKG_COLOR, "Not a BackgroundColor attribute!" ); +} + +void EditCharAttribBackgroundColor::SetFont( SvxFont& rFont, OutputDevice* ) +{ + /* FIXME(matteocam) + * + Color aColor = ((const SvxBackgroundColorItem*)GetItem())->GetValue(); + rFont.SetFillColor( aColor); // XXX: Is it SetFillColor we want? + */ + +} + // class EditCharAttribLanguage diff --git a/editeng/source/editeng/editattr.hxx b/editeng/source/editeng/editattr.hxx index 505d687..db81029 100644 --- a/editeng/source/editeng/editattr.hxx +++ b/editeng/source/editeng/editattr.hxx @@ -38,6 +38,7 @@ class SvxOverlineItem; class SvxFontHeightItem; class SvxCharScaleWidthItem; class SvxColorItem; +class SvxBackgroundColorItem; class SvxAutoKernItem; class SvxKerningItem; class SvxWordLineModeItem; @@ -308,6 +309,18 @@ public: virtual void SetFont( SvxFont& rFont, OutputDevice* pOutDev ) SAL_OVERRIDE; }; +// class EditCharAttribBackgroundColor + +class EditCharAttribBackgroundColor : public EditCharAttrib +{ +public: + EditCharAttribBackgroundColor(const SvxBackgroundColorItem& rAttr, + sal_uInt16 nStart, + sal_uInt16 nEnd ); + virtual void SetFont(SvxFont& rFont, OutputDevice* pOutDev) SAL_OVERRIDE; +}; + + // class EditCharAttribLanguage diff --git a/editeng/source/items/textitem.cxx b/editeng/source/items/textitem.cxx index e4b5b8d..baf2992 100644 --- a/editeng/source/items/textitem.cxx +++ b/editeng/source/items/textitem.cxx @@ -122,6 +122,8 @@ TYPEINIT1_FACTORY(SvxWordLineModeItem, SfxBoolItem, new SvxWordLineModeItem(fals TYPEINIT1_FACTORY(SvxContourItem, SfxBoolItem, new SvxContourItem(false, 0)); TYPEINIT1_FACTORY(SvxPropSizeItem, SfxUInt16Item, new SvxPropSizeItem(100, 0)); TYPEINIT1_FACTORY(SvxColorItem, SfxPoolItem, new SvxColorItem(0)); +// FIXME(matteocam): Should 2nd argoment of next line SfxColorItem or SfxPoolItem? +TYPEINIT1_FACTORY(SvxBackgroundColorItem, SvxColorItem, new SvxBackgroundColorItem(0)); TYPEINIT1_FACTORY(SvxCharSetColorItem, SvxColorItem, new SvxCharSetColorItem(0)); TYPEINIT1_FACTORY(SvxKerningItem, SfxInt16Item, new SvxKerningItem(0, 0)); TYPEINIT1_FACTORY(SvxCaseMapItem, SfxEnumItem, new SvxCaseMapItem(SVX_CASEMAP_NOT_MAPPED, 0)); @@ -1908,6 +1910,43 @@ SfxItemPresentation SvxPropSizeItem::GetPresentation return SFX_ITEM_PRESENTATION_NONE; } +// class SvxBackgroundColorItem ----------------------------------------- + +SvxBackgroundColorItem::SvxBackgroundColorItem( const sal_uInt16 nId ) : + SvxColorItem( nId ) +{ +} + + + +SvxBackgroundColorItem::SvxBackgroundColorItem( const Color& rCol, + const sal_uInt16 nId ) : + SvxColorItem( rCol, nId ) +{ +} + +SvxBackgroundColorItem:: SvxBackgroundColorItem( SvStream& rStrm, const sal_uInt16 Id ) : + SvxColorItem( rStrm, Id ) +{ +} + +SvxBackgroundColorItem::SvxBackgroundColorItem( const SvxBackgroundColorItem& rCopy ) : + SvxColorItem( rCopy ) +{ +} + +SfxPoolItem* SvxBackgroundColorItem::Clone( SfxItemPool * ) const +{ + return new SvxBackgroundColorItem( *this ); +} + + +SfxPoolItem* SvxBackgroundColorItem::Create(SvStream& rStrm, sal_uInt16 ) const +{ + return new SvxBackgroundColorItem( rStrm, Which() ); +} + + // class SvxColorItem ---------------------------------------------------- SvxColorItem::SvxColorItem( const sal_uInt16 nId ) : diff --git a/include/editeng/colritem.hxx b/include/editeng/colritem.hxx index fc82bd2..815d2ed 100644 --- a/include/editeng/colritem.hxx +++ b/include/editeng/colritem.hxx @@ -77,6 +77,31 @@ public: }; +/* + * FIXME(matteocam): + * both classes Svx{Background,}Color should be derived from a + * common ancestor or be totally separate (not recommended probably). +*/ + +// class SvxBackgroundColorItem + +// XXX: to be moved in a separate header. +class EDITENG_DLLPUBLIC SvxBackgroundColorItem : public SvxColorItem +{ + public: + TYPEINFO_OVERRIDE(); + + SvxBackgroundColorItem( const sal_uInt16 nId ); + SvxBackgroundColorItem( const Color& rCol, + const sal_uInt16 nId ); + SvxBackgroundColorItem( SvStream& rStrm, const sal_uInt16 nId ); + SvxBackgroundColorItem( const SvxBackgroundColorItem& rCopy ); + + virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const SAL_OVERRIDE; + virtual SfxPoolItem* Create(SvStream &, sal_uInt16) const SAL_OVERRIDE; + +}; + #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 7fb0e8c9a659417607c85f9b0e8245e4af4552dc Author: matteocam <matteo.campane...@gmail.com> Date: Thu May 29 11:14:09 2014 -0400 Setting SetTextFillColor from Attrs. Experiment with line color Change-Id: If34f000d6c5ef6ec38f7f735ada194b8fff4f56d diff --git a/editeng/source/editeng/editattr.cxx b/editeng/source/editeng/editattr.cxx index d65c408..0a36c2f 100644 --- a/editeng/source/editeng/editattr.cxx +++ b/editeng/source/editeng/editattr.cxx @@ -128,12 +128,15 @@ EditCharAttribUnderline::EditCharAttribUnderline( const SvxUnderlineItem& rAttr, void EditCharAttribUnderline::SetFont( SvxFont& rFont, OutputDevice* pOutDev ) { + Color aColor = RGB_COLORDATA(0x66,0x66, 0xFF); // blue-ish + rFont.SetUnderline( (FontUnderline)((const SvxUnderlineItem*)GetItem())->GetValue() ); - if ( pOutDev ) - pOutDev->SetTextLineColor( ((const SvxUnderlineItem*)GetItem())->GetColor() ); + if ( pOutDev ) // FIXME(matteocam) + pOutDev->SetTextLineColor( aColor ); + //pOutDev->SetTextLineColor( ((const SvxUnderlineItem*)GetItem())->GetColor() ); // FIXME(matteocam) - Color aColor = RGB_COLORDATA(0x66,0x66, 0xFF); // blue-ish + if ( pOutDev ) pOutDev->SetTextFillColor(aColor); } diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx index b3dc11a..130e112 100644 --- a/vcl/source/outdev/text.cxx +++ b/vcl/source/outdev/text.cxx @@ -465,6 +465,7 @@ void OutputDevice::ImplDrawSpecialText( SalLayout& rSalLayout ) void OutputDevice::ImplDrawText( SalLayout& rSalLayout ) { + if( mbInitClipRegion ) InitClipRegion(); if( mbOutputClipped ) @@ -828,6 +829,8 @@ void OutputDevice::DrawText( const Point& rStartPt, const OUString& rStr, MetricVector* pVector, OUString* pDisplayText ) { + + if(nLen == 0x0FFFF) { SAL_INFO("sal.rtl.xub", @@ -948,6 +951,12 @@ void OutputDevice::DrawTextArray( const Point& rStartPt, const OUString& rStr, const sal_Int32* pDXAry, sal_Int32 nIndex, sal_Int32 nLen ) { + fprintf(stderr, "TextFillColor printing %c is (%d, %d, %d)\n", + (char) rStr.toChar(), + GetTextFillColor().GetRed(), + GetTextFillColor().GetGreen(), + GetTextFillColor().GetBlue()); + if(nLen == 0x0FFFF) { SAL_INFO("sal.rtl.xub", @@ -1437,6 +1446,7 @@ void OutputDevice::ImplDrawText( OutputDevice& rTargetDevice, const Rectangle& r MetricVector* pVector, OUString* pDisplayText, ::vcl::ITextLayout& _rLayout ) { + Color aOldTextColor; Color aOldTextFillColor; bool bRestoreFillColor = false; commit 02385eb4d8de3c5a57511d8bae3c42a523470838 Author: matteocam <matteo.campane...@gmail.com> Date: Wed May 28 17:11:18 2014 -0400 Cleaned up code from tranparency in vcl. Trying setfillcolor from edit attrs Change-Id: I263012332e43573f260ac8c54612576eb21a11a1 diff --git a/editeng/source/editeng/editattr.cxx b/editeng/source/editeng/editattr.cxx index e9f3f14..d65c408 100644 --- a/editeng/source/editeng/editattr.cxx +++ b/editeng/source/editeng/editattr.cxx @@ -131,6 +131,11 @@ void EditCharAttribUnderline::SetFont( SvxFont& rFont, OutputDevice* pOutDev ) rFont.SetUnderline( (FontUnderline)((const SvxUnderlineItem*)GetItem())->GetValue() ); if ( pOutDev ) pOutDev->SetTextLineColor( ((const SvxUnderlineItem*)GetItem())->GetColor() ); + + // FIXME(matteocam) + Color aColor = RGB_COLORDATA(0x66,0x66, 0xFF); // blue-ish + if ( pOutDev ) + pOutDev->SetTextFillColor(aColor); } diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx index 9f923c5..b3dc11a 100644 --- a/vcl/source/outdev/text.cxx +++ b/vcl/source/outdev/text.cxx @@ -149,14 +149,7 @@ void OutputDevice::ImplDrawTextRect( long nBaseX, long nBaseY, nX += nBaseX; nY += nBaseY; - //mpGraphics->DrawRect( nX, nY, nWidth, nHeight, this ); // original code - - Rectangle aRect( Point( nX, nY ), Size( nWidth+1, nHeight+1 ) ); - Polygon aPoly( aRect ); - PolyPolygon aPolyPoly(aPoly); - Color aColor = RGB_COLORDATA(0x66,0x66, 0xFF); - SetTextFillColor(aColor); - DrawTransparent(aPolyPoly, 70); + mpGraphics->DrawRect( nX, nY, nWidth, nHeight, this ); // original code } commit 4445f361aa2730b61fdd339dcdd7014b266e5c42 Author: matteocam <matteo.campane...@gmail.com> Date: Wed May 28 16:20:14 2014 -0400 Cleaned up code from operations in vcl Change-Id: Ica5194f0cf6e30ec099974ae8b794fb2bc5e654a diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx index 3bf1b26..4d4a15b 100644 --- a/editeng/source/editeng/impedit3.cxx +++ b/editeng/source/editeng/impedit3.cxx @@ -2556,6 +2556,9 @@ void ImpEditEngine::SeekCursor( ContentNode* pNode, sal_Int32 nPos, SvxFont& rFo rFont = pNode->GetCharAttribs().GetDefFont(); + /* + * Set attributes for script types Asian and Complex + */ short nScriptType = GetI18NScriptType( EditPaM( pNode, nPos ) ); if ( ( nScriptType == i18n::ScriptType::ASIAN ) || ( nScriptType == i18n::ScriptType::COMPLEX ) ) { @@ -2574,6 +2577,9 @@ void ImpEditEngine::SeekCursor( ContentNode* pNode, sal_Int32 nPos, SvxFont& rFo sal_uInt16 nRelWidth = ((const SvxCharScaleWidthItem&)pNode->GetContentAttribs().GetItem( EE_CHAR_FONTWIDTH)).GetValue(); + /* + * Set output device's line and overline colors + */ if ( pOut ) { const SvxUnderlineItem& rTextLineColor = (const SvxUnderlineItem&)pNode->GetContentAttribs().GetItem( EE_CHAR_UNDERLINE ); @@ -2594,6 +2600,9 @@ void ImpEditEngine::SeekCursor( ContentNode* pNode, sal_Int32 nPos, SvxFont& rFo const SvxLanguageItem* pCJKLanguageItem = NULL; + /* + * Scan through char attributes of pNode + */ if ( aStatus.UseCharAttribs() ) { CharAttribList::AttribsType& rAttribs = pNode->GetCharAttribs().GetAttribs(); @@ -3412,6 +3421,12 @@ void ImpEditEngine::Paint( OutputDevice* pOutDev, Rectangle aClipRect, Point aSt ' ' == aText[nTextStart + nTextLen - 1] ) --nTextLen; + // FIXME(matteocam) + if (aTmpFont.GetItalic() != ITALIC_NONE) { + Color aColor = COL_BROWN; + aTmpFont.SetFillColor(aColor); + } + // output directly aTmpFont.QuickDrawText( pOutDev, aRealOutPos, aText, nTextStart, nTextLen, pDXArray ); @@ -3684,6 +3699,8 @@ void ImpEditEngine::Paint( ImpEditView* pView, const Rectangle& rRect, OutputDev SvxFont aTmpFont; ContentNode* pNode = GetEditDoc().GetObject( 0 ); SeekCursor( pNode, 1, aTmpFont ); + + Color aFontColor( aTmpFont.GetColor() ); if( (aFontColor == COL_AUTO) || IsForceAutoColor() ) aFontColor = GetAutoColor(); diff --git a/include/editeng/eeitem.hxx b/include/editeng/eeitem.hxx index 8dcf5c5..b42b326 100644 --- a/include/editeng/eeitem.hxx +++ b/include/editeng/eeitem.hxx @@ -80,18 +80,18 @@ #define EE_CHAR_OVERLINE (EE_ITEMS_START+47) #define EE_CHAR_CASEMAP (EE_ITEMS_START+48) #define EE_CHAR_GRABBAG (EE_ITEMS_START+49) -#define EE_CHAR_BKGCOLOR (EE_ITEMS_START+50) +//#define EE_CHAR_BKGCOLOR (EE_ITEMS_START+50) -#define EE_CHAR_END (EE_ITEMS_START+50) +#define EE_CHAR_END (EE_ITEMS_START+49) -#define EE_FEATURE_START (EE_ITEMS_START+51) -#define EE_FEATURE_TAB (EE_ITEMS_START+51) -#define EE_FEATURE_LINEBR (EE_ITEMS_START+52) -#define EE_FEATURE_NOTCONV (EE_ITEMS_START+53) -#define EE_FEATURE_FIELD (EE_ITEMS_START+54) -#define EE_FEATURE_END (EE_ITEMS_START+54) +#define EE_FEATURE_START (EE_ITEMS_START+50) +#define EE_FEATURE_TAB (EE_ITEMS_START+50) +#define EE_FEATURE_LINEBR (EE_ITEMS_START+51) +#define EE_FEATURE_NOTCONV (EE_ITEMS_START+52) +#define EE_FEATURE_FIELD (EE_ITEMS_START+53) +#define EE_FEATURE_END (EE_ITEMS_START+53) -#define EE_ITEMS_END (EE_ITEMS_START+54) +#define EE_ITEMS_END (EE_ITEMS_START+53) #define EDITITEMCOUNT ( EE_ITEMS_END - EE_ITEMS_START + 1 ) diff --git a/include/vcl/font.hxx b/include/vcl/font.hxx index 1a728f3..b4a3614 100644 --- a/include/vcl/font.hxx +++ b/include/vcl/font.hxx @@ -60,12 +60,10 @@ public: void SetAlign( FontAlign ); FontAlign GetAlign() const; - // XXX: now font has background iff it is (single-y) underlined - // also forces non transparency - bool HasBackgroundColor() const { + // FIXME(matteocam) // XXX: is this the right spot for changes? + void SetBackgroundColor(const Color &); + const Color& GetBackgroundColor() const; - return GetUnderline() == UNDERLINE_SINGLE; - } void SetName( const OUString& rFamilyName ); const OUString& GetName() const; diff --git a/vcl/source/gdi/font.cxx b/vcl/source/gdi/font.cxx index 489304e..616fb61 100644 --- a/vcl/source/gdi/font.cxx +++ b/vcl/source/gdi/font.cxx @@ -301,6 +301,15 @@ void Font::SetFillColor( const Color& rColor ) mpImplFont->mbTransparent = true; } +void Font::SetBackgroundColor(const Color& rColor) +{ + // FIXME + //MakeUnique(); + /*mpImplFont->maBkgColor = rColor; + if () */ +} + + void Font::SetTransparent( bool bTransparent ) { @@ -957,6 +966,8 @@ const Color& Font::GetColor() const { return mpImplFont->maColor; } const Color& Font::GetFillColor() const { return mpImplFont->maFillColor; } +const Color& Font::GetBackgroundColor() const { /*return mpImplFont->maBkgColor;*/ } + bool Font::IsTransparent() const { return mpImplFont->mbTransparent; } FontAlign Font::GetAlign() const { return mpImplFont->meAlign; } diff --git a/vcl/source/outdev/outdevstate.cxx b/vcl/source/outdev/outdevstate.cxx index 15fa53c..2dcaf11 100644 --- a/vcl/source/outdev/outdevstate.cxx +++ b/vcl/source/outdev/outdevstate.cxx @@ -520,8 +520,6 @@ void OutputDevice::SetFont( const Font& rNewFont ) aFont.SetColor( aTextColor ); - mbTextBackground = aFont.HasBackgroundColor(); - bool bTransFill = aFont.IsTransparent(); if ( !bTransFill ) { diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx index a8b5709..9f923c5 100644 --- a/vcl/source/outdev/text.cxx +++ b/vcl/source/outdev/text.cxx @@ -481,18 +481,6 @@ void OutputDevice::ImplDrawText( SalLayout& rSalLayout ) rSalLayout.DrawBase() += Point( mnTextOffX, mnTextOffY ); - /* - if the text has some background get it - and the set it as the new filling color - */ - if (mbTextBackground) { - // FIXME(matteocam) - // set right background // (XXX: now getting fixed color) - Color aColor = RGB_COLORDATA(0x66,0x66, 0xFF); // blue-ish - // SetBackground does not work - SetTextFillColor(aColor); - } - if( IsTextFillColor() ) ImplDrawTextBackground( rSalLayout ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits