DelphiPackageManager / DPM

A Package Manager for Delphi
Apache License 2.0
96 stars 21 forks source link

Switching to SVG images for package icons. #12

Closed vincentparrett closed 3 years ago

vincentparrett commented 3 years ago

With the idea that the delphi IDE will eventually get HighDPI support, I'm planning to switch package icons from png's to SVG.

This shouldn't have any major impact as there are not many packages yet anyway and I'll fix up the icons for the existing ones.

Just putting this up here in case anyone else is creating packages.

andersmelander commented 3 years ago

As I'm interpreting the source you've completely removed support for PNG and replaced it with SVG support. Is this correct? While I think it's great that you've added SVG support I think it's a pity that you've removed PNG support to do so. As far as I can see it would have been relatively easy to support both via their common ancestor TGraphic and the TPicture file format registry.

vincentparrett commented 3 years ago

Having spent the last few months working on high dpi support in FinalBuilder (replacing a lot of images and still working on it) I want to avoid scaling issues in the future. Of course that assumes the delphi IDE will eventually support high dpi properly ;)

One of the things I liked about this change today, is removing vcl dependency from the command line application. Not a huge deal but any vcl dependency will block the application from running in a docker container due to how it statically links to all sorts of api's not present in windows server core.

andersmelander commented 3 years ago

I get that SVG solves some scaling issues in the GUI but surely avoiding VCL dependencies in the command line application is more of an architectural issue than a choice between SVG and PNG. I mean why would the command line even care what image format the GUI uses?

Anyway, it's your party. I just know this requirement to use SVG will bother me when I start using it.

vincentparrett commented 3 years ago

I'll have another look at it today, see if we can support both. The issue before was the repository classes were returning the png's as a TPngImage - which then linked in a bunch of vcl stuff. I will change this to a stream wrapper and deal with loading into png in the IDE code instead.

vincentparrett commented 3 years ago

OK, icons can now be svg or png. I abstracted the icons behind an interface in the repo classes, which works out better anyway.