LibreOffice Module toolkit (master) 1
|
a default implementation for the ->ITableRenderer interface More...
#include <gridtablerenderer.hxx>
Classes | |
struct | CellRenderContext |
Public Member Functions | |
GridTableRenderer (ITableModel &_rModel) | |
creates a table renderer associated with the given model More... | |
virtual | ~GridTableRenderer () override |
bool | useGridLines () const |
determines whether or not to paint grid lines More... | |
void | useGridLines (bool const i_use) |
controls whether or not to paint grid lines More... | |
virtual void | PaintHeaderArea (vcl::RenderContext &_rDevice, const tools::Rectangle &_rArea, bool _bIsColHeaderArea, bool _bIsRowHeaderArea, const StyleSettings &_rStyle) override |
paints a (part of) header area More... | |
virtual void | PaintColumnHeader (ColPos _nCol, vcl::RenderContext &_rDevice, const tools::Rectangle &_rArea, const StyleSettings &_rStyle) override |
paints the header for a given column More... | |
virtual void | PrepareRow (RowPos _nRow, bool i_hasControlFocus, bool _bSelected, vcl::RenderContext &_rDevice, const tools::Rectangle &_rRowArea, const StyleSettings &_rStyle) override |
prepares a row for painting More... | |
virtual void | PaintRowHeader (vcl::RenderContext &_rDevice, const tools::Rectangle &_rArea, const StyleSettings &_rStyle) override |
paints the header of a row More... | |
virtual void | PaintCell (ColPos const i_col, bool i_hasControlFocus, bool _bSelected, vcl::RenderContext &_rDevice, const tools::Rectangle &_rArea, const StyleSettings &_rStyle) override |
paints a certain cell More... | |
virtual void | ShowCellCursor (vcl::Window &_rView, const tools::Rectangle &_rCursorRect) override |
draws a cell cursor in the given rectangle More... | |
virtual void | HideCellCursor (vcl::Window &_rView) override |
hides the cell cursor previously drawn into the given rectangle More... | |
virtual bool | FitsIntoCell (css::uno::Any const &i_cellContent, OutputDevice &i_targetDevice, tools::Rectangle const &i_targetArea) const override |
checks whether a given cell content fits into a given target area on a given device. More... | |
virtual bool | GetFormattedCellString (css::uno::Any const &i_cellValue, OUString &o_cellString) const override |
attempts to format the content of the given cell as string More... | |
Public Member Functions inherited from svt::table::ITableRenderer | |
virtual void | PaintHeaderArea (vcl::RenderContext &_rDevice, const tools::Rectangle &_rArea, bool _bIsColHeaderArea, bool _bIsRowHeaderArea, const StyleSettings &_rStyle)=0 |
paints a (part of) header area More... | |
virtual void | PaintColumnHeader (ColPos _nCol, vcl::RenderContext &_rDevice, const tools::Rectangle &_rArea, const StyleSettings &_rStyle)=0 |
paints the header for a given column More... | |
virtual void | PrepareRow (RowPos _nRow, bool i_hasControlFocus, bool _bSelected, vcl::RenderContext &_rDevice, const tools::Rectangle &_rRowArea, const StyleSettings &_rStyle)=0 |
prepares a row for painting More... | |
virtual void | PaintRowHeader (vcl::RenderContext &_rDevice, tools::Rectangle const &_rArea, StyleSettings const &_rStyle)=0 |
paints the header of a row More... | |
virtual void | PaintCell (ColPos const i_col, bool i_hasControlFocus, bool _bSelected, vcl::RenderContext &_rDevice, const tools::Rectangle &_rArea, const StyleSettings &_rStyle)=0 |
paints a certain cell More... | |
virtual void | ShowCellCursor (vcl::Window &_rView, const tools::Rectangle &_rCursorRect)=0 |
draws a cell cursor in the given rectangle More... | |
virtual void | HideCellCursor (vcl::Window &_rView)=0 |
hides the cell cursor previously drawn into the given rectangle More... | |
virtual bool | FitsIntoCell (css::uno::Any const &i_cellContent, OutputDevice &i_targetDevice, tools::Rectangle const &i_targetArea) const =0 |
checks whether a given cell content fits into a given target area on a given device. More... | |
virtual bool | GetFormattedCellString (css::uno::Any const &i_cellValue, OUString &o_cellString) const =0 |
attempts to format the content of the given cell as string More... | |
virtual | ~ITableRenderer () |
deletes the renderer instance More... | |
Private Member Functions | |
void | impl_paintCellContent (CellRenderContext const &i_context) |
void | impl_paintCellImage (CellRenderContext const &i_context, Image const &i_image) |
void | impl_paintCellText (CellRenderContext const &i_context, OUString const &i_text) |
Private Attributes | |
::std::unique_ptr< GridTableRenderer_Impl > | m_pImpl |
a default implementation for the ->ITableRenderer interface
This class is able to paint a table grid, table headers, and cell backgrounds according to the selected/active state of cells.
Definition at line 42 of file gridtablerenderer.hxx.
svt::table::GridTableRenderer::GridTableRenderer | ( | ITableModel & | _rModel | ) |
creates a table renderer associated with the given model
_rModel | the model which should be rendered. The caller is responsible for lifetime control, that is, the model instance must live at least as long as the renderer instance lives |
Definition at line 180 of file gridtablerenderer.cxx.
References m_pImpl.
|
overridevirtual |
Definition at line 186 of file gridtablerenderer.cxx.
|
overridevirtual |
checks whether a given cell content fits into a given target area on a given device.
i_targetDevice | denotes the target device for the assumed rendering operation |
i_targetArea | denotes the area within the target device for the assumed rendering operation. |
Implements svt::table::ITableRenderer.
Definition at line 550 of file gridtablerenderer.cxx.
References tools::Rectangle::GetHeight(), OutputDevice::GetTextHeight(), OutputDevice::GetTextWidth(), tools::Rectangle::GetWidth(), and m_pImpl.
|
overridevirtual |
attempts to format the content of the given cell as string
i_cellValue | the value for which an attempt for a string conversion should be made |
o_cellString | the cell content, formatted as string |
Implements svt::table::ITableRenderer.
Definition at line 586 of file gridtablerenderer.cxx.
References m_pImpl.
|
overridevirtual |
hides the cell cursor previously drawn into the given rectangle
The cell cursor is used to indicate the active/current cell of a table control.
Implements svt::table::ITableRenderer.
Definition at line 544 of file gridtablerenderer.cxx.
References vcl::Window::HideFocus().
|
private |
Definition at line 490 of file gridtablerenderer.cxx.
References Any, ENSURE_OR_RETURN_VOID, impl_paintCellImage(), impl_paintCellText(), m_pImpl, and svt::table::GridTableRenderer::CellRenderContext::nColumn.
Referenced by PaintCell().
|
private |
Definition at line 445 of file gridtablerenderer.cxx.
References svt::table::GridTableRenderer::CellRenderContext::aContentArea, Point::AdjustX(), Point::AdjustY(), tools::Rectangle::Bottom(), OutputDevice::DrawImage(), tools::Rectangle::GetHeight(), Image::GetSizePixel(), tools::Rectangle::GetWidth(), Size::Height(), imageSize(), tools::Rectangle::Left(), m_pImpl, svt::table::GridTableRenderer::CellRenderContext::nColumn, svt::table::GridTableRenderer::CellRenderContext::rDevice, tools::Rectangle::Right(), Size::setHeight(), Size::setWidth(), Point::setX(), Point::setY(), tools::Rectangle::Top(), and Size::Width().
Referenced by impl_paintCellContent().
|
private |
Definition at line 515 of file gridtablerenderer.cxx.
References svt::table::GridTableRenderer::CellRenderContext::aContentArea, svt::table::GridTableRenderer::CellRenderContext::bHasControlFocus, svt::table::GridTableRenderer::CellRenderContext::bSelected, OutputDevice::DrawText(), StyleSettings::GetDeactiveTextColor(), StyleSettings::GetFieldTextColor(), StyleSettings::GetHighlightTextColor(), m_pImpl, svt::table::GridTableRenderer::CellRenderContext::nColumn, svt::table::GridTableRenderer::CellRenderContext::rDevice, svt::table::GridTableRenderer::CellRenderContext::rStyle, and OutputDevice::SetTextColor().
Referenced by impl_paintCellContent().
|
overridevirtual |
paints a certain cell
The row to be painted is denoted by the most recent call to ->PrepareRow.
_bSelected | <TRUE> if and only if the cell to be painted is selected currently. This is the case if either the row or the column of the cell is currently selected. Note that this flag is equal to the respective flag in the previous ->PrepareRow call, it's passed here for convenience only. |
i_hasControlFocus | <TRUE> if and only if the table control currently has the focus Note that this flag is equal to the respective flag in the previous ->PrepareRow call, it's passed here for convenience only. |
_rDevice | denotes the device to paint onto |
_rArea | the are into which the cell should be painted |
_rStyle | the style to be used for drawing |
Implements svt::table::ITableRenderer.
Definition at line 414 of file gridtablerenderer.cxx.
References tools::Rectangle::BottomLeft(), tools::Rectangle::BottomRight(), OutputDevice::DrawLine(), vcl::FILLCOLOR, StyleSettings::GetDeactiveColor(), StyleSettings::GetHighlightColor(), StyleSettings::GetSeparatorColor(), impl_paintCellContent(), vcl::LINECOLOR, m_pImpl, OutputDevice::Pop(), OutputDevice::Push(), OutputDevice::SetLineColor(), and tools::Rectangle::TopRight().
|
overridevirtual |
paints the header for a given column
_nCol | the index of the column to paint |
_rDevice | denotes the device to paint onto |
_rArea | the are into which the column header should be painted |
_rStyle | the style to be used for drawing |
Implements svt::table::ITableRenderer.
Definition at line 241 of file gridtablerenderer.cxx.
References tools::Rectangle::BottomLeft(), tools::Rectangle::BottomRight(), svt::table::ColumnSortAscending, DBG_ASSERT, OutputDevice::DrawBitmapEx(), OutputDevice::DrawLine(), OutputDevice::DrawText(), svt::table::ColumnSort::eSortDirection, svt::table::ITableDataSort::getCurrentSortOrder(), StyleSettings::GetFieldTextColor(), tools::Rectangle::GetHeight(), StyleSettings::GetSeparatorColor(), BitmapEx::GetSizePixel(), Size::Height(), tools::Rectangle::Left(), vcl::LINECOLOR, m_pImpl, svt::table::ColumnSort::nColumnPos, OutputDevice::Pop(), OutputDevice::Push(), tools::Rectangle::Right(), OutputDevice::SetLineColor(), OutputDevice::SetTextColor(), tools::Rectangle::Top(), tools::Rectangle::TopRight(), and Size::Width().
|
overridevirtual |
paints a (part of) header area
There are two header areas in a table control:
A header area is more than the union of the single column/row headers.
First, there might be less columns than fit into the view - in this case, right beside the right-most column, there's still room which belongs to the column header area, but is not occupied by any particular column header.
An equivalent statement holds for the row header area, if there are fewer rows than fit into the view.
Second, if the table control has both a row header and a column header, the intersection between those both belongs to both the column header area and the row header area, but not to any particular column or row header.
There are two flags specifying whether the to-be-painted area is part of the column and/or row header area.
Note that it's not possible for both ->_bIsColHeaderArea and ->_bIsRowHeaderArea to be <FALSE> at the same time.
_rDevice | the device to paint onto |
_rArea | the area to paint into |
_bIsColHeaderArea | <TRUE> if and only if ->_rArea is part of the column header area. |
_bIsRowHeaderArea | <TRUE> if and only if ->_rArea is part of the row header area. |
_rStyle | the style to be used for drawing |
Implements svt::table::ITableRenderer.
Definition at line 216 of file gridtablerenderer.cxx.
References tools::Rectangle::BottomLeft(), tools::Rectangle::BottomRight(), OutputDevice::DrawLine(), OutputDevice::DrawRect(), vcl::FILLCOLOR, StyleSettings::GetDialogColor(), StyleSettings::GetSeparatorColor(), vcl::LINECOLOR, m_pImpl, OutputDevice::Pop(), OutputDevice::Push(), OutputDevice::SetFillColor(), OutputDevice::SetLineColor(), and tools::Rectangle::TopRight().
|
overridevirtual |
paints the header of a row
The row to be painted is denoted by the most recent call to ->PrepareRow.
_rDevice | denotes the device to paint onto |
_rArea | the are into which the row header should be painted |
_rStyle | the style to be used for drawing |
Implements svt::table::ITableRenderer.
Definition at line 362 of file gridtablerenderer.cxx.
References Any, tools::Rectangle::BottomLeft(), tools::Rectangle::BottomRight(), OutputDevice::DrawLine(), OutputDevice::DrawText(), StyleSettings::GetFieldTextColor(), StyleSettings::GetSeparatorColor(), vcl::LINECOLOR, m_pImpl, OutputDevice::Pop(), OutputDevice::Push(), OutputDevice::SetLineColor(), OutputDevice::SetTextColor(), and vcl::TEXTCOLOR.
|
overridevirtual |
prepares a row for painting
Painting a table means painting rows as necessary, in an increasing order. The assumption is that retrieving data for two different rows is (potentially) more expensive than retrieving data for two different columns. Thus, the renderer will get the chance to "seek" to a certain row, and then has to render all cells in this row, before another row is going to be painted.
_nRow | the row which is going to be painted. The renderer should at least remember this row, since subsequent calls to ->PaintRowHeader(), ->PaintCell(), and ->FinishRow() will not pass this parameter again. |
However, the renderer is also allowed to render any cell-independent content of this row.
i_hasControlFocus | <TRUE> if and only if the table control currently has the focus |
_bSelected | <TRUE> if and only if the row to be prepared is selected currently. |
_rDevice | denotes the device to paint onto |
_rRowArea | the are into which the row should be painted. This excludes the row header area, if applicable. |
_rStyle | the style to be used for drawing |
Implements svt::table::ITableRenderer.
Definition at line 301 of file gridtablerenderer.cxx.
References OutputDevice::DrawRect(), vcl::FILLCOLOR, Color::GetBlue(), StyleSettings::GetDeactiveColor(), StyleSettings::GetFieldColor(), Color::GetGreen(), StyleSettings::GetHighContrastMode(), StyleSettings::GetHighlightColor(), Color::GetRed(), vcl::LINECOLOR, m_pImpl, OutputDevice::Pop(), OutputDevice::Push(), Color::SetBlue(), OutputDevice::SetFillColor(), Color::SetGreen(), OutputDevice::SetLineColor(), and Color::SetRed().
|
overridevirtual |
draws a cell cursor in the given rectangle
The cell cursor is used to indicate the active/current cell of a table control.
Implements svt::table::ITableRenderer.
Definition at line 538 of file gridtablerenderer.cxx.
References vcl::Window::ShowFocus().
bool svt::table::GridTableRenderer::useGridLines | ( | ) | const |
determines whether or not to paint grid lines
Definition at line 191 of file gridtablerenderer.cxx.
References m_pImpl.
void svt::table::GridTableRenderer::useGridLines | ( | bool const | i_use | ) |
controls whether or not to paint grid lines
Definition at line 197 of file gridtablerenderer.cxx.
References m_pImpl.
|
private |
Definition at line 45 of file gridtablerenderer.hxx.
Referenced by FitsIntoCell(), GetFormattedCellString(), impl_paintCellContent(), impl_paintCellImage(), impl_paintCellText(), PaintCell(), PaintColumnHeader(), PaintHeaderArea(), PaintRowHeader(), PrepareRow(), and useGridLines().