Well, since nobody replied so far, I'll answer my own question…
I've jotted down some notes in the "dev.odt" doc (visible as PDF on project page).
The first part will be purely internal: an overhaul of the canvas.cpp to clean up the growing cruft,
change UI size references to tiles instead of cells, redo the whole enter/leave marker code,
and prepare the ground for addition of maze tile mask images, for arbitrarily-shaped mazes.
Also preparing for non-rim enter/leave points, drawing border walls differently, and optionally
showing a tile grid. The end result should be "Valentine for real", i.e. the 1.1-10 option
"-tweak mask-heart" was a hack, it should become just an example of generic mask possibilities
after all this.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Spent some time refactoring the code, in preparation of masking support. Cleaned out some old cruft, streamlined other bits. Added support for "moat" value (= exterior border wall thickness), no effect yet. Added guideline grid and new action to toggle it on/off. Still need to rework background painting, and add caching for it, and cache the masked cell grid before it goes into maze generation. Also, change end-point adjustment to use cell grid, not implicit rules.
In other words, halfway some major rewriting. Still have not tackled the loading, display and interpretation of mask files themselves.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Still in refactoring mode. Split controls into 2 groups: line thickness (moat, wall, path) below, rest above.
Considering a color button as 4th column in Path and Wall controls, but where to put background color button in that case?
Guide grid control is in (Ctrl-H, Edit>Guide) but not really useful now.
Cell grid initialization code largely rewritten, and cached now; user should not see difference, but code is faster/cleaner.
Still need to rewrite background painting, and add mask image handling - plus many many loose ends.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Masking from image works, yay! Need to add dialog for user to pick image, temporarily use option "-tweak mask-image" to pick "./mask.png" (hardcoded). Still need to do background tiles cache, change drawing it to bitmap, and more.
Looks like the 1.1-11 release may take a while to get out.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Put out 2nd, debian-only alpha ("pre2") for 1.1-11, now includes mask image selection by menu and by drag&drop.
Also added Edit>Copy, meaning "export to global clipboard as image data".
I want to delay 1.1-11 release until background cached paint is done, as combination of mask image and animated solution is going to be a performance killer on smaller systems otherwise.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ready to put out 1.1-12, bit more polish on the outline/mask support: auto-crop mask, and switch off with Edit>Outline toggle.
Also new actions to make creeping path go faster/slower.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Still no feedback, so continuing to fly by my own radar. :-)
Added minor fixes and additions for 1.1-12 through 1.1-15.
Now looking at direct, optimized SVG generation, since I'd like to delve a bit more into SVG itself. Also, using SMIL would give us an animated export format, without the encoding hassle of trying to output animated-GIF, MNG, or APNG.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
A little burnt out… been spending a lot of time on this project.
(1) Animated SVG/SMIL turns out to be less easy to do than I thought, since you cannot easily animate the partial display of a path. May find some work-around yet. Just have partial code for square, unmasked mazes, need a bunch more code to cover all tile shapes. The SVG output itself is relatively straightforward. Firefox turns out not to support animated SVG, which sucks for testing.
(2) Did some work on circle mazes (concentric rings), turns out to not be so easy to fit into the uniform tile model. Aborted coding on it till I have a better idea about how to handle this.
(3) The TODO list, open tracker list, and list of "XXX" comments in the code are getting very long, a bit daunting since I'm solo developer on this. Need to be pretty selective about what to tackle.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
QImage.load() chokes on certain image files, have not determined the exact conditions. The problem with analyzing this is partially that QImage.load() just returns a binary pass/fail result, not a more detailed report of *why* it failed.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Reached interim release 1.1-19 already, slowly adding a bit more polish to the same stuff - release 1.2 seems far away.
Will definitely switch before we get to release 1.1-99 though!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Added table in Export-as-file dialog to let user set tags when exporting as PNG, and set the "name" attribute for XBM/XPM.
Not sure why the latter is such a special case, and how to handle it.
The PNG tag table view is so-so: can't add extra fields yet, can't reset to default, no check on valid names & chars, can't populate from other file, can't set from CLI, not saved.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Adding mazegrams (Edit>Message) was a big pile of code, and although released in 1.1-20, it is not really ready. Still needs user control over font and fontsize, needs to deal with composite chars, work for large charsets, etc. Too fragile and clunky at the moment, but good enough to try out. May mature over the next 2-3 releases.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Mazegrams were fun to add, but each extra feature tends to leave ten new loose ends! The next releases are likely to just be clean-ups, refinements and finishing off half-done code.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Added font scaling for mazegrams, and an online help button leading to a new set of wiki pages.
Not sure how much more should go into 1.1-21.
I'm looking at completely revamping the endpoint marker graphics, but that may take a bit more time.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The new "Talk" menu for 1.1-22 will let you switch locale at run-time.
This is kind of hard to pull off at Qt has no built-in support for doing so.
The trick is that we extract most of the GUI state into AmazePrefs, then construct a completely new main GUI window with a new locale, and then nuke to old GUI. It has some state loss at the moment (e.g. message text font is not preserved), which we'll be working on.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
After the upheaval of putting in the locale bounce action and an NSIS installer, the next release (1.1-23) will have to be about going back to polish some of the rough ends left over from the past few releases. Things like persisting the message font selection, adding desktop shortcuts from NSIS, etc. Also some half-baked pieces: "imath" masking, SVG output and animation, invoking Blender directly for 3D export, and so on. Old stuff like fixing up VRML output, adding the EUPL text, completing more localization, avoiding the uncropped rim in image export…
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Slow progress, we're in the middle of a move so I've been spending more time handling a wood-and-bristle paint brush than writing code for ''paint()'' methods. Just added a bit more direct SVG export code, still experimental and incomplete.
Eagerly waiting for the localization work of the two new project members! Release 1.1-23 should add Romanian support and get corrected/extended German support.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
What would you like to see in a next release?
Well, since nobody replied so far, I'll answer my own question…
I've jotted down some notes in the "dev.odt" doc (visible as PDF on project page).
The first part will be purely internal: an overhaul of the canvas.cpp to clean up the growing cruft,
change UI size references to tiles instead of cells, redo the whole enter/leave marker code,
and prepare the ground for addition of maze tile mask images, for arbitrarily-shaped mazes.
Also preparing for non-rim enter/leave points, drawing border walls differently, and optionally
showing a tile grid. The end result should be "Valentine for real", i.e. the 1.1-10 option
"-tweak mask-heart" was a hack, it should become just an example of generic mask possibilities
after all this.
Spent some time refactoring the code, in preparation of masking support. Cleaned out some old cruft, streamlined other bits. Added support for "moat" value (= exterior border wall thickness), no effect yet. Added guideline grid and new action to toggle it on/off. Still need to rework background painting, and add caching for it, and cache the masked cell grid before it goes into maze generation. Also, change end-point adjustment to use cell grid, not implicit rules.
In other words, halfway some major rewriting. Still have not tackled the loading, display and interpretation of mask files themselves.
Still in refactoring mode. Split controls into 2 groups: line thickness (moat, wall, path) below, rest above.
Considering a color button as 4th column in Path and Wall controls, but where to put background color button in that case?
Guide grid control is in (Ctrl-H, Edit>Guide) but not really useful now.
Cell grid initialization code largely rewritten, and cached now; user should not see difference, but code is faster/cleaner.
Still need to rewrite background painting, and add mask image handling - plus many many loose ends.
Masking from image works, yay! Need to add dialog for user to pick image, temporarily use option "-tweak mask-image" to pick "./mask.png" (hardcoded). Still need to do background tiles cache, change drawing it to bitmap, and more.
Looks like the 1.1-11 release may take a while to get out.
Put out 2nd, debian-only alpha ("pre2") for 1.1-11, now includes mask image selection by menu and by drag&drop.
Also added Edit>Copy, meaning "export to global clipboard as image data".
I want to delay 1.1-11 release until background cached paint is done, as combination of mask image and animated solution is going to be a performance killer on smaller systems otherwise.
Put out 3rd, hopefully last alpha ("pre3") for 1.1-11, adds background cache, added findSolid() for optimization, removed old non-mask bg paint code.
Ready to put out 1.1-12, bit more polish on the outline/mask support: auto-crop mask, and switch off with Edit>Outline toggle.
Also new actions to make creeping path go faster/slower.
Still no feedback, so continuing to fly by my own radar. :-)
Added minor fixes and additions for 1.1-12 through 1.1-15.
Now looking at direct, optimized SVG generation, since I'd like to delve a bit more into SVG itself. Also, using SMIL would give us an animated export format, without the encoding hassle of trying to output animated-GIF, MNG, or APNG.
A little burnt out… been spending a lot of time on this project.
(1) Animated SVG/SMIL turns out to be less easy to do than I thought, since you cannot easily animate the partial display of a path. May find some work-around yet. Just have partial code for square, unmasked mazes, need a bunch more code to cover all tile shapes. The SVG output itself is relatively straightforward. Firefox turns out not to support animated SVG, which sucks for testing.
(2) Did some work on circle mazes (concentric rings), turns out to not be so easy to fit into the uniform tile model. Aborted coding on it till I have a better idea about how to handle this.
(3) The TODO list, open tracker list, and list of "XXX" comments in the code are getting very long, a bit daunting since I'm solo developer on this. Need to be pretty selective about what to tackle.
QImage.load() chokes on certain image files, have not determined the exact conditions. The problem with analyzing this is partially that QImage.load() just returns a binary pass/fail result, not a more detailed report of *why* it failed.
Reached interim release 1.1-19 already, slowly adding a bit more polish to the same stuff - release 1.2 seems far away.
Will definitely switch before we get to release 1.1-99 though!
Added table in Export-as-file dialog to let user set tags when exporting as PNG, and set the "name" attribute for XBM/XPM.
Not sure why the latter is such a special case, and how to handle it.
The PNG tag table view is so-so: can't add extra fields yet, can't reset to default, no check on valid names & chars, can't populate from other file, can't set from CLI, not saved.
Adding mazegrams (Edit>Message) was a big pile of code, and although released in 1.1-20, it is not really ready. Still needs user control over font and fontsize, needs to deal with composite chars, work for large charsets, etc. Too fragile and clunky at the moment, but good enough to try out. May mature over the next 2-3 releases.
Mazegrams were fun to add, but each extra feature tends to leave ten new loose ends! The next releases are likely to just be clean-ups, refinements and finishing off half-done code.
Added font scaling for mazegrams, and an online help button leading to a new set of wiki pages.
Not sure how much more should go into 1.1-21.
I'm looking at completely revamping the endpoint marker graphics, but that may take a bit more time.
The new "Talk" menu for 1.1-22 will let you switch locale at run-time.
This is kind of hard to pull off at Qt has no built-in support for doing so.
The trick is that we extract most of the GUI state into AmazePrefs, then construct a completely new main GUI window with a new locale, and then nuke to old GUI. It has some state loss at the moment (e.g. message text font is not preserved), which we'll be working on.
After the upheaval of putting in the locale bounce action and an NSIS installer, the next release (1.1-23) will have to be about going back to polish some of the rough ends left over from the past few releases. Things like persisting the message font selection, adding desktop shortcuts from NSIS, etc. Also some half-baked pieces: "imath" masking, SVG output and animation, invoking Blender directly for 3D export, and so on. Old stuff like fixing up VRML output, adding the EUPL text, completing more localization, avoiding the uncropped rim in image export…
Slow progress, we're in the middle of a move so I've been spending more time handling a wood-and-bristle paint brush than writing code for ''paint()'' methods. Just added a bit more direct SVG export code, still experimental and incomplete.
Eagerly waiting for the localization work of the two new project members! Release 1.1-23 should add Romanian support and get corrected/extended German support.