OpenSiv3D
OpenSiv3D copied to clipboard
Rect::draw(const ColorF[4]) の引数の扱い改善
内容
Rect::draw(const ColorF[4]) に Array<ColorF>, std::array<ColorF, 4>, std::span<const ColorF> を渡せないのは不便です。
背景
実用上、動的に用意した配列や定数配列などを使って四隅の色を指定したい場面があります。 しかし、現在は固定長配列 [4] を直接渡す必要があり、柔軟性に欠けています。
提案
Rect::draw の多重定義または内部での変換を追加し、std::span<const ColorF> や std::array<ColorF, 4> にも対応することで、より直感的で扱いやすくなると思います。
ご提案ありがとうございます。 開発中の v0.8 で次の 2 つとし、
const Rect& draw(const std::array<ColorF, 4>& colors) const;
const Rect& draw(std::span<const ColorF, 4> colors) const;
次のように様々なパターンで呼べるようにしました。
# include <Siv3D.hpp>
void Main()
{
while (System::Update())
{
{
const ColorF colors[4]{ Palette::Red, Palette::Green, Palette::Blue, Palette::Yellow };
Rect{ 0, 100, 100 }.draw(colors);
}
{
const std::array<ColorF, 4> colors{ Palette::Red, Palette::Green, Palette::Blue, Palette::Yellow };
Rect{ 150, 100, 100 }.draw(colors);
}
{
const Array<ColorF> colors{ Palette::Red, Palette::Green, Palette::Blue, Palette::Yellow };
Rect{ 300, 100, 100 }.draw(std::span<const ColorF, 4>{ colors });
}
{
Rect{ 450, 100, 100 }.draw({ Palette::Red, Palette::Green, Palette::Blue, Palette::Yellow });
}
}
}