ニューモーフィズムなボタンやスライダなどをOpenSiv3D上で再現するライブラリです。
OpenSiv3D v0.4.3以降で動作します。
-
ボタン
- 角丸長方形ボタン
- 丸形ボタン
-
スイッチ
- 角丸長方形スイッチ
- 丸形スイッチ
- スライドスイッチ
- スライダー
#include "NeumorphismUI.hpp"
スイッチは押した瞬間にtrueを返します。
角丸長方形のスイッチです。
押したらONに、もう一度押すとOFFになります。
void NeumorphismUI::RectSwitch( Vec2 argPosition, Vec2 argSize, bool& argVar, String argStr, Font& argFont, Color argBackgroundColor = DEFAULT_BACKGROUND_COLOR, Color argDarkColor = DEFAULT_SHADOW_COLOR, Color argLightColor = DEFAULT_LIGHT_COLOR, Color argFontColor = Palette::Gray, Color argPushedFontColor = Palette::Gray, int argRadius = 10, int argBlurSize = 16, int argShadowSize = 2, Vec2 argUpperShadowPosOffset = {-4, -4}, Vec2 argLowerShadowPosOffset = {4, 4} )指定必須な引数は第1引数(argPosition)から第5引数(argFont)までです。
第6引数以降は指定することも可能ですが、未指定でも動作します。
引数名 | 型 | 概要 | 初期値 |
---|---|---|---|
argPosition | Vec2(Point) | 描画する座標(左上)int型変数2つでも指定可能 | |
argSize | Vec2(Point) | サイズ {横, 縦} int型変数2つでも指定可能 | |
argVar | bool& | 戻り値を格納するBool型変数(参照渡し) | |
argStr | String | スイッチに表示する文字列 | |
argFont | Font& | 文字列の表示に用いるフォント | |
argBackgroundColor | Color | 背景色およびボタンの色 | Color(224, 229, 236) |
argDarkColor | Color | 影の色 | Color(163, 177, 198) |
argLightColor | Color | 光があたった部分の色 | Color(255, 255, 255) |
argFontColor | Color | フォントの色(常時) | Palette::Gray |
argPushedFontColor | Color | フォントの色(スイッチ押下時) | Palette::Gray |
argRadius | int | 角を丸める大きさ | 10 |
argBlurSize | int | 影のブラーの大きさ | 16 |
argShadowSize | int | 影の大きさ | 2 |
argUpperShadowPosOffset | Vec2 | 左上の光があたった部分/影の部分の相対描画位置 | {-4, -4} |
argLowerShadowPosOffset | Vec2 | 右下の光があたった部分/影の部分の相対描画位置 | {4, 4} |
ONのときtrue、OFFのときfalseです。
角丸長方形のボタンです。
押した瞬間にtrueを返します。
bool NeumorphismUI::RectButton( Vec2 argPosition, Vec2 argSize, String argStr, Font& argFont, Color argBackgroundColor = DEFAULT_BACKGROUND_COLOR, Color argDarkColor = DEFAULT_SHADOW_COLOR, Color argLightColor = DEFAULT_LIGHT_COLOR, Color argFontColor = Palette::Gray, Color argPushedFontColor = Palette::Gray, int argRadius = 10, int argBlurSize = 16, int argShadowSize = 2, Vec2 argUpperShadowPosOffset = {-4, -4}, Vec2 argLowerShadowPosOffset = {4, 4} )指定必須な引数は第1引数(argPosition)から第4引数(argFont)までです。
第5引数以降は指定することも可能ですが、未指定でも動作します。
引数名 | 型 | 概要 | 初期値 |
---|---|---|---|
argPosition | Vec2(Point) | 描画する座標(左上)int型変数2つでも指定可能 | |
argSize | Vec2(Point) | サイズ {横, 縦} int型変数2つでも指定可能 | |
argStr | String | スイッチに表示する文字列 | |
argFont | Font& | 文字列の表示に用いるフォント | |
argBackgroundColor | Color | 背景色およびボタンの色 | Color(224, 229, 236) |
argDarkColor | Color | 影の色 | Color(163, 177, 198) |
argLightColor | Color | 光があたった部分の色 | Color(255, 255, 255) |
argFontColor | Color | フォントの色(常時) | Palette::Gray |
argPushedFontColor | Color | フォントの色(スイッチ押下時) | Palette::Gray |
argRadius | int | 角を丸める大きさ | 10 |
argBlurSize | int | 影のブラーの大きさ | 16 |
argShadowSize | int | 影の大きさ | 2 |
argUpperShadowPosOffset | Vec2 | 左上の光があたった部分/影の部分の相対描画位置 | {-4, -4} |
argLowerShadowPosOffset | Vec2 | 右下の光があたった部分/影の部分の相対描画位置 | {4, 4} |
丸形のスイッチです。
押したらONに、もう一度押すとOFFになります。
void NeumorphismUI::CircleSwitch( Vec2 argPosition, int argSize, bool& argVar, String argStr, Font& argFont, Color argBackgroundColor = DEFAULT_BACKGROUND_COLOR, Color argDarkColor = DEFAULT_SHADOW_COLOR, Color argLightColor = DEFAULT_LIGHT_COLOR, Color argFontColor = Palette::Gray, Color argPushedFontColor = Palette::Gray, int argBlurSize = 16, int argShadowSize = 2, Vec2 argUpperShadowPosOffset = {-4, -4}, Vec2 argLowerShadowPosOffset = {4, 4} )指定必須な引数は第1引数(argPosition)から第5引数(argFont)までです。
第6引数以降は指定することも可能ですが、未指定でも動作します。
円形の場合は角丸長方形と違い、座標は中心座標、サイズは円の半径となりますので注意してください。
引数名 | 型 | 概要 | 初期値 |
---|---|---|---|
argPosition | Vec2(Point) | 描画する座標 (円の中心座標) int型変数2つでも指定可能 | |
argSize | int | サイズ (半径) | |
argVar | bool& | 戻り値を格納するBool型変数(参照渡し) | |
argStr | String | スイッチに表示する文字列 | |
argFont | Font& | 文字列の表示に用いるフォント | |
argBackgroundColor | Color | 背景色およびボタンの色 | Color(224, 229, 236) |
argDarkColor | Color | 影の色 | Color(163, 177, 198) |
argLightColor | Color | 光があたった部分の色 | Color(255, 255, 255) |
argFontColor | Color | フォントの色(常時) | Palette::Gray |
argPushedFontColor | Color | フォントの色(スイッチ押下時) | Palette::Gray |
argBlurSize | int | 影のブラーの大きさ | 16 |
argShadowSize | int | 影の大きさ | 2 |
argUpperShadowPosOffset | Vec2 | 左上の光があたった部分/影の部分の相対描画位置 | {-4, -4} |
argLowerShadowPosOffset | Vec2 | 右下の光があたった部分/影の部分の相対描画位置 | {4, 4} |
ONのときtrue、OFFのときfalseです。
丸形のボタンです。
押した瞬間にtrueを返します。
bool NeumorphismUI::CircleButton( Vec2 argPosition, int argSize, String argStr, Font& argFont, Color argBackgroundColor = DEFAULT_BACKGROUND_COLOR, Color argDarkColor = DEFAULT_SHADOW_COLOR, Color argLightColor = DEFAULT_LIGHT_COLOR, Color argFontColor = Palette::Gray, Color argPushedFontColor = Palette::Gray, int argBlurSize = 16, int argShadowSize = 2, Vec2 argUpperShadowPosOffset = {-4, -4}, Vec2 argLowerShadowPosOffset = {4, 4} )指定必須な引数は第1引数(argPosition)から第5引数(argFont)までです。
第6引数以降は指定することも可能ですが、未指定でも動作します。
円形の場合は角丸長方形と違い、座標は中心座標、サイズは円の半径となりますので注意してください。
引数名 | 型 | 概要 | 初期値 |
---|---|---|---|
argPosition | Vec2(Point) | 描画する座標 (円の中心座標) int型変数2つでも指定可能 | |
argSize | int | サイズ (半径) | |
argStr | String | スイッチに表示する文字列 | |
argFont | Font& | 文字列の表示に用いるフォント | |
argBackgroundColor | Color | 背景色およびボタンの色 | Color(224, 229, 236) |
argDarkColor | Color | 影の色 | Color(163, 177, 198) |
argLightColor | Color | 光があたった部分の色 | Color(255, 255, 255) |
argFontColor | Color | フォントの色(常時) | Palette::Gray |
argPushedFontColor | Color | フォントの色(スイッチ押下時) | Palette::Gray |
argBlurSize | int | 影のブラーの大きさ | 16 |
argShadowSize | int | 影の大きさ | 2 |
argUpperShadowPosOffset | Vec2 | 左上の光があたった部分/影の部分の相対描画位置 | {-4, -4} |
argLowerShadowPosOffset | Vec2 | 右下の光があたった部分/影の部分の相対描画位置 | {4, 4} |
スライド式のスイッチです。
角丸長方形や丸型のボタン/スイッチとは異なりオブジェクトとなっていますので、
使用の際には予め宣言が必要です。
SlideSwitch(bool argVar, Vec2 argPosition, Vec2 argSize)
引数名 | 型 | 概要 |
---|---|---|
argVar | bool | 初期値(ONかOFFか) |
argPosition | Vec2(Point) | 描画する座標 int型変数2つでも指定可能 |
argSize | Vec2(Size) | サイズ int型変数2つでも指定可能 |
使用例:
#include <Siv3D.hpp> #include "NeumorphismUI.hpp" void Main() { Scene::SetBackground(DEFAULT_BACKGROUND_COLOR); Font font24(24); bool var = true; // 初期値 NeumorphismUI::SlideSwitch slideSwitch(var, Vec2{Scene::Width()/2-60, Scene::Height()/2-15}, Vec2{50, 30}); while (System::Update()) { if (slideSwitch.draw()) { font24(U"ON").draw(Scene::Width()/2+10, Scene::Height()/2-15, Palette::Black); } else { font24(U"OFF").draw(Scene::Width()/2+10, Scene::Height()/2-15, Palette::Black); } } }draw関数で描画を行います。draw関数は現在のスイッチの値をbool型で返します。
0.0〜1.0の実数値を返します。
こちらも角丸長方形や丸型のボタン/スイッチとは異なりオブジェクトとなっていますので、
使用の際には予め宣言が必要です。
Slider(double argVar, Vec2 argPosition, Vec2 argSize)
引数名 | 型 | 概要 |
---|---|---|
argVar | double | 初期値(0.0〜1.0) |
argPosition | Vec2(Point) | 描画する座標 int型変数2つでも指定可能 |
argSize | Vec2(Size) | サイズ int型変数2つでも指定可能 |
使用例:
#include <Siv3D.hpp> #include "NeumorphismUI.hpp" void Main() { Scene::SetBackground(DEFAULT_BACKGROUND_COLOR); Font font24(24); double var = 0.5; // 初期値 NeumorphismUI::Slider slider(var, Vec2{Scene::Width()/2-210, Scene::Height()/2-15}, Vec2{200, 30}); while (System::Update()) { var = slider.draw(); font24(U"{:.2f}"_fmt(var)).draw(Scene::Width()/2+100, Scene::Height()/2-15, Palette::Black); } }draw関数で描画を行います。draw関数は現在のスライダーの値をdouble型で0.0〜1.0の範囲で返します。
#include <Siv3D.hpp> #include "NeumorphismUI.hpp" void Main() { Scene::SetBackground(DEFAULT_BACKGROUND_COLOR); double sliderVar = 0.5; // スライダーの初期値 bool slideSwitchVar = true; // スライドスイッチの初期値 int count = 0; Font font24(24); // スライダーの宣言 NeumorphismUI::Slider slider(sliderVar, Vec2{400, 100}, 200, 30); // スライドスイッチの宣言 NeumorphismUI::SlideSwitch slideSwitch(slideSwitchVar, 400, 300, 50, 30); bool rectSwitchPushed = true; // 角丸長方形スイッチの初期値(ON) bool circleSwitchPushed = false; // 丸型スイッチの初期値(OFF) while (System::Update()) { // 角丸長方形スイッチ NeumorphismUI::RectSwitch(Point(100, 100), Size(100, 100), rectSwitchPushed, U"Push", font24); if (rectSwitchPushed) { font24(U"ON").draw(250, 130, Palette::Black); } else { font24(U"OFF").draw(250, 130, Palette::Black); } // 丸型スイッチ NeumorphismUI::CircleSwitch(Point(150, 320), 50, circleSwitchPushed, U"Push", font24); if (circleSwitchPushed) { font24(U"ON").draw(250, 300, Palette::Black); } else { font24(U"OFF").draw(250, 300, Palette::Black); } // スライダー sliderVar = slider.draw(); font24(U"{:.2f}"_fmt(sliderVar)).draw(550, 150, Palette::Black); // スライドスイッチ if (slideSwitch.draw()) { font24(U"ON").draw(550, 300, Palette::Black); } else { font24(U"OFF").draw(550, 300, Palette::Black); } // 角丸長方形ボタン -> カウンターとして動作 if (NeumorphismUI::RectButton(Point(100, 450), Size(200, 50), U"Push", font24)) { count ++; } font24(count).draw(350, 460, Palette::Black); } }
ライセンス条文はこちら
個人利用
|
可能
|
|
プログラムの改変
|
可能
|
著作権とライセンス全文の表示を行うこと。 できれば事前にご連絡いただけると嬉しいです。 |
再配布
|
可能
|
|
商用利用
|
可能
|
|
ライセンスの改変
|
不可能
|
ライセンスの改変を行うことはできません。 |
保証について
|
動作保証や権利上の保証はいたしません。
|
|
免責事項
|
作者はソフトウェアに対していかなる責任も負いません。
|