Browse Source

Fix Gradient, Color Picker BG, Fix CanvasItem::draw_texture_rect p_tile

Nathan Franke 4 years ago
parent
commit
051234e84e

+ 2 - 1
editor/editor_themes.cpp

@@ -1345,7 +1345,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
 	theme->set_color("folder_icon_modulate", "FileDialog", (dark_theme ? Color(1, 1, 1) : Color(4.25, 4.25, 4.25)).lerp(accent_color, 0.7));
 	theme->set_color("folder_icon_modulate", "FileDialog", (dark_theme ? Color(1, 1, 1) : Color(4.25, 4.25, 4.25)).lerp(accent_color, 0.7));
 	theme->set_color("files_disabled", "FileDialog", font_disabled_color);
 	theme->set_color("files_disabled", "FileDialog", font_disabled_color);
 
 
-	// color picker
+	// ColorPicker
 	theme->set_constant("margin", "ColorPicker", popup_margin_size);
 	theme->set_constant("margin", "ColorPicker", popup_margin_size);
 	theme->set_constant("sv_width", "ColorPicker", 256 * EDSCALE);
 	theme->set_constant("sv_width", "ColorPicker", 256 * EDSCALE);
 	theme->set_constant("sv_height", "ColorPicker", 256 * EDSCALE);
 	theme->set_constant("sv_height", "ColorPicker", 256 * EDSCALE);
@@ -1358,6 +1358,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
 	theme->set_icon("bar_arrow", "ColorPicker", theme->get_icon("ColorPickerBarArrow", "EditorIcons"));
 	theme->set_icon("bar_arrow", "ColorPicker", theme->get_icon("ColorPickerBarArrow", "EditorIcons"));
 	theme->set_icon("picker_cursor", "ColorPicker", theme->get_icon("PickerCursor", "EditorIcons"));
 	theme->set_icon("picker_cursor", "ColorPicker", theme->get_icon("PickerCursor", "EditorIcons"));
 
 
+	// ColorPickerButton
 	theme->set_icon("bg", "ColorPickerButton", theme->get_icon("GuiMiniCheckerboard", "EditorIcons"));
 	theme->set_icon("bg", "ColorPickerButton", theme->get_icon("GuiMiniCheckerboard", "EditorIcons"));
 
 
 	// Information on 3D viewport
 	// Information on 3D viewport

+ 2 - 26
scene/gui/gradient_edit.cpp

@@ -49,9 +49,6 @@ GradientEdit::GradientEdit() {
 	popup->add_child(picker);
 	popup->add_child(picker);
 
 
 	add_child(popup);
 	add_child(popup);
-
-	checker = Ref<ImageTexture>(memnew(ImageTexture));
-	Ref<Image> img = memnew(Image(checker_bg_png));
 }
 }
 
 
 int GradientEdit::_get_point_from_pos(int x) {
 int GradientEdit::_get_point_from_pos(int x) {
@@ -311,7 +308,7 @@ void GradientEdit::_notification(int p_what) {
 		int total_w = get_size().width - get_size().height - SPACING;
 		int total_w = get_size().width - get_size().height - SPACING;
 
 
 		//Draw checker pattern for ramp
 		//Draw checker pattern for ramp
-		_draw_checker(0, 0, total_w, h);
+		draw_texture_rect(get_theme_icon("GuiMiniCheckerboard", "EditorIcons"), Rect2(0, 0, total_w, h), true);
 
 
 		//Draw color ramp
 		//Draw color ramp
 		Gradient::Point prev;
 		Gradient::Point prev;
@@ -378,7 +375,7 @@ void GradientEdit::_notification(int p_what) {
 		}
 		}
 
 
 		//Draw "button" for color selector
 		//Draw "button" for color selector
-		_draw_checker(total_w + SPACING, 0, h, h);
+		draw_texture_rect(get_theme_icon("GuiMiniCheckerboard", "EditorIcons"), Rect2(total_w + SPACING, 0, h, h), true);
 		if (grabbed != -1) {
 		if (grabbed != -1) {
 			//Draw with selection color
 			//Draw with selection color
 			draw_rect(Rect2(total_w + SPACING, 0, h, h), points[grabbed].color);
 			draw_rect(Rect2(total_w + SPACING, 0, h, h), points[grabbed].color);
@@ -405,27 +402,6 @@ void GradientEdit::_notification(int p_what) {
 	}
 	}
 }
 }
 
 
-void GradientEdit::_draw_checker(int x, int y, int w, int h) {
-	//Draw it with polygon to insert UVs for scale
-	Vector<Vector2> backPoints;
-	backPoints.push_back(Vector2(x, y));
-	backPoints.push_back(Vector2(x, y + h));
-	backPoints.push_back(Vector2(x + w, y + h));
-	backPoints.push_back(Vector2(x + w, y));
-	Vector<Color> colorPoints;
-	colorPoints.push_back(Color(1, 1, 1, 1));
-	colorPoints.push_back(Color(1, 1, 1, 1));
-	colorPoints.push_back(Color(1, 1, 1, 1));
-	colorPoints.push_back(Color(1, 1, 1, 1));
-	Vector<Vector2> uvPoints;
-	//Draw checker pattern pixel-perfect and scale it by 2.
-	uvPoints.push_back(Vector2(x, y));
-	uvPoints.push_back(Vector2(x, y + h * .5f / checker->get_height()));
-	uvPoints.push_back(Vector2(x + w * .5f / checker->get_width(), y + h * .5f / checker->get_height()));
-	uvPoints.push_back(Vector2(x + w * .5f / checker->get_width(), y));
-	draw_polygon(backPoints, colorPoints, uvPoints, checker);
-}
-
 Size2 GradientEdit::get_minimum_size() const {
 Size2 GradientEdit::get_minimum_size() const {
 	return Vector2(0, 16);
 	return Vector2(0, 16);
 }
 }

+ 0 - 2
scene/gui/gradient_edit.h

@@ -42,8 +42,6 @@ class GradientEdit : public Control {
 	PopupPanel *popup;
 	PopupPanel *popup;
 	ColorPicker *picker;
 	ColorPicker *picker;
 
 
-	Ref<ImageTexture> checker;
-
 	bool grabbing = false;
 	bool grabbing = false;
 	int grabbed = -1;
 	int grabbed = -1;
 	Vector<Gradient::Point> points;
 	Vector<Gradient::Point> points;

+ 2 - 0
scene/resources/default_theme/default_theme.cpp

@@ -863,6 +863,8 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
 	theme->set_icon("bar_arrow", "ColorPicker", make_icon(bar_arrow_png));
 	theme->set_icon("bar_arrow", "ColorPicker", make_icon(bar_arrow_png));
 	theme->set_icon("picker_cursor", "ColorPicker", make_icon(picker_cursor_png));
 	theme->set_icon("picker_cursor", "ColorPicker", make_icon(picker_cursor_png));
 
 
+	// ColorPickerButton
+
 	theme->set_icon("bg", "ColorPickerButton", make_icon(mini_checkerboard_png));
 	theme->set_icon("bg", "ColorPickerButton", make_icon(mini_checkerboard_png));
 
 
 	// TooltipPanel
 	// TooltipPanel

File diff suppressed because it is too large
+ 0 - 0
scene/resources/default_theme/theme_data.h


+ 4 - 0
servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp

@@ -480,6 +480,10 @@ void RendererCanvasRenderRD::_render_item(RD::DrawListID p_draw_list, RID p_rend
 			case Item::Command::TYPE_RECT: {
 			case Item::Command::TYPE_RECT: {
 				const Item::CommandRect *rect = static_cast<const Item::CommandRect *>(c);
 				const Item::CommandRect *rect = static_cast<const Item::CommandRect *>(c);
 
 
+				if (rect->flags & CANVAS_RECT_TILE) {
+					current_repeat = RenderingServer::CanvasItemTextureRepeat::CANVAS_ITEM_TEXTURE_REPEAT_ENABLED;
+				}
+
 				//bind pipeline
 				//bind pipeline
 				{
 				{
 					RID pipeline = pipeline_variants->variants[light_mode][PIPELINE_VARIANT_QUAD].get_render_pipeline(RD::INVALID_ID, p_framebuffer_format);
 					RID pipeline = pipeline_variants->variants[light_mode][PIPELINE_VARIANT_QUAD].get_render_pipeline(RD::INVALID_ID, p_framebuffer_format);

Some files were not shown because too many files changed in this diff