Skip to content

Commit

Permalink
Docs: updates
Browse files Browse the repository at this point in the history
- new front image.
- updated todo and readme as needed.
  • Loading branch information
diegoiast committed Jan 8, 2024
1 parent 3a1cda8 commit 23c5b9c
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 41 deletions.
9 changes: 4 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ This is SVision2. Another GUI library. A continuation of *SVision for MSDOS*: [S

![License](https://img.shields.io/github/license/elcuco/svision2.svg) <img src="https://img.shields.io/github/languages/top/elcuco/svision2.svg" alt="Languages"/> <img src="https://img.shields.io/github/repo-size/elcuco/svision2.svg" alt="Repository size"/> <img src="https://img.shields.io/github/commit-activity/y/elcuco/svision2" alt="Activity"/>

![SVision2 - on Linux](sv2.png "Written in C++, Linux/Windows/OSX (?) support")
[See full source for demo - src/main.cxx](src/main.cxx)
[![SVision2 - on Linux](sv2.png "Written in C++, Linux/Windows/OSX (?) support")]((src/main.cxx))

## Goals

Expand Down Expand Up @@ -32,9 +33,7 @@ This is SVision2. Another GUI library. A continuation of *SVision for MSDOS*: [S
constructor). Always uses `int foo = 0; Point location = {}`. So you can look for `=` and
know when a member is assigned by default.
* *WIP*: Gitlab mirror.
* *TODO*: Github actions to verifying, and building code on merge.
* *TODO*: For font management - use Freetype.
* *TODO*: For text displaying - use Harfbuzz.
* *TODO*: For text layout - use Harfbuzz.
* *TODO*: This library should be a C++20 module.
* *TODO*: This library should be on Conan, vcpkg, etc for easy consuming.

Expand Down Expand Up @@ -64,7 +63,7 @@ buy me a Mac, contact me. This is planned - and should be easy to port.

The design of this toolkit is trivial: everything is a raster image. No GPU.
Each widget has its own buffer it writes to it, and it gets painted
into the parents
into the parents.

1. `src/platform-foo.{h,cpp}`: Implement a new `struct PlatformFOO : Platform`:
1. `open_window()` returns your platform window (see bellow).
Expand Down
72 changes: 36 additions & 36 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ Random list of things to be implemented on this library
2. Click on empty areas - step up/down
3. Drag the barrel - change value (needs mouse drag support?)
4. Scroll wheel support
7. Layout system
1. Horizontal/Vertical layout
7. Layout system
1. ~~Horizontal/Vertical layout~~
2. <https://www.qt.io/blog/responsive-layouts-in-qt>?
3. Other layouts?
8. Menus
Expand All @@ -44,60 +44,60 @@ Random list of things to be implemented on this library
1. We need to be able to select part of the text
2. When part of the text is selected - work uppon it (delete/replace text)
3. Properly display the selected area.

2. Infrastructure
1. Mouse drag
2. Mouse wheel support
3. ~~`widget::add<Widget>.. (constructor )` (is this possible at all?)~~
4. All *getters* should return a reference
5. All *callbacks* should have a reference to the widget as first argument
6. Override functions for the library, callbacks for the consumers of the API
7. Theme:
1. Mouse wheel support
1. ~~`widget::add<Widget>.. (constructor )` (is this possible at all?)~~
1. All *getters* should return a reference
1. All *callbacks* should have a reference to the widget as first argument
1. Override functions for the library, callbacks for the consumers of the API
1. Theme:
1. `Widget::on_theme_changed()` - modify implicit widget sizes, color
2. ~~Rip of color form theme, into color style.~~
3. ~~Make the frame part of a widget theme - so you can choose frame per widget~~
3. Add GTK based theme
4. Add Aqua (old OSX) theme
5. Add OSX theme
6. Add support for a 'transparent color' (currently 0 paints black)
7. Finish dark color support
8. Missing API: when to use dark themes
8. MacOS support
9. MSDOS support (for gaming!?)
10. Multitouch (?)
11. High DPI: drawing functions will be on a wrapper - that will
1. ~~Rip of color form theme, into color style.~~
1. ~~Make the frame part of a widget theme - so you can choose frame per widget~~
1. Add GTK based theme
1. Add Aqua (old OSX) theme
1. Add OSX theme
1. Add support for a 'transparent color' (currently 0 paints black)
1. Finish dark color support
1. Missing API: when to use dark themes
1. MacOS support
1. MSDOS support (for gaming!?)
1. Multitouch (?)
1. High DPI: drawing functions will be on a wrapper - that will
multiply values before caling good-old-raster-code
12. Rounded corner rectangle drawing
13. Better bitmap support
1. Rounded corner rectangle drawing
1. Better bitmap support
1. Alpha blending drawing (blend pixel done).
2. At least transparent color - non-drawing.
14. ~~Use freetype for better text~~
15. Use Harfbuzz for better rendering
16. Wayland native support (see <https://gaultier.github.io/blog/wayland_from_scratch.html>)
17. Connan recipe - for consumers of this library
18. VCPKG - both internally, and for consumers of this library
19. Rust integration? How can I use this in Rust?
20. Clipboard integration
21. Printing support
22. Move all code into a namespace. `namespace svision;`, `auto a = std::make_shared<svision::Widget>(pos,size);`
23. Move all public includes into `/inc/svision`, and
1. ~~Use freetype for better text~~
1. Use Harfbuzz for better rendering
1. Wayland native support (see <https://gaultier.github.io/blog/wayland_from_scratch.html>)
1. Connan recipe - for consumers of this library
1. VCPKG - both internally, and for consumers of this library
1. Rust integration? How can I use this in Rust?
1. Clipboard integration
1. Printing support
1. Move all code into a namespace. `namespace svision;`, `auto a = std::make_shared<svision::Widget>(pos,size);`
1. Move all public includes into `/inc/svision`, and
in the cmake - make it public api (will trigger
a refactor in all code - `#include <svision/widget>`)
24. i18n
1. i18n
1. We need to have a `_()`/`tr()` macro which will ask for the translated string at runtime
2. Default implementation will return the same string
3. We need a way to extract messages into a translation templeate
4. We eed to be able to merge a translation template, into a translation list
5. Do we have avialable formats?
25. Minimum size
1. Minimum size
1. Widgets need to have a minimum size
2. Layouts need to have a minimum size (computing all sub items)
3. Windows need to have a minimum size
* problem: setting minimum size is trivial. Getting it on windows, is
not. Might need to cache the value, and the function return might
not be always read from the OS.
4. Do we need a maximum?
26. Relayout on first display on X11
1. Relayout on first display on X11
3. 3rd party porting
1. Code to load images: I would like to be able to choose which decoders to use:
(libpng, libjpg) vs, <https://libspng.org/>, and stb (<https://github.com/nothings/stb>)
Expand Down
Binary file modified sv2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 23c5b9c

Please sign in to comment.