43 #include <document.hxx>
48 #include <progress.hxx>
72 #define SC_AUTHORCOLORCOUNT 9
82 rOpt(
SC_MOD()->GetAppOptions() ),
83 rUsers( rTrack.GetUserCollection() ),
127 size_t nPos = std::distance(
rUsers.begin(), it);
139 double nPixelPerTwipsX,
double nPixelPerTwipsY,
142 mpRefDevice( pNewDev ),
143 pFmtDevice( pNewDev ),
144 mrTabInfo( rTabInfo ),
145 pRowInfo( rTabInfo.mpRowInfo.
get() ),
146 nArrCount( rTabInfo.mnArrCount ),
156 mnPPTX( nPixelPerTwipsX ),
157 mnPPTY( nPixelPerTwipsY ),
158 pViewShell( nullptr ),
159 pDrawView( nullptr ),
164 bPagebreakMode( false ),
165 bSolidBackground( false ),
166 mbUseStyleColor( false ),
167 mbForceAutoColor(
SC_MOD()->GetAccessOptions().GetIsAutomaticFontColor() ),
168 mbSyntaxMode( false ),
170 mbShowNullValues( true ),
171 mbShowFormulas( false ),
172 bShowSpellErrors( false ),
173 bMarkClipped( false ),
175 bAnyClipped( false ),
177 mpTargetPaintWindow(nullptr),
178 mpSpellCheckCxt(nullptr)
305 bool bDashed =
false;
336 bWorksInPixels =
true;
351 nOneX = aOnePixel.
Width();
352 nOneY = aOnePixel.
Height();
360 else if (bMergeCover)
371 for (nX=
nX1; nX<=
nX2; nX++)
373 SCCOL nXplus1 = nX+1;
374 SCCOL nXplus2 = nX+2;
378 nPosX += nWidth * nLayoutSign;
383 SCCOL nCol = nXplus1;
384 while (nCol <= mpDoc->MaxCol())
394 if (nBreak != nBreakOld)
398 if (static_cast<int>(nBreak))
409 else if (bMergeCover)
423 if ( nX<mpDoc->MaxCol() && !bSingle )
425 bSingle = ( nWidthXplus2 == 0 );
426 for (nArrY=1; nArrY+1<
nArrCount && !bSingle; nArrY++)
428 if (
pRowInfo[nArrY].pCellInfo[nXplus2].bHOverlapped)
430 if (
pRowInfo[nArrY].pCellInfo[nXplus1].bHideGrid)
437 if ( nX<mpDoc->MaxCol() && bSingle )
439 SCCOL nVisX = nXplus1;
444 for (nArrY=1; nArrY+1<
nArrCount; nArrY++)
469 if (pThisRowInfo->
bChanged && !bHOver && bGrid)
471 aGrid.
AddVerLine(bWorksInPixels, nPosX-nSignedOneX, nPosY, nNextY-nOneY, bDashed);
473 else if (bHOver && bMergeCover)
475 aGrid.
AddVerLine(bWorksInPixels, nPosX-nSignedOneX, nPosY, nNextY-nOneY, bDashed);
490 bool bHiddenRow =
true;
491 SCROW nHiddenEndRow = -1;
493 for (nArrY=1; nArrY+1<
nArrCount; nArrY++)
495 SCSIZE nArrYplus1 = nArrY+1;
497 SCROW nYplus1 = nY+1;
506 if (
i > nHiddenEndRow)
520 if (nBreakOld != nBreak)
524 if (static_cast<int>(nBreak))
535 else if (bMergeCover)
548 bSingle = !bNextYisNextRow;
551 if (
pRowInfo[nArrYplus1].pCellInfo[
i+1].bVOverlapped)
557 if ( bSingle && nY<mpDoc->MaxRow() )
571 if ( bNextYisNextRow )
584 if (!bVOver && bGrid)
586 aGrid.
AddHorLine(bWorksInPixels, nPosX, nNextX-nSignedOneX, nPosY-nOneY, bDashed);
588 else if (bVOver && bMergeCover)
590 aGrid.
AddHorLine(bWorksInPixels, nPosX, nNextX-nSignedOneX, nPosY-nOneY, bDashed);
614 sal_uInt16 nRangeCount = sal::static_int_cast<sal_uInt16>(pPageData->
GetCount());
628 pThisRowInfo->
nRowNo <= nEndY )
630 for (
SCCOL nX=nStartX; nX<=nEndX; nX++)
654 for (
SCCOL nX=0; nX<=nRotMax; nX++)
680 if(nTargetX >= 0 && nTargetY >= 0)
717 if ( nRot180 == 9000 )
747 pPattern = pDoc->
GetPattern( nCol, nRow, nTab );
755 while ( nCol < pDoc->MaxCol() &&
lcl_GetRotateDir( pDoc, nCol, nRow, nTab ) == nDir &&
759 pPattern = pDoc->
GetPattern( nCol, nRow, nTab );
769 SCCOL nX1,
SCCOL nX2,
bool bShowProt,
bool bPagebreakMode )
778 for ( nX=nX1; nX<=nX2; nX++ )
782 if ( !pPat1 || !pPat2 ||
789 for ( nX=nX1; nX<=nX2; nX++ )
795 for ( nX=nX1; nX<=nX2; nX++ )
799 if ( bPagebreakMode )
800 for ( nX=nX1; nX<=nX2; nX++ )
804 for ( nX=nX1; nX<=nX2; nX++ )
808 if( (pCol1 && !pCol2) || (!pCol1 && pCol2) )
811 if (pCol1 && (*pCol1 != *pCol2))
817 if( (pInfo1 && !pInfo2) || (!pInfo1 && pInfo2) )
820 if (pInfo1 && (*pInfo1 != *pInfo2))
827 if(pIconSet1 || pIconSet2)
851 const double lclCornerRectTransparency = 40.0;
861 if(pOldDataBarInfo->
mnZero)
869 nPosZero = aPaintRect.
Left();
876 aPaintRect.
SetLeft( nPosZero + static_cast<tools::Long>(nLength * pOldDataBarInfo->
mnLength/100.0) );
878 else if(pOldDataBarInfo->
mnLength > 0)
880 aPaintRect.
SetLeft( nPosZero );
882 aPaintRect.
SetRight( nPosZero + static_cast<tools::Long>(nLength * pOldDataBarInfo->
mnLength/100.0) );
890 Gradient aGradient(GradientStyle::Linear, pOldDataBarInfo->
maColor, COL_TRANSPARENT);
891 aGradient.SetSteps(255);
894 aGradient.SetAngle(2700_deg10);
896 aGradient.SetAngle(900_deg10);
905 rRenderContext.
DrawRect(aPaintRect);
909 if(!(pOldDataBarInfo->
mnZero && pOldDataBarInfo->
mnZero != 100))
912 Point aPoint1(nPosZero, rRect.
Top());
914 LineInfo aLineInfo(LineStyle::Dash, 1);
915 aLineInfo.SetDashCount( 4 );
916 aLineInfo.SetDistance( 3 );
917 aLineInfo.SetDashLen( 3 );
920 rRenderContext.
DrawLine(aPoint1, aPoint2, aLineInfo);
936 const BitmapEx& rIcon = getIcon(rIconSetBitmapMap, eType, nIndex);
950 if (pOldColor && (pBackground || pOldColor != pColor || pOldDataBarInfo || pDataBarInfo || pIconSetInfo || pOldIconSetInfo))
952 rRect.
SetRight( nPosX-nSignedOneX );
953 if( !pOldColor->IsTransparent() )
958 if( pOldDataBarInfo )
959 drawDataBars(rRenderContext, pOldDataBarInfo, rRect, nOneX, nOneY);
960 if( pOldIconSetInfo )
961 drawIconSets(rRenderContext, pOldIconSetInfo, rRect, nOneX, nOneY, rIconSetBitmapMap);
963 rRect.
SetLeft( nPosX - nSignedOneX );
966 if ( pOldBackground && (pColor ||pBackground != pOldBackground || pOldDataBarInfo || pDataBarInfo || pIconSetInfo || pOldIconSetInfo) )
968 rRect.
SetRight( nPosX-nSignedOneX );
978 if( pOldDataBarInfo )
979 drawDataBars(rRenderContext, pOldDataBarInfo, rRect, nOneX, nOneY);
980 if( pOldIconSetInfo )
981 drawIconSets(rRenderContext, pOldIconSetInfo, rRect, nOneX, nOneY, rIconSetBitmapMap);
983 rRect.
SetLeft( nPosX - nSignedOneX );
986 if (!pOldBackground && !pOldColor && (pDataBarInfo || pIconSetInfo))
988 rRect.
SetRight( nPosX -nSignedOneX );
989 rRect.
SetLeft( nPosX - nSignedOneX );
995 if (!pOldColor || *pOldColor != *pColor)
998 pOldBackground =
nullptr;
1000 else if(pBackground)
1002 pOldBackground = pBackground;
1007 pOldDataBarInfo = pDataBarInfo;
1009 pOldDataBarInfo =
nullptr;
1012 pOldIconSetInfo = pIconSetInfo;
1014 pOldIconSetInfo =
nullptr;
1026 bool bWorksInPixels =
false;
1028 bWorksInPixels =
true;
1032 if (!bWorksInPixels)
1054 auto pProtectedBackground = std::make_shared<SvxBrushItem>( aProtectedColor,
ATTR_BACKGROUND );
1072 while ( nArrY+nSkip+2<nArrCount &&
1085 aRect =
tools::Rectangle(nPosX, nPosY - nOneY, nPosX, nPosY - nOneY + nRowHeight);
1091 std::optional<Color> pOldColor;
1094 SCCOL nMergedCols = 1;
1095 SCCOL nOldMerged = 0;
1097 for (
SCCOL nX=
nX1; nX + nMergedCols <=
nX2 + 1; nX += nOldMerged)
1101 nOldMerged = nMergedCols;
1115 pBackground = pProtectedBackground.get();
1120 pBackground =
nullptr;
1126 pBackground = pProtectedBackground.get();
1136 std::optional<Color>
const & pColor = pInfo->
mxColorScale;
1144 drawCells(rRenderContext, pColor, pBackground, pOldColor, pOldBackground, aRect, nPosXLogic, nLayoutSign, nOneXLogic, nOneYLogic, pDataBarInfo, pOldDataBarInfo, pIconSetInfo, pOldIconSetInfo,
mpDoc->
GetIconSetBitmapMap());
1152 nMergedCols = std::max<SCCOL>(1, pMerge->
GetColMerge());
1155 for (
SCCOL nMerged = 0; nMerged < nMergedCols; ++nMerged)
1157 SCCOL nCol = nX+nOldMerged+nMerged;
1168 drawCells(rRenderContext, std::optional<Color>(),
nullptr, pOldColor, pOldBackground, aRect, nPosXLogic, nLayoutSign, nOneXLogic, nOneYLogic,
nullptr, pOldDataBarInfo,
nullptr, pOldIconSetInfo,
mpDoc->
GetIconSetBitmapMap());
1173 nPosY += nRowHeight;
1188 Color aAutoTextColor;
1189 if ( bCellContrast )
1204 bool bCornerY = ( nArrY == 0 ) || ( nArrY+1 == nArrCount );
1205 bool bSkipY = ( nArrY==0 && !bTop ) || ( nArrY+1 == nArrCount && !bBottom );
1210 if ( pThisRowInfo->
bChanged && !bSkipY )
1215 bool bCornerX = ( nArrX==
nX1 || nArrX==
nX2+2 );
1216 bool bSkipX = ( nArrX==
nX1 && !bLeft ) || ( nArrX==
nX2+2 && !bRight );
1218 for (sal_uInt16 nPass=0; nPass<2; nPass++)
1223 if ( pAttr && !bSkipX )
1230 if ( (nPass==0 && bCornerX) || (nPass==1 && bCornerY) )
1242 while (nWx<
nX2 && !
pRowInfo[0].pCellInfo[nWx+1].nWidth)
1249 nPosX + ( nThisWidth - 1 ) * nLayoutSign,
1250 nPosY +
pRowInfo[nArrY].nHeight - 1 );
1254 if (nSizeX >= nMaxWidth) nSizeX = nMaxWidth-1;
1256 if (nSizeY >= nRowHeight) nSizeY = nRowHeight-1;
1258 nSizeX *= nLayoutSign;
1267 case SvxShadowLocation::BottomRight: eLoc = SvxShadowLocation::BottomLeft;
break;
1268 case SvxShadowLocation::BottomLeft: eLoc = SvxShadowLocation::BottomRight;
break;
1269 case SvxShadowLocation::TopRight: eLoc = SvxShadowLocation::TopLeft;
break;
1270 case SvxShadowLocation::TopLeft: eLoc = SvxShadowLocation::TopRight;
break;
1281 if (eLoc == SvxShadowLocation::TopLeft || eLoc == SvxShadowLocation::TopRight)
1289 if (eLoc == SvxShadowLocation::TopLeft || eLoc == SvxShadowLocation::BottomLeft)
1296 if (eLoc == SvxShadowLocation::TopLeft || eLoc == SvxShadowLocation::BottomLeft)
1303 if (eLoc == SvxShadowLocation::TopLeft || eLoc == SvxShadowLocation::TopRight)
1319 nPosY += nRowHeight;
1350 while ( nArrY+nSkip+2<nArrCount &&
pRowInfo[nArrY+nSkip+1].bChanged )
1357 Size(
nScrW+1-nOneX, nRowHeight+1-nOneY) );
1362 nPosY += nRowHeight;
1380 return static_cast< size_t >( bRTL ? (nCellInfoLastX + 2 - nCellInfoX) : (nCellInfoX - nCellInfoFirstX) );
1388 bool bUseSingleColor =
false;
1397 if ( ( nOldDrawMode & DrawModeFlags::WhiteFill ) && ( nOldDrawMode & DrawModeFlags::BlackLine ) )
1399 rRenderContext.
SetDrawMode( nOldDrawMode & (~DrawModeFlags::WhiteFill) );
1401 bUseSingleColor =
true;
1403 else if ( ( nOldDrawMode & DrawModeFlags::SettingsFill ) && ( nOldDrawMode & DrawModeFlags::SettingsLine ) )
1405 rRenderContext.
SetDrawMode( nOldDrawMode & (~DrawModeFlags::SettingsFill) );
1407 bUseSingleColor =
true;
1409 else if ( bCellContrast )
1412 bUseSingleColor =
true;
1415 const Color* pForceColor = bUseSingleColor ? &aSingleColor :
nullptr;
1444 for(
size_t nRow = 0; nRow < nRowCount; ++nRow )
1449 nOldPosY = nNewPosY;
1450 nOldSnapY = nNewSnapY;
1462 for( sal_uInt16 nInfoIdx =
nX1; nInfoIdx <=
nX2 + 2; ++nInfoIdx )
1467 rArray.
SetColWidth( nCol, std::abs( nNewSnapX - nOldSnapX ) );
1468 nOldPosX = nNewPosX;
1469 nOldSnapX = nNewSnapX;
1476 size_t nFirstCol = 1;
1477 size_t nFirstRow = 1;
1478 size_t nLastCol = nColCount - 2;
1479 size_t nLastRow = nRowCount - 2;
1482 rArray.
SetClipRange( nFirstCol, nFirstRow, nLastCol, nLastRow );
1485 size_t nRow1 = nFirstRow;
1486 std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor(
CreateProcessor2D());
1490 while( nRow1 <= nLastRow )
1492 while( (nRow1 <= nLastRow) && !
pRowInfo[ nRow1 ].bChanged ) ++nRow1;
1493 if( nRow1 <= nLastRow )
1495 size_t nRow2 = nRow1;
1496 while( (nRow2 + 1 <= nLastRow) &&
pRowInfo[ nRow2 + 1 ].bChanged ) ++nRow2;
1499 nFirstCol, nRow1, nLastCol, nRow2, pForceColor ));
1503 pProcessor->process(aPrimitives);
1535 rRenderContext.
Push();
1541 std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor(
CreateProcessor2D( ));
1554 ( nArrY+1<nArrCount && rNextRowInfo.
bChanged ) ) )
1559 for (nX=0; nX<=nRotMax; nX++)
1561 if (nX==
nX1) nPosX = nInitPosX;
1563 sal_uInt16 nArrX = nX + 1;
1605 tools::Long nTopRight = nPosX + (nColWidth - 1) * nLayoutSign;
1611 double nRealOrient = nLayoutSign *
toRadians(nAttrRotate);
1612 double nCos = cos(nRealOrient);
1613 double nSin = sin(nRealOrient);
1641 aPoints[0] =
Point(nTopLeft, nTop);
1642 aPoints[1] =
Point(nTopRight, nTop);
1643 aPoints[2] =
Point(nBotRight, nBottom);
1644 aPoints[3] =
Point(nBotLeft, nBottom);
1682 std::optional<Color>
const & pColor = pInfo->
mxColorScale;
1686 if (!pColor->IsTransparent())
1696 nPosX += nColWidth * nLayoutSign;
1699 nPosY += nRowHeight;
1705 rRenderContext.
Pop();
1725 uno::Sequence< beans::PropertyValue >() );
1728 *
mpDev, aNewViewInfos );
1744 for(nArrY=1; nArrY+1<
nArrCount; nArrY++)
1752 aDrawingRect.
SetTop( nPosY );
1786 for (nArrY=1; nArrY+1<
nArrCount; nArrY++)
1794 aDrawingRect.
SetTop( nPosY );
1810 bool bRet = (aPoly.
Count() != 0);
1828 bool bAnyDirty =
false;
1829 bool bAnyChanged =
false;
1834 for (nX=
nX1; nX<=
nX2; nX++)
1847 bAnyChanged = bAnyChanged || pFCell->
IsChanged();
1858 nCol1 = std::min(rPos.
Col(), nCol1);
1859 nCol2 = std::max(rPos.
Col(), nCol2);
1860 nRow1 = std::min(rPos.
Row(), nRow1);
1861 nRow2 = std::max(rPos.
Row(), nRow2);
1875 if (bAnyDirty || bAnyChanged)
1883 for (nX=
nX1; nX<=
nX2; nX++)
1902 SCSIZE nOverY = nArrY + 1;
1903 while ( nOverY<nArrCount &&
1904 pRowInfo[nOverY].pCellInfo[nX+1].bVOverlapped )
1928 if ( nRefStartX == nRefEndX && nRefStartY == nRefEndY )
1931 if ( nRefStartX <= nVisX2 && nRefEndX >=
nVisX1 &&
1932 nRefStartY <= nVisY2 && nRefEndY >=
nVisY1 )
1947 bool bBottom =
false;
1949 bool bRight =
false;
1952 bool bNoStartY = (
nY1 < nRefStartY );
1953 bool bNoEndY =
false;
1958 if ( nY==nRefStartY || (nY>nRefStartY && bNoStartY) )
1968 if ( nY>nRefEndY && bNoEndY )
1973 bNoStartY = ( nY < nRefStartY );
1974 bNoEndY = ( nY < nRefEndY );
1984 if ( nX==nRefStartX )
1997 if (bTop && bBottom && bLeft && bRight)
2002 ( nMaxX - nMinX ) /
mnPPTX,
2003 ( nMaxY - nMinY ) /
mnPPTY,
2014 const Color& rColor,
bool bHandle )
2019 if ( nRefStartX == nRefEndX && nRefStartY == nRefEndY )
2022 if ( !(nRefStartX <= nVisX2 && nRefEndX >=
nVisX1 &&
2023 nRefStartY <= nVisY2 && nRefEndY >=
nVisY1) )
2039 bool bBottom =
false;
2041 bool bRight =
false;
2044 bool bNoStartY = (
nY1 < nRefStartY );
2045 bool bNoEndY =
false;
2050 if ( nY==nRefStartY || (nY>nRefStartY && bNoStartY) )
2060 if ( nY>nRefEndY && bNoEndY )
2065 bNoStartY = ( nY < nRefStartY );
2066 bNoEndY = ( nY < nRefEndY );
2076 if ( nX==nRefStartX )
2089 if ( nMaxX * nLayoutSign < nMinX * nLayoutSign || nMaxY < nMinY )
2115 const sal_Int32 aRadius = 4;
2117 sal_Int32 aRectMaxX1 = nMaxX - nLayoutSign * aRadius;
2118 sal_Int32 aRectMaxX2 = nMaxX + nLayoutSign;
2119 sal_Int32 aRectMinX1 = nMinX - nLayoutSign;
2120 sal_Int32 aRectMinX2 = nMinX + nLayoutSign * aRadius;
2122 sal_Int32 aRectMaxY1 = nMaxY - aRadius;
2123 sal_Int32 aRectMaxY2 = nMaxY + 1;
2124 sal_Int32 aRectMinY1 = nMinY - 1;
2125 sal_Int32 aRectMinY2 = nMinY + aRadius;
2128 tools::Rectangle aLowerRight( aRectMaxX1, aRectMaxY1, aRectMaxX2, aRectMaxY2 );
2129 tools::Rectangle aUpperLeft ( aRectMinX1, aRectMinY1, aRectMinX2, aRectMinY2 );
2130 tools::Rectangle aLowerLeft ( aRectMinX1, aRectMaxY1, aRectMinX2, aRectMaxY2 );
2131 tools::Rectangle aUpperRight( aRectMaxX1, aRectMinY1, aRectMaxX2, aRectMinY2 );
2146 if ( nRefStartX == nRefEndX && nRefStartY == nRefEndY )
2149 if ( !(nRefStartX <= nVisX2 + 1 && nRefEndX >=
nVisX1 &&
2150 nRefStartY <= nVisY2 + 1 && nRefEndY >=
nVisY1) )
2166 bool bBottom =
false;
2168 bool bRight =
false;
2171 bool bNoStartY = (
nY1 < nRefStartY );
2172 bool bNoEndY =
false;
2177 if ( nY==nRefStartY || (nY>nRefStartY && bNoStartY) )
2187 if ( nY>nRefEndY && bNoEndY )
2192 bNoStartY = ( nY < nRefStartY );
2193 bNoEndY = ( nY < nRefEndY );
2203 if ( nX==nRefStartX )
2205 nMinX = nPosX - nLayoutSign;
2216 if ( nMaxX * nLayoutSign < nMinX * nLayoutSign || nMaxY < nMinY )
2220 bLeft = bRight = bBottom =
false;
2222 bTop = bBottom = bRight =
false;
2225 if (bTop && bBottom && bLeft && bRight)
2249 if ( bLeft && bTop )
2271 if ( nEndX < mpDoc->MaxCol() ) ++nEndX;
2272 if ( nEndY < mpDoc->MaxRow() ) ++nEndY;
2293 aColorChanger.
Update( *pAction );
2296 aRange.
aEnd.
Col(), aRange.
aEnd.
Row(), aColor, sal::static_int_cast<sal_uInt16>(eActionType) );
2301 static_cast<const ScChangeActionMove*>(pAction)->
2302 GetFromRange().aStart.Tab() ==
nTab )
2305 GetFromRange().MakeRange();
2309 aColorChanger.
Update( *pAction );
2312 aRange.
aEnd.
Col(), aRange.
aEnd.
Row(), aColor, sal::static_int_cast<sal_uInt16>(eActionType) );
2342 bool bIsMerged =
false;
2372 if ( bIsMerged || pInfo->
bMerged )
2375 SCCOL nNextX = nX + 1;
2376 while ( nNextX <= nX2 + 1 && pThisRowInfo->pCellInfo[nNextX+1].bHOverlapped )
2389 nPosY += pThisRowInfo->
nHeight;
2418 bool bIsMerged =
false;
2438 if ( bIsMerged || pInfo->
bMerged )
2441 SCCOL nNextX = nX + 1;
2442 while ( nNextX <= nX2 + 1 && pThisRowInfo->pCellInfo[nNextX+1].bHOverlapped )
2450 tools::Rectangle aNoteRect( nMarkX, nPosY, nMarkX+nNoteWidth*nLayoutSign, nPosY+nNoteHeight );
2458 OUString aContent = pNote->
GetText();
2459 aContent = aContent.replaceAll(
"\n",
" ");
2462 aNote.
Title = aTitle;
2471 nPosY += pThisRowInfo->
nHeight;
2545 nStartPosX -= nOutWidth - 1;
2568 nStartPosX -= nOutWidth - 1;
2571 Point( nStartPosX+nOutWidth-1, nPosY+nOutHeight-1 ) );
2581 Size aMarkSize( nMarkPixel, (nMarkPixel-1)*2 );
2624 nPosY += pThisRowInfo->
nHeight;
css::uno::Reference< css::linguistic2::XProofreadingIterator > get(css::uno::Reference< css::uno::XComponentContext > const &context)
void SetSyntaxMode(bool bNewMode)
void EnableIdle(bool bDo)
SCCOL GetColMerge() const
bool IsDataValid(const OUString &rTest, const ScPatternAttr &rPattern, const ScAddress &rPos) const
SC_DLLPUBLIC void Format(OStringBuffer &r, ScRefFlags nFlags, const ScDocument *pDocument=nullptr, const Details &rDetails=detailsOOOa1) const
const SCCOL SC_ROTMAX_NONE
std::optional< Color > mxTextColor
void StripHidden(SCCOL &rX1, SCROW &rY1, SCCOL &rX2, SCROW &rY2, SCTAB nTab)
ScRotateDir GetRotateDir(const SfxItemSet *pCondSet) const
void DrawFrame(vcl::RenderContext &rRenderContext)
sal_uInt8 GetAlpha() const
SC_DLLPUBLIC bool IsTabProtected(SCTAB nTab) const
ScChangeActionType GetType() const
static tools::Polygon DrawArrow(OutputDevice &rOut, const tools::Rectangle &rRect, const Size &rSize, const Color &rCol, bool bLeftOrTop, bool bVertical)
void SetShowNullValues(bool bSet)
static bool IsActionShown(const ScChangeAction &rAction, const ScChangeViewSettings &rSettings, ScDocument &rDocument)
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_LIGHTMAGENTA
ScChangeAction * GetNext() const
Class shared between grid windows to cache spelling results.
std::unique_ptr< ContentProperties > pData
bool IsTransparent() const
void DrawBitmapEx(const Point &rDestPt, const BitmapEx &rBitmapEx)
void AddVerLine(bool bWorksInPixels, tools::Long nX, tools::Long nY1, tools::Long nY2, bool bDashed=false)
void Union(const tools::Rectangle &rRegion)
constexpr::Color COL_RED(0x80, 0x00, 0x00)
SC_DLLPUBLIC bool Intersects(const ScRange &rRange) const
sc::IconSetBitmapMap & GetIconSetBitmapMap()
#define SAL_INFO_IF(condition, area, stream)
constexpr::Color COL_TRANSPARENT(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
const StyleSettings & GetStyleSettings() const
static const AllSettings & GetSettings()
const sc::SpellCheckContext * mpSpellCheckCxt
constexpr TypedWhichId< SvxRotateModeItem > ATTR_ROTATE_MODE(136)
void DrawRefMark(SCCOL nRefStartX, SCROW nRefStartY, SCCOL nRefEndX, SCROW nRefEndY, const Color &rColor, bool bHandle)
Draws reference mark and returns its properties.
void DrawPolygon(const tools::Polygon &rPoly)
ScPrintRangeData & GetData(size_t i)
const sal_uInt8 SC_CLIPMARK_SIZE
size_t GetRowCount() const
void SetCellRotation(size_t nCol, size_t nRow, SvxRotateMode eRotMode, double fOrientation)
double toRadians(Degree10 x)
void IntersectClipRegion(const tools::Rectangle &rRect)
void SetShowFormulas(bool bSet)
This is very similar to ScCellValue, except that it references the original value instead of copying ...
void SetMarkClipped(bool bSet)
constexpr TypedWhichId< ScProtectionAttr > ATTR_PROTECTION(149)
const ScAppOptions & rOpt
SC_DLLPUBLIC formula::FormulaGrammar::AddressConvention GetAddressConvention() const
ReferenceMark FillReferenceMark(SCCOL nRefStartX, SCROW nRefStartY, SCCOL nRefEndX, SCROW nRefEndY, const Color &rColor)
constexpr TypedWhichId< ScMergeAttr > ATTR_MERGE(144)
SC_DLLPUBLIC ScBreakType HasRowBreak(SCROW nRow, SCTAB nTab) const
SC_DLLPUBLIC sal_uInt16 GetRowHeight(SCROW nRow, SCTAB nTab, bool bHiddenAsZero=true) const
void SetContentDevice(OutputDevice *pContentDev)
void SetYOffset(tools::Long nYOffset)
void SetDrawMode(DrawModeFlags nDrawMode)
constexpr::Color COL_MAGENTA(0x80, 0x00, 0x80)
SC_DLLPUBLIC const ScValidationData * GetValidationEntry(sal_uLong nIndex) const
Color GetTrackContentColor() const
constexpr tools::Long Width() const
Color GetTrackMoveColor() const
SC_DLLPUBLIC ScPostIt * GetNote(const ScAddress &rPos)
Notes.
SVXCORE_DLLPUBLIC css::uno::Reference< css::drawing::XDrawPage > GetXDrawPageForSdrPage(SdrPage *pPage)
SvxShadowLocation GetLocation() const
std::unique_ptr< const ScDataBarInfo > pDataBar
SC_DLLPUBLIC SCROW MaxRow() const
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 ...
Additional class containing cell annotation data.
constexpr::Color COL_CYAN(0x00, 0x80, 0x80)
void DrawExtraShadow(bool bLeft, bool bTop, bool bRight, bool bBottom)
static ScRotateDir lcl_GetRotateDir(const ScDocument *pDoc, SCCOL nCol, SCROW nRow, SCTAB nTab)
ScActionColorChanger(const ScChangeTrack &rTrack)
bool GetHighContrastMode() const
const Color nAuthorColor[SC_AUTHORCOLORCOUNT]
ScChangeAction * GetFirst() const
std::map< OUString, BitmapEx > IconSetBitmapMap
ScFormulaCell * mpFormula
std::unique_ptr< drawinglayer::processor2d::BaseProcessor2D > CreateProcessor2D()
constexpr tools::Long getHeight() const
void DrawLine(const Point &rStartPt, const Point &rEndPt)
SC_DLLPUBLIC const ScPatternAttr * GetPattern(SCCOL nCol, SCROW nRow, SCTAB nTab) const
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_LIGHTRED
ScChangeTrack * GetChangeTrack() const
SC_DLLPUBLIC const SfxPoolItem * GetAttr(SCCOL nCol, SCROW nRow, SCTAB nTab, sal_uInt16 nWhich) const
void DrawRect(const tools::Rectangle &rRect)
static bool lcl_EqualBack(const RowInfo &rFirst, const RowInfo &rOther, SCCOL nX1, SCCOL nX2, bool bShowProt, bool bPagebreakMode)
const SfxPoolItem & GetItem(sal_uInt16 nWhichP) const
void AddHorLine(bool bWorksInPixels, tools::Long nX1, tools::Long nX2, tools::Long nY, bool bDashed=false)
void PutInOrder(T &nStart, T &nEnd)
void SetEditCell(SCCOL nCol, SCROW nRow)
drawinglayer::primitive2d::Primitive2DContainer CreateB2DPrimitiveRange(size_t nFirstCol, size_t nFirstRow, size_t nLastCol, size_t nLastRow, const Color *pForceColor) const
const Color & GetColor() const
constexpr TypedWhichId< SfxUInt32Item > ATTR_VALIDDATA(153)
Color GetTrackInsertColor() const
const Color & GetColor() const
SC_DLLPUBLIC ScDrawLayer * GetDrawLayer()
SC_DLLPUBLIC SCCOL MaxCol() const
std::unique_ptr< const ScIconSetInfo > pIconSet
void DrawRotatedFrame(vcl::RenderContext &rRenderContext)
SC_DLLPUBLIC bool ColHidden(SCCOL nCol, SCTAB nTab, SCCOL *pFirstCol=nullptr, SCCOL *pLastCol=nullptr) const
UNDERLYING_TYPE get() const
SC_DLLPUBLIC void InitDrawLayer(SfxObjectShell *pDocShell=nullptr)
const ScPatternAttr * pPatternAttr
VclPtr< OutputDevice > pFmtDevice
ScIconSetType eIconSetType
svx::frame::Array maArray
sal_uLong GetScaledRowHeight(SCROW nStartRow, SCROW nEndRow, SCTAB nTab, double fScale, const sal_uLong *pnMaxHeight=nullptr) const
Describes reference mark to be drawn, position & size in TWIPs.
void DrawTransparent(const tools::PolyPolygon &rPolyPoly, sal_uInt16 nTransparencePercent)
const SdrPage * GetPage(sal_uInt16 nPgNum) const
const ScRange & GetPrintRange() const
void SetXOffset(tools::Long nXOffset)
void DrawBackground(vcl::RenderContext &rRenderContext)
void DrawDocumentBackground()
OUString GetText() const
Returns the caption text of this note.
virtual void append(const Primitive2DReference &) override
bool GetIsExportNotes() const
static void DeleteInterpretProgress()
ScBigRange & GetBigRange()
VclPtr< OutputDevice > mpRefDevice
bool IsFullyTransparent() const
static void CreateInterpretProgress(ScDocument *pDoc, bool bWait=true)
ScOutputData(OutputDevice *pNewDev, ScOutputType eNewType, ScTableInfo &rTabInfo, ScDocument *pNewDoc, SCTAB nNewTab, tools::Long nNewScrX, tools::Long nNewScrY, SCCOL nNewX1, SCROW nNewY1, SCCOL nNewX2, SCROW nNewY2, double nPixelPerTwipsX, double nPixelPerTwipsY, const Fraction *pZoomX=nullptr, const Fraction *pZoomY=nullptr)
void Update(const ScChangeAction &rAction)
DrawModeFlags GetDrawMode() const
SC_DLLPUBLIC const SfxItemSet * GetCondResult(SCCOL nCol, SCROW nRow, SCTAB nTab, ScRefCellValue *pCell=nullptr) const
SC_DLLPUBLIC bool ExtendMerge(SCCOL nStartCol, SCROW nStartRow, SCCOL &rEndCol, SCROW &rEndRow, SCTAB nTab, bool bRefresh=false)
const SvxBrushItem * pBackground
void SetGridColor(const Color &rColor)
Degree100 GetRotateVal(const SfxItemSet *pCondSet) const
void DrawOneChange(SCCOL nRefStartX, SCROW nRefStartY, SCCOL nRefEndX, SCROW nRefEndY, const Color &rColor, sal_uInt16 nType)
const SvxShadowItem * pVShadowOrigin
#define SC_AUTHORCOLORCOUNT
Point PixelToLogic(const Point &rDevicePt) const
Point LogicToPixel(const Point &rLogicPt) const
std::unique_ptr< drawinglayer::processor2d::BaseProcessor2D > createBaseProcessor2DFromOutputDevice(OutputDevice &rTargetOutDev, const drawinglayer::geometry::ViewInformation2D &rViewInformation2D)
constexpr TypedWhichId< SvxBrushItem > ATTR_BACKGROUND(148)
static SvxBrushItem * GetEmptyBrushItem()
static tools::Long lclGetSnappedY(const OutputDevice &rDev, tools::Long nPosY, bool bSnapPixel)
static tools::Long lclGetSnappedX(const OutputDevice &rDev, tools::Long nPosX, bool bSnapPixel)
ScShadowPart eHShadowPart
Color GetTrackDeleteColor() const
void SetColWidth(size_t nCol, tools::Long nWidth)
SC_DLLPUBLIC bool EnsureFormulaCellResults(const ScRange &rRange, bool bSkipRunning=false)
Make sure all of the formula cells in the specified range have been fully calculated.
std::optional< Color > mxColorScale
void DrawGrid(vcl::RenderContext &rRenderContext, bool bGrid, bool bPage, bool bMergeCover=false)
constexpr TypedWhichId< ScMergeFlagAttr > ATTR_MERGE_FLAG(145)
ScRange MakeRange() const
void CreateNote(const tools::Rectangle &rRect, const PDFNote &rNote, sal_Int32 nPageNr=-1)
void SetShowSpellErrors(bool bSet)
bool HasCellRotation() const
ScShadowPart eVShadowPart
constexpr tools::Long Height() const
constexpr::Color COL_GREEN(0x00, 0x80, 0x00)
std::optional< Color > mxValueColor
bool GetProtection() const
size_t GetColCount() const
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_WHITE
SC_DLLPUBLIC ScBreakType HasColBreak(SCCOL nCol, SCTAB nTab) const
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_BROWN
ScChangeViewSettings * GetChangeViewSettings() const
static size_t lclGetArrayColFromCellInfoX(sal_uInt16 nCellInfoX, sal_uInt16 nCellInfoFirstX, sal_uInt16 nCellInfoLastX, bool bRTL)
void SetSpellCheckContext(const sc::SpellCheckContext *pCxt)
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_BLACK
const std::set< OUString > & rUsers
void DrawNoteMarks(vcl::RenderContext &rRenderContext)
std::optional< Color > mxFormulaColor
void SetRowHeight(size_t nRow, tools::Long nHeight)
SC_DLLPUBLIC bool IsLayoutRTL(SCTAB nTab) const
SC_DLLPUBLIC bool RowHidden(SCROW nRow, SCTAB nTab, SCROW *pFirstRow=nullptr, SCROW *pLastRow=nullptr) const
const OUString & GetUser() const
sal_uInt16 nLastUserIndex
VclPtr< OutputDevice > mpDev
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_LIGHTBLUE
void SetMirrorWidth(tools::Long nNew)
SfxObjectShell * GetDocumentShell() const
vcl::Region GetChangedAreaRegion()
vcl::ExtOutDevData * GetExtOutDevData() const
constexpr::Color COL_BLUE(0x00, 0x00, 0x80)
void SetMetaFileMode(bool bNewMode)
SCROW GetRowMerge() const
constexpr tools::Long getWidth() const
static const SvxBrushItem * lcl_FindBackground(const ScDocument *pDoc, SCCOL nCol, SCROW nRow, SCTAB nTab)
void SetClipRange(size_t nFirstCol, size_t nFirstRow, size_t nLastCol, size_t nLastRow)
SC_DLLPUBLIC void ExtendOverlapped(SCCOL &rStartCol, SCROW &rStartRow, SCCOL nEndCol, SCROW nEndRow, SCTAB nTab) const
SC_DLLPUBLIC sal_uInt16 GetColWidth(SCCOL nCol, SCTAB nTab, bool bHiddenAsZero=true) const
void Push(PushFlags nFlags=PushFlags::ALL)
void DrawGradient(const tools::Rectangle &rRect, const Gradient &rGradient)
basegfx::B2DHomMatrix GetViewTransformation() const
bool IsIdleEnabled() const
const SvxShadowItem * pHShadowOrigin
const Color & GetWindowTextColor() const
void SetPagebreakMode(ScPageBreakData *pPageData)
const SfxItemSet * pConditionSet
sal_uInt16 GetWidth() const