Kaydet (Commit) 30e0a642 authored tarafından Noel Grandin's avatar Noel Grandin

loplugin:useuniqueptr in ScCondFormatData

Change-Id: I93c906bfb84143ff101577e8e1ef8f5ffb07a0a7
Reviewed-on: https://gerrit.libreoffice.org/61114
Tested-by: Jenkins
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst 39f563ca
......@@ -268,7 +268,7 @@ public:
virtual void SetParent(ScConditionalFormat* pParent) override;
Color* GetColor(const ScAddress& rAddr) const;
boost::optional<Color> GetColor(const ScAddress& rAddr) const;
void AddEntry(ScColorScaleEntry* pEntry);
virtual void UpdateReference( sc::RefUpdateContext& rCxt ) override;
......@@ -303,7 +303,7 @@ public:
virtual void SetParent(ScConditionalFormat* pParent) override;
ScDataBarInfo* GetDataBarInfo(const ScAddress& rAddr) const;
std::unique_ptr<ScDataBarInfo> GetDataBarInfo(const ScAddress& rAddr) const;
void SetDataBarData( ScDataBarFormatData* pData );
const ScDataBarFormatData* GetDataBarData() const;
......@@ -365,7 +365,7 @@ public:
virtual void SetParent(ScConditionalFormat* pParent) override;
ScIconSetInfo* GetIconSetInfo(const ScAddress& rAddr) const;
std::unique_ptr<ScIconSetInfo> GetIconSetInfo(const ScAddress& rAddr) const;
void SetIconSetData( ScIconSetFormatData* pData );
const ScIconSetFormatData* GetIconSetData() const;
......
......@@ -22,6 +22,7 @@
#include "global.hxx"
#include <tools/solar.h>
#include <tools/color.hxx>
#include "address.hxx"
#include <formula/grammar.hxx>
#include "scdllapi.h"
......@@ -36,6 +37,7 @@
#include <tools/date.hxx>
#include <tools/link.hxx>
#include <boost/optional.hpp>
#include <map>
#include <memory>
#include <set>
......@@ -43,7 +45,6 @@
class ScFormulaCell;
class ScTokenArray;
struct ScRefCellValue;
class Color;
namespace sc {
......@@ -211,14 +212,13 @@ struct ScIconSetInfo;
struct ScCondFormatData
{
ScCondFormatData():
pColorScale(nullptr),
pDataBar(nullptr),
pIconSet(nullptr) {}
Color* pColorScale;
ScDataBarInfo* pDataBar;
ScIconSetInfo* pIconSet;
ScCondFormatData();
ScCondFormatData(ScCondFormatData&&);
~ScCondFormatData();
boost::optional<Color> mxColorScale;
std::unique_ptr<ScDataBarInfo> pDataBar;
std::unique_ptr<ScIconSetInfo> pIconSet;
OUString aStyleName;
};
......
......@@ -28,6 +28,7 @@
#include "colorscale.hxx"
#include "cellvalue.hxx"
#include <o3tl/typed_flags_set.hxx>
#include <boost/optional.hpp>
class SfxItemSet;
class SvxBrushItem;
......@@ -133,7 +134,7 @@ struct CellInfo
const ScPatternAttr* pPatternAttr;
const SfxItemSet* pConditionSet;
std::unique_ptr<const Color> pColorScale;
boost::optional<Color> mxColorScale;
std::unique_ptr<const ScDataBarInfo> pDataBar;
std::unique_ptr<const ScIconSetInfo> pIconSet;
......
......@@ -574,9 +574,8 @@ void Test::testIconSet()
for(size_t i = 0; i < SAL_N_ELEMENTS(aTests); ++i)
{
m_pDoc->SetValue(0,0,0,aTests[i].nVal);
ScIconSetInfo* pInfo = pEntry->GetIconSetInfo(ScAddress(0,0,0));
std::unique_ptr<ScIconSetInfo> pInfo = pEntry->GetIconSetInfo(ScAddress(0,0,0));
CPPUNIT_ASSERT_EQUAL(aTests[i].nIndex, pInfo->nIconIndex);
delete pInfo;
}
delete pEntry;
......
......@@ -585,17 +585,17 @@ double ScColorScaleFormat::CalcValue(double nMin, double nMax, const ScColorScal
return (*itr)->GetValue();
}
Color* ScColorScaleFormat::GetColor( const ScAddress& rAddr ) const
boost::optional<Color> ScColorScaleFormat::GetColor( const ScAddress& rAddr ) const
{
ScRefCellValue rCell(*mpDoc, rAddr);
if(!rCell.hasNumeric())
return nullptr;
return boost::optional<Color>();
// now we have for sure a value
double nVal = rCell.getValue();
if (maColorScales.size() < 2)
return nullptr;
return boost::optional<Color>();
double nMin = std::numeric_limits<double>::max();
double nMax = std::numeric_limits<double>::min();
......@@ -603,7 +603,7 @@ Color* ScColorScaleFormat::GetColor( const ScAddress& rAddr ) const
// this check is for safety
if(nMin >= nMax)
return nullptr;
return boost::optional<Color>();
ScColorScaleEntries::const_iterator itr = begin();
double nValMin = CalcValue(nMin, nMax, itr);
......@@ -624,7 +624,7 @@ Color* ScColorScaleFormat::GetColor( const ScAddress& rAddr ) const
Color aColor = CalcColor(nVal, nValMin, rColMin, nValMax, rColMax);
return new Color(aColor);
return aColor;
}
void ScColorScaleFormat::UpdateReference( sc::RefUpdateContext& rCxt )
......@@ -832,7 +832,7 @@ double ScDataBarFormat::getMax(double nMin, double nMax) const
return mpFormatData->mpUpperLimit->GetValue();
}
ScDataBarInfo* ScDataBarFormat::GetDataBarInfo(const ScAddress& rAddr) const
std::unique_ptr<ScDataBarInfo> ScDataBarFormat::GetDataBarInfo(const ScAddress& rAddr) const
{
ScRefCellValue rCell(*mpDoc, rAddr);
if(!rCell.hasNumeric())
......@@ -849,7 +849,7 @@ ScDataBarInfo* ScDataBarFormat::GetDataBarInfo(const ScAddress& rAddr) const
double nValue = rCell.getValue();
ScDataBarInfo* pInfo = new ScDataBarInfo;
std::unique_ptr<ScDataBarInfo> pInfo(new ScDataBarInfo);
if(mpFormatData->meAxisPosition == databar::NONE)
{
if(nValue <= nMin)
......@@ -1023,7 +1023,7 @@ const ScIconSetFormatData* ScIconSetFormat::GetIconSetData() const
return mpFormatData.get();
}
ScIconSetInfo* ScIconSetFormat::GetIconSetInfo(const ScAddress& rAddr) const
std::unique_ptr<ScIconSetInfo> ScIconSetFormat::GetIconSetInfo(const ScAddress& rAddr) const
{
ScRefCellValue rCell(*mpDoc, rAddr);
if(!rCell.hasNumeric())
......@@ -1054,7 +1054,7 @@ ScIconSetInfo* ScIconSetFormat::GetIconSetInfo(const ScAddress& rAddr) const
if(nVal >= nValMax)
++nIndex;
ScIconSetInfo* pInfo = new ScIconSetInfo;
std::unique_ptr<ScIconSetInfo> pInfo(new ScIconSetInfo);
if(mpFormatData->mbReverse)
{
......@@ -1068,7 +1068,6 @@ ScIconSetInfo* ScIconSetFormat::GetIconSetInfo(const ScAddress& rAddr) const
sal_Int32 nCustomIndex = mpFormatData->maCustomVector[nIndex].second;
if (nCustomIndex == -1)
{
delete pInfo;
return nullptr;
}
......
......@@ -42,6 +42,7 @@
#include <cellvalue.hxx>
#include <editutil.hxx>
#include <tokenarray.hxx>
#include <fillinfo.hxx>
#include <refupdatecontext.hxx>
#include <formula/errorcodes.hxx>
#include <svl/sharedstring.hxx>
......@@ -1824,10 +1825,10 @@ ScCondFormatData ScConditionalFormat::GetData( ScRefCellValue& rCell, const ScAd
if (rEntry.IsCellValid(rCell, rPos))
aData.aStyleName = rEntry.GetStyle();
}
else if((*itr)->GetType() == ScFormatEntry::Type::Colorscale && !aData.pColorScale)
else if((*itr)->GetType() == ScFormatEntry::Type::Colorscale && !aData.mxColorScale)
{
const ScColorScaleFormat& rEntry = static_cast<const ScColorScaleFormat&>(**itr);
aData.pColorScale = rEntry.GetColor(rPos);
aData.mxColorScale = rEntry.GetColor(rPos);
}
else if((*itr)->GetType() == ScFormatEntry::Type::Databar && !aData.pDataBar)
{
......@@ -2299,4 +2300,11 @@ void ScConditionalFormatList::CalcAll()
}
ScCondFormatData::ScCondFormatData() {}
ScCondFormatData::ScCondFormatData(ScCondFormatData&&) = default;
ScCondFormatData::~ScCondFormatData() {}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -327,21 +327,21 @@ bool handleConditionalFormat(ScConditionalFormatList& rCondFormList, const std::
// if style is not there, treat like no condition
}
if(aData.pColorScale)
if(aData.mxColorScale)
{
pInfo->pColorScale.reset(aData.pColorScale);
pInfo->mxColorScale = aData.mxColorScale;
bFound = true;
}
if(aData.pDataBar)
{
pInfo->pDataBar.reset(aData.pDataBar);
pInfo->pDataBar = std::move(aData.pDataBar);
bFound = true;
}
if(aData.pIconSet)
{
pInfo->pIconSet.reset(aData.pIconSet);
pInfo->pIconSet = std::move(aData.pIconSet);
bFound = true;
}
}
......@@ -700,10 +700,10 @@ void ScDocument::FillInfo(
bAnyShadow = true;
}
}
if( bAnyCondition && pInfo->pColorScale)
if( bAnyCondition && pInfo->mxColorScale)
{
pRowInfo[nArrRow].bEmptyBack = false;
pInfo->pBackground = new SvxBrushItem(*pInfo->pColorScale, ATTR_BACKGROUND);
pInfo->pBackground = new SvxBrushItem(*pInfo->mxColorScale, ATTR_BACKGROUND);
}
}
}
......
......@@ -784,8 +784,8 @@ static bool lcl_EqualBack( const RowInfo& rFirst, const RowInfo& rOther,
for ( nX=nX1; nX<=nX2; nX++ )
{
const Color* pCol1 = rFirst.pCellInfo[nX+1].pColorScale.get();
const Color* pCol2 = rOther.pCellInfo[nX+1].pColorScale.get();
boost::optional<Color> const & pCol1 = rFirst.pCellInfo[nX+1].mxColorScale;
boost::optional<Color> const & pCol2 = rOther.pCellInfo[nX+1].mxColorScale;
if( (pCol1 && !pCol2) || (!pCol1 && pCol2) )
return false;
......@@ -919,7 +919,7 @@ void drawIconSets(vcl::RenderContext& rRenderContext, const ScIconSetInfo* pOldI
rRenderContext.DrawBitmapEx( Point( rRect.Left() + 2 * nOneX, rRect.Top() + 2 * nOneY), Size(aOrigSize, aOrigSize), rIcon );
}
void drawCells(vcl::RenderContext& rRenderContext, const Color* pColor, const SvxBrushItem* pBackground, const Color*& pOldColor, const SvxBrushItem*& pOldBackground,
void drawCells(vcl::RenderContext& rRenderContext, boost::optional<Color> const & pColor, const SvxBrushItem* pBackground, boost::optional<Color>& pOldColor, const SvxBrushItem*& pOldBackground,
tools::Rectangle& rRect, long nPosX, long nLayoutSign, long nOneX, long nOneY, const ScDataBarInfo* pDataBarInfo, const ScDataBarInfo*& pOldDataBarInfo,
const ScIconSetInfo* pIconSetInfo, const ScIconSetInfo*& pOldIconSetInfo,
sc::IconSetBitmapMap & rIconSetBitmapMap)
......@@ -981,7 +981,7 @@ void drawCells(vcl::RenderContext& rRenderContext, const Color* pColor, const Sv
else if(pBackground)
{
pOldBackground = pBackground;
pOldColor = nullptr;
pOldColor.reset();
}
if(pDataBarInfo)
......@@ -1069,7 +1069,7 @@ void ScOutputData::DrawBackground(vcl::RenderContext& rRenderContext)
const SvxBrushItem* pOldBackground = nullptr;
const SvxBrushItem* pBackground = nullptr;
const Color* pOldColor = nullptr;
boost::optional<Color> pOldColor;
const ScDataBarInfo* pOldDataBarInfo = nullptr;
const ScIconSetInfo* pOldIconSetInfo = nullptr;
SCCOL nMergedCols = 1;
......@@ -1114,7 +1114,7 @@ void ScOutputData::DrawBackground(vcl::RenderContext& rRenderContext)
pBackground = lcl_FindBackground( mpDoc, nX, nY, nTab );
}
const Color* pColor = pInfo->pColorScale.get();
boost::optional<Color> const & pColor = pInfo->mxColorScale;
const ScDataBarInfo* pDataBarInfo = pInfo->pDataBar.get();
const ScIconSetInfo* pIconSetInfo = pInfo->pIconSet.get();
......@@ -1146,7 +1146,7 @@ void ScOutputData::DrawBackground(vcl::RenderContext& rRenderContext)
if (bWorksInPixels)
nPosXLogic = rRenderContext.PixelToLogic(Point(nPosX, 0)).X();
drawCells(rRenderContext, nullptr, nullptr, pOldColor, pOldBackground, aRect, nPosXLogic, nLayoutSign, nOneXLogic, nOneYLogic, nullptr, pOldDataBarInfo, nullptr, pOldIconSetInfo, mpDoc->GetIconSetBitmapMap());
drawCells(rRenderContext, boost::optional<Color>(), nullptr, pOldColor, pOldBackground, aRect, nPosXLogic, nLayoutSign, nOneXLogic, nOneYLogic, nullptr, pOldDataBarInfo, nullptr, pOldIconSetInfo, mpDoc->GetIconSetBitmapMap());
nArrY += nSkip;
}
......@@ -1632,7 +1632,7 @@ void ScOutputData::DrawRotatedFrame(vcl::RenderContext& rRenderContext)
// high contrast for cell borders and backgrounds -> empty background
pBackground = ScGlobal::GetEmptyBrushItem();
}
if (!pInfo->pColorScale)
if (!pInfo->mxColorScale)
{
const Color& rColor = pBackground->GetColor();
if (rColor.GetTransparency() != 255)
......@@ -1660,7 +1660,7 @@ void ScOutputData::DrawRotatedFrame(vcl::RenderContext& rRenderContext)
else
{
tools::Polygon aPoly(4, aPoints);
const Color* pColor = pInfo->pColorScale.get();
boost::optional<Color> const & pColor = pInfo->mxColorScale;
// for DrawPolygon, whitout Pen one pixel is left out
// to the right and below...
......
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