mapeditor/tiled

Do you want to work on this issue?

You can request for a bounty in order to promote it!

tmxrasterizer as a git diff tool: override search path, and allow explicitly writing to stdout #3867

eevee posted onGitHub

Two little features would make it much easier to plug tmxrasterizer into git as a map differ:

  1. An argument for overriding the initial search path. The problem is, when git diffs two versions of the same file, it has to put at least one of them in a temporary file, and now it doesn't know where to find any of its tilesets. I know the original full path, but I have no way to provide it.

  2. Writing the image to stdout. This isn't strictly necessary since tempfiles are always an option, but it did surprise me a little that giving - as the outfile path literally created a file named - :)

With both, I believe you could diff a map against its committed version with a oneliner (in zsh, anyway):

compare -metric PHASH =(tmxrasterizer -s 0.25 -p $(dirname $1) $2 -) =(tmxrasterizer -s 0.25 -p $(dirname $1) $5 -) png:- | display -title "$1" -

i fudged something similar by dumping the original file to a tempfile in the source directory (highly dubious), and i think this is a cool start:

scaled-down view of a map with some changed areas highlighted in red

posted by eevee over 1 year ago

I quite like this idea! To implement this, the MapFormat interface would need to be extended with an option to read a map while using a custom search path:

https://github.com/mapeditor/tiled/blob/130b4f80a153bc928537ba8f5a045445ddb15ded/src/libtiled/mapformat.h#L73

The TMX format already has a function that can be used to implement such an interface:

https://github.com/mapeditor/tiled/blob/130b4f80a153bc928537ba8f5a045445ddb15ded/src/libtiled/mapreader.h#L68

The JsonMapFormat can also be quite trivially extended with such an overload. For other formats, I guess providing a default implementation that ignores the custom search path would be fine for now, so we don't need to change all the implementations.

Finally, we would add a Tiled::readMap overload that takes this search path, and we can use it in TmxRasterizer.

And I don't think it'll be an issue to get - to output a PNG to standard out, either. :-)

posted by bjorn over 1 year ago

Fund this Issue

$0.00
Funded
Only logged in users can fund an issue

Pull requests