- GIMP clone for Ti-83+ monochrome calculators
- 13 Aug 2015 05:32:17 am
- Last edited by Nik on 12 Aug 2016 05:42:23 am; edited 11 times in total
I decided to post my mind here... I am planning to make a picture editing program for Ti-83+'es.
Yes, I know there are tons of them on ticalc.org, but they are all low quality and don't offer the functions I need. I want to make the standard tools (Lines/Boxes/Triangles/Circles/Dots, filled/inverted/outline/...) and in addition to that layers and area selection (like in Photoshop and GIMP). I also want to add a flood fill tool, but every attempt till now either was too slow taking about ten minutes to fill half of the screen (painter algorithm) or lagged me out with a memory overflow (standard recursive method).
I thought about the algorithms too. The standard tools will be easy to implement. The layers and area selection could be a hassle but I thought of a method in theory, without testing yet:
The layers will be made of several pictures layed one on top of the other making it flexible movable and easy to edit.
The area selection is more complicated:
I will make a new layer for a "mask". It will be basically just a white pic with the selected area being filled black (Floodfill algorithm necessary.). Now one can edit whatever he wants and when he is done I am "and-ing" those pics and I get the result, only the marked part being edited and all the other kept like they were.
As this can't be done efficiently in basic I will use xLib for graphics and, thanks to Xeda for your awesome libraries, Copyprog which allows me to modificate any data type and Xtravar which gives me acess to hacked vars (pics in that case).
I plan on storing the not finished projects in the Archive by appvars, this can be done with simply copying the binary data of pictures and putting it one after another and then simply getting the last few bytes for misc. Information. I will do this by modulo division (I first get the number of pictures and then I get the rest amount of bytes, being less than 767, and know it is the misc. data section).
This will be done all in basic with these three libs, one of them being more a tool than a lib. I haven't started yet but tell me, what do you think, should I better start from the harder algorithms or from the beginning of my program?
Any help appreciated, thanks!
Edit:
I added the todo and features list at the front page now.
General features planned/in progress/implemented:
Image processing algorithms planned/in progress/implemented:
EDIT2:
After a long time being abandoned, me and PT_ are picking this project up again! Here is the point where it continues.
I am adding a new progress log, as we considerably changed the structure and fully started over with the project:
General features, sorted by importance vs. state:
Algorithms to be done:
- Reserved, no progress log yet -
Yes, I know there are tons of them on ticalc.org, but they are all low quality and don't offer the functions I need. I want to make the standard tools (Lines/Boxes/Triangles/Circles/Dots, filled/inverted/outline/...) and in addition to that layers and area selection (like in Photoshop and GIMP). I also want to add a flood fill tool, but every attempt till now either was too slow taking about ten minutes to fill half of the screen (painter algorithm) or lagged me out with a memory overflow (standard recursive method).
I thought about the algorithms too. The standard tools will be easy to implement. The layers and area selection could be a hassle but I thought of a method in theory, without testing yet:
The layers will be made of several pictures layed one on top of the other making it flexible movable and easy to edit.
The area selection is more complicated:
I will make a new layer for a "mask". It will be basically just a white pic with the selected area being filled black (Floodfill algorithm necessary.). Now one can edit whatever he wants and when he is done I am "and-ing" those pics and I get the result, only the marked part being edited and all the other kept like they were.
As this can't be done efficiently in basic I will use xLib for graphics and, thanks to Xeda for your awesome libraries, Copyprog which allows me to modificate any data type and Xtravar which gives me acess to hacked vars (pics in that case).
I plan on storing the not finished projects in the Archive by appvars, this can be done with simply copying the binary data of pictures and putting it one after another and then simply getting the last few bytes for misc. Information. I will do this by modulo division (I first get the number of pictures and then I get the rest amount of bytes, being less than 767, and know it is the misc. data section).
This will be done all in basic with these three libs, one of them being more a tool than a lib. I haven't started yet but tell me, what do you think, should I better start from the harder algorithms or from the beginning of my program?
Any help appreciated, thanks!
Edit:
General features planned/in progress/implemented:
- Full GUI (Always under development)
- Own Filesystem (Under development at the moment)
- Basic shape drawing tools (Nothing done at all, but it's absolutely no problem)
- Installation program (Nothing done at all)
- File managing (Under development)
- Simple API system (Nothing done at all, and de facto I haven't any clue what to do)
Image processing algorithms planned/in progress/implemented:
- Bezièr Curves Rendering (Done and optimized, thanks lirtosiast!)
- Flood fill (Done and optimized, implemeted the ScanLine algorithm, and thanks Runer112!)
- Masking (Area selecting) algorithm (Done, implemented an own algorithm)
- Layering algorithm (Nothing done at all, but I know what to do)
- Dithering brushes (Nothing done at all, but I have an idea)
- Stamp tool (It was requested, and nothing done yet, but I have an idea)
- Scaling algorithm (Implementing Pixel Replication, what we've done did not work correctly. But thanks PT_!)
EDIT2:
After a long time being abandoned, me and PT_ are picking this project up again! Here is the point where it continues.
I am adding a new progress log, as we considerably changed the structure and fully started over with the project:
General features, sorted by importance vs. state:
- GUI - Started on it, some stuff done, well planned through so far. (Critical, some results ready)
- Installer - Taken over by PT_, planned from start to end by now. (Important, fully planned through)
- Main program - Kinda done, will probably be fully reworked, though. (Critical, working version made)
- File managing - Nothing done at all. (Important, nothing done)
- Own file format - Working format from first program attempt. (Important, working version made)
- As many features as possible toggleable - algorithm packages need to be implemented, GUI animations may be turned off. (Unimportant, almost nothing done)
Simple API system - Automatically exists with the structure I am planning. (Unimportant, no efforts needed)- We noticed the API system would have to be able to handle it, if the program's files get changed by the user, which would be a huge effort. Decided to cancel the feature.
Algorithms to be done:
- Reserved, no progress log yet -