Kaydet (Commit) eff4f0c0 authored tarafından Kohei Yoshida's avatar Kohei Yoshida

Kill more ScBaseCell usages.

Change-Id: I6fdcdd6763e6da1fd25c6bded22960a1be6d7f66
üst 63fb74ae
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#define SC_OUTPUT_HXX #define SC_OUTPUT_HXX
#include "address.hxx" #include "address.hxx"
#include "cellvalue.hxx"
#include <tools/color.hxx> #include <tools/color.hxx>
#include <tools/fract.hxx> #include <tools/fract.hxx>
#include <com/sun/star/embed/XEmbeddedObject.hpp> #include <com/sun/star/embed/XEmbeddedObject.hpp>
...@@ -84,14 +85,14 @@ private: ...@@ -84,14 +85,14 @@ private:
long mnPosX; long mnPosX;
long mnPosY; long mnPosY;
long mnInitPosX; long mnInitPosX;
bool mbBreak; bool mbBreak:1;
bool mbCellIsValue; bool mbCellIsValue:1;
bool mbAsianVertical; bool mbAsianVertical:1;
bool mbPixelToLogic; bool mbPixelToLogic:1;
bool mbHyphenatorSet; bool mbHyphenatorSet:1;
bool mbRTL; bool mbRTL:1;
ScFieldEditEngine* mpEngine; ScFieldEditEngine* mpEngine;
ScBaseCell* mpCell; ScRefCellValue maCell;
const ScPatternAttr* mpPattern; const ScPatternAttr* mpPattern;
const SfxItemSet* mpCondSet; const SfxItemSet* mpCondSet;
const ScPatternAttr* mpOldPattern; const ScPatternAttr* mpOldPattern;
...@@ -223,8 +224,8 @@ private: ...@@ -223,8 +224,8 @@ private:
long& rEngineWidth, long& rEngineHeight, long& rNeededPixel, long& rEngineWidth, long& rEngineHeight, long& rNeededPixel,
bool& rLeftClip, bool& rRightClip ); bool& rLeftClip, bool& rRightClip );
void SetSyntaxColor( Font* pFont, ScBaseCell* pCell ); void SetSyntaxColor( Font* pFont, const ScRefCellValue& rCell );
void SetEditSyntaxColor( EditEngine& rEngine, ScBaseCell* pCell ); void SetEditSyntaxColor( EditEngine& rEngine, ScRefCellValue& rCell );
double GetStretch(); double GetStretch();
......
...@@ -53,7 +53,6 @@ ...@@ -53,7 +53,6 @@
#include "progress.hxx" #include "progress.hxx"
#include "scmod.hxx" #include "scmod.hxx"
#include "fillinfo.hxx" #include "fillinfo.hxx"
#include "cellvalue.hxx"
#include <com/sun/star/i18n/DirectionProperty.hpp> #include <com/sun/star/i18n/DirectionProperty.hpp>
#include <comphelper/string.hxx> #include <comphelper/string.hxx>
...@@ -124,7 +123,10 @@ public: ...@@ -124,7 +123,10 @@ public:
// SetPattern = ex-SetVars // SetPattern = ex-SetVars
// SetPatternSimple: ohne Font // SetPatternSimple: ohne Font
void SetPattern( const ScPatternAttr* pNew, const SfxItemSet* pSet, ScBaseCell* pCell, sal_uInt8 nScript ); void SetPattern(
const ScPatternAttr* pNew, const SfxItemSet* pSet, const ScRefCellValue& rCell,
sal_uInt8 nScript );
void SetPatternSimple( const ScPatternAttr* pNew, const SfxItemSet* pSet ); void SetPatternSimple( const ScPatternAttr* pNew, const SfxItemSet* pSet );
sal_Bool SetText( ScBaseCell* pCell ); // TRUE -> pOldPattern vergessen sal_Bool SetText( ScBaseCell* pCell ); // TRUE -> pOldPattern vergessen
...@@ -272,8 +274,9 @@ bool lcl_GetBoolValue(const ScPatternAttr& rPattern, sal_uInt16 nWhich, const Sf ...@@ -272,8 +274,9 @@ bool lcl_GetBoolValue(const ScPatternAttr& rPattern, sal_uInt16 nWhich, const Sf
} }
void ScDrawStringsVars::SetPattern( const ScPatternAttr* pNew, const SfxItemSet* pSet, void ScDrawStringsVars::SetPattern(
ScBaseCell* pCell, sal_uInt8 nScript ) const ScPatternAttr* pNew, const SfxItemSet* pSet, const ScRefCellValue& rCell,
sal_uInt8 nScript )
{ {
nMaxDigitWidth = 0; nMaxDigitWidth = 0;
nSignWidth = 0; nSignWidth = 0;
...@@ -375,7 +378,7 @@ void ScDrawStringsVars::SetPattern( const ScPatternAttr* pNew, const SfxItemSet* ...@@ -375,7 +378,7 @@ void ScDrawStringsVars::SetPattern( const ScPatternAttr* pNew, const SfxItemSet*
// Syntax-Modus // Syntax-Modus
if (pOutput->mbSyntaxMode) if (pOutput->mbSyntaxMode)
pOutput->SetSyntaxColor( &aFont, pCell ); pOutput->SetSyntaxColor(&aFont, rCell);
pDev->SetFont( aFont ); pDev->SetFont( aFont );
if ( pFmtDevice != pDev ) if ( pFmtDevice != pDev )
...@@ -836,15 +839,15 @@ double ScOutputData::GetStretch() ...@@ -836,15 +839,15 @@ double ScOutputData::GetStretch()
// output strings // output strings
// //
static void lcl_DoHyperlinkResult( OutputDevice* pDev, const Rectangle& rRect, ScBaseCell* pCell ) static void lcl_DoHyperlinkResult( OutputDevice* pDev, const Rectangle& rRect, ScRefCellValue& rCell )
{ {
vcl::PDFExtOutDevData* pPDFData = PTR_CAST( vcl::PDFExtOutDevData, pDev->GetExtOutDevData() ); vcl::PDFExtOutDevData* pPDFData = PTR_CAST( vcl::PDFExtOutDevData, pDev->GetExtOutDevData() );
rtl::OUString aCellText; OUString aCellText;
rtl::OUString aURL; OUString aURL;
if ( pCell && pCell->GetCellType() == CELLTYPE_FORMULA ) if (rCell.meType == CELLTYPE_FORMULA)
{ {
ScFormulaCell* pFCell = static_cast<ScFormulaCell*>(pCell); ScFormulaCell* pFCell = rCell.mpFormula;
if ( pFCell->IsHyperLinkCell() ) if ( pFCell->IsHyperLinkCell() )
pFCell->GetURLResult( aURL, aCellText ); pFCell->GetURLResult( aURL, aCellText );
} }
...@@ -859,25 +862,22 @@ static void lcl_DoHyperlinkResult( OutputDevice* pDev, const Rectangle& rRect, S ...@@ -859,25 +862,22 @@ static void lcl_DoHyperlinkResult( OutputDevice* pDev, const Rectangle& rRect, S
} }
} }
void ScOutputData::SetSyntaxColor( Font* pFont, ScBaseCell* pCell ) void ScOutputData::SetSyntaxColor( Font* pFont, const ScRefCellValue& rCell )
{ {
if (pCell) switch (rCell.meType)
{ {
switch (pCell->GetCellType()) case CELLTYPE_VALUE:
pFont->SetColor(*pValueColor);
break;
case CELLTYPE_STRING:
pFont->SetColor(*pTextColor);
break;
case CELLTYPE_FORMULA:
pFont->SetColor(*pFormulaColor);
break;
default:
{ {
case CELLTYPE_VALUE: // added to avoid warnings
pFont->SetColor( *pValueColor );
break;
case CELLTYPE_STRING:
pFont->SetColor( *pTextColor );
break;
case CELLTYPE_FORMULA:
pFont->SetColor( *pFormulaColor );
break;
default:
{
// added to avoid warnings
}
} }
} }
} }
...@@ -891,29 +891,26 @@ static void lcl_SetEditColor( EditEngine& rEngine, const Color& rColor ) ...@@ -891,29 +891,26 @@ static void lcl_SetEditColor( EditEngine& rEngine, const Color& rColor )
// function is called with update mode set to FALSE // function is called with update mode set to FALSE
} }
void ScOutputData::SetEditSyntaxColor( EditEngine& rEngine, ScBaseCell* pCell ) void ScOutputData::SetEditSyntaxColor( EditEngine& rEngine, ScRefCellValue& rCell )
{ {
if (pCell) Color aColor;
switch (rCell.meType)
{ {
Color aColor; case CELLTYPE_VALUE:
switch (pCell->GetCellType()) aColor = *pValueColor;
break;
case CELLTYPE_STRING:
aColor = *pTextColor;
break;
case CELLTYPE_FORMULA:
aColor = *pFormulaColor;
break;
default:
{ {
case CELLTYPE_VALUE: // added to avoid warnings
aColor = *pValueColor;
break;
case CELLTYPE_STRING:
aColor = *pTextColor;
break;
case CELLTYPE_FORMULA:
aColor = *pFormulaColor;
break;
default:
{
// added to avoid warnings
}
} }
lcl_SetEditColor( rEngine, aColor );
} }
lcl_SetEditColor( rEngine, aColor );
} }
sal_Bool ScOutputData::GetMergeOrigin( SCCOL nX, SCROW nY, SCSIZE nArrY, sal_Bool ScOutputData::GetMergeOrigin( SCCOL nX, SCROW nY, SCSIZE nArrY,
...@@ -1612,7 +1609,11 @@ void ScOutputData::DrawStrings( sal_Bool bPixelToLogic ) ...@@ -1612,7 +1609,11 @@ void ScOutputData::DrawStrings( sal_Bool bPixelToLogic )
{ {
if ( StringDiffer(pOldPattern,pPattern) || if ( StringDiffer(pOldPattern,pPattern) ||
pCondSet != pOldCondSet || nScript != nOldScript || mbSyntaxMode ) pCondSet != pOldCondSet || nScript != nOldScript || mbSyntaxMode )
aVars.SetPattern( pPattern, pCondSet, pCell, nScript ); {
ScRefCellValue aCell;
aCell.assign(*pCell);
aVars.SetPattern(pPattern, pCondSet, aCell, nScript);
}
else else
aVars.SetPatternSimple( pPattern, pCondSet ); aVars.SetPatternSimple( pPattern, pCondSet );
pOldPattern = pPattern; pOldPattern = pPattern;
...@@ -2005,7 +2006,10 @@ void ScOutputData::DrawStrings( sal_Bool bPixelToLogic ) ...@@ -2005,7 +2006,10 @@ void ScOutputData::DrawStrings( sal_Bool bPixelToLogic )
if ( bHasURL ) if ( bHasURL )
{ {
Rectangle aURLRect( aURLStart, aVars.GetTextSize() ); Rectangle aURLRect( aURLStart, aVars.GetTextSize() );
lcl_DoHyperlinkResult( mpDev, aURLRect, pCell ); ScRefCellValue aCell;
if (pCell)
aCell.assign(*pCell);
lcl_DoHyperlinkResult(mpDev, aURLRect, aCell);
} }
} }
} }
...@@ -2242,7 +2246,6 @@ ScOutputData::DrawEditParam::DrawEditParam(const ScPatternAttr* pPattern, const ...@@ -2242,7 +2246,6 @@ ScOutputData::DrawEditParam::DrawEditParam(const ScPatternAttr* pPattern, const
mbHyphenatorSet(false), mbHyphenatorSet(false),
mbRTL(false), mbRTL(false),
mpEngine(NULL), mpEngine(NULL),
mpCell(NULL),
mpPattern(pPattern), mpPattern(pPattern),
mpCondSet(pCondSet), mpCondSet(pCondSet),
mpOldPattern(NULL), mpOldPattern(NULL),
...@@ -2253,15 +2256,9 @@ ScOutputData::DrawEditParam::DrawEditParam(const ScPatternAttr* pPattern, const ...@@ -2253,15 +2256,9 @@ ScOutputData::DrawEditParam::DrawEditParam(const ScPatternAttr* pPattern, const
bool ScOutputData::DrawEditParam::readCellContent( bool ScOutputData::DrawEditParam::readCellContent(
ScDocument* pDoc, bool bShowNullValues, bool bShowFormulas, bool bSyntaxMode, bool bUseStyleColor, bool bForceAutoColor, bool& rWrapFields) ScDocument* pDoc, bool bShowNullValues, bool bShowFormulas, bool bSyntaxMode, bool bUseStyleColor, bool bForceAutoColor, bool& rWrapFields)
{ {
if (!mpCell) if (maCell.meType == CELLTYPE_EDIT)
{ {
OSL_FAIL("pCell == NULL"); const EditTextObject* pData = maCell.mpEditText;
return false;
}
if (mpCell->GetCellType() == CELLTYPE_EDIT)
{
const EditTextObject* pData = static_cast<ScEditCell*>(mpCell)->GetData();
if (pData) if (pData)
{ {
mpEngine->SetText(*pData); mpEngine->SetText(*pData);
...@@ -2286,9 +2283,7 @@ bool ScOutputData::DrawEditParam::readCellContent( ...@@ -2286,9 +2283,7 @@ bool ScOutputData::DrawEditParam::readCellContent(
pDoc->GetFormatTable(), mpCondSet ); pDoc->GetFormatTable(), mpCondSet );
OUString aString; OUString aString;
Color* pColor; Color* pColor;
ScRefCellValue aCell; ScCellFormat::GetString( maCell,
aCell.assign(*mpCell);
ScCellFormat::GetString( aCell,
nFormat,aString, &pColor, nFormat,aString, &pColor,
*pDoc->GetFormatTable(), *pDoc->GetFormatTable(),
bShowNullValues, bShowNullValues,
...@@ -2413,13 +2408,10 @@ bool ScOutputData::DrawEditParam::hasLineBreak() const ...@@ -2413,13 +2408,10 @@ bool ScOutputData::DrawEditParam::hasLineBreak() const
bool ScOutputData::DrawEditParam::isHyperlinkCell() const bool ScOutputData::DrawEditParam::isHyperlinkCell() const
{ {
if (!mpCell) if (maCell.meType != CELLTYPE_FORMULA)
return false;
if (mpCell->GetCellType() != CELLTYPE_FORMULA)
return false; return false;
return static_cast<ScFormulaCell*>(mpCell)->IsHyperLinkCell(); return maCell.mpFormula->IsHyperLinkCell();
} }
bool ScOutputData::DrawEditParam::isVerticallyOriented() const bool ScOutputData::DrawEditParam::isVerticallyOriented() const
...@@ -2554,13 +2546,12 @@ void ScOutputData::DrawEditParam::setAlignmentToEngine() ...@@ -2554,13 +2546,12 @@ void ScOutputData::DrawEditParam::setAlignmentToEngine()
} }
mpEngine->SetVertical(mbAsianVertical); mpEngine->SetVertical(mbAsianVertical);
if (mpCell && mpCell->GetCellType() == CELLTYPE_EDIT) if (maCell.meType == CELLTYPE_EDIT)
{ {
// We need to synchronize the vertical mode in the EditTextObject // We need to synchronize the vertical mode in the EditTextObject
// instance too. No idea why we keep this state in two separate // instance too. No idea why we keep this state in two separate
// instances. // instances.
ScEditCell* pEditCell = static_cast<ScEditCell*>(mpCell); const EditTextObject* pData = maCell.mpEditText;
const EditTextObject* pData = pEditCell->GetData();
if (pData) if (pData)
const_cast<EditTextObject*>(pData)->SetVertical(mbAsianVertical); const_cast<EditTextObject*>(pData)->SetVertical(mbAsianVertical);
} }
...@@ -2623,7 +2614,7 @@ void ScOutputData::DrawEditParam::adjustForHyperlinkInPDF(Point aURLStart, Outpu ...@@ -2623,7 +2614,7 @@ void ScOutputData::DrawEditParam::adjustForHyperlinkInPDF(Point aURLStart, Outpu
aURLStart.X() -= nURLWidth; aURLStart.X() -= nURLWidth;
Rectangle aURLRect( aURLStart, Size( nURLWidth, nURLHeight ) ); Rectangle aURLRect( aURLStart, Size( nURLWidth, nURLHeight ) );
lcl_DoHyperlinkResult( pDev, aURLRect, mpCell ); lcl_DoHyperlinkResult(pDev, aURLRect, maCell);
} }
void ScOutputData::DrawEditStandard(DrawEditParam& rParam) void ScOutputData::DrawEditStandard(DrawEditParam& rParam)
...@@ -2748,7 +2739,7 @@ void ScOutputData::DrawEditStandard(DrawEditParam& rParam) ...@@ -2748,7 +2739,7 @@ void ScOutputData::DrawEditStandard(DrawEditParam& rParam)
return; return;
if ( mbSyntaxMode ) if ( mbSyntaxMode )
SetEditSyntaxColor( *rParam.mpEngine, rParam.mpCell ); SetEditSyntaxColor(*rParam.mpEngine, rParam.maCell);
else if ( mbUseStyleColor && mbForceAutoColor ) else if ( mbUseStyleColor && mbForceAutoColor )
lcl_SetEditColor( *rParam.mpEngine, COL_AUTO ); //! or have a flag at EditEngine lcl_SetEditColor( *rParam.mpEngine, COL_AUTO ); //! or have a flag at EditEngine
...@@ -3130,7 +3121,7 @@ void ScOutputData::DrawEditBottomTop(DrawEditParam& rParam) ...@@ -3130,7 +3121,7 @@ void ScOutputData::DrawEditBottomTop(DrawEditParam& rParam)
return; return;
if ( mbSyntaxMode ) if ( mbSyntaxMode )
SetEditSyntaxColor( *rParam.mpEngine, rParam.mpCell ); SetEditSyntaxColor( *rParam.mpEngine, rParam.maCell );
else if ( mbUseStyleColor && mbForceAutoColor ) else if ( mbUseStyleColor && mbForceAutoColor )
lcl_SetEditColor( *rParam.mpEngine, COL_AUTO ); //! or have a flag at EditEngine lcl_SetEditColor( *rParam.mpEngine, COL_AUTO ); //! or have a flag at EditEngine
...@@ -3500,7 +3491,7 @@ void ScOutputData::DrawEditTopBottom(DrawEditParam& rParam) ...@@ -3500,7 +3491,7 @@ void ScOutputData::DrawEditTopBottom(DrawEditParam& rParam)
return; return;
if ( mbSyntaxMode ) if ( mbSyntaxMode )
SetEditSyntaxColor( *rParam.mpEngine, rParam.mpCell ); SetEditSyntaxColor( *rParam.mpEngine, rParam.maCell );
else if ( mbUseStyleColor && mbForceAutoColor ) else if ( mbUseStyleColor && mbForceAutoColor )
lcl_SetEditColor( *rParam.mpEngine, COL_AUTO ); //! or have a flag at EditEngine lcl_SetEditColor( *rParam.mpEngine, COL_AUTO ); //! or have a flag at EditEngine
...@@ -3884,7 +3875,7 @@ void ScOutputData::DrawEditStacked(DrawEditParam& rParam) ...@@ -3884,7 +3875,7 @@ void ScOutputData::DrawEditStacked(DrawEditParam& rParam)
return; return;
if ( mbSyntaxMode ) if ( mbSyntaxMode )
SetEditSyntaxColor( *rParam.mpEngine, rParam.mpCell ); SetEditSyntaxColor( *rParam.mpEngine, rParam.maCell );
else if ( mbUseStyleColor && mbForceAutoColor ) else if ( mbUseStyleColor && mbForceAutoColor )
lcl_SetEditColor( *rParam.mpEngine, COL_AUTO ); //! or have a flag at EditEngine lcl_SetEditColor( *rParam.mpEngine, COL_AUTO ); //! or have a flag at EditEngine
...@@ -4293,7 +4284,7 @@ void ScOutputData::DrawEditAsianVertical(DrawEditParam& rParam) ...@@ -4293,7 +4284,7 @@ void ScOutputData::DrawEditAsianVertical(DrawEditParam& rParam)
return; return;
if ( mbSyntaxMode ) if ( mbSyntaxMode )
SetEditSyntaxColor( *rParam.mpEngine, rParam.mpCell ); SetEditSyntaxColor( *rParam.mpEngine, rParam.maCell );
else if ( mbUseStyleColor && mbForceAutoColor ) else if ( mbUseStyleColor && mbForceAutoColor )
lcl_SetEditColor( *rParam.mpEngine, COL_AUTO ); //! or have a flag at EditEngine lcl_SetEditColor( *rParam.mpEngine, COL_AUTO ); //! or have a flag at EditEngine
...@@ -4675,7 +4666,8 @@ void ScOutputData::DrawEdit(sal_Bool bPixelToLogic) ...@@ -4675,7 +4666,8 @@ void ScOutputData::DrawEdit(sal_Bool bPixelToLogic)
aParam.mbHyphenatorSet = bHyphenatorSet; aParam.mbHyphenatorSet = bHyphenatorSet;
aParam.mbRTL = beginsWithRTLCharacter(aStr); aParam.mbRTL = beginsWithRTLCharacter(aStr);
aParam.mpEngine = pEngine; aParam.mpEngine = pEngine;
aParam.mpCell = pCell; if (pCell)
aParam.maCell.assign(*pCell);
aParam.mnArrY = nArrY; aParam.mnArrY = nArrY;
aParam.mnX = nX; aParam.mnX = nX;
aParam.mnY = nY; aParam.mnY = nY;
...@@ -5013,7 +5005,11 @@ void ScOutputData::DrawRotated(sal_Bool bPixelToLogic) ...@@ -5013,7 +5005,11 @@ void ScOutputData::DrawRotated(sal_Bool bPixelToLogic)
} }
if ( mbSyntaxMode ) if ( mbSyntaxMode )
SetEditSyntaxColor( *pEngine, pCell ); {
ScRefCellValue aCell;
aCell.assign(*pCell);
SetEditSyntaxColor(*pEngine, aCell);
}
else if ( mbUseStyleColor && mbForceAutoColor ) else if ( mbUseStyleColor && mbForceAutoColor )
lcl_SetEditColor( *pEngine, COL_AUTO ); //! or have a flag at EditEngine lcl_SetEditColor( *pEngine, COL_AUTO ); //! or have a flag at EditEngine
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment