Merge pull request #18806 from Calinou/bilinear-textureprogress
Add support for bilinear bars in TextureProgress
This commit is contained in:
commit
fda6b78bae
|
@ -309,15 +309,23 @@ void TextureProgress::_notification(int p_what) {
|
||||||
draw_texture_rect_region(progress, region, region, tint_progress);
|
draw_texture_rect_region(progress, region, region, tint_progress);
|
||||||
} break;
|
} break;
|
||||||
case FILL_CLOCKWISE:
|
case FILL_CLOCKWISE:
|
||||||
case FILL_COUNTER_CLOCKWISE: {
|
case FILL_COUNTER_CLOCKWISE:
|
||||||
|
case FILL_CLOCKWISE_AND_COUNTER_CLOCKWISE: {
|
||||||
float val = get_as_ratio() * rad_max_degrees / 360;
|
float val = get_as_ratio() * rad_max_degrees / 360;
|
||||||
if (val == 1) {
|
if (val == 1) {
|
||||||
Rect2 region = Rect2(Point2(), s);
|
Rect2 region = Rect2(Point2(), s);
|
||||||
draw_texture_rect_region(progress, region, region, tint_progress);
|
draw_texture_rect_region(progress, region, region, tint_progress);
|
||||||
} else if (val != 0) {
|
} else if (val != 0) {
|
||||||
Array pts;
|
Array pts;
|
||||||
float direction = mode == FILL_CLOCKWISE ? 1 : -1;
|
float direction = mode == FILL_COUNTER_CLOCKWISE ? -1 : 1;
|
||||||
float start = rad_init_angle / 360;
|
float start;
|
||||||
|
|
||||||
|
if (mode == FILL_CLOCKWISE_AND_COUNTER_CLOCKWISE) {
|
||||||
|
start = rad_init_angle / 360 - val / 2;
|
||||||
|
} else {
|
||||||
|
start = rad_init_angle / 360;
|
||||||
|
}
|
||||||
|
|
||||||
float end = start + direction * val;
|
float end = start + direction * val;
|
||||||
pts.append(start);
|
pts.append(start);
|
||||||
pts.append(end);
|
pts.append(end);
|
||||||
|
@ -351,6 +359,14 @@ void TextureProgress::_notification(int p_what) {
|
||||||
draw_line(p - Point2(0, 8), p + Point2(0, 8), Color(0.9, 0.5, 0.5), 2);
|
draw_line(p - Point2(0, 8), p + Point2(0, 8), Color(0.9, 0.5, 0.5), 2);
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
case FILL_BILINEAR_LEFT_AND_RIGHT: {
|
||||||
|
Rect2 region = Rect2(Point2(s.x / 2 - s.x * get_as_ratio() / 2, 0), Size2(s.x * get_as_ratio(), s.y));
|
||||||
|
draw_texture_rect_region(progress, region, region, tint_progress);
|
||||||
|
} break;
|
||||||
|
case FILL_BILINEAR_TOP_AND_BOTTOM: {
|
||||||
|
Rect2 region = Rect2(Point2(0, s.y / 2 - s.y * get_as_ratio() / 2), Size2(s.x, s.y * get_as_ratio()));
|
||||||
|
draw_texture_rect_region(progress, region, region, tint_progress);
|
||||||
|
} break;
|
||||||
default:
|
default:
|
||||||
draw_texture_rect_region(progress, Rect2(Point2(), Size2(s.x * get_as_ratio(), s.y)), Rect2(Point2(), Size2(s.x * get_as_ratio(), s.y)), tint_progress);
|
draw_texture_rect_region(progress, Rect2(Point2(), Size2(s.x * get_as_ratio(), s.y)), Rect2(Point2(), Size2(s.x * get_as_ratio(), s.y)), tint_progress);
|
||||||
}
|
}
|
||||||
|
@ -364,7 +380,7 @@ void TextureProgress::_notification(int p_what) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextureProgress::set_fill_mode(int p_fill) {
|
void TextureProgress::set_fill_mode(int p_fill) {
|
||||||
ERR_FAIL_INDEX(p_fill, 6);
|
ERR_FAIL_INDEX(p_fill, 9);
|
||||||
mode = (FillMode)p_fill;
|
mode = (FillMode)p_fill;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
@ -446,7 +462,7 @@ void TextureProgress::_bind_methods() {
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture_under", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_under_texture", "get_under_texture");
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture_under", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_under_texture", "get_under_texture");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture_over", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_over_texture", "get_over_texture");
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture_over", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_over_texture", "get_over_texture");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture_progress", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_progress_texture", "get_progress_texture");
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture_progress", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_progress_texture", "get_progress_texture");
|
||||||
ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "fill_mode", PROPERTY_HINT_ENUM, "Left to Right,Right to Left,Top to Bottom,Bottom to Top,Clockwise,Counter Clockwise"), "set_fill_mode", "get_fill_mode");
|
ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "fill_mode", PROPERTY_HINT_ENUM, "Left to Right,Right to Left,Top to Bottom,Bottom to Top,Clockwise,Counter Clockwise,Bilinear (Left and Right),Bilinear (Top and Bottom), Clockwise and Counter Clockwise"), "set_fill_mode", "get_fill_mode");
|
||||||
ADD_GROUP("Tint", "tint_");
|
ADD_GROUP("Tint", "tint_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "tint_under", PROPERTY_HINT_COLOR_NO_ALPHA), "set_tint_under", "get_tint_under");
|
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "tint_under", PROPERTY_HINT_COLOR_NO_ALPHA), "set_tint_under", "get_tint_under");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "tint_over", PROPERTY_HINT_COLOR_NO_ALPHA), "set_tint_over", "get_tint_over");
|
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "tint_over", PROPERTY_HINT_COLOR_NO_ALPHA), "set_tint_over", "get_tint_over");
|
||||||
|
@ -468,6 +484,9 @@ void TextureProgress::_bind_methods() {
|
||||||
BIND_ENUM_CONSTANT(FILL_BOTTOM_TO_TOP);
|
BIND_ENUM_CONSTANT(FILL_BOTTOM_TO_TOP);
|
||||||
BIND_ENUM_CONSTANT(FILL_CLOCKWISE);
|
BIND_ENUM_CONSTANT(FILL_CLOCKWISE);
|
||||||
BIND_ENUM_CONSTANT(FILL_COUNTER_CLOCKWISE);
|
BIND_ENUM_CONSTANT(FILL_COUNTER_CLOCKWISE);
|
||||||
|
BIND_ENUM_CONSTANT(FILL_BILINEAR_LEFT_AND_RIGHT);
|
||||||
|
BIND_ENUM_CONSTANT(FILL_BILINEAR_TOP_AND_BOTTOM);
|
||||||
|
BIND_ENUM_CONSTANT(FILL_CLOCKWISE_AND_COUNTER_CLOCKWISE);
|
||||||
}
|
}
|
||||||
|
|
||||||
TextureProgress::TextureProgress() {
|
TextureProgress::TextureProgress() {
|
||||||
|
|
|
@ -52,7 +52,10 @@ public:
|
||||||
FILL_TOP_TO_BOTTOM,
|
FILL_TOP_TO_BOTTOM,
|
||||||
FILL_BOTTOM_TO_TOP,
|
FILL_BOTTOM_TO_TOP,
|
||||||
FILL_CLOCKWISE,
|
FILL_CLOCKWISE,
|
||||||
FILL_COUNTER_CLOCKWISE
|
FILL_COUNTER_CLOCKWISE,
|
||||||
|
FILL_BILINEAR_LEFT_AND_RIGHT,
|
||||||
|
FILL_BILINEAR_TOP_AND_BOTTOM,
|
||||||
|
FILL_CLOCKWISE_AND_COUNTER_CLOCKWISE
|
||||||
};
|
};
|
||||||
|
|
||||||
void set_fill_mode(int p_fill);
|
void set_fill_mode(int p_fill);
|
||||||
|
|
Loading…
Reference in New Issue