cascade opacity supported
This commit is contained in:
parent
3c63ca3965
commit
331ec42523
|
|
@ -46,12 +46,13 @@ namespace kiwano
|
||||||
, responsible_(false)
|
, responsible_(false)
|
||||||
, dirty_transform_(false)
|
, dirty_transform_(false)
|
||||||
, dirty_transform_inverse_(false)
|
, dirty_transform_inverse_(false)
|
||||||
|
, cascade_opacity_(false)
|
||||||
, parent_(nullptr)
|
, parent_(nullptr)
|
||||||
, scene_(nullptr)
|
, scene_(nullptr)
|
||||||
, hash_name_(0)
|
, hash_name_(0)
|
||||||
, z_order_(0)
|
, z_order_(0)
|
||||||
, opacity_(1.f)
|
, opacity_(1.f)
|
||||||
, display_opacity_(1.f)
|
, displayed_opacity_(1.f)
|
||||||
, anchor_(default_anchor_x, default_anchor_y)
|
, anchor_(default_anchor_x, default_anchor_y)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
@ -230,10 +231,15 @@ namespace kiwano
|
||||||
|
|
||||||
void Node::UpdateOpacity()
|
void Node::UpdateOpacity()
|
||||||
{
|
{
|
||||||
if (parent_)
|
if (parent_ && parent_->IsCascadeOpacityEnabled())
|
||||||
{
|
{
|
||||||
display_opacity_ = opacity_ * parent_->display_opacity_;
|
displayed_opacity_ = opacity_ * parent_->displayed_opacity_;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
displayed_opacity_ = opacity_;
|
||||||
|
}
|
||||||
|
|
||||||
for (Node* child = children_.First().Get(); child; child = child->NextItem().Get())
|
for (Node* child = children_.First().Get(); child; child = child->NextItem().Get())
|
||||||
{
|
{
|
||||||
child->UpdateOpacity();
|
child->UpdateOpacity();
|
||||||
|
|
@ -298,7 +304,16 @@ namespace kiwano
|
||||||
if (opacity_ == opacity)
|
if (opacity_ == opacity)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
display_opacity_ = opacity_ = std::min(std::max(opacity, 0.f), 1.f);
|
displayed_opacity_ = opacity_ = std::min(std::max(opacity, 0.f), 1.f);
|
||||||
|
UpdateOpacity();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Node::SetCascadeOpacityEnabled(bool enabled)
|
||||||
|
{
|
||||||
|
if (cascade_opacity_ == enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
cascade_opacity_ = enabled;
|
||||||
UpdateOpacity();
|
UpdateOpacity();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -625,7 +640,7 @@ namespace kiwano
|
||||||
void VisualNode::PrepareRender()
|
void VisualNode::PrepareRender()
|
||||||
{
|
{
|
||||||
Renderer::Instance().SetTransform(transform_matrix_);
|
Renderer::Instance().SetTransform(transform_matrix_);
|
||||||
Renderer::Instance().SetOpacity(display_opacity_);
|
Renderer::Instance().SetOpacity(displayed_opacity_);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,9 @@ namespace kiwano
|
||||||
// 获取响应状态
|
// 获取响应状态
|
||||||
bool IsResponsible() const { return responsible_; }
|
bool IsResponsible() const { return responsible_; }
|
||||||
|
|
||||||
|
// 是否启用级联透明度
|
||||||
|
bool IsCascadeOpacityEnabled() const { return cascade_opacity_; }
|
||||||
|
|
||||||
// 获取名称的 Hash 值
|
// 获取名称的 Hash 值
|
||||||
size_t GetHashName() const { return hash_name_; }
|
size_t GetHashName() const { return hash_name_; }
|
||||||
|
|
||||||
|
|
@ -125,6 +128,9 @@ namespace kiwano
|
||||||
// 获取透明度
|
// 获取透明度
|
||||||
float GetOpacity() const { return opacity_; }
|
float GetOpacity() const { return opacity_; }
|
||||||
|
|
||||||
|
// 获取显示透明度
|
||||||
|
float GetDisplayedOpacity() const { return displayed_opacity_; }
|
||||||
|
|
||||||
// 获取变换
|
// 获取变换
|
||||||
Transform GetTransform() const { return transform_; }
|
Transform GetTransform() const { return transform_; }
|
||||||
|
|
||||||
|
|
@ -296,6 +302,7 @@ namespace kiwano
|
||||||
const Size & size
|
const Size & size
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// 设置二维仿射变换
|
||||||
void SetTransform(
|
void SetTransform(
|
||||||
Transform const& transform
|
Transform const& transform
|
||||||
);
|
);
|
||||||
|
|
@ -306,6 +313,11 @@ namespace kiwano
|
||||||
float opacity
|
float opacity
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// 启用或禁用级联透明度
|
||||||
|
void SetCascadeOpacityEnabled(
|
||||||
|
bool enabled
|
||||||
|
);
|
||||||
|
|
||||||
// 设置 Z 轴顺序
|
// 设置 Z 轴顺序
|
||||||
// 默认为 0
|
// 默认为 0
|
||||||
void SetZOrder(
|
void SetZOrder(
|
||||||
|
|
@ -413,9 +425,10 @@ namespace kiwano
|
||||||
bool pressed_;
|
bool pressed_;
|
||||||
bool responsible_;
|
bool responsible_;
|
||||||
bool update_pausing_;
|
bool update_pausing_;
|
||||||
|
bool cascade_opacity_;
|
||||||
int z_order_;
|
int z_order_;
|
||||||
float opacity_;
|
float opacity_;
|
||||||
float display_opacity_;
|
float displayed_opacity_;
|
||||||
Node* parent_;
|
Node* parent_;
|
||||||
Scene* scene_;
|
Scene* scene_;
|
||||||
size_t hash_name_;
|
size_t hash_name_;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue