Open marcespie opened 3 years ago
Yes. The Resynthesizer only understands RGBA 8 bit.
At a minimum, I should document that fact.
Then the plugin should preflight that given images are in that precision, and not crash.
Then possibly it should convert precisions. I don't know enough about the subject of colorspaces to know what might be lost. I have briefly thought about whether the algorithm would work better in another colorspace anyway, i.e. always convert to HSV and the algorithm works in that space. I may not be using the right terminology, that's my ignorance of the subject.
I suspect there are plenty of plugins in the same situation. Plugins dating from the days when RGBA 8 bit was good enough. AFAIK it still is good enough for the vast majority of users. I would summarize the big picture as: a few graphics professionals have pushed GIMP development in the direction of their needs, and plugins have not kept up with the changes to GIMP. Its not a new situation, when I first got involved with the Resynthesizer, it was because it had not kept up with changes to GIMP.
Ah but that's not actually true! I don't know if it's just a happy accident, but for instance "healing selection" has zero issues with 32 bit floating point mode.
It only seems to cause a crash with the clipboard itself being a non-standard mode, and using "feel with pattern seamless".
there's probably a test/parameter missing somewhere, but it's not as bad as you think.
Thanks. Oops, I am not reading carefully enough.
Your original statement seems to say that the plugin crashed in gimp_pattern_select_button_callback(), which is part of libgimp, not code of the plugin. So maybe there is a bug there. I will first search GIMP issues for a prior report of an issue with Pattern select, and then try to reproduce it to get a full stack trace to see exactly where and why it crashes.
Quite reproducible:
I've trace it down to
2 0x0000042f6147e7da in gimp_pattern_select_button_callback (
438 priv->mask_data = g_memdup (mask_data, width height bytes);
but no further... hinting that the size would be wrong. (width=113, height=88,bytes=16 in my case... it's on a picture with an alpha channel. where 16 sounds right.
seems to crash at various places when not in 8 bit integer...