add caption background mode for group
This commit is contained in:
parent
bed829fa26
commit
345d65f6c9
@ -42,6 +42,13 @@ namespace nana{
|
||||
using field_reference = place::field_reference;
|
||||
constexpr static const std::size_t npos = static_cast<std::size_t>(-1);
|
||||
|
||||
enum class background_mode
|
||||
{
|
||||
none,
|
||||
transparent,
|
||||
blending
|
||||
};
|
||||
|
||||
/// The default construction
|
||||
group();
|
||||
|
||||
@ -66,7 +73,8 @@ namespace nana{
|
||||
checkbox& add_option(::std::string);
|
||||
|
||||
/// Modifies the alignment of the title
|
||||
void caption_align(align position);
|
||||
group& caption_align(align position);
|
||||
group& caption_background_mode(background_mode mode);
|
||||
|
||||
/// Enables/disables the radio mode which is single selection
|
||||
group& radio_mode(bool);
|
||||
|
@ -36,6 +36,7 @@ namespace nana{
|
||||
{
|
||||
label caption;
|
||||
align caption_align{ align::left };
|
||||
background_mode caption_mode{ background_mode::blending };
|
||||
place place_content;
|
||||
unsigned gap{2};
|
||||
std::string usr_div_str;
|
||||
@ -154,7 +155,7 @@ namespace nana{
|
||||
return *impl_->options.back();
|
||||
}
|
||||
|
||||
void group::caption_align(align position)
|
||||
group& group::caption_align(align position)
|
||||
{
|
||||
if (position != impl_->caption_align)
|
||||
{
|
||||
@ -163,6 +164,32 @@ namespace nana{
|
||||
impl_->place_content.collocate();
|
||||
API::refresh_window(*this);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
group& group::caption_background_mode(background_mode mode)
|
||||
{
|
||||
if (mode != impl_->caption_mode)
|
||||
{
|
||||
impl_->caption_mode = mode;
|
||||
switch (mode)
|
||||
{
|
||||
case background_mode::none:
|
||||
impl_->caption.bgcolor(this->bgcolor());
|
||||
impl_->caption.transparent(false);
|
||||
break;
|
||||
case background_mode::blending:
|
||||
impl_->caption.transparent(true);
|
||||
impl_->caption.bgcolor(API::bgcolor(this->parent()).blend(colors::black, 0.025));
|
||||
break;
|
||||
case background_mode::transparent:
|
||||
impl_->caption.transparent(true);
|
||||
impl_->caption.bgcolor(API::bgcolor(this->parent()).blend(colors::black, 0.025));
|
||||
break;
|
||||
}
|
||||
API::refresh_window(*this);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
group& group::radio_mode(bool enable)
|
||||
@ -289,6 +316,8 @@ namespace nana{
|
||||
),
|
||||
3, 3, this->scheme().border, true, this->bgcolor());
|
||||
|
||||
if (background_mode::blending == impl_->caption_mode)
|
||||
{
|
||||
auto opt_r = API::window_rectangle(impl_->caption);
|
||||
if (opt_r)
|
||||
{
|
||||
@ -301,6 +330,7 @@ namespace nana{
|
||||
API::bgcolor(this->parent()), this->bgcolor(), true
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user