|
| 1 | +--- |
| 2 | +title: nip4 progress |
| 3 | +--- |
| 4 | + |
| 5 | +libvips.org OpenCollective has generously given me a year of funding [to |
| 6 | +complete nip4](https://github.com/jcupitt/nip4). This is an update of [the |
| 7 | +libvips GUI, nip2](https://github.com/libvips/nip2), to the gtk4 toolkit, |
| 8 | +and to the vips8 API. |
| 9 | + |
| 10 | +nip2 was written between about 1997 and 2003 and depends on a lot of |
| 11 | +frameworks from the period. These are becoming extremely elderly now, |
| 12 | +and nip2 is becoming difficult to maintain. It's also looking increasingly |
| 13 | +old-fashioned. |
| 14 | + |
| 15 | + |
| 16 | + |
| 17 | +nip4 is hoping to fix this. It has the following goals: |
| 18 | + |
| 19 | +1. Update from the gtk2 GUI toolkit to gtk4, the current version. This is a |
| 20 | +lot of work -- the drawing model is completely different, and there are many, |
| 21 | +many changes in best practice. As a test, I updated vipsdisp to gtk4. The |
| 22 | +image display widget in this viewer is the thing that will display images |
| 23 | +in nip4. |
| 24 | + |
| 25 | +2. Switch to the vips8 API. We rewrote libvips to make vips8 between about |
| 26 | +2010 and 2015, but nip2 was obviously stuck on the old vips7 API. nip4 |
| 27 | +has removed all the old vips7 code and redesigned for vips8. It's the last |
| 28 | +large-scale user of vips7, as far as I know, so completing nip4 will let |
| 29 | +us build libvips with deprecated code removed by default. |
| 30 | + |
| 31 | +3. Complete backwards compatibility. nip4 aims to be able to run the whole |
| 32 | +of the nip2 test suite unmodified. |
| 33 | + |
| 34 | +4. Prettier, simpler, faster, modernised. |
| 35 | + |
| 36 | +nip4 is now loading the first 5 test workspaces correctly. The big change |
| 37 | +from the UI point of view is full animation for interactions. Everything |
| 38 | +slides around as you work: |
| 39 | + |
| 40 | +<iframe width="560" height="315" src="https://www.youtube.com/embed/Z4TpOLh2Lno?si=5F-SEp3wS37SYBDv" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> |
| 41 | + |
| 42 | +Next steps: |
| 43 | + |
| 44 | +1. Get all the old nip2 test workspaces loading. This will involve |
| 45 | +implementing a few more workspace widgets. Plotting is probably the most work. |
| 46 | + |
| 47 | +2. Finish drag - drop and copy - paste. It's only half-there right now. |
| 48 | + |
| 49 | +3. Add the toolkit menu and browser. This will probably be a bar down the left. |
| 50 | + |
| 51 | +4. Perhaps implement a cut down and polished version of the programming |
| 52 | +and debugging interface from nip2. |
| 53 | + |
| 54 | +5. UI for per-workspace definitions needs to go in. |
| 55 | + |
| 56 | +6. The image processing menus are all currently designed around vips7. A |
| 57 | +new set of vips8 menus could be a useful simplification. |
| 58 | + |
| 59 | +7. Do windows and mac builds. We have win and mac builds for vipsdisp |
| 60 | +done already. |
| 61 | + |
| 62 | +And I think that would be enough for a release, hopefully in the first half |
| 63 | +of 2025. |
| 64 | + |
0 commit comments