70 lines
2.0 KiB
C++
70 lines
2.0 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
|
|
|
|
#pragma once
|
|
|
|
#include "vstguifwd.h"
|
|
#include <vector>
|
|
|
|
namespace VSTGUI {
|
|
|
|
//-----------
|
|
// @brief Line Style
|
|
//-----------
|
|
class CLineStyle
|
|
{
|
|
public:
|
|
using CoordVector = std::vector<CCoord>;
|
|
|
|
enum LineCap
|
|
{
|
|
kLineCapButt = 0,
|
|
kLineCapRound,
|
|
kLineCapSquare
|
|
};
|
|
|
|
enum LineJoin
|
|
{
|
|
kLineJoinMiter = 0,
|
|
kLineJoinRound,
|
|
kLineJoinBevel
|
|
};
|
|
|
|
CLineStyle () = default;
|
|
explicit CLineStyle (LineCap cap, LineJoin join = kLineJoinMiter, CCoord dashPhase = 0., uint32_t dashCount = 0, const CCoord* dashLengths = nullptr);
|
|
CLineStyle (LineCap cap, LineJoin join, CCoord dashPhase, const CoordVector& dashLengths);
|
|
CLineStyle (const CLineStyle& lineStyle);
|
|
~CLineStyle () noexcept = default;
|
|
|
|
CLineStyle (LineCap cap, LineJoin join, CCoord dashPhase, CoordVector&& dashLengths) noexcept;
|
|
CLineStyle (CLineStyle&& cls) noexcept;
|
|
CLineStyle& operator= (CLineStyle&& cls) noexcept;
|
|
|
|
LineCap getLineCap () const { return cap; }
|
|
LineJoin getLineJoin () const { return join; }
|
|
CCoord getDashPhase () const { return dashPhase; }
|
|
uint32_t getDashCount () const { return static_cast<uint32_t> (dashLengths.size ()); }
|
|
CoordVector& getDashLengths () { return dashLengths; }
|
|
const CoordVector& getDashLengths() const { return dashLengths; }
|
|
|
|
void setLineCap (LineCap newCap) { cap = newCap; }
|
|
void setLineJoin (LineJoin newJoin) { join = newJoin; }
|
|
void setDashPhase (CCoord phase) { dashPhase = phase; }
|
|
|
|
bool operator== (const CLineStyle& cls) const;
|
|
bool operator!= (const CLineStyle& cls) const { return !(*this == cls); }
|
|
CLineStyle& operator= (const CLineStyle& cls);
|
|
|
|
protected:
|
|
LineCap cap {kLineCapButt};
|
|
LineJoin join {kLineJoinMiter};
|
|
CCoord dashPhase {0.};
|
|
CoordVector dashLengths;
|
|
};
|
|
|
|
extern const CLineStyle kLineSolid;
|
|
extern const CLineStyle kLineOnOffDash;
|
|
|
|
} // VSTGUI
|