34#include <osl/diagnose.h>
36#include <LibreOfficeKit/LibreOfficeKitEnums.h>
55#include <document.hxx>
96 const OUString& rTitle,
const Color& rColor,
bool bTextBelow,
123 fillFontOnly(aAttrFont, pDev, &rZoomY);
153 Size aButSize( nBWidth, nBHeight );
155 aComboButton.
Draw(
Point(nButtonPos, nButtonY), aButSize );
160 bool bWasClip =
false;
162 bool bClip = ( aTextSize.
Width() > aOuter.
Right() - nBWidth - aInner.
Left() );
173 nClipEndX, nButtonY + nVer/2 + aTextSize.
Height())) );
176 pDev->
DrawText(
Point( nTextStart, nButtonY + nVer/2 ), rTitle );
201 if ( nX1 > 0 ) --nX1;
202 if ( nY1>=2 ) nY1 -= 2;
203 else if ( nY1 > 0 ) --nY1;
204 if ( nX2 < rDoc.
MaxCol() ) ++nX2;
205 if ( nY2 < rDoc.
MaxRow()-1 ) nY2 += 2;
206 else if ( nY2 < rDoc.
MaxRow() ) ++nY2;
207 ScRange aViewRange( nX1,nY1,nTab, nX2,nY2,nTab );
220 for (
size_t j = 0,
n = xRanges->size(); j <
n; ++j)
222 ScRange aRange = (*xRanges)[j];
236 aStartPos.
AdjustX( -nLayoutSign );
238 aEndPos.
AdjustX( -nLayoutSign );
241 bool bTextBelow = ( aRange.
aStart.
Row() == 0 );
245 for (
SCTAB nAct=nTab+1; nAct<nTabCount && rDoc.
IsScenario(nAct); nAct++)
248 OUString aDummyComment;
250 rDoc.
GetName( nAct, aCurrent );
254 if (aCurrent.isEmpty())
255 aCurrent =
ScResId( STR_EMPTYDATA );
260 aCurrent, aColor, bTextBelow,
262 rDoc, rViewData, bLayoutRTL );
268 const std::vector<ScHighlightEntry>& rHighlightRanges )
271 for (
const auto& rHighlightRange : rHighlightRanges)
273 ScRange aRange = rHighlightRange.aRef;
279 rHighlightRange.aColor,
false );
341 if (aScaleX == rEntry.aScaleX && aScaleY == rEntry.aScaleY)
343 if (rCursorRect == rEntry.aRect)
347 rEntry.aRect = rCursorRect;
367 if (pViewShell != pThisViewShell && pViewShell->
GetDocId() == pThisViewShell->
GetDocId())
375 if (aZoomX == aScaleX && aZoomY == aScaleY)
378 LOK_CALLBACK_INVALIDATE_VIEW_CURSOR,
"rectangle", rCursorRect.
toString());
432 aMirroredPixel.
SetLeft( nWidth - 1 - aPixRect.
Right() );
433 aMirroredPixel.
SetRight( nWidth - 1 - aPixRect.
Left() );
437 while ( nScrX <= aMirroredPixel.
Left() && nX1 < rDoc.
MaxCol() )
443 while ( nScrX <= aMirroredPixel.
Right() && nX2 < rDoc.
MaxCol() )
483 OSL_ENSURE( rDoc.
ValidCol(nX2) && rDoc.
ValidRow(nY2),
"GridWin Draw area too big" );
519 nMirrorWidth = aScrPos.
X() - nEndPixel;
520 aScrPos.
setX( nEndPixel + 1 );
528 SCCOL nCurEndX = nCurX;
529 SCROW nCurEndY = nCurY;
530 rDoc.
ExtendMerge( nCurX, nCurY, nCurEndX, nCurEndY, nTab );
532 ( nCurEndX+1 >= nX1 && nCurX <= nX2+1 && nCurEndY+1 >= nY1 && nCurY <= nY2+1 );
540 rDoc.
ExtendMerge( nHdlX, nHdlY, nHdlX, nHdlY, nTab );
554 rDoc.
FillInfo( aTabInfo, nX1, nY1, nX2, nY2, nTab,
561 nScrX, nScrY, nX1, nY1, nX2, nY2,
nPPTX,
nPPTY,
568 bool bLogicText = bTextWysiwyg;
584 xFmtVirtDev->SetMapMode(
MapMode(MapUnit::Map100thMM));
606class SuppressEditViewMessagesGuard
609 SuppressEditViewMessagesGuard(
EditView& rEditView) :
610 mrEditView(rEditView),
611 mbOrigSuppressFlag(rEditView.IsSuppressLOKMessages())
613 if (!mbOrigSuppressFlag)
614 mrEditView.SuppressLOKMessages(
true);
617 ~SuppressEditViewMessagesGuard()
619 if (mrEditView.IsSuppressLOKMessages() != mbOrigSuppressFlag)
620 mrEditView.SuppressLOKMessages(mbOrigSuppressFlag);
625 const bool mbOrigSuppressFlag;
649 return nMirrorX - 1 - nPosX;
660int lcl_GetMultiLineHeight(
EditEngine* pEditEngine)
664 if (nParagraphs > 1 || (nParagraphs > 0 && pEditEngine->
GetLineCount(0) > 1))
666 for (
int nPara = 0; nPara < nParagraphs; nPara++)
683 bool bNoBackgroundAndGrid = bIsTiledRendering
685 comphelper::LibreOfficeKit::Compat::scNoGridBackground);
736 if ( nEditEndCol >= nX1 && nEditCol <= nX2 && nEditEndRow >= nY1 && nEditRow <= nY2 )
746 if (bIsTiledRendering)
757 bool bLokRTL = bLayoutRTL && bIsTiledRendering;
758 std::unique_ptr<ScLokRTLContext> pLokRTLCtxt(
770 if(rDoc.
MaxCol() == nX2 && !bLokRTL)
774 aDrawingRectPixel.
SetLeft( 0 );
789 aDrawingRectLogic =
PixelToLogic(aDrawingRectPixel, aDrawMode);
794 bool bInPlaceVisCursor =
false;
801 bInPlaceVisCursor = pInPlaceCrsr && pInPlaceCrsr->
IsVisible();
802 if (bInPlaceVisCursor)
803 pInPlaceCrsr->Hide();
823 pTargetPaintWindow = pDrawView->
BeginDrawLayers(pContentDev, aDrawingRegion);
824 OSL_ENSURE(pTargetPaintWindow,
"BeginDrawLayers: Got no SdrPaintWindow (!)");
826 if (!bIsTiledRendering)
840 if ( !bIsTiledRendering && ( nX2 == rDoc.
MaxCol() || nY2 == rDoc.
MaxRow() ) )
856 if (aDrawRect.
Right() >= aDrawRect.
Left())
871 if (aDrawRect.
Bottom() >= aDrawRect.
Top())
894 if (bGridFirst && (bGrid || bPage))
897 if (bNoBackgroundAndGrid)
898 aOutputData.
DrawGrid(*pContentDev,
false ,
false ,
true );
900 aOutputData.
DrawGrid(*pContentDev, bGrid, bPage);
905 if (!bGridFirst && (bGrid || bPage) && !bNoBackgroundAndGrid)
906 aOutputData.
DrawGrid(*pContentDev, bGrid, bPage);
947 if (bIsTiledRendering)
954 aMap.SetOrigin(aOrigin);
961 DrawButtons(nX1, nX2, rTableInfo, pContentDev, pLokRTLCtxt.get());
977 if ( bHasChange || bHasScenario || !rHigh.empty() )
996 if (bIsTiledRendering)
1011 if (bIsTiledRendering)
1034 if ( pRangeFinder && !pRangeFinder->
IsHidden() &&
1037 sal_uInt16
nCount =
static_cast<sal_uInt16
>(pRangeFinder->
Count());
1062 if (bIsTiledRendering)
1070 + aOutputData.
nScrX);
1073 + aOutputData.
nScrY);
1074 const double twipFactor = 15 * 1.76388889;
1075 aOrigin =
Point(aOrigin.
getX() * twipFactor,
1076 aOrigin.
getY() * twipFactor);
1095 if (bIsTiledRendering)
1102 bool bEnterLoop = bIsTiledRendering || pViewShell != pThisViewShell;
1111 bool bOtherEditMode = rOtherViewData.
HasEditView(eOtherWhich);
1116 bOtherEditMode = bOtherEditMode
1117 && ( nCol2 >= nX1 && nCol1 <= nX2 && nRow2 >= nY1 && nRow1 <= nY2 );
1118 if (bOtherEditMode && rOtherViewData.
GetRefTabNo() == nTab)
1129 if (pCurrentViewShell)
1145 if (bIsTiledRendering)
1149 aEnd.
AdjustY(lcl_GetMultiLineHeight(pEditEngine));
1156 aStart.
setX(pLokRTLCtxt->docToTilePos(aStart.
X()));
1157 aEnd.
setX(pLokRTLCtxt->docToTilePos(aEnd.
X()));
1162 aEnd.
AdjustX( -(2 * nLayoutSign) );
1177 aBackground += aOrigin;
1180 static const double twipFactor = 15 * 1.76388889;
1182 aOrigin =
Point((aOrigin.
getX() * twipFactor) /
static_cast<double>(aDrawMode.
GetScaleX()),
1183 (aOrigin.
getY() * twipFactor) /
static_cast<double>(aDrawMode.
GetScaleY()));
1213 SuppressEditViewMessagesGuard aGuard(*pOtherEditView);
1215 [pOtherEditView, aOrigOutputArea, bLokRTL] {
1216 if (bLokRTL && aOrigOutputArea != pOtherEditView->
GetOutputArea())
1221 if (bIsTiledRendering)
1225 pOtherEditView->
Paint(aEditRect, &rDevice);
1230 comphelper::LibreOfficeKit::Compat::scPrintTwipsMsgs))
1240 MapMode aMM(MapUnit::MapTwip);
1248 aCursorRect.
Move(aCursPos.
getX(), 0);
1255 if (!bIsTiledRendering)
1272 if (bInPlaceEditing)
1289 aStart.
setX(pLokRTLCtxt->docToTilePos(aStart.
X()));
1290 aEnd.
setX(pLokRTLCtxt->docToTilePos(aEnd.
X()));
1295 aEnd.
AdjustX( -(2 * nLayoutSign) );
1304 if (bIsTiledRendering)
1312 aBackground += aOrigin;
1318 if (bIsTiledRendering)
1325 static const double twipFactor = 15 * 1.76388889;
1327 aOrigin =
Point((aOrigin.
getX() * twipFactor) /
static_cast<double>(aDrawMode.
GetScaleX()),
1328 (aOrigin.
getY() * twipFactor) /
static_cast<double>(aDrawMode.
GetScaleY()));
1335 if (bIsTiledRendering)
1347 SuppressEditViewMessagesGuard aGuard(*pEditView);
1352 comphelper::LibreOfficeKit::Compat::scPrintTwipsMsgs))
1361 MapMode aMM(MapUnit::MapTwip);
1369 aCursorRect.
Move(aCursPos.
getX(), 0);
1394 if (bInPlaceVisCursor)
1395 pInPlaceCrsr->Show();
1423 std::set<SCCOL> aColBreaks;
1424 std::set<SCROW> aRowBreaks;
1427 if (aColBreaks.size() == 0 || aRowBreaks.size() == 0)
1437 template<
typename IndexType>
1438 void lcl_getBoundingRowColumnforTile(
ScViewData& rViewData,
1440 sal_Int32& nTopLeftTileOffset, sal_Int32& nTopLeftTileOrigin,
1441 sal_Int32& nTopLeftTileIndex, sal_Int32& nBottomRightTileIndex)
1443 const bool bColumnHeader = std::is_same<IndexType, SCCOL>::value;
1447 IndexType nStartIndex = -1;
1448 IndexType nEndIndex = -1;
1458 aBoundsProvider.Compute(rStartNearest, rEndNearest, nTileStartPosPx, nTileEndPosPx);
1459 aBoundsProvider.GetStartIndexAndPosition(nStartIndex, nStartPosPx); ++nStartIndex;
1460 aBoundsProvider.GetEndIndexAndPosition(nEndIndex, nEndPosPx);
1462 nTopLeftTileOffset = nTileStartPosPx - nStartPosPx;
1463 nTopLeftTileOrigin = nStartPosPx;
1464 nTopLeftTileIndex = nStartIndex;
1465 nBottomRightTileIndex = nEndIndex;
1468 void lcl_RTLAdjustTileColOffset(
ScViewData& rViewData, sal_Int32& nTileColOffset,
1472 auto GetColWidthPx = [&rDoc, nTab, fPPTX](
SCCOL nCol) {
1473 const sal_uInt16 nSize = rDoc.
GetColWidth(nCol, nTab);
1481 nTileColOffset += (nEndColPos - nTileEndPx - nTileColOffset);
1490 explicit ScLOKProxyObjectContact(
1493 const char* pDebugName) :
1494 ObjectContactOfPageView(rPageWindow, pDebugName),
1495 mpScDrawView(pDrawView)
1513 if (pPageView->PageWindowCount() > 0)
1514 pSdrPageWindow = pPageView->GetPageWindow(0);
1515 if (!pSdrPageWindow)
1521 if (pTargetSdrObject)
1522 rTarget = pTargetSdrObject->GetViewContact().GetViewObjectContact(rObjContact).getGridOffset();
1531 mpScDrawView(rData.GetScDrawView())
1536 SdrPageWindow& rPageWindow,
const char* pDebugName)
const override
1541 return new ScLOKProxyObjectContact(mpScDrawView, rPageWindow, pDebugName);
1550 int nOutputWidth,
int nOutputHeight,
1551 int nTilePosX,
int nTilePosY,
1553 SCCOL nTiledRenderingAreaEndCol,
SCROW nTiledRenderingAreaEndRow )
1576 const bool bChangeZoom = (aFracX != origZoomX || aFracY != origZoomY);
1584 pDrawView->resetGridOffsetsForAllSdrPageViews();
1587 const double fTilePosXPixel =
static_cast<double>(nTilePosX) * nOutputWidth / nTileWidth;
1588 const double fTilePosYPixel =
static_cast<double>(nTilePosY) * nOutputHeight / nTileHeight;
1589 const double fTileBottomPixel =
static_cast<double>(nTilePosY + nTileHeight) * nOutputHeight / nTileHeight;
1590 const double fTileRightPixel =
static_cast<double>(nTilePosX + nTileWidth) * nOutputWidth / nTileWidth;
1599 sal_Int32 nTopLeftTileRowOffset = 0;
1600 sal_Int32 nTopLeftTileColOffset = 0;
1601 sal_Int32 nTopLeftTileRowOrigin = 0;
1602 sal_Int32 nTopLeftTileColOrigin = 0;
1604 sal_Int32 nTopLeftTileRow = 0;
1605 sal_Int32 nTopLeftTileCol = 0;
1606 sal_Int32 nBottomRightTileRow = 0;
1607 sal_Int32 nBottomRightTileCol = 0;
1609 lcl_getBoundingRowColumnforTile<SCROW>(
mrViewData,
1610 fTilePosYPixel, fTileBottomPixel,
1611 nTopLeftTileRowOffset, nTopLeftTileRowOrigin,
1612 nTopLeftTileRow, nBottomRightTileRow);
1614 lcl_getBoundingRowColumnforTile<SCCOL>(
mrViewData,
1615 fTilePosXPixel, fTileRightPixel,
1616 nTopLeftTileColOffset, nTopLeftTileColOrigin,
1617 nTopLeftTileCol, nBottomRightTileCol);
1620 nBottomRightTileCol++;
1621 nBottomRightTileRow++;
1623 if (nBottomRightTileCol > rDoc.
MaxCol())
1624 nBottomRightTileCol = rDoc.
MaxCol();
1633 lcl_RTLAdjustTileColOffset(
mrViewData, nTopLeftTileColOffset,
1634 fTileRightPixel, nBottomRightTileCol, nTab,
1639 SCCOL nEndCol = nTiledRenderingAreaEndCol;
1640 SCROW nEndRow = nTiledRenderingAreaEndRow;
1642 if (nEndCol < nBottomRightTileCol)
1643 nEndCol = nBottomRightTileCol;
1645 if (nEndRow < nBottomRightTileRow)
1646 nEndRow = nBottomRightTileRow;
1648 nTopLeftTileCol = std::max<sal_Int32>(nTopLeftTileCol, 0);
1649 nTopLeftTileRow = std::max<sal_Int32>(nTopLeftTileRow, 0);
1658 MapMode aAbsMode = aOriginalMode;
1659 const Point aOrigin(-nTopLeftTileColOrigin, -nTopLeftTileRowOrigin);
1664 rDoc.
FillInfo(aTabInfo, nTopLeftTileCol, nTopLeftTileRow,
1665 nBottomRightTileCol, nBottomRightTileRow,
1666 nTab, fPPTX, fPPTY,
false,
false);
1672 -nTopLeftTileColOffset,
1673 -nTopLeftTileRowOffset,
1674 nTopLeftTileCol, nTopLeftTileRow,
1675 nBottomRightTileCol, nBottomRightTileRow,
1676 fPPTX, fPPTY,
nullptr,
nullptr);
1683 comphelper::LibreOfficeKit::Compat::scPrintTwipsMsgs);
1702 DrawContent(rDevice, aTabInfo, aOutputData,
true);
1707 nTilePosX, nTilePosY, nTileWidth, nTileHeight, bLayoutRTL);
1712 rDoc.
ResetChanged(
ScRange(nTopLeftTileCol, nTopLeftTileRow, nTab, nBottomRightTileCol, nBottomRightTileRow, nTab));
1719 pDrawView->resetGridOffsetsForAllSdrPageViews();
1725 aCellBMP.
Mirror(BmpMirrorFlags::Horizontal);
1735 pResultRectangle =
nullptr;
1738 aRectangle = *pRectangle;
1749 pResultRectangle = &aRectangle;
1753 if (pResultRectangle && pResultRectangle->
Left() < 0
1757 if (pResultRectangle->
Right() < 0)
1771 if (pInputHandler && pInputHandler->
IsInputMode())
1778 if (
nType == LOK_SETTEXTSELECTION_RESET)
1791 bool bWasEmpty =
false;
1792 if (aRangeList.
empty())
1799 aRangeList.
Combine().
GetVars(nCol1, nRow1, nTab1, nCol2, nRow2, nTab2);
1810 case LOK_SETTEXTSELECTION_START:
1811 if (nNewPosX != nCol1 || nNewPosY != nRow1 || bWasEmpty)
1813 pTabView->
SetCursor(nNewPosX, nNewPosY);
1819 case LOK_SETTEXTSELECTION_END:
1820 if (nNewPosX != nCol2 || nNewPosY != nRow2 || bWasEmpty)
1825 pTabView->
MarkCursor(nNewPosX, nNewPosY, nTab);
1863 LineInfo aLineInfo(LineStyle::Dash, 2);
1870 aLineInfo.
SetLineCap(css::drawing::LineCap_ROUND);
1872 for (
int i=nX1;
i<nX2;
i++) {
1876 rRenderContext.
DrawLine(aStart,aEnd,aLineInfo);
1879 for (
int i=nY1;
i<nY2;
i++) {
1883 rRenderContext.
DrawLine(aStart,aEnd,aLineInfo);
1902 OUString aPageStr =
ScResId( STR_PGNUM );
1912 std::unique_ptr<ScEditEngineDefaulter> pEditEng;
1925 pEditEng->SetRefMapMode(rRenderContext.
GetMapMode());
1926 auto pEditDefaults = std::make_unique<SfxItemSet>( pEditEng->GetEmptyItemSet() );
1929 pEditEng->SetDefaults( std::move(pEditDefaults) );
1932 sal_uInt16
nCount = sal::static_int_cast<sal_uInt16>( pPageData->
GetCount() );
1957 if ( aStart.
X() < -10 ) aStart.
setX( -10 );
1958 if ( aStart.
Y() < -10 ) aStart.
setY( -10 );
1959 if ( aEnd.
X() > aWinSize.
Width() + 10 )
1961 if ( aEnd.
Y() > aWinSize.
Height() + 10 )
1975 for (nColPos=0; nColPos+1<nColBreaks; nColPos++)
1977 SCCOL nBreak = pColEnd[nColPos]+1;
1978 if ( nBreak >= nX1 && nBreak <= nX2+1 )
1994 for (nRowPos=0; nRowPos+1<nRowBreaks; nRowPos++)
1996 SCROW nBreak = pRowEnd[nRowPos]+1;
1997 if ( nBreak >= nY1 && nBreak <= nY2+1 )
2013 for (nRowPos=0; nRowPos<nRowBreaks; nRowPos++)
2015 SCROW nPrEndY = pRowEnd[nRowPos];
2016 if ( nPrEndY >= nY1 && nPrStartY <= nY2 )
2019 for (nColPos=0; nColPos<nColBreaks; nColPos++)
2021 SCCOL nPrEndX = pColEnd[nColPos];
2022 if ( nPrEndX >= nX1 && nPrStartX <= nX2 )
2025 nPrStartX, nPrStartY,
eWhich,
true );
2027 nPrEndX+1,nPrEndY+1,
eWhich,
true );
2031 nPageNo +=
static_cast<tools::Long>(nColPos)*nRowBreaks+nRowPos;
2033 nPageNo +=
static_cast<tools::Long>(nRowPos)*nColBreaks+nColPos;
2035 OUString aThisPageStr = aPageStr.replaceFirst(
"%1", OUString::number(nPageNo));
2044 pEditEng->SetTextCurrentDefaults( aThisPageStr );
2045 Size aSize100( pEditEng->CalcTextWidth(), pEditEng->GetTextHeight() );
2050 nHeight = std::min(nSizeX,nSizeY);
2056 Size aTextSize( pEditEng->CalcTextWidth(), pEditEng->GetTextHeight() );
2057 Point aPos( (aPageStart.
X()+aPageEnd.
X()-aTextSize.
Width())/2,
2058 (aPageStart.
Y()+aPageEnd.
Y()-aTextSize.
Height())/2 );
2059 pEditEng->Draw(rRenderContext, aPos);
2065 rRenderContext.
SetFont( aFont );
2074 rRenderContext.
SetFont( aFont );
2079 Point aPos( (aPageStart.
X()+aPageEnd.
X()-aTextSize.
Width())/2,
2080 (aPageStart.
Y()+aPageEnd.
Y()-aTextSize.
Height())/2 );
2081 rRenderContext.
DrawText( aPos, aThisPageStr );
2084 nPrStartX = nPrEndX + 1;
2087 nPrStartY = nPrEndY + 1;
2106 std::unique_ptr<ScQueryParam> pQueryParam;
2116 for (nArrY=1; nArrY+1<nArrCount; nArrY++)
2118 if ( pRowInfo[nArrY].bAutoFilter && pRowInfo[nArrY].bChanged )
2120 RowInfo* pThisRowInfo = &pRowInfo[nArrY];
2122 nRow = pThisRowInfo->
nRowNo;
2124 for (nCol=nX1; nCol<=nX2; nCol++)
2134 bool bNewData =
true;
2142 pDBData->
GetArea( nAreaTab, nStartCol, nStartRow, nEndCol, nEndRow );
2143 if ( nCol >= nStartCol && nCol <= nEndCol &&
2144 nRow >= nStartRow && nRow <= nEndRow )
2160 bool bArrowState =
false;
2161 if (pQueryParam->bInplace)
2164 for (nQuery = 0; nQuery <
nCount; ++nQuery)
2168 const ScQueryEntry& rEntry = pQueryParam->GetEntry(nQuery);
2179 SCCOL nStartCol= nCol;
2180 SCROW nStartRow = nRow;
2200 if ( (pRowInfo[nArrY].bPivotToggle || pRowInfo[nArrY].bPivotButton) && pRowInfo[nArrY].bChanged )
2202 RowInfo* pThisRowInfo = &pRowInfo[nArrY];
2203 nRow = pThisRowInfo->
nRowNo;
2204 for (nCol=nX1; nCol<=nX2; nCol++)
2225 sal_uInt16 nIndent = 0;
2227 nIndent = pIndentItem->GetValue();
2252 pQueryParam.reset();
2278 SCCOL nNextCol = nCol + 1;
2284 bool bNextCell = ( nNextCol <= rDoc.
MaxCol() );
2288 if ( nAvailable < aBtnSize.
Width() )
2290 if ( nCellSizeY < aBtnSize.
Height() )
2294 aPos.
AdjustX(nCellSizeX * nLayoutSign );
2316 OSL_FAIL(
"Auto filter button without DBData");
2319 bool bSimpleQuery =
true;
2320 bool bColumnFound =
false;
2324 bSimpleQuery =
false;
2329 for (nQuery = 0; nQuery <
nCount && bSimpleQuery; ++nQuery)
2333 bColumnFound =
true;
2337 bSimpleQuery =
false;
2340 return ( bSimpleQuery && bColumnFound );
2355 ::std::vector< tools::Rectangle >& rPixelRects )
const
2361 ::std::vector< tools::Rectangle >& rRects,
2362 bool bInPrintTwips)
const
2395 if (nX2 < nPosX || nY2 < nPosY)
2410 tools::Long nEndX = aScrEndPos.
X() + (nWidth - 1) * nLayoutSign;
2412 sal_uInt16 nHeightTwips = rDoc.
GetRowHeight( nY2, nTab );
2435 SCCOL nTestX2 = nX2;
2436 SCROW nTestY2 = nY2;
2438 rDoc.
ExtendMerge( nX1,nY1, nTestX2,nTestY2, nTab );
2443 if (nTestX2 < nPosX || nTestY2 < nPosY)
2445 SCCOL nRealX1 = nX1;
2455 if (nXRight > rDoc.
MaxCol())
2459 if (nYBottom > rDoc.
MaxRow())
2460 nYBottom = rDoc.
MaxRow();
2463 if (nX1 > nXRight || nY1 > nYBottom)
2477 if (nX2 > nMaxTiledCol)
2479 if (nY2 > nMaxTiledRow)
2488 bool bWasHidden =
false;
2489 for (
SCROW nY=nY1; nY<=nY2; nY++)
2491 bool bFirstRow = ( nY == nPosY );
2492 bool bDoHidden =
false;
2493 sal_uInt16 nHeightTwips = rDoc.
GetRowHeight( nY,nTab );
2494 bool bDoRow = ( nHeightTwips != 0 );
2514 SCCOL nLoopEndX = nX2;
2517 SCCOL nStartX = nX1;
2528 for (
SCCOL nX=nX1; nX<=nLoopEndX; nX++)
2536 tools::Long nEndX = nScrX + ( nWidth - 1 ) * nLayoutSign;
2544 (rDoc.
RowHidden(nThisY-1, nTab) || bFirstRow) )
2547 pPattern = rDoc.
GetPattern( nX, nThisY, nTab );
2559 pPattern = rDoc.
GetPattern( nThisX, nThisY, nTab );
2573 Point aEndPos = bInPrintTwips ?
2576 if ( aEndPos.
X() * nLayoutSign > nScrX * nLayoutSign && aEndPos.
Y() > nScrY )
2579 aEndPos.
X()-nLayoutSign,aEndPos.
Y()-1 ) );
2582 else if ( nEndX * nLayoutSign >= nScrX * nLayoutSign && nEndY >= nScrY )
2589 nScrX = nEndX + nLayoutSign;
2599 Window::DataChanged(rDCEvt);
2601 if ( !((rDCEvt.
GetType() == DataChangedEventType::PRINTER) ||
2602 (rDCEvt.
GetType() == DataChangedEventType::DISPLAY) ||
2603 (rDCEvt.
GetType() == DataChangedEventType::FONTS) ||
2604 (rDCEvt.
GetType() == DataChangedEventType::FONTSUBSTITUTION) ||
2605 ((rDCEvt.
GetType() == DataChangedEventType::SETTINGS) &&
2606 (rDCEvt.
GetFlags() & AllSettingsFlags::STYLE))) )
2612 if ( (rDCEvt.
GetType() == DataChangedEventType::SETTINGS) &&
2613 (rDCEvt.
GetFlags() & AllSettingsFlags::STYLE) )
2646 if (pTimer != &maShowPageBreaksTimer)
2657 const SCTAB nCurrentTab = mrViewData.GetTabNo();
2676 ScDocShell* pDocSh = mrViewData.GetDocShell();
size_t SCSIZE
size_t typedef to be able to find places where code was changed from USHORT to size_t and is used to ...
void PutInOrder(T &nStart, T &nEnd)
const StyleSettings & GetStyleSettings() const
bool Mirror(BmpMirrorFlags nMirrorFlags)
bool IsTransparent() const
DataChangedEventType GetType() const
AllSettingsFlags GetFlags() const
sal_Int32 GetParagraphCount() const
static rtl::Reference< SfxItemPool > CreatePool()
sal_uInt32 GetLineHeight(sal_Int32 nParagraph)
sal_Int32 GetLineCount(sal_Int32 nParagraph) const
tools::Rectangle GetEditCursor() const
void SetOutputArea(const tools::Rectangle &rRect)
Color const & GetBackgroundColor() const
OutputDevice & GetOutputDevice() const
vcl::Cursor * GetCursor() const
void SetBackgroundColor(const Color &rColor)
EditEngine * GetEditEngine() const
const tools::Rectangle & GetOutputArea() const
void Paint(const tools::Rectangle &rRect, OutputDevice *pTargetDevice=nullptr)
void SetDashCount(sal_uInt16 nDashCount)
void SetDotCount(sal_uInt16 nDotCount)
void SetLineCap(css::drawing::LineCap eLineCap)
void SetDistance(double nDistance)
void SetDotLen(double nDotLen)
static void PaintAllChartsOnTile(VirtualDevice &rDevice, int nOutputWidth, int nOutputHeight, int nTilePosX, int nTilePosY, tools::Long nTileWidth, tools::Long nTileHeight, bool bNegativeX=false)
void SetOrigin(const Point &rOrigin)
void SetScaleY(const Fraction &rScaleY)
const Fraction & GetScaleX() const
const Point & GetOrigin() const
const Fraction & GetScaleY() const
void SetScaleX(const Fraction &rScaleX)
virtual vcl::Region GetActiveClipRegion() const
void SetFont(const vcl::Font &rNewFont)
SAL_WARN_UNUSED_RESULT Point PixelToLogic(const Point &rDevicePt) const
Size GetOutputSizePixel() const
void DrawRect(const tools::Rectangle &rRect)
void DrawLine(const Point &rStartPt, const Point &rEndPt)
bool IsClipRegion() const
SAL_WARN_UNUSED_RESULT Point LogicToLogic(const Point &rPtSource, const MapMode *pMapModeSource, const MapMode *pMapModeDest) const
tools::Long GetTextWidth(const OUString &rStr, sal_Int32 nIndex=0, sal_Int32 nLen=-1, vcl::text::TextLayoutCache const *=nullptr, SalLayoutGlyphs const *const pLayoutCache=nullptr) const
void DrawBitmap(const Point &rDestPt, const Bitmap &rBitmap)
void SetPixelOffset(const Size &rOffset)
virtual Bitmap GetBitmap(const Point &rSrcPt, const Size &rSize) const
const MapMode & GetMapMode() const
tools::Long GetTextHeight() const
void DrawText(const Point &rStartPt, const OUString &rStr, sal_Int32 nIndex=0, sal_Int32 nLen=-1, std::vector< tools::Rectangle > *pVector=nullptr, OUString *pDisplayText=nullptr, const SalLayoutGlyphs *pLayoutCache=nullptr)
const AllSettings & GetSettings() const
constexpr tools::Long Y() const
void setX(tools::Long nX)
void setY(tools::Long nY)
tools::Long AdjustY(tools::Long nVertMove)
tools::Long AdjustX(tools::Long nHorzMove)
constexpr tools::Long X() const
constexpr tools::Long getX() const
constexpr tools::Long getY() const
void GetArea(SCTAB &rTab, SCCOL &rCol1, SCROW &rRow1, SCCOL &rCol2, SCROW &rRow2) const
SC_DLLPUBLIC void GetQueryParam(ScQueryParam &rQueryParam) const
virtual void SetModified(bool=true) override
void PostPaint(SCCOL nStartCol, SCROW nStartRow, SCTAB nStartTab, SCCOL nEndCol, SCROW nEndRow, SCTAB nEndTab, PaintPartFlags nPart, sal_uInt16 nExtFlags=0)
void ResetChanged(const ScRange &rRange)
SC_DLLPUBLIC bool IsScenario(SCTAB nTab) const
ScSheetLimits & GetSheetLimits() const
SC_DLLPUBLIC sal_uInt16 GetRowHeight(SCROW nRow, SCTAB nTab, bool bHiddenAsZero=true) const
SC_DLLPUBLIC sal_uInt16 GetColWidth(SCCOL nCol, SCTAB nTab, bool bHiddenAsZero=true) const
bool ValidRow(SCROW nRow) const
void UpdatePageBreaks(SCTAB nTab, const ScRange *pUserArea=nullptr)
SC_DLLPUBLIC bool ExtendMerge(SCCOL nStartCol, SCROW nStartRow, SCCOL &rEndCol, SCROW &rEndRow, SCTAB nTab, bool bRefresh=false)
void MarkScenario(SCTAB nSrcTab, SCTAB nDestTab, ScMarkData &rDestMark, bool bResetMark=true, ScScenarioFlags nNeededBits=ScScenarioFlags::NONE) const
SC_DLLPUBLIC SCCOL MaxCol() const
const ScDBData * GetDBAtCursor(SCCOL nCol, SCROW nRow, SCTAB nTab, ScDBDataPortion ePortion) const
SC_DLLPUBLIC ScDocumentPool * GetPool()
SC_DLLPUBLIC SCROW MaxRow() const
void FillInfo(ScTableInfo &rTabInfo, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, SCTAB nTab, double fColScale, double fRowScale, bool bPageMode, bool bFormulaMode, const ScMarkData *pMarkData=nullptr)
void PrepareFormulaCalc()
Call this before any operations that might trigger one or more formula cells to get calculated.
bool HasScenarioRange(SCTAB nTab, const ScRange &rRange) const
SC_DLLPUBLIC ScBreakType HasRowBreak(SCROW nRow, SCTAB nTab) const
SC_DLLPUBLIC SvtScriptType GetStringScriptType(const OUString &rString)
SC_DLLPUBLIC void GetTiledRenderingArea(SCTAB nTab, SCCOL &rEndCol, SCROW &rEndRow) const
Return the number of columns / rows that should be visible for the tiled rendering.
SC_DLLPUBLIC void GetScenarioData(SCTAB nTab, OUString &rComment, Color &rColor, ScScenarioFlags &rFlags) const
SC_DLLPUBLIC void ExtendTotalMerge(ScRange &rRange) const
SC_DLLPUBLIC ScBreakType HasColBreak(SCCOL nCol, SCTAB nTab) const
SC_DLLPUBLIC ScDrawLayer * GetDrawLayer()
SC_DLLPUBLIC bool RowHidden(SCROW nRow, SCTAB nTab, SCROW *pFirstRow=nullptr, SCROW *pLastRow=nullptr) const
void ExtendHidden(SCCOL &rX1, SCROW &rY1, SCCOL &rX2, SCROW &rY2, SCTAB nTab)
SC_DLLPUBLIC void GetAllColBreaks(std::set< SCCOL > &rBreaks, SCTAB nTab, bool bPage, bool bManual) const
void SetPageSize(SCTAB nTab, const Size &rSize)
bool ValidCol(SCCOL nCol) const
bool IsInInterpreter() const
SC_DLLPUBLIC void ExtendOverlapped(SCCOL &rStartCol, SCROW &rStartRow, SCCOL nEndCol, SCROW nEndRow, SCTAB nTab) const
SC_DLLPUBLIC bool ColHidden(SCCOL nCol, SCTAB nTab, SCCOL *pFirstCol=nullptr, SCCOL *pLastCol=nullptr) const
bool HasBackgroundDraw(SCTAB nTab, const tools::Rectangle &rMMRect) const
SC_DLLPUBLIC void GetAllRowBreaks(std::set< SCROW > &rBreaks, SCTAB nTab, bool bPage, bool bManual) const
SC_DLLPUBLIC OUString GetString(SCCOL nCol, SCROW nRow, SCTAB nTab, const ScInterpreterContext *pContext=nullptr) const
ScChangeTrack * GetChangeTrack() const
SC_DLLPUBLIC bool IsLayoutRTL(SCTAB nTab) const
SfxPrinter * GetPrinter(bool bCreateIfNotExist=true)
SC_DLLPUBLIC bool GetName(SCTAB nTab, OUString &rName) const
SC_DLLPUBLIC const SfxPoolItem * GetAttr(SCCOL nCol, SCROW nRow, SCTAB nTab, sal_uInt16 nWhich) const
SC_DLLPUBLIC const ScPatternAttr * GetPattern(SCCOL nCol, SCROW nRow, SCTAB nTab) const
Size GetPageSize(SCTAB nTab) const
SC_DLLPUBLIC const ScDocOptions & GetDocOptions() const
SC_DLLPUBLIC bool IsActiveScenario(SCTAB nTab) const
SC_DLLPUBLIC SCTAB GetTableCount() const
void GetMargins(const ScPatternAttr *pPattern, tools::Long &nLeftMargin, tools::Long &nTopMargin, tools::Long &nRightMargin, tools::Long &BottomMargin) const
tools::Long GetIndent(const ScPatternAttr *pPattern) const
static SC_DLLPUBLIC SvtScriptType GetDefaultScriptType()
tools::Rectangle aInvertRect
void LogicInvalidate(const tools::Rectangle *pRectangle) override
SvtScriptType nPageScript
void Draw(SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMode eMode)
void initiatePageBreaks()
void GetRectsAnyFor(const ScMarkData &rMarkData, ::std::vector< tools::Rectangle > &rRects, bool bInPrintTwips) const
MapMode GetDrawMapMode(bool bForce=false)
MapMode for the drawinglayer objects.
ScDDComboBoxButton aComboButton
void DoInvertRect(const tools::Rectangle &rPixel)
void UpdateHeaderOverlay()
void SetCellSelectionPixel(int nType, int nPixelX, int nPixelY)
Update the cell selection according to what handles have been dragged.
bool NeedLOKCursorInvalidation(const tools::Rectangle &rCursorRect, const Fraction aScaleX, const Fraction aScaleY)
tools::Rectangle GetListValButtonRect(const ScAddress &rButtonPos)
virtual void DataChanged(const DataChangedEvent &rDCEvt) override
void DrawRedraw(ScOutputData &rOutputData, SdrLayerID nLayer)
void DrawContent(OutputDevice &rDevice, const ScTableInfo &rTableInfo, ScOutputData &aOutputData, bool bLogicText)
Draw content of the gridwindow; shared between the desktop and the tiled rendering.
tools::Rectangle aRepaintPixel
std::shared_ptr< sc::SpellCheckContext > mpSpellCheckCxt
void SetupInitialPageBreaks(const ScDocument &rDoc, SCTAB nTab)
sal_uInt16 nCursorHideCount
void DrawButtons(SCCOL nX1, SCCOL nX2, const ScTableInfo &rTabInfo, OutputDevice *pContentDev, const ScLokRTLContext *pLokRTLContext)
void DrawHiddenIndicator(SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, vcl::RenderContext &rRenderContext)
std::vector< LOKCursorEntry > maLOKLastCursor
std::unique_ptr< ScNoteMarker, o3tl::default_delete< ScNoteMarker > > mpNoteMarker
void flushOverlayManager()
bool IsAutoFilterActive(SCCOL nCol, SCROW nRow, SCTAB nTab)
void GetSelectionRectsPrintTwips(::std::vector< tools::Rectangle > &rRects) const
void DrawSdrGrid(const tools::Rectangle &rDrawingRect, OutputDevice *pContentDev)
void DrawPagePreview(SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, vcl::RenderContext &rRenderContext)
void InvalidateLOKViewCursor(const tools::Rectangle &rCursorRect, const Fraction aScaleX, const Fraction aScaleY)
void GetPixelRectsFor(const ScMarkData &rMarkData, ::std::vector< tools::Rectangle > &rPixelRects) const
convert rMarkData into pixel rectangles for this view
virtual void PrePaint(vcl::RenderContext &rRenderContext) override
void PaintTile(VirtualDevice &rDevice, int nOutputWidth, int nOutputHeight, int nTilePosX, int nTilePosY, tools::Long nTileWidth, tools::Long nTileHeight, SCCOL nTiledRenderingAreaEndCol, SCROW nTiledRenderingAreaEndRow)
Timer maShowPageBreaksTimer
void GetSelectionRects(::std::vector< tools::Rectangle > &rPixelRects) const
bool UpdateVisibleRange()
VisibleRange maVisibleRange
std::unique_ptr< FmFormView > mpLOKDrawView
LibreOfficeKit needs a persistent FmFormView for tiled rendering, otherwise the invalidations from dr...
virtual void Paint(vcl::RenderContext &rRenderContext, const tools::Rectangle &rRect) override
void AddRect(const tools::Rectangle &rRect)
Used to store the necessary information about the (combined-)tile area relevant to coordinate transfo...
ScLokRTLContext(const ScOutputData &rOutputData, const tools::Long nTileDeviceOriginPixelX)
const ScOutputData & mrOutputData
tools::Long docToTilePos(tools::Long nPosX) const
Converts from document x pixel position to the corresponding pixel position w.r.t the tile device ori...
const tools::Long mnTileDevOriginX
todo: It should be possible to have MarkArrays for each table, in order to enable "search all" across...
const ScRange & GetMultiMarkArea() const
const ScRange & GetMarkArea() const
bool IsMultiMarked() const
void FillRangeListWithMarks(ScRangeList *pList, bool bClear, SCTAB nForTab=-1) const
Create a range list of marks.
ScRangeList GetMarkedRanges() const
void SetMarking(bool bFlag)
bool IsCellMarked(SCCOL nCol, SCROW nRow, bool bNoSimple=false) const
SCCOL GetColMerge() const
SCROW GetRowMerge() const
bool IsHorOverlapped() const
bool IsOverlapped() const
bool IsVerOverlapped() const
svtools::ColorConfig & GetColorConfig()
ScInputHandler * GetInputHdl(ScTabViewShell *pViewSh=nullptr, bool bUseRef=true)
Input-Handler.
SC_DLLPUBLIC const ScInputOptions & GetInputOptions()
tools::Long GetScrH() const
void SetFmtDevice(OutputDevice *pRDev)
void SetEditCell(SCCOL nCol, SCROW nRow)
void DrawStrings(bool bPixelToLogic=false)
void SetViewShell(ScTabViewShell *pSh)
void SetSyntaxMode(bool bNewMode)
void SetMirrorWidth(tools::Long nNew)
void SetSolidBackground(bool bSet)
void DrawSparklines(vcl::RenderContext &rRenderContext)
void SetShowNullValues(bool bSet)
void DrawFrame(vcl::RenderContext &rRenderContext)
void SetShowSpellErrors(bool bSet)
void DrawNoteMarks(vcl::RenderContext &rRenderContext)
void DrawBackground(vcl::RenderContext &rRenderContext)
void SetGridColor(const Color &rColor)
void SetMarkClipped(bool bSet)
void DrawEdit(bool bPixelToLogic)
void DrawGrid(vcl::RenderContext &rRenderContext, bool bGrid, bool bPage, bool bMergeCover=false)
void DrawDocumentBackground()
void SetUseStyleColor(bool bSet)
void SetSpellCheckContext(const sc::SpellCheckContext *pCxt)
void SetShowFormulas(bool bSet)
void DrawRefMark(SCCOL nRefStartX, SCROW nRefStartY, SCCOL nRefEndX, SCROW nRefEndY, const Color &rColor, bool bHandle)
Draws reference mark and returns its properties.
void SetDrawView(FmFormView *pNew)
void SetPagebreakMode(ScPageBreakData *pPageData)
void SetContentDevice(OutputDevice *pContentDev)
void DrawFormulaMarks(vcl::RenderContext &rRenderContext)
tools::Long GetScrW() const
ScPrintRangeData & GetData(size_t i)
static void fillFontOnly(vcl::Font &rFont, const SfxItemSet &rItemSet, const OutputDevice *pOutDev=nullptr, const Fraction *pScale=nullptr, const SfxItemSet *pCondSet=nullptr, SvtScriptType nScript=SvtScriptType::NONE)
Static helper function to fill a font object from the passed item set.
const SfxPoolItem & GetItem(sal_uInt16 nWhichP) const
void FillEditItemSet(SfxItemSet *pEditSet, const SfxItemSet *pCondSet=nullptr) const
Converts all Calc items contained in the own item set to edit engine items and puts them into pEditSe...
const value_type & getNearestByPosition(tools::Long nPos) const
tools::Long computePosition(index_type nIndex, const std::function< long(index_type)> &getSizePx)
const SCCOL * GetPageEndX() const
const SCROW * GetPageEndY() const
const ScRange & GetPrintRange() const
tools::Long GetFirstPage() const
ScRangeFindData & GetObject(size_t nIndex)
const OUString & GetDocName() const
void GetVars(SCCOL &nCol1, SCROW &nRow1, SCTAB &nTab1, SCCOL &nCol2, SCROW &nRow2, SCTAB &nTab2) const
bool Intersects(const ScRange &rRange) const
void UpdateInputHandler(bool bForce=false, bool bStopEditing=true)
void InitBlockMode(SCCOL nCurX, SCROW nCurY, SCTAB nCurZ, bool bTestNeg=false, bool bCols=false, bool bRows=false, bool bForceNeg=false)
void DoneBlockMode(bool bContinue=false)
const std::vector< ScHighlightEntry > & GetHighlightRanges() const
void MarkCursor(SCCOL nCurX, SCROW nCurY, SCTAB nCurZ, bool bCols=false, bool bRows=false, bool bCellSelection=false)
static void UpdateInputLine()
ScViewData & GetViewData()
SC_DLLPUBLIC void SetCursor(SCCOL nPosX, SCROW nPosY, bool bNew=false)
ScDrawView * GetScDrawView()
void RepeatResize(bool bUpdateFix=true)
ScPageBreakData * GetPageBreakData()
Point GetPrintTwipsPos(SCCOL nCol, SCROW nRow) const
returns the position (top-left corner) of the requested cell in print twips coordinates.
SCCOL GetEditEndCol() const
SCROW GetEditEndRow() const
static void AddPixelsWhile(tools::Long &rScrY, tools::Long nEndPixels, SCROW &rPosY, SCROW nEndRow, double nPPTY, const ScDocument *pDoc, SCTAB nTabNo)
while (rScrY <= nEndPixels && rPosY <= nEndRow) add pixels of row heights converted with nPPTY to rSc...
bool GetMergeSizePixel(SCCOL nX, SCROW nY, tools::Long &rSizeXPix, tools::Long &rSizeYPix) const
const ScViewOptions & GetOptions() const
bool IsSyntaxMode() const
ScMarkData & GetMarkData()
const Fraction & GetZoomY() const
SCROW GetEditStartRow() const
ScDocument & GetDocument() const
ScPositionHelper & GetLOKHeightHelper()
SCROW GetPosY(ScVSplitPos eWhich, SCTAB nForTab=-1) const
SCCOL GetRefStartX() const
SCCOL GetEditStartCol() const
const MapMode & GetLogicMode(ScSplitPos eWhich)
ScSplitPos GetEditActivePart() const
ScDocShell * GetDocShell() const
ScGridWindow * GetActiveWin()
void GetPosFromPixel(tools::Long nClickX, tools::Long nClickY, ScSplitPos eWhich, SCCOL &rPosX, SCROW &rPosY, bool bTestMerge=true, bool bRepair=false, SCTAB nForTab=-1)
ScTabViewShell * GetViewShell() const
static tools::Long ToPixel(sal_uInt16 nTwips, double nFactor)
ScDBFunc * GetView() const
SCROW VisibleCellsY(ScVSplitPos eWhichY) const
ScSplitPos GetActivePart() const
void GetEditView(ScSplitPos eWhich, EditView *&rViewPtr, SCCOL &rCol, SCROW &rRow)
Point GetScrPos(SCCOL nWhereX, SCROW nWhereY, ScSplitPos eWhich, bool bAllowNeg=false, SCTAB nForTab=-1) const
SCTAB GetRefStartZ() const
ScPositionHelper & GetLOKWidthHelper()
void SetZoom(const Fraction &rNewX, const Fraction &rNewY, std::vector< SCTAB > &tabs)
SCROW GetRefStartY() const
SCCOL VisibleCellsX(ScHSplitPos eWhichX) const
const Fraction & GetZoomX() const
SCTAB GetRefTabNo() const
bool IsPagebreakMode() const
void SetScenButSize(const Size &rNew)
SfxBindings & GetBindings()
bool HasEditView(ScSplitPos eWhich) const
ScDrawView * GetScDrawView()
SCCOL GetPosX(ScHSplitPos eWhich, SCTAB nForTab=-1) const
bool GetOption(ScViewOption eOpt) const
Color const & GetGridColor(OUString *pStrName=nullptr) const
const Color & GetDocColor() const
void disposeAndReset(reference_type *pBody)
const sdr::contact::ObjectContact & GetObjectContact() const
void EndDrawLayers(SdrPaintWindow &rPaintWindow, bool bPaintFormLayer)
SdrPageView * GetSdrPageView() const
SdrPaintWindow * BeginDrawLayers(OutputDevice *pOut, const vcl::Region &rReg, bool bDisableIntersect=false)
OutputDevice & GetTargetOutputDevice()
virtual sdr::contact::ObjectContact * createViewSpecificObjectContact(SdrPageWindow &rPageWindow, const char *pDebugName) const
void Invalidate(sal_uInt16 nId)
const SfxPoolItem & GetDefaultItem(sal_uInt16 nWhich) const
static void notifyInvalidation(SfxViewShell const *pThisView, tools::Rectangle const *)
static void notifyOtherView(const SfxViewShell *pThisView, SfxViewShell const *pOtherView, int nType, std::string_view rKey, const OString &rPayload)
OUString GetTitle(sal_uInt16 nMaxLen=0) const
ViewShellDocId GetDocId() const override
static SAL_WARN_UNUSED_RESULT SfxViewShell * GetNext(const SfxViewShell &rPrev, bool bOnlyVisible=true, const std::function< bool(const SfxViewShell *)> &isViewShell=nullptr)
static SAL_WARN_UNUSED_RESULT SfxViewShell * GetFirst(bool bOnlyVisible=true, const std::function< bool(const SfxViewShell *)> &isViewShell=nullptr)
static SAL_WARN_UNUSED_RESULT SfxViewShell * Current()
constexpr tools::Long Height() const
void setWidth(tools::Long nWidth)
void setHeight(tools::Long nHeight)
constexpr tools::Long Width() const
const vcl::Font & GetAppFont() const
void SetPriority(TaskPriority ePriority)
virtual void Start(bool bStartTimer=true) override
reference_type * get() const
void SetFontSize(const Size &)
void SetColor(const Color &)
const Size & GetFontSize() const
void SetAlignment(TextAlign)
Point LogicToPixel(const Point &rLogicPt) const
bool IsMapModeEnabled() const
const AllSettings & GetSettings() const
const MapMode & GetMapMode() const
::OutputDevice const * GetOutDev() const
Point PixelToLogic(const Point &rDevicePt) const
virtual Size GetSizePixel() const
Size GetOutputSizePixel() const
void Invalidate(InvalidateFlags nFlags=InvalidateFlags::NONE)
virtual const SystemEnvData * GetSystemData() const
constexpr ::Color COL_LIGHTGRAY(0xC0, 0xC0, 0xC0)
constexpr ::Color COL_BLACK(0x00, 0x00, 0x00)
constexpr ::Color COL_TRANSPARENT(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
constexpr TypedWhichId< SvxFontHeightItem > EE_CHAR_FONTHEIGHT(EE_CHAR_START+2)
constexpr TypedWhichId< SvxColorItem > EE_CHAR_COLOR(EE_CHAR_START+0)
constexpr TypedWhichId< SvxFontHeightItem > EE_CHAR_FONTHEIGHT_CTL(EE_CHAR_START+20)
constexpr TypedWhichId< SvxFontHeightItem > EE_CHAR_FONTHEIGHT_CJK(EE_CHAR_START+19)
constexpr SdrLayerID SC_LAYER_FRONT(0)
constexpr SdrLayerID SC_LAYER_INTERN(2)
constexpr SdrLayerID SC_LAYER_BACK(1)
static void lcl_DrawScenarioFrames(OutputDevice *pDev, ScViewData &rViewData, ScSplitPos eWhich, SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2)
static void lcl_DrawOneFrame(vcl::RenderContext *pDev, const tools::Rectangle &rInnerPixel, const OUString &rTitle, const Color &rColor, bool bTextBelow, double nPPTX, double nPPTY, const Fraction &rZoomY, ScDocument &rDoc, ScViewData &rButtonViewData, bool bLayoutRTL)
static void lcl_DrawHighlight(ScOutputData &rOutputData, const ScViewData &rViewData, const std::vector< ScHighlightEntry > &rHighlightRanges)
static void lcl_LimitRect(tools::Rectangle &rRect, const tools::Rectangle &rVisible)
IMPL_LINK(ScGridWindow, InitiatePageBreaksTimer, Timer *, pTimer, void)
static void lcl_GetEditAreaTLOffset(tools::Long &nOffsetX, tools::Long &nOffsetY, const ScAddress &rAddr, const ScViewData &rViewData, ScDocument &rDoc)
tools::Long const nTopMargin
tools::Long const nLeftMargin
bool isCompatFlagSet(Compat flag)
void setLocalRendering(bool bLocalRendering=true)
constexpr auto toTwips(N number, Length from)
constexpr Point convert(const Point &rPoint, o3tl::Length eFrom, o3tl::Length eTo)
css::uno::Reference< css::linguistic2::XProofreadingIterator > get(css::uno::Reference< css::uno::XComponentContext > const &context)
HashMap_OWString_Interface aMap
#define SC_SCENARIO_VSPACE
#define SC_SCENARIO_HSPACE
OUString ScResId(TranslateId aId)
constexpr TypedWhichId< ScIndentItem > ATTR_INDENT(131)
constexpr TypedWhichId< ScMergeFlagAttr > ATTR_MERGE_FLAG(145)
constexpr TypedWhichId< ScPatternAttr > ATTR_PATTERN(156)
constexpr TypedWhichId< ScMergeAttr > ATTR_MERGE(144)
constexpr TypedWhichId< SvxBrushItem > ATTR_BACKGROUND(148)
ScCellInfo & cellInfo(SCCOL nCol)
bool bPivotCollapseButton
bool bPivotPopupButtonMulti
Each instance of this struct represents a single filtering criteria.
SC_DLLPUBLIC const ScQueryEntry & GetEntry(SCSIZE n) const
SC_DLLPUBLIC SCSIZE GetEntryCount() const
std::unique_ptr< RowInfo[]> mpRowInfo