svtools/source/hatchwindow/ipwin.cxx | 34 +-- svtools/source/hatchwindow/ipwin.hxx | 55 +++--- svtools/source/table/gridtablerenderer.cxx | 255 +++++++++++++---------------- svtools/source/table/tablecontrol_impl.cxx | 89 +++------- svtools/source/table/tablecontrol_impl.hxx | 5 svtools/source/table/tabledatawindow.cxx | 16 - svtools/source/table/tabledatawindow.hxx | 18 +- svtools/source/toolpanel/paneltabbar.cxx | 224 ++++++++++++------------- 8 files changed, 331 insertions(+), 365 deletions(-)
New commits: commit 373edbd7a3eb5eed089c1addbf5e19947bed24c9 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> Date: Mon May 11 18:58:38 2015 +0900 refactor PanelTabBar to use RenderContext Change-Id: I67865bc2512760a8dfcb6dc1b7688400f7986a6a diff --git a/svtools/source/toolpanel/paneltabbar.cxx b/svtools/source/toolpanel/paneltabbar.cxx index 62dccf9..4c12b9f 100644 --- a/svtools/source/toolpanel/paneltabbar.cxx +++ b/svtools/source/toolpanel/paneltabbar.cxx @@ -343,18 +343,19 @@ namespace svt class PanelTabBar_Impl : public IToolPanelDeckListener { public: - PanelTabBar_Impl( PanelTabBar& i_rTabBar, IToolPanelDeck& i_rPanelDeck, const TabAlignment i_eAlignment, const TabItemContent i_eItemContent ); + PanelTabBar_Impl(PanelTabBar& i_rTabBar, IToolPanelDeck& i_rPanelDeck, + const TabAlignment i_eAlignment, const TabItemContent i_eItemContent); virtual ~PanelTabBar_Impl() { - m_rPanelDeck.RemoveListener( *this ); + m_rPanelDeck.RemoveListener(*this); } // IToolPanelDeckListener - virtual void PanelInserted( const PToolPanel& i_pPanel, const size_t i_nPosition ) SAL_OVERRIDE + virtual void PanelInserted(const PToolPanel& i_pPanel, const size_t i_nPosition) SAL_OVERRIDE { - (void)i_pPanel; - (void)i_nPosition; + (void) i_pPanel; + (void) i_nPosition; m_bItemsDirty = true; m_rTabBar.Invalidate(); @@ -372,22 +373,23 @@ namespace svt Relayout(); } - virtual void ActivePanelChanged( const ::boost::optional< size_t >& i_rOldActive, const ::boost::optional< size_t >& i_rNewActive ) SAL_OVERRIDE; - virtual void LayouterChanged( const PDeckLayouter& i_rNewLayouter ) SAL_OVERRIDE; + virtual void ActivePanelChanged(const boost::optional<size_t>& i_rOldActive, + const boost::optional<size_t>& i_rNewActive) SAL_OVERRIDE; + virtual void LayouterChanged(const PDeckLayouter& i_rNewLayouter) SAL_OVERRIDE; virtual void Dying() SAL_OVERRIDE; - void UpdateScrollButtons() + void UpdateScrollButtons() { - m_aScrollBack->Enable( m_nScrollPosition > 0 ); - m_aScrollForward->Enable( m_nScrollPosition < m_aItems.size() - 1 ); + m_aScrollBack->Enable(m_nScrollPosition > 0); + m_aScrollForward->Enable(m_nScrollPosition < m_aItems.size() - 1); } void Relayout(); void EnsureItemsCache(); - ::boost::optional< size_t > FindItemForPoint( const Point& i_rPoint ) const; - void DrawItem( const size_t i_nItemIndex, const Rectangle& i_rBoundaries ) const; + boost::optional<size_t> FindItemForPoint( const Point& i_rPoint ) const; + void DrawItem(vcl::RenderContext& rRenderContext, const size_t i_nItemIndex, const Rectangle& i_rBoundaries) const; void InvalidateItem( const size_t i_nItemIndex, const ItemFlags i_nAdditionalItemFlags = 0 ) const; - void CopyFromRenderDevice( const Rectangle& i_rLogicalRect ) const; + void CopyFromRenderDevice(vcl::RenderContext& rRenderContext, const Rectangle& i_rLogicalRect) const; Rectangle GetActualLogicalItemRect( const Rectangle& i_rLogicalItemRect ) const; Rectangle GetItemScreenRect( const size_t i_nItemPos ) const; @@ -405,7 +407,8 @@ namespace svt void impl_calcItemRects(); Size impl_calculateItemContentSize( const PToolPanel& i_pPanel, const TabItemContent i_eItemContent ) const; - void impl_renderItemContent( const PToolPanel& i_pPanel, const Rectangle& i_rContentArea, const TabItemContent i_eItemContent ) const; + void impl_renderItemContent(vcl::RenderContext& rRenderContext, const PToolPanel& i_pPanel, + const Rectangle& i_rContentArea, const TabItemContent i_eItemContent) const; ItemFlags impl_getItemFlags( const size_t i_nItemIndex ) const; public: @@ -418,8 +421,8 @@ namespace svt ScopedVclPtr<VirtualDevice> m_aRenderDevice; PTabBarRenderer m_pRenderer; - ::boost::optional< size_t > m_aHoveredItem; - ::boost::optional< size_t > m_aFocusedItem; + boost::optional<size_t> m_aHoveredItem; + boost::optional<size_t> m_aFocusedItem; bool m_bMouseButtonDown; ItemDescriptors m_aItems; @@ -511,17 +514,17 @@ namespace svt ,m_nScrollPosition( 0 ) { #ifdef WNT - if ( m_aRenderDevice->IsNativeControlSupported( CTRL_TAB_ITEM, PART_ENTIRE_CONTROL ) ) + if (m_aRenderDevice->IsNativeControlSupported(CTRL_TAB_ITEM, PART_ENTIRE_CONTROL)) // this mode requires the NWF framework to be able to render those items onto a virtual // device. For some frameworks (some GTK themes, in particular), this is known to fail. // So, be on the safe side for the moment. - m_pRenderer.reset( new NWFTabItemRenderer( *m_aRenderDevice.get() ) ); + m_pRenderer.reset(new NWFTabItemRenderer(*m_aRenderDevice.get())); else #endif - if ( m_aRenderDevice->IsNativeControlSupported( CTRL_TOOLBAR, PART_BUTTON ) ) - m_pRenderer.reset( new NWFToolboxItemRenderer( *m_aRenderDevice.get() ) ); + if (m_aRenderDevice->IsNativeControlSupported(CTRL_TOOLBAR, PART_BUTTON)) + m_pRenderer.reset(new NWFToolboxItemRenderer(*m_aRenderDevice.get())); else - m_pRenderer.reset( new VCLItemRenderer( *m_aRenderDevice.get() ) ); + m_pRenderer.reset(new VCLItemRenderer(*m_aRenderDevice.get())); m_aRenderDevice->SetLineColor(); @@ -625,12 +628,12 @@ namespace svt } - void PanelTabBar_Impl::impl_renderItemContent( const PToolPanel& i_pPanel, const Rectangle& i_rContentArea, const TabItemContent i_eItemContent ) const + void PanelTabBar_Impl::impl_renderItemContent(vcl::RenderContext& rRenderContext, const PToolPanel& i_pPanel, const Rectangle& i_rContentArea, const TabItemContent i_eItemContent) const { - OSL_ENSURE( i_eItemContent != TABITEM_AUTO, "PanelTabBar_Impl::impl_renderItemContent: illegal TabItemContent value!" ); + OSL_ENSURE(i_eItemContent != TABITEM_AUTO, "PanelTabBar_Impl::impl_renderItemContent: illegal TabItemContent value!"); - Rectangle aRenderArea( i_rContentArea ); - if ( IsVertical() ) + Rectangle aRenderArea(i_rContentArea); + if (IsVertical()) { aRenderArea.Top() += ITEM_OUTER_SPACE; } @@ -640,96 +643,91 @@ namespace svt } // draw the image - const Image aItemImage( i_pPanel->GetImage() ); - const Size aImageSize( aItemImage.GetSizePixel() ); - const bool bUseImage = !!aItemImage && ( i_eItemContent != TABITEM_TEXT_ONLY ); + const Image aItemImage(i_pPanel->GetImage()); + const Size aImageSize(aItemImage.GetSizePixel()); + const bool bUseImage = !!aItemImage && (i_eItemContent != TABITEM_TEXT_ONLY); - if ( bUseImage ) + if (bUseImage) { Point aImagePos; - if ( IsVertical() ) + if (IsVertical()) { - aImagePos.X() = aRenderArea.Left() + ( aRenderArea.GetWidth() - aImageSize.Width() ) / 2; + aImagePos.X() = aRenderArea.Left() + (aRenderArea.GetWidth() - aImageSize.Width()) / 2; aImagePos.Y() = aRenderArea.Top(); } else { aImagePos.X() = aRenderArea.Left(); - aImagePos.Y() = aRenderArea.Top() + ( aRenderArea.GetHeight() - aImageSize.Height() ) / 2; + aImagePos.Y() = aRenderArea.Top() + (aRenderArea.GetHeight() - aImageSize.Height()) / 2; } - m_rTabBar.DrawImage( aImagePos, aItemImage ); + rRenderContext.DrawImage(aImagePos, aItemImage); } - const OUString sItemText( i_pPanel->GetDisplayName() ); - const bool bUseText = ( !sItemText.isEmpty() ) && ( i_eItemContent != TABITEM_IMAGE_ONLY ); + const OUString sItemText(i_pPanel->GetDisplayName()); + const bool bUseText = (!sItemText.isEmpty()) && (i_eItemContent != TABITEM_IMAGE_ONLY); - if ( bUseText ) + if (bUseText) { - if ( IsVertical() ) + if (IsVertical()) { - if ( bUseImage ) + if (bUseImage) aRenderArea.Top() += aImageSize.Height() + ITEM_ICON_TEXT_DISTANCE; aRenderArea.Top() += ITEM_TEXT_FLOW_SPACE; } else { - if ( bUseImage ) + if (bUseImage) aRenderArea.Left() += aImageSize.Width() + ITEM_ICON_TEXT_DISTANCE; aRenderArea.Left() += ITEM_TEXT_FLOW_SPACE; } // draw the text - const Size aTextSize( m_rTabBar.GetCtrlTextWidth( sItemText ), m_rTabBar.GetTextHeight() ); - Point aTextPos( aRenderArea.TopLeft() ); - if ( IsVertical() ) + const Size aTextSize(m_rTabBar.GetCtrlTextWidth(sItemText), rRenderContext.GetTextHeight()); + Point aTextPos(aRenderArea.TopLeft()); + if (IsVertical()) { - m_rTabBar.Push( PushFlags::FONT ); + rRenderContext.Push(PushFlags::FONT); - vcl::Font aFont( m_rTabBar.GetFont() ); - aFont.SetOrientation( 2700 ); - aFont.SetVertical( true ); - m_rTabBar.SetFont( aFont ); + vcl::Font aFont(rRenderContext.GetFont()); + aFont.SetOrientation(2700); + aFont.SetVertical(true); + rRenderContext.SetFont(aFont); aTextPos.X() += aTextSize.Height(); - aTextPos.X() += ( aRenderArea.GetWidth() - aTextSize.Height() ) / 2; + aTextPos.X() += (aRenderArea.GetWidth() - aTextSize.Height()) / 2; } else { - aTextPos.Y() += ( aRenderArea.GetHeight() - aTextSize.Height() ) / 2; + aTextPos.Y() += (aRenderArea.GetHeight() - aTextSize.Height()) / 2; } - m_rTabBar.DrawText( aTextPos, sItemText ); + rRenderContext.DrawText(aTextPos, sItemText); - if ( IsVertical() ) + if (IsVertical()) { - m_rTabBar.Pop(); + rRenderContext.Pop(); } } } - - void PanelTabBar_Impl::CopyFromRenderDevice( const Rectangle& i_rLogicalRect ) const + void PanelTabBar_Impl::CopyFromRenderDevice(vcl::RenderContext& rRenderContext, const Rectangle& i_rLogicalRect) const { - BitmapEx aBitmap( m_aRenderDevice->GetBitmapEx( - i_rLogicalRect.TopLeft(), - Size( - i_rLogicalRect.GetSize().Width(), - i_rLogicalRect.GetSize().Height() - ) - ) ); - if ( IsVertical() ) + BitmapEx aBitmap(m_aRenderDevice->GetBitmapEx(i_rLogicalRect.TopLeft(), + Size(i_rLogicalRect.GetSize().Width(), + i_rLogicalRect.GetSize().Height()))); + if (IsVertical()) { - aBitmap.Rotate( 2700, COL_BLACK ); - if ( m_eTabAlignment == TABS_LEFT ) - aBitmap.Mirror( BmpMirrorFlags::Horizontal ); + aBitmap.Rotate(2700, COL_BLACK); + if (m_eTabAlignment == TABS_LEFT) + aBitmap.Mirror(BmpMirrorFlags::Horizontal); } - else if ( m_eTabAlignment == TABS_BOTTOM ) + else if (m_eTabAlignment == TABS_BOTTOM) { - aBitmap.Mirror( BmpMirrorFlags::Vertical ); + aBitmap.Mirror(BmpMirrorFlags::Vertical); } - const Rectangle aActualRect( m_aNormalizer.getTransformed( i_rLogicalRect, m_eTabAlignment ) ); - m_rTabBar.DrawBitmapEx( aActualRect.TopLeft(), aBitmap ); + const Rectangle aActualRect(m_aNormalizer.getTransformed(i_rLogicalRect, m_eTabAlignment)); + rRenderContext.DrawBitmapEx(aActualRect.TopLeft(), aBitmap); } @@ -772,42 +770,42 @@ namespace svt } - void PanelTabBar_Impl::DrawItem( const size_t i_nItemIndex, const Rectangle& i_rBoundaries ) const + void PanelTabBar_Impl::DrawItem(vcl::RenderContext& rRenderContext, const size_t i_nItemIndex, const Rectangle& i_rBoundaries) const { - const ItemDescriptor& rItem( m_aItems[ i_nItemIndex ] ); - const ItemFlags nItemFlags( impl_getItemFlags( i_nItemIndex ) ); + const ItemDescriptor& rItem(m_aItems[i_nItemIndex]); + const ItemFlags nItemFlags(impl_getItemFlags(i_nItemIndex)); // the normalized bounding and content rect - const Rectangle aNormalizedContent( GetActualLogicalItemRect( rItem.GetCurrentRect() ) ); - const Rectangle aNormalizedBounds( m_pRenderer->calculateDecorations( aNormalizedContent, nItemFlags ) ); + const Rectangle aNormalizedContent(GetActualLogicalItemRect(rItem.GetCurrentRect())); + const Rectangle aNormalizedBounds(m_pRenderer->calculateDecorations(aNormalizedContent, nItemFlags)); // check whether the item actually overlaps with the painting area - if ( !i_rBoundaries.IsEmpty() ) + if (!i_rBoundaries.IsEmpty()) { - const Rectangle aItemRect( GetActualLogicalItemRect( rItem.GetCurrentRect() ) ); - if ( !aItemRect.IsOver( i_rBoundaries ) ) + const Rectangle aItemRect(GetActualLogicalItemRect(rItem.GetCurrentRect())); + if (!aItemRect.IsOver(i_rBoundaries)) return; } - m_rTabBar.SetUpdateMode( false ); + m_rTabBar.SetUpdateMode(false); // the aligned bounding and content rect const Rectangle aActualBounds = m_aNormalizer.getTransformed( aNormalizedBounds, m_eTabAlignment ); const Rectangle aActualContent = m_aNormalizer.getTransformed( aNormalizedContent, m_eTabAlignment ); // render item "background" layer - m_pRenderer->preRenderItem( aNormalizedContent, nItemFlags ); + m_pRenderer->preRenderItem(aNormalizedContent, nItemFlags); // copy from the virtual device to ourself - CopyFromRenderDevice( aNormalizedBounds ); + CopyFromRenderDevice(rRenderContext, aNormalizedBounds); // render the actual item content - impl_renderItemContent( rItem.pPanel, aActualContent, rItem.eContent ); + impl_renderItemContent(rRenderContext, rItem.pPanel, aActualContent, rItem.eContent); // render item "foreground" layer - m_pRenderer->postRenderItem( m_rTabBar, aActualBounds, nItemFlags ); + m_pRenderer->postRenderItem(m_rTabBar, aActualBounds, nItemFlags); - m_rTabBar.SetUpdateMode( true ); + m_rTabBar.SetUpdateMode(true); } @@ -1044,54 +1042,52 @@ namespace svt } - void PanelTabBar::Paint( vcl::RenderContext& /*rRenderContext*/, const Rectangle& i_rRect ) + void PanelTabBar::Paint(vcl::RenderContext& rRenderContext, const Rectangle& i_rRect) { m_pImpl->EnsureItemsCache(); // background - const Rectangle aNormalizedPaintArea( m_pImpl->m_aNormalizer.getNormalized( i_rRect, m_pImpl->m_eTabAlignment ) ); - m_pImpl->m_aRenderDevice->Push( PushFlags::CLIPREGION ); + const Rectangle aNormalizedPaintArea(m_pImpl->m_aNormalizer.getNormalized(i_rRect, m_pImpl->m_eTabAlignment)); + m_pImpl->m_aRenderDevice->Push(PushFlags::CLIPREGION); m_pImpl->m_aRenderDevice->SetClipRegion(vcl::Region(aNormalizedPaintArea)); m_pImpl->m_pRenderer->renderBackground(); m_pImpl->m_aRenderDevice->Pop(); - m_pImpl->CopyFromRenderDevice( aNormalizedPaintArea ); + m_pImpl->CopyFromRenderDevice(rRenderContext, aNormalizedPaintArea); // ensure the items really paint into their own playground only - ClipItemRegion aClipItems( *m_pImpl ); + ClipItemRegion aClipItems(*m_pImpl); - const Rectangle aLogicalPaintRect( m_pImpl->m_aNormalizer.getNormalized( i_rRect, m_pImpl->m_eTabAlignment ) ); + const Rectangle aLogicalPaintRect(m_pImpl->m_aNormalizer.getNormalized(i_rRect, m_pImpl->m_eTabAlignment)); - const ::boost::optional< size_t > aActivePanel( m_pImpl->m_rPanelDeck.GetActivePanel() ); - const ::boost::optional< size_t > aHoveredPanel( m_pImpl->m_aHoveredItem ); + const boost::optional<size_t> aActivePanel(m_pImpl->m_rPanelDeck.GetActivePanel()); + const boost::optional<size_t> aHoveredPanel(m_pImpl->m_aHoveredItem); // items: // 1. paint all non-active, non-hovered items - size_t i=0; - for ( ItemDescriptors::const_iterator item = m_pImpl->m_aItems.begin(); - item != m_pImpl->m_aItems.end(); - ++item, ++i - ) + size_t i = 0; + ItemDescriptors::const_iterator item; + for (item = m_pImpl->m_aItems.begin(); item != m_pImpl->m_aItems.end(); ++item, ++i) { - if ( i == aActivePanel ) + if (i == aActivePanel) continue; - if ( aHoveredPanel == i ) + if (aHoveredPanel == i) continue; - m_pImpl->DrawItem( i, aLogicalPaintRect ); + m_pImpl->DrawItem(rRenderContext, i, aLogicalPaintRect); } // 2. paint the item which is hovered, /without/ the mouse button pressed down - if ( !!aHoveredPanel && !m_pImpl->m_bMouseButtonDown ) - m_pImpl->DrawItem( *aHoveredPanel, aLogicalPaintRect ); + if (!!aHoveredPanel && !m_pImpl->m_bMouseButtonDown) + m_pImpl->DrawItem(rRenderContext, *aHoveredPanel, aLogicalPaintRect); // 3. paint the active item - if ( !!aActivePanel ) - m_pImpl->DrawItem( *aActivePanel, aLogicalPaintRect ); + if (!!aActivePanel) + m_pImpl->DrawItem(rRenderContext, *aActivePanel, aLogicalPaintRect); // 4. paint the item which is hovered, /with/ the mouse button pressed down - if ( !!aHoveredPanel && m_pImpl->m_bMouseButtonDown ) - m_pImpl->DrawItem( *aHoveredPanel, aLogicalPaintRect ); + if (!!aHoveredPanel && m_pImpl->m_bMouseButtonDown) + m_pImpl->DrawItem(rRenderContext, *aHoveredPanel, aLogicalPaintRect); } @@ -1099,25 +1095,25 @@ namespace svt { m_pImpl->EnsureItemsCache(); - ::boost::optional< size_t > aOldItem( m_pImpl->m_aHoveredItem ); - ::boost::optional< size_t > aNewItem( m_pImpl->FindItemForPoint( i_rMouseEvent.GetPosPixel() ) ); + boost::optional< size_t > aOldItem(m_pImpl->m_aHoveredItem); + boost::optional< size_t > aNewItem(m_pImpl->FindItemForPoint(i_rMouseEvent.GetPosPixel())); - if ( i_rMouseEvent.IsLeaveWindow() ) - aNewItem = ::boost::optional< size_t >(); + if (i_rMouseEvent.IsLeaveWindow()) + aNewItem = boost::optional<size_t>(); bool const bChanged( ( !aOldItem && aNewItem ) || ( aOldItem && !aNewItem ) - || ( aOldItem && aNewItem && aOldItem != aNewItem ) ) - ; - if ( bChanged ) + || ( aOldItem && aNewItem && aOldItem != aNewItem ) ); + + if (bChanged) { - if ( aOldItem ) + if (aOldItem) m_pImpl->InvalidateItem( *aOldItem ); m_pImpl->m_aHoveredItem = aNewItem; - if ( aNewItem ) + if (aNewItem) m_pImpl->InvalidateItem( *aNewItem ); } } commit f4147a39374c7692728e8506961f23e59a069c45 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> Date: Mon May 11 18:36:28 2015 +0900 refactor TableControl to use RenderContext Change-Id: I4a84cdc8517b69b28fbb8521d0593ae5ed4c3a79 diff --git a/svtools/source/table/gridtablerenderer.cxx b/svtools/source/table/gridtablerenderer.cxx index d4b9843..ee7600a 100644 --- a/svtools/source/table/gridtablerenderer.cxx +++ b/svtools/source/table/gridtablerenderer.cxx @@ -36,22 +36,20 @@ namespace svt { namespace table { - - - using ::com::sun::star::uno::Any; - using ::com::sun::star::uno::Reference; - using ::com::sun::star::uno::UNO_QUERY; - using ::com::sun::star::uno::XInterface; - using ::com::sun::star::uno::TypeClass_INTERFACE; - using ::com::sun::star::graphic::XGraphic; - using ::com::sun::star::style::HorizontalAlignment; - using ::com::sun::star::style::HorizontalAlignment_LEFT; - using ::com::sun::star::style::HorizontalAlignment_CENTER; - using ::com::sun::star::style::HorizontalAlignment_RIGHT; - using ::com::sun::star::style::VerticalAlignment; - using ::com::sun::star::style::VerticalAlignment_TOP; - using ::com::sun::star::style::VerticalAlignment_MIDDLE; - using ::com::sun::star::style::VerticalAlignment_BOTTOM; + using ::css::uno::Any; + using ::css::uno::Reference; + using ::css::uno::UNO_QUERY; + using ::css::uno::XInterface; + using ::css::uno::TypeClass_INTERFACE; + using ::css::graphic::XGraphic; + using ::css::style::HorizontalAlignment; + using ::css::style::HorizontalAlignment_LEFT; + using ::css::style::HorizontalAlignment_CENTER; + using ::css::style::HorizontalAlignment_RIGHT; + using ::css::style::VerticalAlignment; + using ::css::style::VerticalAlignment_TOP; + using ::css::style::VerticalAlignment_MIDDLE; + using ::css::style::VerticalAlignment_BOTTOM; //= CachedSortIndicator @@ -60,26 +58,26 @@ namespace svt { namespace table { public: CachedSortIndicator() - :m_lastHeaderHeight( 0 ) - ,m_lastArrowColor( COL_TRANSPARENT ) + : m_lastHeaderHeight( 0 ) + , m_lastArrowColor( COL_TRANSPARENT ) { } - BitmapEx const & getBitmapFor( OutputDevice const & i_device, long const i_headerHeight, StyleSettings const & i_style, bool const i_sortAscending ); + BitmapEx const & getBitmapFor(OutputDevice const & i_device, long const i_headerHeight, + StyleSettings const & i_style, bool const i_sortAscending); private: - long m_lastHeaderHeight; - Color m_lastArrowColor; - BitmapEx m_sortAscending; - BitmapEx m_sortDescending; + long m_lastHeaderHeight; + Color m_lastArrowColor; + BitmapEx m_sortAscending; + BitmapEx m_sortDescending; }; - - BitmapEx const & CachedSortIndicator::getBitmapFor( OutputDevice const & i_device, long const i_headerHeight, + BitmapEx const & CachedSortIndicator::getBitmapFor(vcl::RenderContext const& i_device, long const i_headerHeight, StyleSettings const & i_style, bool const i_sortAscending ) { - BitmapEx & rBitmap( i_sortAscending ? m_sortAscending : m_sortDescending ); - if ( !rBitmap || ( i_headerHeight != m_lastHeaderHeight ) || ( i_style.GetActiveColor() != m_lastArrowColor ) ) + BitmapEx& rBitmap(i_sortAscending ? m_sortAscending : m_sortDescending); + if (!rBitmap || (i_headerHeight != m_lastHeaderHeight) || (i_style.GetActiveColor() != m_lastArrowColor)) { long const nSortIndicatorWidth = 2 * i_headerHeight / 3; long const nSortIndicatorHeight = 2 * nSortIndicatorWidth / 3; @@ -89,14 +87,12 @@ namespace svt { namespace table ScopedVclPtrInstance< VirtualDevice > aDevice( i_device, 0, 0 ); aDevice->SetOutputSizePixel( aBitmapSize ); - DecorationView aDecoView( aDevice.get() ); - aDecoView.DrawSymbol( - Rectangle( aBitmapPos, aBitmapSize ), - i_sortAscending ? SymbolType::SPIN_UP : SymbolType::SPIN_DOWN, - i_style.GetActiveColor() - ); + DecorationView aDecoView(aDevice.get()); + aDecoView.DrawSymbol(Rectangle(aBitmapPos, aBitmapSize), + i_sortAscending ? SymbolType::SPIN_UP : SymbolType::SPIN_DOWN, + i_style.GetActiveColor()); - rBitmap = aDevice->GetBitmapEx( aBitmapPos, aBitmapSize ); + rBitmap = aDevice->GetBitmapEx(aBitmapPos, aBitmapSize); m_lastHeaderHeight = i_headerHeight; m_lastArrowColor = i_style.GetActiveColor(); } @@ -115,11 +111,11 @@ namespace svt { namespace table CellValueConversion aStringConverter; GridTableRenderer_Impl( ITableModel& _rModel ) - :rModel( _rModel ) - ,nCurrentRow( ROW_INVALID ) - ,bUseGridLines( true ) - ,aSortIndicator( ) - ,aStringConverter() + : rModel( _rModel ) + , nCurrentRow( ROW_INVALID ) + , bUseGridLines( true ) + , aSortIndicator( ) + , aStringConverter() { } }; @@ -205,51 +201,48 @@ namespace svt { namespace table namespace { - Color lcl_getEffectiveColor( - ::boost::optional< ::Color > const & i_modelColor, - StyleSettings const & i_styleSettings, - ::Color const & ( StyleSettings::*i_getDefaultColor ) () const - ) + Color lcl_getEffectiveColor(boost::optional<Color> const& i_modelColor, + StyleSettings const& i_styleSettings, + Color const& (StyleSettings::*i_getDefaultColor) () const) { - if ( !!i_modelColor ) + if (!!i_modelColor) return *i_modelColor; - return ( i_styleSettings.*i_getDefaultColor )(); + return (i_styleSettings.*i_getDefaultColor)(); } } - void GridTableRenderer::PaintHeaderArea( - OutputDevice& _rDevice, const Rectangle& _rArea, bool _bIsColHeaderArea, bool _bIsRowHeaderArea, - const StyleSettings& _rStyle ) + void GridTableRenderer::PaintHeaderArea(vcl::RenderContext& rRenderContext, const Rectangle& _rArea, + bool _bIsColHeaderArea, bool _bIsRowHeaderArea, const StyleSettings& _rStyle) { - OSL_PRECOND( _bIsColHeaderArea || _bIsRowHeaderArea, - "GridTableRenderer::PaintHeaderArea: invalid area flags!" ); + OSL_PRECOND(_bIsColHeaderArea || _bIsRowHeaderArea, "GridTableRenderer::PaintHeaderArea: invalid area flags!"); - _rDevice.Push( PushFlags::FILLCOLOR | PushFlags::LINECOLOR ); + rRenderContext.Push(PushFlags::FILLCOLOR | PushFlags::LINECOLOR); - Color const background = lcl_getEffectiveColor( m_pImpl->rModel.getHeaderBackgroundColor(), _rStyle, &StyleSettings::GetDialogColor ); - _rDevice.SetFillColor( background ); + Color const background = lcl_getEffectiveColor(m_pImpl->rModel.getHeaderBackgroundColor(), + _rStyle, &StyleSettings::GetDialogColor); + rRenderContext.SetFillColor(background); - _rDevice.SetLineColor(); - _rDevice.DrawRect( _rArea ); + rRenderContext.SetLineColor(); + rRenderContext.DrawRect(_rArea); // delimiter lines at bottom/right - ::boost::optional< ::Color > aLineColor( m_pImpl->rModel.getLineColor() ); - ::Color const lineColor = !aLineColor ? _rStyle.GetSeparatorColor() : *aLineColor; - _rDevice.SetLineColor( lineColor ); - _rDevice.DrawLine( _rArea.BottomLeft(), _rArea.BottomRight() ); - _rDevice.DrawLine( _rArea.BottomRight(), _rArea.TopRight() ); + boost::optional<Color> aLineColor(m_pImpl->rModel.getLineColor()); + Color const lineColor = !aLineColor ? _rStyle.GetSeparatorColor() : *aLineColor; + rRenderContext.SetLineColor(lineColor); + rRenderContext.DrawLine(_rArea.BottomLeft(), _rArea.BottomRight()); + rRenderContext.DrawLine(_rArea.BottomRight(), _rArea.TopRight()); - _rDevice.Pop(); + rRenderContext.Pop(); (void)_bIsColHeaderArea; (void)_bIsRowHeaderArea; } - void GridTableRenderer::PaintColumnHeader( ColPos _nCol, bool _bActive, bool _bSelected, - OutputDevice& _rDevice, const Rectangle& _rArea, const StyleSettings& _rStyle ) + void GridTableRenderer::PaintColumnHeader(ColPos _nCol, bool _bActive, bool _bSelected, vcl::RenderContext& rRenderContext, + const Rectangle& _rArea, const StyleSettings& _rStyle) { - _rDevice.Push( PushFlags::LINECOLOR); + rRenderContext.Push(PushFlags::LINECOLOR); OUString sHeaderText; PColumnModel const pColumn = m_pImpl->rModel.getColumnModel( _nCol ); @@ -257,20 +250,20 @@ namespace svt { namespace table if ( !!pColumn ) sHeaderText = pColumn->getName(); - ::Color const textColor = lcl_getEffectiveColor( m_pImpl->rModel.getTextColor(), _rStyle, &StyleSettings::GetFieldTextColor ); - _rDevice.SetTextColor( textColor ); + Color const textColor = lcl_getEffectiveColor( m_pImpl->rModel.getTextColor(), _rStyle, &StyleSettings::GetFieldTextColor ); + rRenderContext.SetTextColor(textColor); Rectangle const aTextRect( lcl_getTextRenderingArea( lcl_getContentArea( *m_pImpl, _rArea ) ) ); sal_uLong nDrawTextFlags = lcl_getAlignmentTextDrawFlags( *m_pImpl, _nCol ) | TEXT_DRAW_CLIP; - if ( !m_pImpl->rModel.isEnabled() ) + if (!m_pImpl->rModel.isEnabled()) nDrawTextFlags |= TEXT_DRAW_DISABLE; - _rDevice.DrawText( aTextRect, sHeaderText, nDrawTextFlags ); + rRenderContext.DrawText( aTextRect, sHeaderText, nDrawTextFlags ); - ::boost::optional< ::Color > const aLineColor( m_pImpl->rModel.getLineColor() ); - ::Color const lineColor = !aLineColor ? _rStyle.GetSeparatorColor() : *aLineColor; - _rDevice.SetLineColor( lineColor ); - _rDevice.DrawLine( _rArea.BottomRight(), _rArea.TopRight()); - _rDevice.DrawLine( _rArea.BottomLeft(), _rArea.BottomRight() ); + boost::optional<Color> const aLineColor( m_pImpl->rModel.getLineColor() ); + Color const lineColor = !aLineColor ? _rStyle.GetSeparatorColor() : *aLineColor; + rRenderContext.SetLineColor( lineColor ); + rRenderContext.DrawLine( _rArea.BottomRight(), _rArea.TopRight()); + rRenderContext.DrawLine( _rArea.BottomLeft(), _rArea.BottomRight() ); // draw sort indicator if the model data is sorted by the given column ITableDataSort const * pSortAdapter = m_pImpl->rModel.getSortAdapter(); @@ -280,8 +273,8 @@ namespace svt { namespace table if ( aCurrentSortOrder.nColumnPos == _nCol ) { long const nHeaderHeight( _rArea.GetHeight() ); - BitmapEx const aIndicatorBitmap = m_pImpl->aSortIndicator.getBitmapFor( _rDevice, nHeaderHeight, _rStyle, - aCurrentSortOrder.eSortDirection == ColumnSortAscending ); + BitmapEx const aIndicatorBitmap = m_pImpl->aSortIndicator.getBitmapFor(rRenderContext, nHeaderHeight, _rStyle, + aCurrentSortOrder.eSortDirection == ColumnSortAscending); Size const aBitmapSize( aIndicatorBitmap.GetSizePixel() ); long const nSortIndicatorPaddingX = 2; long const nSortIndicatorPaddingY = ( nHeaderHeight - aBitmapSize.Height() ) / 2; @@ -289,22 +282,18 @@ namespace svt { namespace table if ( ( nDrawTextFlags & TEXT_DRAW_RIGHT ) != 0 ) { // text is right aligned => draw the sort indicator at the left hand side - _rDevice.DrawBitmapEx( - Point( _rArea.Left() + nSortIndicatorPaddingX, _rArea.Top() + nSortIndicatorPaddingY ), - aIndicatorBitmap - ); + rRenderContext.DrawBitmapEx(Point(_rArea.Left() + nSortIndicatorPaddingX, _rArea.Top() + nSortIndicatorPaddingY), + aIndicatorBitmap); } else { // text is left-aligned or centered => draw the sort indicator at the right hand side - _rDevice.DrawBitmapEx( - Point( _rArea.Right() - nSortIndicatorPaddingX - aBitmapSize.Width(), nSortIndicatorPaddingY ), - aIndicatorBitmap - ); + rRenderContext.DrawBitmapEx(Point(_rArea.Right() - nSortIndicatorPaddingX - aBitmapSize.Width(), nSortIndicatorPaddingY), + aIndicatorBitmap); } } - _rDevice.Pop(); + rRenderContext.Pop(); (void)_bActive; // no special painting for the active column at the moment @@ -314,38 +303,38 @@ namespace svt { namespace table } - void GridTableRenderer::PrepareRow( RowPos _nRow, bool i_hasControlFocus, bool _bSelected, - OutputDevice& _rDevice, const Rectangle& _rRowArea, const StyleSettings& _rStyle ) + void GridTableRenderer::PrepareRow(RowPos _nRow, bool i_hasControlFocus, bool _bSelected, vcl::RenderContext& rRenderContext, + const Rectangle& _rRowArea, const StyleSettings& _rStyle) { // remember the row for subsequent calls to the other ->ITableRenderer methods m_pImpl->nCurrentRow = _nRow; - _rDevice.Push( PushFlags::FILLCOLOR | PushFlags::LINECOLOR); + rRenderContext.Push(PushFlags::FILLCOLOR | PushFlags::LINECOLOR); - ::Color backgroundColor = _rStyle.GetFieldColor(); + Color backgroundColor = _rStyle.GetFieldColor(); - ::boost::optional< ::Color > const aLineColor( m_pImpl->rModel.getLineColor() ); - ::Color lineColor = !aLineColor ? _rStyle.GetSeparatorColor() : *aLineColor; + boost::optional<Color> const aLineColor( m_pImpl->rModel.getLineColor() ); + Color lineColor = !aLineColor ? _rStyle.GetSeparatorColor() : *aLineColor; - ::Color const activeSelectionBackColor = - lcl_getEffectiveColor( m_pImpl->rModel.getActiveSelectionBackColor(), _rStyle, &StyleSettings::GetHighlightColor ); - if ( _bSelected ) + Color const activeSelectionBackColor = lcl_getEffectiveColor(m_pImpl->rModel.getActiveSelectionBackColor(), + _rStyle, &StyleSettings::GetHighlightColor); + if (_bSelected) { // selected rows use the background color from the style backgroundColor = i_hasControlFocus - ? activeSelectionBackColor - : lcl_getEffectiveColor( m_pImpl->rModel.getInactiveSelectionBackColor(), _rStyle, &StyleSettings::GetDeactiveColor ); - if ( !aLineColor ) + ? activeSelectionBackColor + : lcl_getEffectiveColor(m_pImpl->rModel.getInactiveSelectionBackColor(), _rStyle, &StyleSettings::GetDeactiveColor); + if (!aLineColor) lineColor = backgroundColor; } else { - ::boost::optional< ::std::vector< ::Color > > aRowColors = m_pImpl->rModel.getRowBackgroundColors(); - if ( !aRowColors ) + boost::optional< std::vector<Color> > aRowColors = m_pImpl->rModel.getRowBackgroundColors(); + if (!aRowColors) { // use alternating default colors Color const fieldColor = _rStyle.GetFieldColor(); - if ( _rStyle.GetHighContrastMode() || ( ( m_pImpl->nCurrentRow % 2 ) == 0 ) ) + if (_rStyle.GetHighContrastMode() || ((m_pImpl->nCurrentRow % 2) == 0)) { backgroundColor = fieldColor; } @@ -360,55 +349,53 @@ namespace svt { namespace table } else { - if ( aRowColors->empty() ) + if (aRowColors->empty()) { // all colors have the same background color backgroundColor = _rStyle.GetFieldColor(); } else { - backgroundColor = aRowColors->at( m_pImpl->nCurrentRow % aRowColors->size() ); + backgroundColor = aRowColors->at(m_pImpl->nCurrentRow % aRowColors->size()); } } } - //m_pImpl->bUseGridLines ? _rDevice.SetLineColor( lineColor ) : _rDevice.SetLineColor(); - _rDevice.SetLineColor(); - _rDevice.SetFillColor( backgroundColor ); - _rDevice.DrawRect( _rRowArea ); + rRenderContext.SetLineColor(); + rRenderContext.SetFillColor(backgroundColor); + rRenderContext.DrawRect(_rRowArea); - _rDevice.Pop(); + rRenderContext.Pop(); } - void GridTableRenderer::PaintRowHeader( bool i_hasControlFocus, bool _bSelected, OutputDevice& _rDevice, const Rectangle& _rArea, - const StyleSettings& _rStyle ) + void GridTableRenderer::PaintRowHeader(bool /*i_hasControlFocus*/, bool /*_bSelected*/, vcl::RenderContext& rRenderContext, + const Rectangle& _rArea, const StyleSettings& _rStyle) { - _rDevice.Push( PushFlags::LINECOLOR | PushFlags::TEXTCOLOR ); + rRenderContext.Push( PushFlags::LINECOLOR | PushFlags::TEXTCOLOR ); - ::boost::optional< ::Color > const aLineColor( m_pImpl->rModel.getLineColor() ); - ::Color const lineColor = !aLineColor ? _rStyle.GetSeparatorColor() : *aLineColor; - _rDevice.SetLineColor( lineColor ); - _rDevice.DrawLine( _rArea.BottomLeft(), _rArea.BottomRight() ); + boost::optional<Color> const aLineColor( m_pImpl->rModel.getLineColor() ); + Color const lineColor = !aLineColor ? _rStyle.GetSeparatorColor() : *aLineColor; + rRenderContext.SetLineColor(lineColor); + rRenderContext.DrawLine(_rArea.BottomLeft(), _rArea.BottomRight()); Any const rowHeading( m_pImpl->rModel.getRowHeading( m_pImpl->nCurrentRow ) ); OUString const rowTitle( m_pImpl->aStringConverter.convertToString( rowHeading ) ); - if ( !rowTitle.isEmpty() ) + if (!rowTitle.isEmpty()) { - ::Color const textColor = lcl_getEffectiveColor( m_pImpl->rModel.getHeaderTextColor(), _rStyle, &StyleSettings::GetFieldTextColor ); - _rDevice.SetTextColor( textColor ); + Color const textColor = lcl_getEffectiveColor(m_pImpl->rModel.getHeaderTextColor(), + _rStyle, &StyleSettings::GetFieldTextColor); + rRenderContext.SetTextColor(textColor); - Rectangle const aTextRect( lcl_getTextRenderingArea( lcl_getContentArea( *m_pImpl, _rArea ) ) ); - sal_uLong nDrawTextFlags = lcl_getAlignmentTextDrawFlags( *m_pImpl, 0 ) | TEXT_DRAW_CLIP; - if ( !m_pImpl->rModel.isEnabled() ) + Rectangle const aTextRect(lcl_getTextRenderingArea(lcl_getContentArea(*m_pImpl, _rArea))); + sal_uLong nDrawTextFlags = lcl_getAlignmentTextDrawFlags(*m_pImpl, 0) | TEXT_DRAW_CLIP; + if (!m_pImpl->rModel.isEnabled()) nDrawTextFlags |= TEXT_DRAW_DISABLE; // TODO: is using the horizontal alignment of the 0'th column a good idea here? This is pretty ... arbitray .. - _rDevice.DrawText( aTextRect, rowTitle, nDrawTextFlags ); + rRenderContext.DrawText(aTextRect, rowTitle, nDrawTextFlags); } - (void)i_hasControlFocus; - (void)_bSelected; - _rDevice.Pop(); + rRenderContext.Pop(); } @@ -434,14 +421,14 @@ namespace svt { namespace table }; - void GridTableRenderer::PaintCell( ColPos const i_column, bool _bSelected, bool i_hasControlFocus, - OutputDevice& _rDevice, const Rectangle& _rArea, const StyleSettings& _rStyle ) + void GridTableRenderer::PaintCell(ColPos const i_column, bool _bSelected, bool i_hasControlFocus, + vcl::RenderContext& rRenderContext, const Rectangle& _rArea, const StyleSettings& _rStyle) { - _rDevice.Push( PushFlags::LINECOLOR | PushFlags::FILLCOLOR ); + rRenderContext.Push(PushFlags::LINECOLOR | PushFlags::FILLCOLOR); - Rectangle const aContentArea( lcl_getContentArea( *m_pImpl, _rArea ) ); - CellRenderContext const aRenderContext( _rDevice, aContentArea, _rStyle, i_column, _bSelected, i_hasControlFocus ); - impl_paintCellContent( aRenderContext ); + Rectangle const aContentArea(lcl_getContentArea(*m_pImpl, _rArea)); + CellRenderContext const aCellRenderContext(rRenderContext, aContentArea, _rStyle, i_column, _bSelected, i_hasControlFocus); + impl_paintCellContent(aCellRenderContext); if ( m_pImpl->bUseGridLines ) { @@ -456,12 +443,12 @@ namespace svt { namespace table : lcl_getEffectiveColor( m_pImpl->rModel.getInactiveSelectionBackColor(), _rStyle, &StyleSettings::GetDeactiveColor ); } - _rDevice.SetLineColor( lineColor ); - _rDevice.DrawLine( _rArea.BottomLeft(), _rArea.BottomRight() ); - _rDevice.DrawLine( _rArea.BottomRight(), _rArea.TopRight() ); + rRenderContext.SetLineColor( lineColor ); + rRenderContext.DrawLine( _rArea.BottomLeft(), _rArea.BottomRight() ); + rRenderContext.DrawLine( _rArea.BottomRight(), _rArea.TopRight() ); } - _rDevice.Pop(); + rRenderContext.Pop(); } diff --git a/svtools/source/table/tablecontrol_impl.cxx b/svtools/source/table/tablecontrol_impl.cxx index 1d11146..4842dc7 100644 --- a/svtools/source/table/tablecontrol_impl.cxx +++ b/svtools/source/table/tablecontrol_impl.cxx @@ -1197,124 +1197,103 @@ namespace svt { namespace table } - void TableControl_Impl::doPaintContent( const Rectangle& _rUpdateRect ) + void TableControl_Impl::doPaintContent(vcl::RenderContext& rRenderContext, const Rectangle& _rUpdateRect) { - if ( !getModel() ) + if (!getModel()) return; PTableRenderer pRenderer = getModel()->getRenderer(); - DBG_ASSERT( !!pRenderer, "TableDataWindow::doPaintContent: invalid renderer!" ); - if ( !pRenderer ) + DBG_ASSERT(!!pRenderer, "TableDataWindow::doPaintContent: invalid renderer!"); + if (!pRenderer) return; // our current style settings, to be passed to the renderer - const StyleSettings& rStyle = m_rAntiImpl.GetSettings().GetStyleSettings(); + const StyleSettings& rStyle = rRenderContext.GetSettings().GetStyleSettings(); m_nRowCount = m_pModel->getRowCount(); // the area occupied by all (at least partially) visible cells, including // headers Rectangle const aAllCellsWithHeaders( impl_getAllVisibleCellsArea() ); - // draw the header column area - if ( m_pModel->hasColumnHeaders() ) + if (m_pModel->hasColumnHeaders()) { - TableRowGeometry const aHeaderRow( *this, Rectangle( Point( 0, 0 ), - aAllCellsWithHeaders.BottomRight() ), ROW_COL_HEADERS ); + TableRowGeometry const aHeaderRow(*this, Rectangle(Point(0, 0), aAllCellsWithHeaders.BottomRight()), ROW_COL_HEADERS); Rectangle const aColRect(aHeaderRow.getRect()); - pRenderer->PaintHeaderArea( - *m_pDataWindow, aColRect, true, false, rStyle - ); + pRenderer->PaintHeaderArea(rRenderContext, aColRect, true, false, rStyle); // Note that strictly, aHeaderRow.getRect() also contains the intersection between column // and row header area. However, below we go to paint this intersection, again, // so this hopefully doesn't hurt if we already paint it here. - for ( TableCellGeometry aCell( aHeaderRow, m_nLeftColumn ); - aCell.isValid(); - aCell.moveRight() - ) + for (TableCellGeometry aCell(aHeaderRow, m_nLeftColumn); aCell.isValid(); aCell.moveRight()) { - if ( _rUpdateRect.GetIntersection( aCell.getRect() ).IsEmpty() ) + if (_rUpdateRect.GetIntersection(aCell.getRect()).IsEmpty()) continue; - bool isActiveColumn = ( aCell.getColumn() == getCurrentColumn() ); + bool isActiveColumn = (aCell.getColumn() == getCurrentColumn()); bool isSelectedColumn = false; - pRenderer->PaintColumnHeader( aCell.getColumn(), isActiveColumn, isSelectedColumn, - *m_pDataWindow, aCell.getRect(), rStyle ); + pRenderer->PaintColumnHeader(aCell.getColumn(), isActiveColumn, isSelectedColumn, rRenderContext, aCell.getRect(), rStyle); } } // the area occupied by the row header, if any Rectangle aRowHeaderArea; - if ( m_pModel->hasRowHeaders() ) + if (m_pModel->hasRowHeaders()) { aRowHeaderArea = aAllCellsWithHeaders; aRowHeaderArea.Right() = m_nRowHeaderWidthPixel - 1; - TableSize const nVisibleRows = impl_getVisibleRows( true ); + TableSize const nVisibleRows = impl_getVisibleRows(true); TableSize nActualRows = nVisibleRows; - if ( m_nTopRow + nActualRows > m_nRowCount ) + if (m_nTopRow + nActualRows > m_nRowCount) nActualRows = m_nRowCount - m_nTopRow; aRowHeaderArea.Bottom() = m_nColHeaderHeightPixel + m_nRowHeightPixel * nActualRows - 1; - pRenderer->PaintHeaderArea( *m_pDataWindow, aRowHeaderArea, false, true, rStyle ); + pRenderer->PaintHeaderArea(rRenderContext, aRowHeaderArea, false, true, rStyle); // Note that strictly, aRowHeaderArea also contains the intersection between column // and row header area. However, below we go to paint this intersection, again, // so this hopefully doesn't hurt if we already paint it here. - if ( m_pModel->hasColumnHeaders() ) + if (m_pModel->hasColumnHeaders()) { - TableCellGeometry const aIntersection( *this, Rectangle( Point( 0, 0 ), - aAllCellsWithHeaders.BottomRight() ), COL_ROW_HEADERS, ROW_COL_HEADERS ); - Rectangle const aInters( aIntersection.getRect() ); - pRenderer->PaintHeaderArea( - *m_pDataWindow, aInters, true, true, rStyle - ); + TableCellGeometry const aIntersection(*this, Rectangle(Point(0, 0), aAllCellsWithHeaders.BottomRight()), + COL_ROW_HEADERS, ROW_COL_HEADERS); + Rectangle const aInters(aIntersection.getRect()); + pRenderer->PaintHeaderArea(rRenderContext, aInters, true, true, rStyle); } } - // draw the table content row by row - TableSize colCount = getModel()->getColumnCount(); // paint all rows - Rectangle const aAllDataCellsArea( impl_getAllVisibleDataCellArea() ); - for ( TableRowGeometry aRowIterator( *this, aAllCellsWithHeaders, getTopRow() ); - aRowIterator.isValid(); - aRowIterator.moveDown() ) + Rectangle const aAllDataCellsArea(impl_getAllVisibleDataCellArea()); + for (TableRowGeometry aRowIterator(*this, aAllCellsWithHeaders, getTopRow()); aRowIterator.isValid(); aRowIterator.moveDown()) { - if ( _rUpdateRect.GetIntersection( aRowIterator.getRect() ).IsEmpty() ) + if (_rUpdateRect.GetIntersection(aRowIterator.getRect() ).IsEmpty()) continue; bool const isControlFocused = m_rAntiImpl.HasControlFocus(); - bool const isSelectedRow = isRowSelected( aRowIterator.getRow() ); + bool const isSelectedRow = isRowSelected(aRowIterator.getRow()); - Rectangle const aRect = aRowIterator.getRect().GetIntersection( aAllDataCellsArea ); + Rectangle const aRect = aRowIterator.getRect().GetIntersection(aAllDataCellsArea); // give the redenderer a chance to prepare the row - pRenderer->PrepareRow( - aRowIterator.getRow(), isControlFocused, isSelectedRow, - *m_pDataWindow, aRect, rStyle - ); + pRenderer->PrepareRow(aRowIterator.getRow(), isControlFocused, isSelectedRow, rRenderContext, aRect, rStyle); // paint the row header - if ( m_pModel->hasRowHeaders() ) + if (m_pModel->hasRowHeaders()) { - const Rectangle aCurrentRowHeader( aRowHeaderArea.GetIntersection( aRowIterator.getRect() ) ); - pRenderer->PaintRowHeader( isControlFocused, isSelectedRow, *m_pDataWindow, aCurrentRowHeader, - rStyle ); + const Rectangle aCurrentRowHeader(aRowHeaderArea.GetIntersection(aRowIterator.getRect())); + pRenderer->PaintRowHeader(isControlFocused, isSelectedRow, rRenderContext, aCurrentRowHeader, rStyle); } - if ( !colCount ) + if (!colCount) continue; // paint all cells in this row - for ( TableCellGeometry aCell( aRowIterator, m_nLeftColumn ); - aCell.isValid(); - aCell.moveRight() - ) + for (TableCellGeometry aCell(aRowIterator, m_nLeftColumn); aCell.isValid(); aCell.moveRight()) { bool isSelectedColumn = false; - pRenderer->PaintCell( aCell.getColumn(), isSelectedRow || isSelectedColumn, isControlFocused, - *m_pDataWindow, aCell.getRect(), rStyle ); + pRenderer->PaintCell(aCell.getColumn(), isSelectedRow || isSelectedColumn, isControlFocused, + rRenderContext, aCell.getRect(), rStyle); } } } diff --git a/svtools/source/table/tablecontrol_impl.hxx b/svtools/source/table/tablecontrol_impl.hxx index 5f7dac6..feadf1c 100644 --- a/svtools/source/table/tablecontrol_impl.hxx +++ b/svtools/source/table/tablecontrol_impl.hxx @@ -34,11 +34,8 @@ class ScrollBar; class ScrollBarBox; - namespace svt { namespace table { - - struct MutableColumnMetrics : protected ColumnMetrics { MutableColumnMetrics() @@ -170,7 +167,7 @@ namespace svt { namespace table /** paints the table control content which intersects with the given rectangle */ - void doPaintContent( const Rectangle& _rUpdateRect ); + void doPaintContent(vcl::RenderContext& rRenderContext, const Rectangle& _rUpdateRect); /** moves the cursor to the cell with the given coordinates diff --git a/svtools/source/table/tabledatawindow.cxx b/svtools/source/table/tabledatawindow.cxx index fad922d..8691b32 100644 --- a/svtools/source/table/tabledatawindow.cxx +++ b/svtools/source/table/tabledatawindow.cxx @@ -17,7 +17,6 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ - #include "table/tablecontrol.hxx" #include "tabledatawindow.hxx" @@ -27,16 +26,9 @@ #include <vcl/help.hxx> #include <vcl/settings.hxx> - namespace svt { namespace table { - - - using ::com::sun::star::uno::Any; - - - //= TableDataWindow - + using css::uno::Any; TableDataWindow::TableDataWindow( TableControl_Impl& _rTableControl ) :Window( &_rTableControl.getAntiImpl() ) @@ -60,9 +52,9 @@ namespace svt { namespace table Window::dispose(); } - void TableDataWindow::Paint( vcl::RenderContext& /*rRenderContext*/, const Rectangle& rUpdateRect ) + void TableDataWindow::Paint( vcl::RenderContext& rRenderContext, const Rectangle& rUpdateRect ) { - m_rTableControl.doPaintContent( rUpdateRect ); + m_rTableControl.doPaintContent(rRenderContext, rUpdateRect); } void TableDataWindow::SetBackground( const Wallpaper& rColor ) @@ -221,7 +213,7 @@ namespace svt { namespace table return nDone || Window::Notify( rNEvt ); } -} } // namespace svt::table +}} // namespace svt::table /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/source/table/tabledatawindow.hxx b/svtools/source/table/tabledatawindow.hxx index 34a1a93..36e0587 100644 --- a/svtools/source/table/tabledatawindow.hxx +++ b/svtools/source/table/tabledatawindow.hxx @@ -26,15 +26,9 @@ namespace svt { namespace table { - - class TableControl_Impl; class TableFunctionSet; - - - //= TableDataWindow - /** the window containing the content area (including headers) of a table control */ @@ -51,11 +45,17 @@ namespace svt { namespace table virtual ~TableDataWindow(); virtual void dispose() SAL_OVERRIDE; - inline void SetSelectHdl( const Link<>& rLink ) { m_aSelectHdl = rLink; } - inline const Link<>& GetSelectHdl() const { return m_aSelectHdl; } + inline void SetSelectHdl(const Link<>& rLink) + { + m_aSelectHdl = rLink; + } + inline const Link<>& GetSelectHdl() const + { + return m_aSelectHdl; + } // Window overridables - virtual void Paint( vcl::RenderContext& rRenderContext, const Rectangle& rRect ) SAL_OVERRIDE; + virtual void Paint(vcl::RenderContext& rRenderContext, const Rectangle& rRect) SAL_OVERRIDE; virtual void MouseMove( const MouseEvent& rMEvt) SAL_OVERRIDE; virtual void MouseButtonDown( const MouseEvent& rMEvt) SAL_OVERRIDE; virtual void MouseButtonUp( const MouseEvent& rMEvt) SAL_OVERRIDE; commit f54212fb24a21401edd6593735898c9b42c09d0f Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> Date: Mon May 11 18:03:15 2015 +0900 refactor SvResizeWindow to use RenderContext Change-Id: I3c986ff077a6183b6067c5a16a226954fa84b44c diff --git a/svtools/source/hatchwindow/ipwin.cxx b/svtools/source/hatchwindow/ipwin.cxx index f0787a1..a04dd8f 100644 --- a/svtools/source/hatchwindow/ipwin.cxx +++ b/svtools/source/hatchwindow/ipwin.cxx @@ -106,31 +106,31 @@ void SvResizeHelper::FillMoveRectsPixel( Rectangle aRects[ 4 ] ) const |* |* Description *************************************************************************/ -void SvResizeHelper::Draw( OutputDevice * pDev ) +void SvResizeHelper::Draw(vcl::RenderContext& rRenderContext) { - pDev->Push(); - pDev->SetMapMode( MapMode() ); + rRenderContext.Push(); + rRenderContext.SetMapMode( MapMode() ); Color aColBlack; Color aFillColor( COL_LIGHTGRAY ); - pDev->SetFillColor( aFillColor ); - pDev->SetLineColor(); + rRenderContext.SetFillColor( aFillColor ); + rRenderContext.SetLineColor(); - Rectangle aMoveRects[ 4 ]; + Rectangle aMoveRects[ 4 ]; FillMoveRectsPixel( aMoveRects ); sal_uInt16 i; - for( i = 0; i < 4; i++ ) - pDev->DrawRect( aMoveRects[ i ] ); - if( bResizeable ) + for (i = 0; i < 4; i++) + rRenderContext.DrawRect(aMoveRects[i]); + if (bResizeable) { // draw handles - pDev->SetFillColor( aColBlack ); - Rectangle aRects[ 8 ]; - FillHandleRectsPixel( aRects ); - for( i = 0; i < 8; i++ ) - pDev->DrawRect( aRects[ i ] ); + rRenderContext.SetFillColor(aColBlack); + Rectangle aRects[ 8 ]; + FillHandleRectsPixel(aRects); + for (i = 0; i < 8; i++) + rRenderContext.DrawRect( aRects[ i ] ); } - pDev->Pop(); + rRenderContext.Pop(); } /************************************************************************* @@ -612,9 +612,9 @@ void SvResizeWindow::Resize() |* |* Description *************************************************************************/ -void SvResizeWindow::Paint( vcl::RenderContext& /*rRenderContext*/, const Rectangle & /*rRect*/ ) +void SvResizeWindow::Paint(vcl::RenderContext& rRenderContext, const Rectangle & /*rRect*/ ) { - m_aResizer.Draw( this ); + m_aResizer.Draw(rRenderContext); } bool SvResizeWindow::PreNotify( NotifyEvent& rEvt ) diff --git a/svtools/source/hatchwindow/ipwin.hxx b/svtools/source/hatchwindow/ipwin.hxx index c706cae..efc536d 100644 --- a/svtools/source/hatchwindow/ipwin.hxx +++ b/svtools/source/hatchwindow/ipwin.hxx @@ -33,31 +33,46 @@ class SvResizeHelper Point aSelPos; bool bResizeable; public: - SvResizeHelper(); + SvResizeHelper(); - void SetResizeable( bool b ) { bResizeable = b; } - short GetGrab() const { return nGrab; } - void SetBorderPixel( const Size & rBorderP ) - { aBorder = rBorderP; } - const Size & GetBorderPixel() const { return aBorder; } - const Rectangle & GetOuterRectPixel() const - { return aOuter; } - void SetOuterRectPixel( const Rectangle & rRect ) - { aOuter = rRect; } - Rectangle GetInnerRectPixel() const - { - Rectangle aRect( aOuter ); - aRect.Top() += aBorder.Height(); - aRect.Left() += aBorder.Width(); - aRect.Bottom() -= aBorder.Height(); - aRect.Right() -= aBorder.Width(); - return aRect; - } + void SetResizeable(bool b) + { + bResizeable = b; + } + short GetGrab() const + { + return nGrab; + } + void SetBorderPixel(const Size & rBorderP) + { + aBorder = rBorderP; + } + const Size& GetBorderPixel() const + { + return aBorder; + } + const Rectangle& GetOuterRectPixel() const + { + return aOuter; + } + void SetOuterRectPixel(const Rectangle& rRect) + { + aOuter = rRect; + } + Rectangle GetInnerRectPixel() const + { + Rectangle aRect( aOuter ); + aRect.Top() += aBorder.Height(); + aRect.Left() += aBorder.Width(); + aRect.Bottom() -= aBorder.Height(); + aRect.Right() -= aBorder.Width(); + return aRect; + } // Clockwise, start at upper left void FillHandleRectsPixel( Rectangle aRects[ 8 ] ) const; void FillMoveRectsPixel( Rectangle aRects[ 4 ] ) const; - void Draw( OutputDevice * ); + void Draw(vcl::RenderContext& rRenderContext); void InvalidateBorder( vcl::Window * ); bool SelectBegin( vcl::Window *, const Point & rPos ); short SelectMove( vcl::Window * pWin, const Point & rPos );
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits