Files
hot-step-cpp-ROCm/engine/vendor/vst3sdk/vstgui4/vstgui/lib/clinestyle.h
T
2026-08-16 18:24:52 +07:00

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