Merge pull request #10265 from leezh/patchnine_stylebox
Added Tile and TileFit to StyleBoxes
This commit is contained in:
commit
a21ca962a4
2 changed files with 57 additions and 1 deletions
|
@ -162,7 +162,7 @@ void StyleBoxTexture::draw(RID p_canvas_item, const Rect2 &p_rect) const {
|
||||||
if (normal_map.is_valid())
|
if (normal_map.is_valid())
|
||||||
normal_rid = normal_map->get_rid();
|
normal_rid = normal_map->get_rid();
|
||||||
|
|
||||||
VisualServer::get_singleton()->canvas_item_add_nine_patch(p_canvas_item, rect, src_rect, texture->get_rid(), Vector2(margin[MARGIN_LEFT], margin[MARGIN_TOP]), Vector2(margin[MARGIN_RIGHT], margin[MARGIN_BOTTOM]), VS::NINE_PATCH_STRETCH, VS::NINE_PATCH_STRETCH, draw_center, modulate, normal_rid);
|
VisualServer::get_singleton()->canvas_item_add_nine_patch(p_canvas_item, rect, src_rect, texture->get_rid(), Vector2(margin[MARGIN_LEFT], margin[MARGIN_TOP]), Vector2(margin[MARGIN_RIGHT], margin[MARGIN_BOTTOM]), VS::NinePatchAxisMode(axis_h), VS::NinePatchAxisMode(axis_v), draw_center, modulate, normal_rid);
|
||||||
}
|
}
|
||||||
|
|
||||||
void StyleBoxTexture::set_draw_center(bool p_draw) {
|
void StyleBoxTexture::set_draw_center(bool p_draw) {
|
||||||
|
@ -211,6 +211,28 @@ Rect2 StyleBoxTexture::get_region_rect() const {
|
||||||
return region_rect;
|
return region_rect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void StyleBoxTexture::set_h_axis_stretch_mode(AxisStretchMode p_mode) {
|
||||||
|
|
||||||
|
axis_h = p_mode;
|
||||||
|
emit_changed();
|
||||||
|
}
|
||||||
|
|
||||||
|
StyleBoxTexture::AxisStretchMode StyleBoxTexture::get_h_axis_stretch_mode() const {
|
||||||
|
|
||||||
|
return axis_h;
|
||||||
|
}
|
||||||
|
|
||||||
|
void StyleBoxTexture::set_v_axis_stretch_mode(AxisStretchMode p_mode) {
|
||||||
|
|
||||||
|
axis_v = p_mode;
|
||||||
|
emit_changed();
|
||||||
|
}
|
||||||
|
|
||||||
|
StyleBoxTexture::AxisStretchMode StyleBoxTexture::get_v_axis_stretch_mode() const {
|
||||||
|
|
||||||
|
return axis_v;
|
||||||
|
}
|
||||||
|
|
||||||
void StyleBoxTexture::set_modulate(const Color &p_modulate) {
|
void StyleBoxTexture::set_modulate(const Color &p_modulate) {
|
||||||
if (modulate == p_modulate)
|
if (modulate == p_modulate)
|
||||||
return;
|
return;
|
||||||
|
@ -246,6 +268,12 @@ void StyleBoxTexture::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("set_modulate", "color"), &StyleBoxTexture::set_modulate);
|
ClassDB::bind_method(D_METHOD("set_modulate", "color"), &StyleBoxTexture::set_modulate);
|
||||||
ClassDB::bind_method(D_METHOD("get_modulate"), &StyleBoxTexture::get_modulate);
|
ClassDB::bind_method(D_METHOD("get_modulate"), &StyleBoxTexture::get_modulate);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("set_h_axis_stretch_mode", "mode"), &StyleBoxTexture::set_h_axis_stretch_mode);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_h_axis_stretch_mode"), &StyleBoxTexture::get_h_axis_stretch_mode);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("set_v_axis_stretch_mode", "mode"), &StyleBoxTexture::set_v_axis_stretch_mode);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_v_axis_stretch_mode"), &StyleBoxTexture::get_v_axis_stretch_mode);
|
||||||
|
|
||||||
ADD_SIGNAL(MethodInfo("texture_changed"));
|
ADD_SIGNAL(MethodInfo("texture_changed"));
|
||||||
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_texture", "get_texture");
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_texture", "get_texture");
|
||||||
|
@ -261,9 +289,16 @@ void StyleBoxTexture::_bind_methods() {
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "expand_margin_right", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin_size", "get_expand_margin_size", MARGIN_RIGHT);
|
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "expand_margin_right", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin_size", "get_expand_margin_size", MARGIN_RIGHT);
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "expand_margin_top", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin_size", "get_expand_margin_size", MARGIN_TOP);
|
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "expand_margin_top", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin_size", "get_expand_margin_size", MARGIN_TOP);
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "expand_margin_bottom", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin_size", "get_expand_margin_size", MARGIN_BOTTOM);
|
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "expand_margin_bottom", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin_size", "get_expand_margin_size", MARGIN_BOTTOM);
|
||||||
|
ADD_GROUP("Axis Stretch", "axis_stretch_");
|
||||||
|
ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "axis_stretch_horizontal", PROPERTY_HINT_ENUM, "Stretch,Tile,Tile Fit"), "set_h_axis_stretch_mode", "get_h_axis_stretch_mode");
|
||||||
|
ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "axis_stretch_vertical", PROPERTY_HINT_ENUM, "Stretch,Tile,Tile Fit"), "set_v_axis_stretch_mode", "get_v_axis_stretch_mode");
|
||||||
ADD_GROUP("Modulate", "modulate_");
|
ADD_GROUP("Modulate", "modulate_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "modulate_color"), "set_modulate", "get_modulate");
|
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "modulate_color"), "set_modulate", "get_modulate");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "draw_center"), "set_draw_center", "get_draw_center");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "draw_center"), "set_draw_center", "get_draw_center");
|
||||||
|
|
||||||
|
BIND_CONSTANT(AXIS_STRETCH_MODE_STRETCH);
|
||||||
|
BIND_CONSTANT(AXIS_STRETCH_MODE_TILE);
|
||||||
|
BIND_CONSTANT(AXIS_STRETCH_MODE_TILE_FIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
StyleBoxTexture::StyleBoxTexture() {
|
StyleBoxTexture::StyleBoxTexture() {
|
||||||
|
@ -274,6 +309,9 @@ StyleBoxTexture::StyleBoxTexture() {
|
||||||
}
|
}
|
||||||
draw_center = true;
|
draw_center = true;
|
||||||
modulate = Color(1, 1, 1, 1);
|
modulate = Color(1, 1, 1, 1);
|
||||||
|
|
||||||
|
axis_h = AXIS_STRETCH_MODE_STRETCH;
|
||||||
|
axis_v = AXIS_STRETCH_MODE_STRETCH;
|
||||||
}
|
}
|
||||||
StyleBoxTexture::~StyleBoxTexture() {
|
StyleBoxTexture::~StyleBoxTexture() {
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,6 +77,14 @@ class StyleBoxTexture : public StyleBox {
|
||||||
|
|
||||||
GDCLASS(StyleBoxTexture, StyleBox);
|
GDCLASS(StyleBoxTexture, StyleBox);
|
||||||
|
|
||||||
|
public:
|
||||||
|
enum AxisStretchMode {
|
||||||
|
AXIS_STRETCH_MODE_STRETCH,
|
||||||
|
AXIS_STRETCH_MODE_TILE,
|
||||||
|
AXIS_STRETCH_MODE_TILE_FIT,
|
||||||
|
};
|
||||||
|
|
||||||
|
private:
|
||||||
float expand_margin[4];
|
float expand_margin[4];
|
||||||
float margin[4];
|
float margin[4];
|
||||||
Rect2 region_rect;
|
Rect2 region_rect;
|
||||||
|
@ -84,6 +92,8 @@ class StyleBoxTexture : public StyleBox {
|
||||||
Ref<Texture> normal_map;
|
Ref<Texture> normal_map;
|
||||||
bool draw_center;
|
bool draw_center;
|
||||||
Color modulate;
|
Color modulate;
|
||||||
|
AxisStretchMode axis_h;
|
||||||
|
AxisStretchMode axis_v;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual float get_style_margin(Margin p_margin) const;
|
virtual float get_style_margin(Margin p_margin) const;
|
||||||
|
@ -109,6 +119,12 @@ public:
|
||||||
bool get_draw_center() const;
|
bool get_draw_center() const;
|
||||||
virtual Size2 get_center_size() const;
|
virtual Size2 get_center_size() const;
|
||||||
|
|
||||||
|
void set_h_axis_stretch_mode(AxisStretchMode p_mode);
|
||||||
|
AxisStretchMode get_h_axis_stretch_mode() const;
|
||||||
|
|
||||||
|
void set_v_axis_stretch_mode(AxisStretchMode p_mode);
|
||||||
|
AxisStretchMode get_v_axis_stretch_mode() const;
|
||||||
|
|
||||||
void set_modulate(const Color &p_modulate);
|
void set_modulate(const Color &p_modulate);
|
||||||
Color get_modulate() const;
|
Color get_modulate() const;
|
||||||
|
|
||||||
|
@ -118,6 +134,8 @@ public:
|
||||||
~StyleBoxTexture();
|
~StyleBoxTexture();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
VARIANT_ENUM_CAST(StyleBoxTexture::AxisStretchMode)
|
||||||
|
|
||||||
class StyleBoxFlat : public StyleBox {
|
class StyleBoxFlat : public StyleBox {
|
||||||
|
|
||||||
GDCLASS(StyleBoxFlat, StyleBox);
|
GDCLASS(StyleBoxFlat, StyleBox);
|
||||||
|
|
Loading…
Reference in a new issue