summaryrefslogtreecommitdiff
path: root/editor/plugins
diff options
context:
space:
mode:
authorHendrik Brucker <hendrik.brucker@mail.de>2022-04-21 00:08:35 +0200
committerHendrik Brucker <hendrik.brucker@mail.de>2022-04-21 00:08:35 +0200
commita93834c819a9d482a388909279190c84780375ed (patch)
tree4b4528e2368f32e46b0d0b0ab7b9fa164002144a /editor/plugins
parentc77bbde7aeb84e8e7f0646a766d498f2d4632c59 (diff)
Add gradient resource preview generator
Diffstat (limited to 'editor/plugins')
-rw-r--r--editor/plugins/editor_preview_plugins.cpp31
-rw-r--r--editor/plugins/editor_preview_plugins.h11
2 files changed, 42 insertions, 0 deletions
diff --git a/editor/plugins/editor_preview_plugins.cpp b/editor/plugins/editor_preview_plugins.cpp
index b8556220d2..a160ca463b 100644
--- a/editor/plugins/editor_preview_plugins.cpp
+++ b/editor/plugins/editor_preview_plugins.cpp
@@ -904,3 +904,34 @@ EditorFontPreviewPlugin::~EditorFontPreviewPlugin() {
RS::get_singleton()->free(canvas);
RS::get_singleton()->free(viewport);
}
+
+////////////////////////////////////////////////////////////////////////////
+
+static const real_t GRADIENT_PREVIEW_TEXTURE_SCALE_FACTOR = 4.0;
+
+bool EditorGradientPreviewPlugin::handles(const String &p_type) const {
+ return ClassDB::is_parent_class(p_type, "Gradient");
+}
+
+bool EditorGradientPreviewPlugin::generate_small_preview_automatically() const {
+ return true;
+}
+
+Ref<Texture2D> EditorGradientPreviewPlugin::generate(const RES &p_from, const Size2 &p_size) const {
+ Ref<Gradient> gradient = p_from;
+ if (gradient.is_valid()) {
+ Ref<GradientTexture1D> ptex;
+ ptex.instantiate();
+ ptex->set_width(p_size.width * GRADIENT_PREVIEW_TEXTURE_SCALE_FACTOR * EDSCALE);
+ ptex->set_gradient(gradient);
+
+ Ref<ImageTexture> itex;
+ itex.instantiate();
+ itex->create_from_image(ptex->get_image());
+ return itex;
+ }
+ return Ref<Texture2D>();
+}
+
+EditorGradientPreviewPlugin::EditorGradientPreviewPlugin() {
+}
diff --git a/editor/plugins/editor_preview_plugins.h b/editor/plugins/editor_preview_plugins.h
index 803f03f17e..73eb90dd86 100644
--- a/editor/plugins/editor_preview_plugins.h
+++ b/editor/plugins/editor_preview_plugins.h
@@ -182,4 +182,15 @@ public:
EditorTileMapPatternPreviewPlugin();
~EditorTileMapPatternPreviewPlugin();
};
+
+class EditorGradientPreviewPlugin : public EditorResourcePreviewGenerator {
+ GDCLASS(EditorGradientPreviewPlugin, EditorResourcePreviewGenerator);
+
+public:
+ virtual bool handles(const String &p_type) const override;
+ virtual bool generate_small_preview_automatically() const override;
+ virtual Ref<Texture2D> generate(const RES &p_from, const Size2 &p_size) const override;
+
+ EditorGradientPreviewPlugin();
+};
#endif // EDITORPREVIEWPLUGINS_H