[Libreoffice-commits] .: Branch 'feature/template-dialog' - 9 commits - sfx2/inc sfx2/Library_sfx.mk sfx2/source
Rafael Dominguez
rdominguez at kemper.freedesktop.org
Thu Jun 14 15:36:00 PDT 2012
sfx2/Library_sfx.mk | 2
sfx2/inc/sfx2/thumbnailview.hxx | 15
sfx2/source/control/thumbnailview.cxx | 886 ++++++++++++----------------------
3 files changed, 334 insertions(+), 569 deletions(-)
New commits:
commit 8a65fffe1d5e0a01ac42291ece8331e32c418f69
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Thu Jun 14 17:53:47 2012 -0430
Dont use another VirtualDevice for rendering.
Change-Id: I923958a54157ac28dee03d99cee1b3368fcb5954
diff --git a/sfx2/inc/sfx2/thumbnailview.hxx b/sfx2/inc/sfx2/thumbnailview.hxx
index 94ea49c..540f9f5 100644
--- a/sfx2/inc/sfx2/thumbnailview.hxx
+++ b/sfx2/inc/sfx2/thumbnailview.hxx
@@ -16,7 +16,6 @@
#include <vcl/ctrl.hxx>
#include <vcl/image.hxx>
-#include <vcl/virdev.hxx>
#include <vcl/timer.hxx>
class MouseEvent;
@@ -314,7 +313,6 @@ private:
protected:
- VirtualDevice maVirDev;
Timer maTimer;
ValueItemList mItemList;
SfxOrganizeMgr *mpMgr;
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index 5ef9237..84e3cfd 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -189,7 +189,6 @@ Image lcl_fetchThumbnail (const rtl::OUString &msURL, int width, int height)
ThumbnailView::ThumbnailView (Window *pParent, WinBits nWinStyle, bool bDisableTransientChildren)
: Control( pParent, nWinStyle ),
- maVirDev( *this ),
maColor( COL_TRANSPARENT )
{
ImplInit();
@@ -198,7 +197,6 @@ ThumbnailView::ThumbnailView (Window *pParent, WinBits nWinStyle, bool bDisableT
ThumbnailView::ThumbnailView (Window *pParent, const ResId &rResId, bool bDisableTransientChildren)
: Control( pParent, rResId ),
- maVirDev( *this ),
maColor( COL_TRANSPARENT )
{
ImplInit();
@@ -248,9 +246,6 @@ void ThumbnailView::ImplInit()
mbScroll = false;
mbHasVisibleItems = false;
- // #106446#, #106601# force mirroring of virtual device
- maVirDev.EnableRTL( GetParent()->IsRTLEnabled() );
-
ImplInitSettings( true, true, true );
}
@@ -363,7 +358,7 @@ void ThumbnailView::DrawItem (ThumbnailViewItem *pItem, const Rectangle &aRect)
// Draw centered text below thumbnail
aPos.Y() += 20 + aImageSize.Height();
- aPos.X() = aRect.Left() + (aRectSize.Width() - maVirDev.GetTextWidth(pItem->maText))/2;
+ aPos.X() = aRect.Left() + (aRectSize.Width() - GetTextWidth(pItem->maText))/2;
// Create the text primitive
B2DVector aFontSize;
@@ -890,11 +885,6 @@ void ThumbnailView::Paint( const Rectangle& )
mnItemHeight = nCalcHeight / mnVisLines;
}
- // Init VirDev
- maVirDev.SetSettings( GetSettings() );
- maVirDev.SetBackground( GetBackground() );
- maVirDev.SetOutputSizePixel( aWinSize, sal_True );
-
// nothing is changed in case of too small items
if ( (mnItemWidth <= 0) ||
(mnItemHeight <= 2) ||
@@ -938,7 +928,6 @@ void ThumbnailView::Paint( const Rectangle& )
long nStartY = 0;
// calculate and draw items
- maVirDev.SetLineColor();
long x = nStartX;
long y = nStartY;
commit 62020a34cccd778be6f4052c31299ed085a48d00
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Thu Jun 14 17:51:25 2012 -0430
Remove ImplHideSelect function.
Change-Id: Ia3d90409cfcd148e304b4fcc7f3a7aafd4e9604f
diff --git a/sfx2/inc/sfx2/thumbnailview.hxx b/sfx2/inc/sfx2/thumbnailview.hxx
index 839378d..94ea49c 100644
--- a/sfx2/inc/sfx2/thumbnailview.hxx
+++ b/sfx2/inc/sfx2/thumbnailview.hxx
@@ -295,7 +295,6 @@ private:
SVT_DLLPRIVATE void ImplInitSettings( bool bFont, bool bForeground, bool bBackground );
SVT_DLLPRIVATE void ImplInitScrollBar();
SVT_DLLPRIVATE void ImplDeleteItems();
- SVT_DLLPRIVATE void ImplHideSelect( sal_uInt16 nItemId );
SVT_DLLPRIVATE void ImplDraw();
using Window::ImplScroll;
SVT_DLLPRIVATE bool ImplScroll( const Point& rPos );
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index 64b75ed..5ef9237 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -398,22 +398,6 @@ void ThumbnailView::DrawItem (ThumbnailViewItem *pItem, const Rectangle &aRect)
return new ThumbnailViewAcc( this, mbIsTransientChildrenDisabled );
}
-void ThumbnailView::ImplHideSelect( sal_uInt16 nItemId )
-{
- Rectangle aRect;
-
- const size_t nItemPos = GetItemPos( nItemId );
- if ( nItemPos != THUMBNAILVIEW_ITEM_NOTFOUND && mItemList[nItemPos]->mbVisible )
- {
- aRect = ImplGetItemRect(nItemPos);
-
- HideFocus();
- const Point aPos = aRect.TopLeft();
- const Size aSize = aRect.GetSize();
- DrawOutDev( aPos, aSize, aPos, aSize, maVirDev );
- }
-}
-
bool ThumbnailView::ImplScroll( const Point& rPos )
{
if ( !mbScroll || !maItemListRect.IsInside(rPos) )
commit 210ba7a5078429b665957db32caab174413c3667
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Thu Jun 14 17:44:36 2012 -0430
Remove DrawSelect and DrawSelectedItem functions.
Change-Id: Ifd4682b644025aecbfea0f3f2c57ba854a7e1d3b
diff --git a/sfx2/inc/sfx2/thumbnailview.hxx b/sfx2/inc/sfx2/thumbnailview.hxx
index 3ae61ab..839378d 100644
--- a/sfx2/inc/sfx2/thumbnailview.hxx
+++ b/sfx2/inc/sfx2/thumbnailview.hxx
@@ -284,8 +284,6 @@ protected:
virtual void DrawItem (ThumbnailViewItem *pItem, const Rectangle &aRect);
- virtual void DrawSelectedItem (const sal_uInt16 nItemId, const bool bFocus, const bool bDrawSel);
-
private:
friend class ThumbnailViewAcc;
@@ -297,7 +295,6 @@ private:
SVT_DLLPRIVATE void ImplInitSettings( bool bFont, bool bForeground, bool bBackground );
SVT_DLLPRIVATE void ImplInitScrollBar();
SVT_DLLPRIVATE void ImplDeleteItems();
- SVT_DLLPRIVATE void ImplDrawSelect();
SVT_DLLPRIVATE void ImplHideSelect( sal_uInt16 nItemId );
SVT_DLLPRIVATE void ImplDraw();
using Window::ImplScroll;
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index 7652d68..64b75ed 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -398,96 +398,6 @@ void ThumbnailView::DrawItem (ThumbnailViewItem *pItem, const Rectangle &aRect)
return new ThumbnailViewAcc( this, mbIsTransientChildrenDisabled );
}
-void ThumbnailView::ImplDrawSelect()
-{
- if ( !IsReallyVisible() )
- return;
-
- const bool bFocus = HasFocus();
- const bool bDrawSel = !( (mbNoSelection && !mbHighlight) || (!mbDrawSelection && mbHighlight) );
-
- if ( !bFocus && !bDrawSel )
- return;
-
- DrawSelectedItem( mnSelItemId, bFocus, bDrawSel );
- if (mbHighlight)
- {
- DrawSelectedItem( mnHighItemId, bFocus, bDrawSel );
- }
-}
-
-void ThumbnailView::DrawSelectedItem( const sal_uInt16 nItemId, const bool bFocus, const bool bDrawSel )
-{
- ThumbnailViewItem* pItem;
- Rectangle aRect;
- if ( nItemId )
- {
- const size_t nPos = GetItemPos( nItemId );
- pItem = mItemList[ nPos ];
- aRect = ImplGetItemRect( nPos );
- }
- else if ( bFocus && (pItem = ImplGetFirstItem()) )
- {
- aRect = ImplGetItemRect( 0 );
- }
- else
- {
- return;
- }
-
- if ( pItem->mbVisible )
- {
- // draw selection
- const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
- Control::SetFillColor();
-
- Color aDoubleColor( rStyleSettings.GetHighlightColor() );
- Color aSingleColor( rStyleSettings.GetHighlightTextColor() );
- if( !mbDoubleSel )
- {
- /*
- * #99777# contrast enhancement for thin mode
- */
- const Wallpaper& rWall = GetDisplayBackground();
- if( ! rWall.IsBitmap() && ! rWall.IsGradient() )
- {
- const Color& rBack = rWall.GetColor();
- if( rBack.IsDark() && ! aDoubleColor.IsBright() )
- {
- aDoubleColor = Color( COL_WHITE );
- aSingleColor = Color( COL_BLACK );
- }
- else if( rBack.IsBright() && ! aDoubleColor.IsDark() )
- {
- aDoubleColor = Color( COL_BLACK );
- aSingleColor = Color( COL_WHITE );
- }
- }
- }
-
- // specify selection output
- aRect.Left() += 4;
- aRect.Top() += 4;
- aRect.Right() -= 4;
- aRect.Bottom() -= 4;
-
- if ( bDrawSel )
- {
- SetLineColor( aDoubleColor );
- aRect.Left()++;
- aRect.Top()++;
- aRect.Right()--;
- aRect.Bottom()--;
- DrawRect( aRect );
- aRect.Left()++;
- aRect.Top()++;
- aRect.Right()--;
- aRect.Bottom()--;
- DrawRect( aRect );
- }
- }
-}
-
void ThumbnailView::ImplHideSelect( sal_uInt16 nItemId )
{
Rectangle aRect;
commit 2be7e06f707523ce6528ac4b6a6aac7611b12039
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Thu Jun 14 17:20:19 2012 -0430
Dont hightlight an item when the mouse leave the view.
Change-Id: I90d11e15e00e3baf3477679588de0dd06e10ceed
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index 44026aa..7652d68 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -731,6 +731,25 @@ void ThumbnailView::MouseMove( const MouseEvent& rMEvt )
DrawItem(pItem,GetItemRect(pItem->mnId));
}
}
+ else
+ {
+ if (mnHighItemId)
+ {
+ size_t nPos = GetItemPos(mnHighItemId);
+
+ if (nPos != THUMBNAILVIEW_ITEM_NOTFOUND)
+ {
+ ThumbnailViewItem *pOld = mItemList[nPos];
+
+ pOld->mbHover = false;
+
+ if (!pOld->mbSelected)
+ DrawItem(pOld,GetItemRect(pOld->mnId));
+ }
+
+ mnHighItemId = 0;
+ }
+ }
Control::MouseMove( rMEvt );
}
commit 97a6815c3452189c3ff2861bdafbebecb97f6a76
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Thu Jun 14 16:25:40 2012 -0430
Remove FullItemMode related functions and attribute.
Change-Id: I91d47dc30c4463c26663fc697ae4ccffe3d25a3b
diff --git a/sfx2/inc/sfx2/thumbnailview.hxx b/sfx2/inc/sfx2/thumbnailview.hxx
index a714e17..3ae61ab 100644
--- a/sfx2/inc/sfx2/thumbnailview.hxx
+++ b/sfx2/inc/sfx2/thumbnailview.hxx
@@ -187,10 +187,6 @@ public:
Rectangle GetItemRect( sal_uInt16 nItemId ) const;
- void EnableFullItemMode( bool bFullMode = true );
-
- bool IsFullItemModeEnabled() const { return mbFullMode; }
-
void SetColCount( sal_uInt16 nNewCols = 1 );
sal_uInt16 GetColCount() const { return mnUserCols; }
@@ -351,7 +347,6 @@ protected:
bool mbBlackSel : 1;
bool mbDoubleSel : 1;
bool mbScroll : 1;
- bool mbFullMode : 1;
bool mbIsTransientChildrenDisabled : 1;
bool mbHasVisibleItems : 1;
Color maColor;
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index a220bde..44026aa 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -246,7 +246,6 @@ void ThumbnailView::ImplInit()
mbBlackSel = false;
mbDoubleSel = false;
mbScroll = false;
- mbFullMode = true;
mbHasVisibleItems = false;
// #106446#, #106601# force mirroring of virtual device
@@ -1022,20 +1021,8 @@ void ThumbnailView::Paint( const Rectangle& )
mbDoubleSel = false;
// calculate offsets
- long nStartX;
- long nStartY;
- if ( mbFullMode )
- {
- long nAllItemWidth = (mnItemWidth*mnCols)+nColSpace;
- long nAllItemHeight = (mnItemHeight*mnVisLines)+nNoneHeight+nLineSpace;
- nStartX = (aWinSize.Width()-nScrBarWidth-nAllItemWidth)/2;
- nStartY = (aWinSize.Height()-nAllItemHeight)/2;
- }
- else
- {
- nStartX = 0;
- nStartY = 0;
- }
+ long nStartX = 0;
+ long nStartY = 0;
// calculate and draw items
maVirDev.SetLineColor();
@@ -1051,15 +1038,13 @@ void ThumbnailView::Paint( const Rectangle& )
maItemListRect.Right() = x + mnCols*(mnItemWidth+mnSpacing) - mnSpacing - 1;
maItemListRect.Bottom() = y + mnVisLines*(mnItemHeight+mnSpacing) - mnSpacing - 1;
- if ( !mbFullMode )
- {
- // If want also draw parts of items in the last line,
- // then we add one more line if parts of these line are
- // visible
- if ( y+(mnVisLines*(mnItemHeight+mnSpacing)) < aWinSize.Height() )
- nLastItem += mnCols;
- maItemListRect.Bottom() = aWinSize.Height() - y;
- }
+ // If want also draw parts of items in the last line,
+ // then we add one more line if parts of these line are
+ // visible
+ if ( y+(mnVisLines*(mnItemHeight+mnSpacing)) < aWinSize.Height() )
+ nLastItem += mnCols;
+ maItemListRect.Bottom() = aWinSize.Height() - y;
+
for ( size_t i = 0; i < nItemCount; i++ )
{
ThumbnailViewItem *const pItem = mItemList[i];
@@ -1397,11 +1382,6 @@ Rectangle ThumbnailView::GetItemRect( sal_uInt16 nItemId ) const
return Rectangle();
}
-void ThumbnailView::EnableFullItemMode( bool bFullMode )
-{
- mbFullMode = bFullMode;
-}
-
void ThumbnailView::SetColCount( sal_uInt16 nNewCols )
{
if ( mnUserCols != nNewCols )
commit 5c7f64cfd12a4cd5f013cca0047645d72d4902c7
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Thu Jun 14 15:53:27 2012 -0430
Do only drawing operations in paint handler.
- Do drawing operations directly to the control instead of another
VirtualDevice.
- Remove DrawImpl and Format functions.
- Every time and item state change redraw.
Change-Id: I3a12415653f1c2b05c1be998016ed5a364a6baf5
diff --git a/sfx2/inc/sfx2/thumbnailview.hxx b/sfx2/inc/sfx2/thumbnailview.hxx
index ca59ef9..a714e17 100644
--- a/sfx2/inc/sfx2/thumbnailview.hxx
+++ b/sfx2/inc/sfx2/thumbnailview.hxx
@@ -232,8 +232,6 @@ public:
bool IsColor() const { return maColor.GetTransparency() == 0; }
- void Format();
-
void StartSelection();
void EndSelection();
@@ -346,7 +344,6 @@ protected:
sal_uInt16 mnFirstLine;
sal_uInt16 mnSpacing;
sal_uInt16 mnFrameStyle;
- bool mbFormat : 1;
bool mbHighlight : 1;
bool mbSelection : 1;
bool mbNoSelection : 1;
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index c7be3fd..a220bde 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -239,7 +239,6 @@ void ThumbnailView::ImplInit()
mnUserVisLines = 0;
mnSpacing = 0;
mnFrameStyle = 0;
- mbFormat = true;
mbHighlight = false;
mbSelection = false;
mbNoSelection = true;
@@ -400,245 +399,6 @@ void ThumbnailView::DrawItem (ThumbnailViewItem *pItem, const Rectangle &aRect)
return new ThumbnailViewAcc( this, mbIsTransientChildrenDisabled );
}
-void ThumbnailView::Format()
-{
- Size aWinSize = GetOutputSizePixel();
- size_t nItemCount = mItemList.size();
- WinBits nStyle = GetStyle();
- long nNoneHeight = 0;
- long nNoneSpace = 0;
- ScrollBar* pDelScrBar = NULL;
-
- // consider the scrolling
- if ( nStyle & WB_VSCROLL )
- ImplInitScrollBar();
- else
- {
- if ( mpScrBar )
- {
- // delete ScrollBar not until later, to prevent recursive calls
- pDelScrBar = mpScrBar;
- mpScrBar = NULL;
- }
- }
-
- // calculate ScrollBar width
- long nScrBarWidth = 0;
- if ( mpScrBar )
- nScrBarWidth = mpScrBar->GetSizePixel().Width()+SCRBAR_OFFSET;
-
- // calculate number of columns
- if ( !mnUserCols )
- {
- if ( mnUserItemWidth )
- {
- mnCols = (sal_uInt16)((aWinSize.Width()-nScrBarWidth+mnSpacing) / (mnUserItemWidth+mnSpacing));
- if ( !mnCols )
- mnCols = 1;
- }
- else
- mnCols = 1;
- }
- else
- mnCols = mnUserCols;
-
- // calculate number of rows
- mbScroll = false;
- // Floor( (M+N-1)/N )==Ceiling( M/N )
- mnLines = (static_cast<long>(nItemCount)+mnCols-1) / mnCols;
- if ( !mnLines )
- mnLines = 1;
-
- long nCalcHeight = aWinSize.Height()-nNoneHeight;
- if ( mnUserVisLines )
- mnVisLines = mnUserVisLines;
- else if ( mnUserItemHeight )
- {
- mnVisLines = (nCalcHeight-nNoneSpace+mnSpacing) / (mnUserItemHeight+mnSpacing);
- if ( !mnVisLines )
- mnVisLines = 1;
- }
- else
- mnVisLines = mnLines;
- if ( mnLines > mnVisLines )
- mbScroll = true;
- if ( mnLines <= mnVisLines )
- mnFirstLine = 0;
- else
- {
- if ( mnFirstLine > (sal_uInt16)(mnLines-mnVisLines) )
- mnFirstLine = (sal_uInt16)(mnLines-mnVisLines);
- }
-
- // calculate item size
- const long nColSpace = (mnCols-1)*mnSpacing;
- const long nLineSpace = ((mnVisLines-1)*mnSpacing)+nNoneSpace;
- if ( mnUserItemWidth && !mnUserCols )
- {
- mnItemWidth = mnUserItemWidth;
- if ( mnItemWidth > aWinSize.Width()-nScrBarWidth-nColSpace )
- mnItemWidth = aWinSize.Width()-nScrBarWidth-nColSpace;
- }
- else
- mnItemWidth = (aWinSize.Width()-nScrBarWidth-nColSpace) / mnCols;
- if ( mnUserItemHeight && !mnUserVisLines )
- {
- mnItemHeight = mnUserItemHeight;
- if ( mnItemHeight > nCalcHeight-nNoneSpace )
- mnItemHeight = nCalcHeight-nNoneSpace;
- }
- else
- {
- nCalcHeight -= nLineSpace;
- mnItemHeight = nCalcHeight / mnVisLines;
- }
-
- // Init VirDev
- maVirDev.SetSettings( GetSettings() );
- maVirDev.SetBackground( GetBackground() );
- maVirDev.SetOutputSizePixel( aWinSize, sal_True );
-
- // nothing is changed in case of too small items
- if ( (mnItemWidth <= 0) ||
- (mnItemHeight <= 2) ||
- !nItemCount )
- {
- mbHasVisibleItems = false;
-
- for ( size_t i = 0; i < nItemCount; i++ )
- {
- mItemList[i]->mbVisible = false;
- }
-
- if ( mpScrBar )
- mpScrBar->Hide();
- }
- else
- {
- mbHasVisibleItems = true;
-
- // determine Frame-Style
- mnFrameStyle = FRAME_DRAW_IN;
-
- // determine selected color and width
- // if necessary change the colors, to make the selection
- // better detectable
- const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
- Color aHighColor( rStyleSettings.GetHighlightColor() );
- if ( ((aHighColor.GetRed() > 0x80) || (aHighColor.GetGreen() > 0x80) ||
- (aHighColor.GetBlue() > 0x80)) ||
- ((aHighColor.GetRed() == 0x80) && (aHighColor.GetGreen() == 0x80) &&
- (aHighColor.GetBlue() == 0x80)) )
- mbBlackSel = true;
- else
- mbBlackSel = false;
-
- // draw the selection with double width if the items are bigger
- mbDoubleSel = false;
-
- // calculate offsets
- long nStartX;
- long nStartY;
- if ( mbFullMode )
- {
- long nAllItemWidth = (mnItemWidth*mnCols)+nColSpace;
- long nAllItemHeight = (mnItemHeight*mnVisLines)+nNoneHeight+nLineSpace;
- nStartX = (aWinSize.Width()-nScrBarWidth-nAllItemWidth)/2;
- nStartY = (aWinSize.Height()-nAllItemHeight)/2;
- }
- else
- {
- nStartX = 0;
- nStartY = 0;
- }
-
- // calculate and draw items
- maVirDev.SetLineColor();
- long x = nStartX;
- long y = nStartY;
-
- // draw items
- sal_uLong nFirstItem = mnFirstLine * mnCols;
- sal_uLong nLastItem = nFirstItem + (mnVisLines * mnCols);
-
- maItemListRect.Left() = x;
- maItemListRect.Top() = y;
- maItemListRect.Right() = x + mnCols*(mnItemWidth+mnSpacing) - mnSpacing - 1;
- maItemListRect.Bottom() = y + mnVisLines*(mnItemHeight+mnSpacing) - mnSpacing - 1;
-
- if ( !mbFullMode )
- {
- // If want also draw parts of items in the last line,
- // then we add one more line if parts of these line are
- // visible
- if ( y+(mnVisLines*(mnItemHeight+mnSpacing)) < aWinSize.Height() )
- nLastItem += mnCols;
- maItemListRect.Bottom() = aWinSize.Height() - y;
- }
- for ( size_t i = 0; i < nItemCount; i++ )
- {
- ThumbnailViewItem *const pItem = mItemList[i];
-
- if ( (i >= nFirstItem) && (i < nLastItem) )
- {
- if( !pItem->mbVisible && ImplHasAccessibleListeners() )
- {
- ::com::sun::star::uno::Any aOldAny, aNewAny;
-
- aNewAny <<= pItem->GetAccessible( mbIsTransientChildrenDisabled );
- ImplFireAccessibleEvent( ::com::sun::star::accessibility::AccessibleEventId::CHILD, aOldAny, aNewAny );
- }
-
- pItem->mbVisible = true;
- DrawItem( pItem, Rectangle( Point(x,y), Size(mnItemWidth, mnItemHeight) ) );
-
- if ( !((i+1) % mnCols) )
- {
- x = nStartX;
- y += mnItemHeight+mnSpacing;
- }
- else
- x += mnItemWidth+mnSpacing;
- }
- else
- {
- if( pItem->mbVisible && ImplHasAccessibleListeners() )
- {
- ::com::sun::star::uno::Any aOldAny, aNewAny;
-
- aOldAny <<= pItem->GetAccessible( mbIsTransientChildrenDisabled );
- ImplFireAccessibleEvent( ::com::sun::star::accessibility::AccessibleEventId::CHILD, aOldAny, aNewAny );
- }
-
- pItem->mbVisible = false;
- }
- }
-
- // arrange ScrollBar, set values and show it
- if ( mpScrBar )
- {
- Point aPos( aWinSize.Width()-nScrBarWidth+SCRBAR_OFFSET, 0 );
- Size aSize( nScrBarWidth-SCRBAR_OFFSET, aWinSize.Height() );
-
- mpScrBar->SetPosSizePixel( aPos, aSize );
- mpScrBar->SetRangeMax( mnLines );
- mpScrBar->SetVisibleSize( mnVisLines );
- mpScrBar->SetThumbPos( (long)mnFirstLine );
- long nPageSize = mnVisLines;
- if ( nPageSize < 1 )
- nPageSize = 1;
- mpScrBar->SetPageSize( nPageSize );
- mpScrBar->Show();
- }
- }
-
- // waiting for the next since the formatting is finished
- mbFormat = false;
-
- // delete ScrollBar
- delete pDelScrBar;
-}
-
void ThumbnailView::ImplDrawSelect()
{
if ( !IsReallyVisible() )
@@ -745,38 +505,6 @@ void ThumbnailView::ImplHideSelect( sal_uInt16 nItemId )
}
}
-void ThumbnailView::ImplDraw()
-{
- if ( mbFormat )
- Format();
-
- HideFocus();
-
- Point aDefPos;
- Size aSize = maVirDev.GetOutputSizePixel();
-
- if ( mpScrBar && mpScrBar->IsVisible() )
- {
- Point aScrPos = mpScrBar->GetPosPixel();
- Size aScrSize = mpScrBar->GetSizePixel();
- Point aTempPos( 0, aScrPos.Y() );
- Size aTempSize( aSize.Width(), aScrPos.Y() );
-
- DrawOutDev( aDefPos, aTempSize, aDefPos, aTempSize, maVirDev );
- aTempSize.Width() = aScrPos.X()-1;
- aTempSize.Height() = aScrSize.Height();
- DrawOutDev( aTempPos, aTempSize, aTempPos, aTempSize, maVirDev );
- aTempPos.Y() = aScrPos.Y()+aScrSize.Height();
- aTempSize.Width() = aSize.Width();
- aTempSize.Height() = aSize.Height()-aTempPos.Y();
- DrawOutDev( aTempPos, aTempSize, aTempPos, aTempSize, maVirDev );
- }
- else
- DrawOutDev( aDefPos, aSize, aDefPos, aSize, maVirDev );
-
- ImplDrawSelect();
-}
-
bool ThumbnailView::ImplScroll( const Point& rPos )
{
if ( !mbScroll || !maItemListRect.IsInside(rPos) )
@@ -805,8 +533,9 @@ bool ThumbnailView::ImplScroll( const Point& rPos )
if ( !bScroll )
return false;
- mbFormat = true;
- ImplDraw();
+ if ( IsReallyVisible() && IsUpdateMode() )
+ Invalidate();
+
return true;
}
@@ -908,8 +637,9 @@ IMPL_LINK( ThumbnailView,ImplScrollHdl, ScrollBar*, pScrollBar )
if ( nNewFirstLine != mnFirstLine )
{
mnFirstLine = nNewFirstLine;
- mbFormat = true;
- ImplDraw();
+
+ if ( IsReallyVisible() && IsUpdateMode() )
+ Invalidate();
}
return 0;
}
@@ -1157,7 +887,238 @@ void ThumbnailView::Command( const CommandEvent& rCEvt )
void ThumbnailView::Paint( const Rectangle& )
{
- ImplDraw();
+ Size aWinSize = GetOutputSizePixel();
+ size_t nItemCount = mItemList.size();
+ WinBits nStyle = GetStyle();
+ long nNoneHeight = 0;
+ long nNoneSpace = 0;
+ ScrollBar* pDelScrBar = NULL;
+
+ // consider the scrolling
+ if ( nStyle & WB_VSCROLL )
+ ImplInitScrollBar();
+ else
+ {
+ if ( mpScrBar )
+ {
+ // delete ScrollBar not until later, to prevent recursive calls
+ pDelScrBar = mpScrBar;
+ mpScrBar = NULL;
+ }
+ }
+
+ // calculate ScrollBar width
+ long nScrBarWidth = 0;
+ if ( mpScrBar )
+ nScrBarWidth = mpScrBar->GetSizePixel().Width()+SCRBAR_OFFSET;
+
+ // calculate number of columns
+ if ( !mnUserCols )
+ {
+ if ( mnUserItemWidth )
+ {
+ mnCols = (sal_uInt16)((aWinSize.Width()-nScrBarWidth+mnSpacing) / (mnUserItemWidth+mnSpacing));
+ if ( !mnCols )
+ mnCols = 1;
+ }
+ else
+ mnCols = 1;
+ }
+ else
+ mnCols = mnUserCols;
+
+ // calculate number of rows
+ mbScroll = false;
+ // Floor( (M+N-1)/N )==Ceiling( M/N )
+ mnLines = (static_cast<long>(nItemCount)+mnCols-1) / mnCols;
+ if ( !mnLines )
+ mnLines = 1;
+
+ long nCalcHeight = aWinSize.Height()-nNoneHeight;
+ if ( mnUserVisLines )
+ mnVisLines = mnUserVisLines;
+ else if ( mnUserItemHeight )
+ {
+ mnVisLines = (nCalcHeight-nNoneSpace+mnSpacing) / (mnUserItemHeight+mnSpacing);
+ if ( !mnVisLines )
+ mnVisLines = 1;
+ }
+ else
+ mnVisLines = mnLines;
+ if ( mnLines > mnVisLines )
+ mbScroll = true;
+ if ( mnLines <= mnVisLines )
+ mnFirstLine = 0;
+ else
+ {
+ if ( mnFirstLine > (sal_uInt16)(mnLines-mnVisLines) )
+ mnFirstLine = (sal_uInt16)(mnLines-mnVisLines);
+ }
+
+ // calculate item size
+ const long nColSpace = (mnCols-1)*mnSpacing;
+ const long nLineSpace = ((mnVisLines-1)*mnSpacing)+nNoneSpace;
+ if ( mnUserItemWidth && !mnUserCols )
+ {
+ mnItemWidth = mnUserItemWidth;
+ if ( mnItemWidth > aWinSize.Width()-nScrBarWidth-nColSpace )
+ mnItemWidth = aWinSize.Width()-nScrBarWidth-nColSpace;
+ }
+ else
+ mnItemWidth = (aWinSize.Width()-nScrBarWidth-nColSpace) / mnCols;
+ if ( mnUserItemHeight && !mnUserVisLines )
+ {
+ mnItemHeight = mnUserItemHeight;
+ if ( mnItemHeight > nCalcHeight-nNoneSpace )
+ mnItemHeight = nCalcHeight-nNoneSpace;
+ }
+ else
+ {
+ nCalcHeight -= nLineSpace;
+ mnItemHeight = nCalcHeight / mnVisLines;
+ }
+
+ // Init VirDev
+ maVirDev.SetSettings( GetSettings() );
+ maVirDev.SetBackground( GetBackground() );
+ maVirDev.SetOutputSizePixel( aWinSize, sal_True );
+
+ // nothing is changed in case of too small items
+ if ( (mnItemWidth <= 0) ||
+ (mnItemHeight <= 2) ||
+ !nItemCount )
+ {
+ mbHasVisibleItems = false;
+
+ for ( size_t i = 0; i < nItemCount; i++ )
+ {
+ mItemList[i]->mbVisible = false;
+ }
+
+ if ( mpScrBar )
+ mpScrBar->Hide();
+ }
+ else
+ {
+ mbHasVisibleItems = true;
+
+ // determine Frame-Style
+ mnFrameStyle = FRAME_DRAW_IN;
+
+ // determine selected color and width
+ // if necessary change the colors, to make the selection
+ // better detectable
+ const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
+ Color aHighColor( rStyleSettings.GetHighlightColor() );
+ if ( ((aHighColor.GetRed() > 0x80) || (aHighColor.GetGreen() > 0x80) ||
+ (aHighColor.GetBlue() > 0x80)) ||
+ ((aHighColor.GetRed() == 0x80) && (aHighColor.GetGreen() == 0x80) &&
+ (aHighColor.GetBlue() == 0x80)) )
+ mbBlackSel = true;
+ else
+ mbBlackSel = false;
+
+ // draw the selection with double width if the items are bigger
+ mbDoubleSel = false;
+
+ // calculate offsets
+ long nStartX;
+ long nStartY;
+ if ( mbFullMode )
+ {
+ long nAllItemWidth = (mnItemWidth*mnCols)+nColSpace;
+ long nAllItemHeight = (mnItemHeight*mnVisLines)+nNoneHeight+nLineSpace;
+ nStartX = (aWinSize.Width()-nScrBarWidth-nAllItemWidth)/2;
+ nStartY = (aWinSize.Height()-nAllItemHeight)/2;
+ }
+ else
+ {
+ nStartX = 0;
+ nStartY = 0;
+ }
+
+ // calculate and draw items
+ maVirDev.SetLineColor();
+ long x = nStartX;
+ long y = nStartY;
+
+ // draw items
+ sal_uLong nFirstItem = mnFirstLine * mnCols;
+ sal_uLong nLastItem = nFirstItem + (mnVisLines * mnCols);
+
+ maItemListRect.Left() = x;
+ maItemListRect.Top() = y;
+ maItemListRect.Right() = x + mnCols*(mnItemWidth+mnSpacing) - mnSpacing - 1;
+ maItemListRect.Bottom() = y + mnVisLines*(mnItemHeight+mnSpacing) - mnSpacing - 1;
+
+ if ( !mbFullMode )
+ {
+ // If want also draw parts of items in the last line,
+ // then we add one more line if parts of these line are
+ // visible
+ if ( y+(mnVisLines*(mnItemHeight+mnSpacing)) < aWinSize.Height() )
+ nLastItem += mnCols;
+ maItemListRect.Bottom() = aWinSize.Height() - y;
+ }
+ for ( size_t i = 0; i < nItemCount; i++ )
+ {
+ ThumbnailViewItem *const pItem = mItemList[i];
+
+ if ( (i >= nFirstItem) && (i < nLastItem) )
+ {
+ if( !pItem->mbVisible && ImplHasAccessibleListeners() )
+ {
+ ::com::sun::star::uno::Any aOldAny, aNewAny;
+
+ aNewAny <<= pItem->GetAccessible( mbIsTransientChildrenDisabled );
+ ImplFireAccessibleEvent( ::com::sun::star::accessibility::AccessibleEventId::CHILD, aOldAny, aNewAny );
+ }
+
+ pItem->mbVisible = true;
+ DrawItem( pItem, Rectangle( Point(x,y), Size(mnItemWidth, mnItemHeight) ) );
+
+ if ( !((i+1) % mnCols) )
+ {
+ x = nStartX;
+ y += mnItemHeight+mnSpacing;
+ }
+ else
+ x += mnItemWidth+mnSpacing;
+ }
+ else
+ {
+ if( pItem->mbVisible && ImplHasAccessibleListeners() )
+ {
+ ::com::sun::star::uno::Any aOldAny, aNewAny;
+
+ aOldAny <<= pItem->GetAccessible( mbIsTransientChildrenDisabled );
+ ImplFireAccessibleEvent( ::com::sun::star::accessibility::AccessibleEventId::CHILD, aOldAny, aNewAny );
+ }
+
+ pItem->mbVisible = false;
+ }
+ }
+
+ // arrange ScrollBar, set values and show it
+ if ( mpScrBar )
+ {
+ Point aPos( aWinSize.Width()-nScrBarWidth+SCRBAR_OFFSET, 0 );
+ Size aSize( nScrBarWidth-SCRBAR_OFFSET, aWinSize.Height() );
+
+ mpScrBar->SetPosSizePixel( aPos, aSize );
+ mpScrBar->SetRangeMax( mnLines );
+ mpScrBar->SetVisibleSize( mnVisLines );
+ mpScrBar->SetThumbPos( (long)mnFirstLine );
+ long nPageSize = mnVisLines;
+ if ( nPageSize < 1 )
+ nPageSize = 1;
+ mpScrBar->SetPageSize( nPageSize );
+ mpScrBar->Show();
+ }
+ }
+
+ // delete ScrollBar
+ delete pDelScrBar;
}
void ThumbnailView::GetFocus()
@@ -1199,7 +1160,6 @@ void ThumbnailView::LoseFocus()
void ThumbnailView::Resize()
{
- mbFormat = true;
if ( IsReallyVisible() && IsUpdateMode() )
Invalidate();
Control::Resize();
@@ -1211,8 +1171,8 @@ void ThumbnailView::StateChanged( StateChangedType nType )
if ( nType == STATE_CHANGE_INITSHOW )
{
- if ( mbFormat )
- Format();
+ if ( IsReallyVisible() && IsUpdateMode() )
+ Invalidate();
}
else if ( nType == STATE_CHANGE_UPDATEMODE )
{
@@ -1240,7 +1200,6 @@ void ThumbnailView::StateChanged( StateChangedType nType )
}
else if ( (nType == STATE_CHANGE_STYLE) || (nType == STATE_CHANGE_ENABLE) )
{
- mbFormat = true;
ImplInitSettings( false, false, true );
Invalidate();
}
@@ -1256,7 +1215,6 @@ void ThumbnailView::DataChanged( const DataChangedEvent& rDCEvt )
((rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
(rDCEvt.GetFlags() & SETTINGS_STYLE)) )
{
- mbFormat = true;
ImplInitSettings( true, true, true );
Invalidate();
}
@@ -1334,7 +1292,6 @@ void ThumbnailView::ImplInsertItem( ThumbnailViewItem *const pItem, const size_t
mItemList.push_back( pItem );
}
- mbFormat = true;
if ( IsReallyVisible() && IsUpdateMode() )
Invalidate();
}
@@ -1382,7 +1339,6 @@ void ThumbnailView::RemoveItem( sal_uInt16 nItemId )
mbNoSelection = true;
}
- mbFormat = true;
if ( IsReallyVisible() && IsUpdateMode() )
Invalidate();
}
@@ -1398,7 +1354,6 @@ void ThumbnailView::Clear()
mnSelItemId = 0;
mbNoSelection = true;
- mbFormat = true;
if ( IsReallyVisible() && IsUpdateMode() )
Invalidate();
}
@@ -1452,7 +1407,6 @@ void ThumbnailView::SetColCount( sal_uInt16 nNewCols )
if ( mnUserCols != nNewCols )
{
mnUserCols = nNewCols;
- mbFormat = true;
if ( IsReallyVisible() && IsUpdateMode() )
Invalidate();
}
@@ -1463,7 +1417,6 @@ void ThumbnailView::SetLineCount( sal_uInt16 nNewLines )
if ( mnUserVisLines != nNewLines )
{
mnUserVisLines = nNewLines;
- mbFormat = true;
if ( IsReallyVisible() && IsUpdateMode() )
Invalidate();
}
@@ -1474,7 +1427,6 @@ void ThumbnailView::SetItemWidth( long nNewItemWidth )
if ( mnUserItemWidth != nNewItemWidth )
{
mnUserItemWidth = nNewItemWidth;
- mbFormat = true;
if ( IsReallyVisible() && IsUpdateMode() )
Invalidate();
}
@@ -1485,7 +1437,6 @@ void ThumbnailView::SetItemHeight( long nNewItemHeight )
if ( mnUserItemHeight != nNewItemHeight )
{
mnUserItemHeight = nNewItemHeight;
- mbFormat = true;
if ( IsReallyVisible() && IsUpdateMode() )
Invalidate();
}
@@ -1508,7 +1459,7 @@ void ThumbnailView::SelectItem( sal_uInt16 nItemId )
mnSelItemId = nItemId;
mbNoSelection = false;
- bool bNewOut = !mbFormat && IsReallyVisible() && IsUpdateMode();
+ bool bNewOut = IsReallyVisible() && IsUpdateMode();
bool bNewLine = false;
// if necessary scroll to the visible area
@@ -1529,18 +1480,8 @@ void ThumbnailView::SelectItem( sal_uInt16 nItemId )
if ( bNewOut )
{
- if ( bNewLine )
- {
- // redraw everything if the visible area has changed
- mbFormat = true;
- ImplDraw();
- }
- else
- {
- // remove old selection and draw the new one
- ImplHideSelect( nOldItem );
- ImplDrawSelect();
- }
+ if ( IsReallyVisible() && IsUpdateMode() )
+ Invalidate();
}
if( ImplHasAccessibleListeners() )
@@ -1615,7 +1556,7 @@ void ThumbnailView::SetNoSelection()
mbSelection = false;
if ( IsReallyVisible() && IsUpdateMode() )
- ImplDraw();
+ Invalidate();
}
void ThumbnailView::SetItemText( sal_uInt16 nItemId, const rtl::OUString& rText )
@@ -1637,7 +1578,7 @@ void ThumbnailView::SetItemText( sal_uInt16 nItemId, const rtl::OUString& rText
pItem->maText = rText;
- if ( !mbFormat && IsReallyVisible() && IsUpdateMode() )
+ if ( IsReallyVisible() && IsUpdateMode() )
{
sal_uInt16 nTempId = mnSelItemId;
@@ -1669,9 +1610,8 @@ rtl::OUString ThumbnailView::GetItemText( sal_uInt16 nItemId ) const
void ThumbnailView::SetColor( const Color& rColor )
{
maColor = rColor;
- mbFormat = true;
if ( IsReallyVisible() && IsUpdateMode() )
- ImplDraw();
+ Invalidate();
}
void ThumbnailView::StartSelection()
@@ -1749,17 +1689,14 @@ Size ThumbnailView::CalcWindowSizePixel( const Size& rItemSize, sal_uInt16 nDesi
{
nCalcLines = mnVisLines;
- if ( mbFormat )
+ if ( mnUserVisLines )
+ nCalcLines = mnUserVisLines;
+ else
{
- if ( mnUserVisLines )
- nCalcLines = mnUserVisLines;
- else
- {
- // Floor( (M+N-1)/N )==Ceiling( M/N )
- nCalcLines = (mItemList.size()+nCalcCols-1) / nCalcCols;
- if ( !nCalcLines )
- nCalcLines = 1;
- }
+ // Floor( (M+N-1)/N )==Ceiling( M/N )
+ nCalcLines = (mItemList.size()+nCalcCols-1) / nCalcCols;
+ if ( !nCalcLines )
+ nCalcLines = 1;
}
}
commit 643f30de35d26e7e50ef3ea39a476733dbf38251
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Thu Jun 14 15:10:20 2012 -0430
Update paint code to use drawinglayer API.
Change-Id: Iacb8b1a8447d8fb54cbb72b7a5a8f25cadb1267d
diff --git a/sfx2/Library_sfx.mk b/sfx2/Library_sfx.mk
index a516bb3..9009ede 100644
--- a/sfx2/Library_sfx.mk
+++ b/sfx2/Library_sfx.mk
@@ -63,9 +63,11 @@ $(eval $(call gb_Library_add_defs,sfx,\
endif
$(eval $(call gb_Library_use_libraries,sfx,\
+ basegfx \
comphelper \
cppu \
cppuhelper \
+ drawinglayer \
fwe \
i18nisolang1 \
sal \
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index 4285149..c7be3fd 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -14,7 +14,21 @@
#include "orgmgr.hxx"
#include "thumbnailviewacc.hxx"
+#include <basegfx/color/bcolortools.hxx>
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/range/b2drectangle.hxx>
+#include <basegfx/vector/b2dsize.hxx>
+#include <basegfx/vector/b2dvector.hxx>
#include <comphelper/processfactory.hxx>
+#include <drawinglayer/attribute/fillbitmapattribute.hxx>
+#include <drawinglayer/attribute/fontattribute.hxx>
+#include <drawinglayer/primitive2d/fillbitmapprimitive2d.hxx>
+#include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
+#include <drawinglayer/primitive2d/textlayoutdevice.hxx>
+#include <drawinglayer/primitive2d/textprimitive2d.hxx>
+#include <drawinglayer/processor2d/baseprocessor2d.hxx>
+#include <drawinglayer/processor2d/processorfromoutputdevice.hxx>
#include <rtl/ustring.hxx>
#include <unotools/ucbstreamhelper.hxx>
#include <vcl/decoview.hxx>
@@ -31,6 +45,10 @@
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/lang/XSingleServiceFactory.hpp>
+using namespace basegfx;
+using namespace basegfx::tools;
+using namespace drawinglayer::attribute;
+using namespace drawinglayer::primitive2d;
enum
{
@@ -44,6 +62,17 @@ enum
SCROLL_OFFSET = 4
};
+B2DPolygon lcl_Rect2Polygon (const Rectangle &aRect)
+{
+ B2DPolygon aPolygon;
+ aPolygon.append(B2DPoint(aRect.Left(),aRect.Top()));
+ aPolygon.append(B2DPoint(aRect.Left(),aRect.Bottom()));
+ aPolygon.append(B2DPoint(aRect.Right(),aRect.Bottom()));
+ aPolygon.append(B2DPoint(aRect.Right(),aRect.Top()));
+
+ return aPolygon;
+}
+
Image lcl_fetchThumbnail (const rtl::OUString &msURL, int width, int height)
{
using namespace ::com::sun::star;
@@ -305,72 +334,64 @@ void ThumbnailView::DrawItem (ThumbnailViewItem *pItem, const Rectangle &aRect)
{
if ( (aRect.GetHeight() > 0) && (aRect.GetWidth() > 0) )
{
- const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
-
- Point aPos = aRect.TopLeft();
- const Size aSize = aRect.GetSize();
- DrawOutDev( aPos, aSize, aPos, aSize, maVirDev );
-
- Control::SetFillColor();
+ Primitive2DSequence aSeq(3);
- if ( IsColor() )
- maVirDev.SetFillColor( maColor );
- else if ( IsEnabled() )
- maVirDev.SetFillColor( rStyleSettings.GetWindowColor() );
- else
- maVirDev.SetFillColor( rStyleSettings.GetFaceColor() );
+ const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
- maVirDev.DrawRect( aRect );
+ // Draw item background
+ BColor aFillColor = maColor.getBColor();
if ( pItem->mbSelected || pItem->mbHover )
- {
- Rectangle aSelRect = aRect;
- Color aDoubleColor( rStyleSettings.GetHighlightColor() );
+ aFillColor = rStyleSettings.GetHighlightColor().getBColor();
- // specify selection output
- aSelRect.Left() += 4;
- aSelRect.Top() += 4;
- aSelRect.Right() -= 4;
- aSelRect.Bottom() -= 4;
-
- SetLineColor( aDoubleColor );
- aSelRect.Left()++;
- aSelRect.Top()++;
- aSelRect.Right()--;
- aSelRect.Bottom()--;
- DrawRect( aSelRect );
- aSelRect.Left()++;
- aSelRect.Top()++;
- aSelRect.Right()--;
- aSelRect.Bottom()--;
- DrawRect( aSelRect );
- }
+ aSeq[0] = Primitive2DReference( new PolyPolygonColorPrimitive2D(
+ B2DPolyPolygon(lcl_Rect2Polygon(aRect)),
+ aFillColor));
// Draw thumbnail
- Size aImageSize = pItem->maImage.GetSizePixel();
- Size aRectSize = aRect.GetSize();
+ Point aPos = aRect.TopLeft();
+ Size aImageSize = pItem->maImage.GetSizePixel();
+ Size aRectSize = aRect.GetSize();
aPos.X() = aRect.Left() + (aRectSize.Width()-aImageSize.Width())/2;
aPos.Y() = aRect.Top() + (aRectSize.Height()-aImageSize.Height())/2;
- sal_uInt16 nImageStyle = 0;
- if( !IsEnabled() )
- nImageStyle |= IMAGE_DRAW_DISABLE;
-
- if ( (aImageSize.Width() > aRectSize.Width()) ||
- (aImageSize.Height() > aRectSize.Height()) )
- {
- maVirDev.SetClipRegion( Region( aRect ) );
- maVirDev.DrawImage( aPos, pItem->maImage, nImageStyle);
- maVirDev.SetClipRegion();
- }
- else
- maVirDev.DrawImage( aPos, pItem->maImage, nImageStyle );
+ aSeq[1] = Primitive2DReference( new FillBitmapPrimitive2D(
+ B2DHomMatrix(),
+ FillBitmapAttribute(pItem->maImage.GetBitmapEx(),
+ B2DPoint(aPos.X(),aPos.Y()),
+ B2DVector(aImageSize.Width(),aImageSize.Height()),
+ false)
+ ));
// Draw centered text below thumbnail
- aPos.Y() += 5 + aImageSize.Height();
+ aPos.Y() += 20 + aImageSize.Height();
aPos.X() = aRect.Left() + (aRectSize.Width() - maVirDev.GetTextWidth(pItem->maText))/2;
- maVirDev.DrawText(aPos,pItem->maText);
+ // Create the text primitive
+ B2DVector aFontSize;
+ FontAttribute aFontAttr = getFontAttributeFromVclFont(
+ aFontSize, GetFont(), false, true );
+
+
+ basegfx::B2DHomMatrix aTextMatrix( createScaleTranslateB2DHomMatrix(
+ aFontSize.getX(), aFontSize.getY(),
+ double( aPos.X() ), double( aPos.Y() ) ) );
+
+ aSeq[2] = Primitive2DReference(
+ new TextSimplePortionPrimitive2D(aTextMatrix,
+ pItem->maText,0,pItem->maText.getLength(),
+ std::vector< double >( ),
+ aFontAttr,
+ com::sun::star::lang::Locale(),
+ Color(COL_BLACK).getBColor() ) );
+
+ // Create the processor and process the primitives
+ const drawinglayer::geometry::ViewInformation2D aNewViewInfos;
+ drawinglayer::processor2d::BaseProcessor2D * pProcessor =
+ drawinglayer::processor2d::createBaseProcessor2DFromOutputDevice(
+ *this, aNewViewInfos );
+
+ pProcessor->process(aSeq);
}
}
commit f88c608f482f1b682d06e4945026e826877f2c2a
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Thu Jun 14 10:57:06 2012 -0430
Remove ImplHighlightItem function.
Change-Id: I040780c93778d72ebb07d0638049450dc29e4e30
diff --git a/sfx2/inc/sfx2/thumbnailview.hxx b/sfx2/inc/sfx2/thumbnailview.hxx
index 95b2ea9..ca59ef9 100644
--- a/sfx2/inc/sfx2/thumbnailview.hxx
+++ b/sfx2/inc/sfx2/thumbnailview.hxx
@@ -305,7 +305,6 @@ private:
SVT_DLLPRIVATE void ImplDeleteItems();
SVT_DLLPRIVATE void ImplDrawSelect();
SVT_DLLPRIVATE void ImplHideSelect( sal_uInt16 nItemId );
- SVT_DLLPRIVATE void ImplHighlightItem( sal_uInt16 nItemId, bool bIsSelection = true );
SVT_DLLPRIVATE void ImplDraw();
using Window::ImplScroll;
SVT_DLLPRIVATE bool ImplScroll( const Point& rPos );
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index 0184701..4285149 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -724,25 +724,6 @@ void ThumbnailView::ImplHideSelect( sal_uInt16 nItemId )
}
}
-void ThumbnailView::ImplHighlightItem( sal_uInt16 nItemId, bool bIsSelection )
-{
- if ( mnHighItemId != nItemId )
- {
- // remember the old item to delete the previous selection
- sal_uInt16 nOldItem = mnHighItemId;
- mnHighItemId = nItemId;
-
- // don't draw the selection if nothing is selected
- if ( !bIsSelection && mbNoSelection )
- mbDrawSelection = false;
-
- // remove the old selection and draw the new one
- ImplHideSelect( nOldItem );
- ImplDrawSelect();
- mbDrawSelection = true;
- }
-}
-
void ThumbnailView::ImplDraw()
{
if ( mbFormat )
@@ -946,28 +927,19 @@ void ThumbnailView::MouseButtonDown( const MouseEvent& rMEvt )
if (pItem)
{
- if ( mbSelection )
- {
- mbHighlight = true;
- mnHighItemId = mnSelItemId;
- ImplHighlightItem( pItem->mnId );
- }
- else
+ if ( !rMEvt.IsMod2() )
{
- if ( !rMEvt.IsMod2() )
+ if ( rMEvt.GetClicks() == 1 )
{
- if ( rMEvt.GetClicks() == 1 )
- {
- pItem->mbSelected = !pItem->mbSelected;
+ pItem->mbSelected = !pItem->mbSelected;
- if (!pItem->mbHover)
- DrawItem(pItem,GetItemRect(pItem->mnId));
+ if (!pItem->mbHover)
+ DrawItem(pItem,GetItemRect(pItem->mnId));
- //StartTracking( STARTTRACK_SCROLLREPEAT );
- }
- else if ( rMEvt.GetClicks() == 2 )
- DoubleClick();
+ //StartTracking( STARTTRACK_SCROLLREPEAT );
}
+ else if ( rMEvt.GetClicks() == 2 )
+ DoubleClick();
}
return;
@@ -1695,7 +1667,6 @@ void ThumbnailView::EndSelection()
if ( IsTracking() )
EndTracking( ENDTRACK_CANCEL );
- ImplHighlightItem( mnSelItemId );
mbHighlight = false;
}
mbSelection = false;
commit 70929122b60c2448230e05f58d69856ce21b34b4
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Thu Jun 14 10:09:48 2012 -0430
Clear Tracking handling code.
Change-Id: Icfeba7191d337c3c812db32b845289a01a699cf7
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index 3fcba83..0184701 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -932,43 +932,10 @@ void ThumbnailView::ImplTracking( const Point& rPos, bool bRepeat )
}
}
}
-
- ThumbnailViewItem* pItem = ImplGetItem( ImplGetItem( rPos ) );
- if ( pItem )
- {
- ImplHighlightItem( pItem->mnId );
- }
- else
- {
- ImplHighlightItem( mnSelItemId, false );
- }
}
void ThumbnailView::ImplEndTracking( const Point& rPos, bool bCancel )
{
- ThumbnailViewItem* pItem;
-
- // restore the old status in case of termination
- if ( bCancel )
- pItem = NULL;
- else
- pItem = ImplGetItem( ImplGetItem( rPos ) );
-
- if ( pItem )
- {
- SelectItem( pItem->mnId );
- if ( !mbSelection )
- GrabFocus();
- mbHighlight = false;
- mbSelection = false;
- Select();
- }
- else
- {
- ImplHighlightItem( mnSelItemId, false );
- mbHighlight = false;
- mbSelection = false;
- }
}
void ThumbnailView::MouseButtonDown( const MouseEvent& rMEvt )
More information about the Libreoffice-commits
mailing list