92 lines
2.8 KiB
C++
92 lines
2.8 KiB
C++
// This file is part of VSTGUI. It is subject to the license terms
|
|
// in the LICENSE file found in the top-level directory of this
|
|
// distribution and at http://github.com/steinbergmedia/vstgui/LICENSE
|
|
|
|
#include "clinestyle.h"
|
|
|
|
namespace VSTGUI {
|
|
|
|
//-----------------------------------------------------------------------------
|
|
//-----------------------------------------------------------------------------
|
|
//-----------------------------------------------------------------------------
|
|
CLineStyle::CLineStyle (LineCap _cap, LineJoin _join, CCoord _dashPhase, uint32_t _dashCount, const CCoord* _dashLengths)
|
|
: cap (_cap)
|
|
, join (_join)
|
|
, dashPhase (_dashPhase)
|
|
{
|
|
if (_dashCount && _dashLengths)
|
|
{
|
|
for (uint32_t i = 0; i < _dashCount; i++)
|
|
dashLengths.emplace_back (_dashLengths[i]);
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
CLineStyle::CLineStyle (LineCap _cap, LineJoin _join, CCoord _dashPhase, const CoordVector& _dashLengths)
|
|
: cap (_cap)
|
|
, join (_join)
|
|
, dashPhase (_dashPhase)
|
|
, dashLengths (_dashLengths)
|
|
{
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
CLineStyle::CLineStyle (const CLineStyle& lineStyle)
|
|
{
|
|
*this = lineStyle;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
CLineStyle::CLineStyle (LineCap _cap, LineJoin _join, CCoord _dashPhase, CoordVector&& _dashLengths) noexcept
|
|
: cap (_cap)
|
|
, join (_join)
|
|
, dashPhase (_dashPhase)
|
|
, dashLengths (std::move (_dashLengths))
|
|
{
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
CLineStyle::CLineStyle (CLineStyle&& cls) noexcept
|
|
{
|
|
*this = std::move (cls);
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
CLineStyle& CLineStyle::operator= (CLineStyle&& cls) noexcept
|
|
{
|
|
dashLengths.clear ();
|
|
cap = cls.cap;
|
|
join = cls.join;
|
|
dashPhase = cls.dashPhase;
|
|
dashLengths = std::move (cls.dashLengths);
|
|
return *this;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
bool CLineStyle::operator== (const CLineStyle& cls) const
|
|
{
|
|
if (cap == cls.cap && join == cls.join && dashPhase == cls.dashPhase && dashLengths == cls.dashLengths)
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
CLineStyle& CLineStyle::operator= (const CLineStyle& cls)
|
|
{
|
|
dashLengths.clear ();
|
|
cap = cls.cap;
|
|
join = cls.join;
|
|
dashPhase = cls.dashPhase;
|
|
dashLengths = cls.dashLengths;
|
|
return *this;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
static const CCoord kDefaultOnOffDashLength[] = {1, 1};
|
|
const CLineStyle kLineSolid {};
|
|
const CLineStyle kLineOnOffDash (CLineStyle::kLineCapButt, CLineStyle::kLineJoinMiter, 0, 2, kDefaultOnOffDashLength);
|
|
|
|
}
|