Do you have any ideas on how you will save the canvas data? Vectors, raw image array, compression, etc?
I do intend for this to be used as a bitmap detail program with layer support. Perhaps then, they should be stored as bitmaps in memory then?
I would be comfortable with 8 active layers. Is it efficient to store them in an integer array, with two colors stored per element? 16 bits per pixel.
Each of the 8 layers of its own integer array? That's a ton of space to use.
You're saying to create an array of 320*240, and store it as a 16-bit bitmap. I think this would give you the perk of using GLOAD to load the image data (so long as the array is one-dimensional), which is significantly faster than any other means. Is there actually enough space to create 8 (320*240) 16-bit bitmaps?
One thing I'm thinking of is storing all layers and "undo's" in arrays until the memory is too low, and it will delete "undo's" until there is enough space to store a new layer or undo.
Btw i'm thinking of storing "undo's" as only the sections of the bitmaps changed before they were changed, so they may all be different sizes, stored along with their positions and dimensions.
I'm also thinking of doing some background compression of the undos so they might get smaller, but it probably won't help much in practice.
Going back on a suggestion MasterR3CORD had, perhaps semitransparent tools would be nice, as well as anti-aliasing.
When I increase an array's size continuously, I get an "Out of Memory" error around when a quarter of the "FREEMEM" is used. How do I handle that?