Martin Fouilleul
5455c2a52b
[ui] Allow styling overlay boxes (e.g. menu and drop-down list panels) locally.
...
- Added an UI_FLAG_OVERLAY flag. When we make a box with that flag set, it is added the an overlayList in the ui context.
- After styling and static size pass, we reparent boxes in the overlayList to an overlay node just below the root node.
- Layout and drawing works uniformly on the whole tree. Overlay boxes get drawn last and steal mouse hover from boxes underneath them.
2023-03-13 10:26:39 +01:00
Martin Fouilleul
9e41d2b6fc
[ui] first version of select popup menu
2023-03-12 19:06:09 +01:00
Martin Fouilleul
09951afa53
[ui] added ui_checkbox() helper
2023-03-11 19:06:05 +01:00
martinfouilleul
9accf4c666
[ui, win32]
...
- change coord system of gl canvas to match ui
- change mouse coordinate system to match ui
- fix mouse delta
2023-03-09 17:38:41 +01:00
Martin Fouilleul
c7d5cf113e
[ui] reintroducing tooltip
2023-03-09 16:08:42 +01:00
Martin Fouilleul
c362751c23
[ui] menus widgets first draft
2023-03-09 16:02:46 +01:00
Martin Fouilleul
feca7d1026
[ui] moved ui_panel() into ui.c
2023-03-09 14:27:46 +01:00
Martin Fouilleul
56874c99d6
[ui, layout] layout constraint solving, first draft
2023-03-09 12:36:38 +01:00
Martin Fouilleul
a569454df5
[ui, wip] scrolling / scrolling panels
2023-03-08 19:53:28 +01:00
Martin Fouilleul
873d4ab6db
[ui, canvas]
...
- Allow querying the size of the canvas's underlying surface
- Set size of ui root to canvas' size
2023-03-08 15:03:35 +01:00
Martin Fouilleul
1212d714d5
[platform/canvas]
...
- Changed canvas coordinate system to match UI coord system (origin at top left, y axis down)
- Changed mouse coordinate system to match UI and canvas
- No need to pass width/height to ui_begin_frame() anymore
2023-03-08 13:19:18 +01:00
Martin Fouilleul
7b2ef080e8
[util, formatting] shorten list loop names to for_list_xxx
2023-03-08 12:03:33 +01:00
Martin Fouilleul
3682605f97
[util, formatting] changed list api to snakecase for consistency with the rest of the codebase
2023-03-08 12:00:10 +01:00
Martin Fouilleul
bfc19665ce
[util]
...
- shorten str8_lit macro to STR8
- use strlen() in STR8 and remove str8_from_cstring(). Usage with string literal seem to always be optimized by compile-time constant, so there's little need for a confusing macro that only works with literals and breaks with pointers.
- replaced str8_unbox() with str8_lp/str8_ip
2023-03-08 11:40:40 +01:00
Martin Fouilleul
f07f56948d
[ui] shorten ui styling api names
2023-03-08 11:13:32 +01:00
Martin Fouilleul
8b06cb31ba
[ui, styling]
...
- Put all styling calls _before_ the styled box.
- Renamed full pattern matching API to ui_style_match_next_before/after
- Helper to style next box only (ui_style_next())
2023-03-08 11:09:28 +01:00
Martin Fouilleul
c551135933
[ui] remove the need to pass a default style to ui_frame()
2023-03-07 19:44:22 +01:00
Martin Fouilleul
2466241b1e
[ui, styling] finished first pass on core layout/styling system
2023-03-07 19:27:01 +01:00
Martin Fouilleul
8032c7340b
[ui, styling] revisiting layout/sizing
2023-03-07 19:06:04 +01:00
Martin Fouilleul
7b10a99a8c
[ui, styling] First draft of rule-based styling to replace old stack-based system
2023-03-06 19:33:01 +01:00
Martin Fouilleul
b52a35c753
[ui, textbox] Fixed selection background rectangle
2023-03-05 17:03:00 +01:00
Martin Fouilleul
592f4cdecd
end of line renormalization
2023-03-05 16:05:43 +01:00
Martin Fouilleul
4359bdaa3c
[ui, textbox] position cursor at mouse position / extend selection on shift + mouse press or drag
2023-03-05 15:59:57 +01:00
Martin Fouilleul
731e5b1ae8
[surface] pull mp_layer into the generic mg_surface_data struct, out of each backend-specific implementation
2023-03-03 11:50:12 +01:00
martinfouilleul
ac00cc9def
[wip, win32 surface sharing] simplifyin the surface sharing API
2023-03-02 19:21:39 +01:00
martinfouilleul
ee87976429
[win32 surface sharing] hacky proof of concept
2023-03-02 18:24:15 +01:00
martinfouilleul
3ada8ece9a
[wip, win32 surface sharing] in surface sharing example, terminate child process when parent exits
2023-03-02 12:23:10 +01:00
martinfouilleul
e58ae3ef52
[surface sharing] first draft for win32 using window reparenting
2023-03-02 09:54:12 +01:00
martinfouilleul
2560ddd5b4
[win32] adding simple IPC to test delegated surface
2023-03-01 18:58:59 +01:00
Martin Fouilleul
43d413dbbc
[surface] graphics surface sharing API + osx implementation
2023-03-01 16:15:36 +01:00
Martin Fouilleul
3615775168
[canvas] decompose image atlas API into simple rect atlas API + image atlas helpers. This avoids creating a bunch of new types/handles, and exposes the underlying image/sourceRegion so that user code can freely use these for more complex scenarios (eg drawing only a sub-region of an atlased image, or using an atlas image for arbitrary path filling)
2023-02-28 16:54:39 +01:00
Martin Fouilleul
d4bceba7e9
[canvas] basic image atlas API
2023-02-28 13:16:36 +01:00
martinfouilleul
ac6a5db209
[canvas, gl] Checked batching/transparency
2023-02-27 19:39:26 +01:00
martinfouilleul
8f834fa1a5
[wip, canvas, gl] implementing basic image API
2023-02-27 19:25:41 +01:00
Martin Fouilleul
5e5f8ac5e7
adding image test/example
2023-02-27 15:43:41 +01:00
Martin Fouilleul
9ed630fc55
[canvas]
...
- Clear final surface to clear color, and enable blending layers onto it
- Fixed Batching bug where we were writing to vertex/shape buffers while the previous batch is using them
- Fixed bug where uvTransform uses transform of next shape instead of that of shape being finalized
2023-02-27 11:56:04 +01:00
Martin Fouilleul
b24de5d969
[canvas] Allow setting image source region
2023-02-25 12:59:49 +01:00
Martin Fouilleul
50569a1427
Allow setting texture on arbitrary path fills
2023-02-24 23:06:39 +01:00
Martin Fouilleul
4333ed02b0
[canvas] remove image draw commands, replace with rect/rounded rects + image source
2023-02-24 22:59:33 +01:00
Martin Fouilleul
1b62ec568c
[canvas, mtl backend] Handle image rotation
2023-02-24 20:40:16 +01:00
Martin Fouilleul
fd4c4e7be3
[canvas] simple image API
2023-02-24 12:01:00 +01:00
martinfouilleul
665c63c3d0
[win32 build/link]
...
- Build milepost as a dynamic library
- Add import/export directives to public API symbols
- Change example build scripts accordingly
2023-02-21 18:43:30 +01:00
Martin Fouilleul
3b26c92c85
[osx build/linking]
...
- Remove the need for client apps to explicitly link with all dependent libs and frameworks
- Don't require redistributing libEGL/libGLES if not used, by linking them with '-weak-l' option
- Change examples build scripts accordingly
2023-02-21 17:09:26 +01:00
martinfouilleul
2dccfa5547
[win32 surfaces] Backing win32 surfaces with child window and implementing frame/hidding control
2023-02-20 18:34:29 +01:00
Martin Fouilleul
4306d0a01c
back osx surfaces by CALayer
2023-02-20 16:49:44 +01:00
Martin Fouilleul
2232b647ed
reintroduced GLES backend to osx
2023-02-20 11:05:01 +01:00
martinfouilleul
333d3e9f9c
[gles, wip] reintroducing egl surface (for win32 at first)
2023-02-17 18:56:16 +01:00
martinfouilleul
80ea8db687
[surface/canvas cleanup]
...
- Make build-time and runtime backend selection a bit easier
- Reorganized backend-specific files with slightly more coherent naming scheme
2023-02-10 16:56:10 +01:00
martinfouilleul
f54f639db5
properly destroying windows and fonts
2023-02-10 12:05:52 +01:00
martinfouilleul
08d3521b61
[canvas/surface cleanup]
...
- properly destroy gl canvas backend
- properly destroy gl surface
2023-02-09 18:40:42 +01:00
martinfouilleul
af7cbae1fa
[canvas cleanup] cleanup canvas resources on creation failure
2023-02-09 18:18:12 +01:00
martinfouilleul
4a8c77f023
- Move and Zoom perf_text example with the mouse
...
- Reverted to using 4 bits of subpixel precision and computing cross products with 32 bits integers, for perf reasons
- Fixed some confusion in tile array size vs number of elements (could still clean-up naming a bit though)
- Fixed bug where triangles on the left or below canvas boundaries where bucketted to the first colum/row of tiles
- Fixed bug in mouse button message handling (was always sending press on left button)
2023-02-09 13:09:41 +01:00
martinfouilleul
833767d6e2
move text with the mouse in perf_text example
2023-02-09 09:50:53 +01:00
martinfouilleul
21c604104f
fix mp_app_get_resource_path()
2023-02-08 20:40:48 +01:00
martinfouilleul
3f58b2ac3d
glsl canvas shader: do cross products in 64 bits fixed point to avoid overflow
2023-02-08 20:36:39 +01:00
martinfouilleul
7cf4c3d925
opengl surface/renderer: set surface scaling according to dpi of first monitor. Use that dpi to scale backing texture of canvas renderer. Note: changing monitor isn't handled yet!
2023-02-08 18:22:54 +01:00
martinfouilleul
7fbc4ba270
canvas renderer: Use clip rects to cull tiles/pixels in tiling and drawing passes
2023-02-08 12:59:31 +01:00
martinfouilleul
e6e674ee04
Allow setting surface swap interval in opengl surface
2023-02-08 11:49:00 +01:00
Martin Fouilleul
afaa95fe07
applied canvas changes to metal backend
2023-02-08 10:42:21 +01:00
martinfouilleul
2419ab7889
opengl canvas renderer: splitting vertex data and shape data
2023-02-07 18:59:51 +01:00
martinfouilleul
f0bc88c4fb
gl canvas renderer with buffer re-specification
2023-02-07 17:00:59 +01:00
martinfouilleul
5788cdbcda
Desktop opengl 4.3 canvas
2023-02-07 13:24:14 +01:00
martinfouilleul
5754fc1ad2
using temporary buffer to build canvas verex data and use glBufferData with exact number of vertices to submit buffer to gpu
2023-02-06 16:14:43 +01:00
martinfouilleul
fd836c00dd
canvas renderer: parallel tiling pass and sorting pass
2023-02-05 21:03:16 +01:00
martinfouilleul
e59f2b152b
simple gles tiled renderer
2023-02-03 18:44:28 +01:00
martinfouilleul
8faf588bee
Added text rendering in win_canvas test app and confirm it's slow as is...
2023-02-02 20:36:03 +01:00
Martin Fouilleul
9cadc2f23f
added notes on bindless textures indexing
2023-02-02 17:02:55 +01:00
martinfouilleul
28e2a3648e
Multisampling in gles canvas shader
2023-02-02 13:34:06 +01:00
martinfouilleul
f73241e4a6
set background clear color correctly
2023-02-02 12:08:04 +01:00
martinfouilleul
0796b2cbcd
Switched to fixed point in gles triangle rasterization, and fixed wrong offset curve check collapsing the internal control points
2023-02-02 11:40:22 +01:00
martinfouilleul
e0300e9e3c
Fixed indexing in gles_canvas_fragment shaders and fixed native keys buffer
2023-02-01 16:23:51 +01:00
martinfouilleul
c5ae556f22
[wip] win32 gles surface using angle
2023-01-29 01:04:24 +01:00
Martin Fouilleul
bd7e1a15f1
- Conflating mp_views and surfaces
...
- Implicit canvas context in canvas API
- GLES window surface on mac
2023-01-28 17:24:43 +01:00
Martin Fouilleul
9bf62d2218
re-working graphics surfaces
2022-12-26 18:33:31 +01:00
Martin Fouilleul
db5b4966e9
- Restructure osx version to use mp_app_internal.h/mp_app.c
...
- test new run loop structure on osx
2022-12-24 15:33:32 +01:00
martinfouilleul
72338b1a25
Extracted commonalities from platform specific app backends
2022-12-23 20:46:42 +01:00
martinfouilleul
30bd704af2
win32 opengl loader nonsense
2022-12-22 18:24:43 +01:00
martinfouilleul
a696c2ba2b
Added platform detection macros and atomic/thread_local abstraction
2022-12-22 15:29:07 +01:00
martinfouilleul
c57e16db5a
[win32 port] Hello triangle in OpenGL 4.3
2022-12-21 19:43:31 +01:00
martinfouilleul
2421871c3e
windows port initial commit: simple window with GL 4.3 context
2022-12-21 12:03:55 +01:00
Martin Fouilleul
094b0efc33
text box
2022-08-15 10:20:29 +02:00
Martin Fouilleul
39cfa35bfd
initial commit
2022-08-14 18:19:40 +02:00