Rendering a source image into its final form for preview is computationally expensive and though you can just redo everything over, this naive solution wastes both CPU and user time doing the same work over again.
What's the solution?
For every piece of source content, and for each render type (fill, stroke, text, vectorize), we place this content grouped under its hash identified content group, with a repeatable hash of the settings JSON used to generate it. We can now compare settings JSON data and see if its changed based on the hash, and if it has, the sub-object can be deleted and new content rendered into its place.
Implementation
[ ] Make a hash data attached to each render target within the render grouping for the item.
[ ] With hash against each settings item on the final, (plus width/height), should prevent re-renders when needed
[ ] Allow moving of stage item (bounds change, but w/h don't) to move rendered group.
[ ] Raster: Get resolution size down working for big images (calculate DPI from bounds scale).
[ ] Pass cncserver specific tmp dir over as part of filler/vectorizer utils so we don't need that in implementors.
What's the problem?
Rendering a source image into its final form for preview is computationally expensive and though you can just redo everything over, this naive solution wastes both CPU and user time doing the same work over again.
What's the solution?
For every piece of source content, and for each render type (fill, stroke, text, vectorize), we place this content grouped under its hash identified content group, with a repeatable hash of the settings JSON used to generate it. We can now compare settings JSON data and see if its changed based on the hash, and if it has, the sub-object can be deleted and new content rendered into its place.
Implementation