Drag drop URLs only parses images, and ignores files

This commit is contained in:
Yousef Khadadeh 2025-10-09 16:56:05 +03:00
parent 32a654b731
commit 27d334e234
10 changed files with 43 additions and 13 deletions

View file

@ -53,3 +53,7 @@ Vector2f FileResourceDisplay::get_dimensions() const {
float FileResourceDisplay::get_dimension_scale() const {
return 0.1f;
}
ResourceDisplay::Type FileResourceDisplay::get_type() const {
return ResourceDisplay::Type::FILE;
}

View file

@ -10,6 +10,7 @@ class FileResourceDisplay : public ResourceDisplay {
virtual void draw(SkCanvas* canvas, const DrawData& drawData, const SkRect& imRect) override;
virtual Vector2f get_dimensions() const override;
virtual float get_dimension_scale() const override;
virtual Type get_type() const override;
private:
std::string fileName;
};

View file

@ -87,3 +87,7 @@ Vector2f ImageResourceDisplay::get_dimensions() const {
float ImageResourceDisplay::get_dimension_scale() const {
return 0.3f;
}
ResourceDisplay::Type ImageResourceDisplay::get_type() const {
return ResourceDisplay::Type::IMAGE;
}

View file

@ -11,6 +11,7 @@ class ImageResourceDisplay : public ResourceDisplay {
virtual void draw(SkCanvas* canvas, const DrawData& drawData, const SkRect& imRect) override;
virtual Vector2f get_dimensions() const override;
virtual float get_dimension_scale() const override;
virtual Type get_type() const override;
private:
struct FrameData {
sk_sp<SkImage> data;

View file

@ -11,11 +11,17 @@ class ResourceManager;
class ResourceDisplay {
public:
enum class Type {
FILE,
IMAGE,
SVG
};
virtual void update(World& w) = 0;
virtual bool load(ResourceManager& rMan, const std::string& fileName, const std::string& fileData) = 0;
virtual bool update_draw() const = 0;
virtual void draw(SkCanvas* canvas, const DrawData& drawData, const SkRect& imRect) = 0;
virtual Vector2f get_dimensions() const = 0;
virtual float get_dimension_scale() const = 0;
virtual Type get_type() const = 0;
virtual ~ResourceDisplay();
};

View file

@ -50,3 +50,7 @@ Vector2f SvgResourceDisplay::get_dimensions() const {
float SvgResourceDisplay::get_dimension_scale() const {
return 0.3f;
}
ResourceDisplay::Type SvgResourceDisplay::get_type() const {
return ResourceDisplay::Type::SVG;
}

View file

@ -12,6 +12,7 @@ class SvgResourceDisplay : public ResourceDisplay {
virtual void draw(SkCanvas* canvas, const DrawData& drawData, const SkRect& imRect) override;
virtual Vector2f get_dimensions() const override;
virtual float get_dimension_scale() const override;
virtual Type get_type() const override;
private:
sk_sp<SkSVGDOM> svgDom;
bool mustUpdateDraw = false;