martinfouilleul
ed45d88cfd
[win32] add file type filters to open/save dialogs
2023-05-23 16:43:57 +02:00
martinfouilleul
49de9d0290
[win32] added basic mp_save_dialogue() implementation using COM IFileSaveDialog
2023-05-23 16:04:49 +02:00
martinfouilleul
e24500e18d
[win32] added basic mp_open_dialog() implementation using COM IFileOpenDialog
2023-05-23 15:59:29 +02:00
martinfouilleul
a54c8b4f4b
[win32] alert popup using TaskDialogIndirect(): automatically handles icons, dpi, and text/buttons layout (but requires Vista or higher)
2023-05-23 14:50:31 +02:00
martinfouilleul
f1d8dd1ca9
[win32] crappy message box with custom button text. Not DPI aware, doesn't show message box image (eg exclamation/information mark), and has very crude layout...
2023-05-23 12:55:57 +02:00
martinfouilleul
a6a37c874e
[win32] adding prototypes for open/save/alert dialogs in win32_app.c
2023-05-17 16:50:07 +02:00
martinfouilleul
2a01cba026
[ui] Fix ui scrolling
2023-05-17 15:48:25 +02:00
martinfouilleul
2bec7a633a
[win32] reflected changes to canvas surface interface on GL backend. But implementation still uses the (slower) Loop-Blinn + triangle fan method.
2023-05-16 18:06:22 +02:00
martinfouilleul
52538248d9
[win32, wip] compile and run simple window example
2023-05-12 16:46:13 +02:00
martinfouilleul
62b8b3323e
[win32, wip] Remove input state from win32_app code
2023-05-12 11:42:35 +02:00
martinfouilleul
2bf6a4f007
Fixed void pointer arithmetic in hash.c to avoid pedantic error on msvc
2023-05-12 11:13:55 +02:00
Martin Fouilleul
9b29e681fe
Merge commit 'e426319' into orca (integrate fix to mg_image_size(), which doesn't need a current canvas anymore)
2023-05-10 11:20:30 +02:00
Martin Fouilleul
e426319723
Fix mg_image_size() (doesn't need a current canvas anymore)
2023-05-10 11:18:36 +02:00
Martin Fouilleul
3f1447f729
Always put arena pointer in mem_arena_marker, to avoid possible DEBUG value discrepancy between lib and client code
2023-05-09 18:29:32 +02:00
Martin Fouilleul
1ab1d70df2
Fix image data not storing surface handle in mg_image_create()
2023-05-08 13:01:45 +02:00
Martin Fouilleul
39e96e0739
Added xxhash64 hash function and use that instead of x64-specific aes hash, until we get an arm version
2023-04-29 19:25:40 +02:00
Martin Fouilleul
b27dc615d1
Finish separating graphics_common and graphics_surface + add platform_math, so that we can compile graphics_common to wasm in orca
2023-04-26 14:56:02 +02:00
Martin Fouilleul
ca1caf8537
splitting graphics_surface and graphics_common in order to isolate surface dispatch stuff from orca apps
2023-04-25 22:15:56 +02:00
Martin Fouilleul
346979a21a
[canvas] change surface/canvas APIs to treat canvas a 'just another kind of surface', and split canvas implementation (managed by surface) from canvas _command buffer_ and implicit context (represented by mg_canvas)
2023-04-25 19:13:15 +02:00
Martin Fouilleul
32d7d91893
[wip] changed ui_begin_frame() to take explicit canvas size
2023-04-25 15:10:05 +02:00
Martin Fouilleul
3769b70753
[wip] changing backend enum to api enum, and adding canvas api in here
2023-04-25 14:54:52 +02:00
Martin Fouilleul
7c273f494b
[ui, logging]
...
- Changed workings of ui_panel() and scrolling to make it easier for usage code to control scrolling.
- Renamed logging functions
2023-04-20 15:40:00 +02:00
Martin Fouilleul
bb6b68ad73
[event system] allocate events and additional payload (e.g. file paths) directly in ring buffer, and copy them to user-supplied arena in mp_next_event()
2023-04-19 16:16:36 +02:00
Martin Fouilleul
ab150f94f2
separating input state from app, so that it can be used in different threads that main thread. E.g. ui context uses its own input state that can be fed events in a second thread
2023-04-19 11:28:20 +02:00
Martin Fouilleul
f1d6e0f15c
remove unnecessary platform headers from utf8 files
2023-04-18 18:42:48 +02:00
Martin Fouilleul
ff4dddc0b7
moved assert to platform layer
2023-04-18 18:36:06 +02:00
Martin Fouilleul
794f47b141
abstracting logging for orca
2023-04-18 18:05:54 +02:00
Martin Fouilleul
86a16d3775
modifications to log system to support orca env where stdio is not defined
2023-04-18 14:33:27 +02:00
Martin Fouilleul
0d6fb197fb
adding vargs and asserts for orca
2023-04-18 10:43:52 +02:00
Martin Fouilleul
e9e9ab68c2
base memory allocator and chunked arenas for orca
2023-04-17 18:12:21 +02:00
Martin Fouilleul
f36e144bc0
start integrating milepost components to orca
2023-04-17 10:55:19 +02:00
Martin Fouilleul
c347e10577
Put all dependency libraries and shaders in bin directory
2023-04-12 16:12:26 +02:00
Martin Fouilleul
f35e91a38c
[mtl renderer] fixed clipping
2023-04-11 14:51:58 +02:00
Martin Fouilleul
b7f5b84123
[mtl canvas] remove old metal canvas stuff
2023-04-11 11:19:29 +02:00
Martin Fouilleul
03b5802529
[canvas] replace simple shape helpers with normal paths operations instead of having dedicated primitives for rounded rects/ellipses and so on
2023-04-11 11:16:23 +02:00
Martin Fouilleul
c6e89c1869
[wip] adding smooth live-resizing example
2023-04-11 10:50:14 +02:00
Martin Fouilleul
551d5e084e
[mtl renderer] re-introduced texturing
2023-04-09 19:24:32 +02:00
Martin Fouilleul
ee3e55dadd
[mtl renderer] fix msaa sample positions
2023-04-08 12:11:38 +02:00
Martin Fouilleul
effd8f1dd0
[mtl canvas] use same ccw test for testing against diagonal and testing against hull
2023-04-08 10:04:17 +02:00
Martin Fouilleul
2b7aadf180
[mtl canvas] multi-sampling
2023-04-07 18:18:50 +02:00
Martin Fouilleul
65b5a4b52a
[mtl renderer] Fixed curve slicing which used matrix operation and re-parameterization, which could create gaps in path. Now use blossoms, which ensure endpoints of subcurves match
2023-04-07 17:17:55 +02:00
Martin Fouilleul
d1fab449bc
[mtl canvas] Fixed loop implicit matrix
2023-04-07 10:15:37 +02:00
Martin Fouilleul
c4e866d9d4
[mtl canvas] Fix shader contents scaling
2023-04-05 10:31:50 +02:00
Martin Fouilleul
4c4f27066b
[mtl renderer] re-introduced end caps
2023-04-05 10:25:48 +02:00
Martin Fouilleul
e999af6bd3
[mtl canvas] make diagonal checks inclusive in mtl_side_of_segment()
2023-04-05 10:19:25 +02:00
Martin Fouilleul
53946a5710
[mtl canvas] fix end joint not generated for paths with only 2 elements
2023-04-05 09:52:12 +02:00
Martin Fouilleul
2484cdf7b3
[mtl canvas, wip] re-introducing joints
2023-04-04 20:35:48 +02:00
Martin Fouilleul
8d7fdf3b1a
[mtl canvas, wip] Fixing inclusive/exclusive bound checks during curve side tests / shortcut / rasterization
2023-04-04 19:02:53 +02:00
Martin Fouilleul
9322db8201
[mtl canvas, wip] cubic bézier implicitization
2023-04-01 19:46:35 +02:00
Martin Fouilleul
767841f9c6
[mtl canvas, wip] Fixed wrong backdrop when segment ended right on tile's bottom boundary
2023-03-30 16:41:41 +02:00
Martin Fouilleul
93998852bb
[mtl canvas, wip] Re-introducing quadratics implicitization
2023-03-30 15:58:46 +02:00
Martin Fouilleul
eee158ff85
[mtl canvas] tmp fix of clear color (revisit one we re-introduce texturing)
2023-03-29 16:30:16 +02:00
Martin Fouilleul
8af4e4eddc
[mtl canvas, wip] Collate queues in a per-tile op list and prune occluded shapes
2023-03-29 16:21:28 +02:00
Martin Fouilleul
a6c53649bd
[mtl canvas, wip] implemented backprop
2023-03-29 14:27:05 +02:00
Martin Fouilleul
c4415aaeea
[mtl canvas, wip] binning segments to tile queues
2023-03-28 17:58:23 +02:00
Martin Fouilleul
c71bc5be98
[mtl canvas] segment setup pass
2023-03-28 15:10:05 +02:00
Martin Fouilleul
f6a992e5f4
[mtl canvas] very first draft of new canvas backend based on edge-counting instead of triangle overlap
2023-03-28 13:09:48 +02:00
Martin Fouilleul
c20758f6a2
[mtl canvas] cull tiles queues outside viewport
2023-03-22 17:28:11 +01:00
Martin Fouilleul
faf024a63a
[mtl canvas] reorganizing the loop in render kernel to allow different commands
2023-03-22 16:40:43 +01:00
Martin Fouilleul
e9ecd9d521
[mtl canvas] Fix artifacts on tiger that was due to epsilon comparison for cubics equation in draw kernel. Removed that (now do <= 0), but then we need to weed out false negatives for solid triangles. So we compute if the triangle is solid in the triangle kernel and store it in the mg_triangle_data struct for now.
2023-03-22 15:02:04 +01:00
Martin Fouilleul
b0be21795e
[mtl canvas] prevent tiles entirely covered by textured shapes to be treated as solid (as the texture could be non-uniformly transparent)
2023-03-22 12:02:13 +01:00
Martin Fouilleul
26f669f3c1
[mtl canvas] adding a color command for fully covered, solid color tiles. This is not much of an improvement for now because the tile array just got bigger, but maybe we can use the same scheme and compact it into an int
2023-03-22 10:46:56 +01:00
Martin Fouilleul
90b00979ed
[mtl canvas] detecting full covered/uncovered tiles
2023-03-22 09:23:22 +01:00
Martin Fouilleul
0d8bc824a2
[mtl canvas] bucket triangles into per-shape tile queues, then gather into tile arrays. This somewhat improves perf for perf_text test and avoids an awful degradation due to sorting in tiger test (tiger now runs at ~20fps, which is still much slower than it could be, but the triangle coverage method we're using just incurs too much cross product computations...)
2023-03-21 10:22:37 +01:00
Martin Fouilleul
a4ef58f2d8
[mtl canvas] Tiling per rectangles into per-shape tile queues (linked lists of triangle indices) to avoid sorting
2023-03-20 16:46:12 +01:00
Martin Fouilleul
11113f597c
[mtl canvas, exp] try tiling per tile and avoiding sorting pass (worse on simple shapes and text, but degrades slower with complex scenes (eg tiger). Not great though)
2023-03-20 10:08:17 +01:00
Martin Fouilleul
92f4909d63
[mtl canvas] testing the metal canvas rendering the ghostscript tiger, and acknowledging it's painfully slow
2023-03-18 14:35:51 +01:00
Martin Fouilleul
1d36088302
[mtl canvas] render to an intermediate texture and acquire the drawable and blit to it only at the end of all compute passes
2023-03-16 10:25:56 +01:00
Martin Fouilleul
f14f397c99
[mtl surface] don't re-acquire drawable if there's already a valid one acquired
2023-03-15 18:51:50 +01:00
Martin Fouilleul
bd8e31c535
[mtl canvas] triple buffer vertex/index/shape buffers
2023-03-15 17:48:39 +01:00
Martin Fouilleul
0c74e997ae
[mtl surface] fix crash on exit when metal GPU frame capture is enabled. Apparently, if we release resources (on exit) before all GPU work is completed, libMetalCapture crashes on bad access. To work around that, in mg_mtl_surface_destroy(), we enqueue a last (empty) command buffer and call waitUntilCompleted on it, to ensure all previous command buffers are also completed
2023-03-15 13:02:18 +01:00
Martin Fouilleul
5ce53001e2
[canvas, mtl] clear resets command count and stores clear color. Ccanvas' backend begin proc now takes a clearColor parameter and clears final surface to that color before drawing any batch
2023-03-15 11:09:42 +01:00
Martin Fouilleul
98bac9744f
[mtl canvas] rearranged bounding box computations in tiling shader
2023-03-15 10:19:04 +01:00
Martin Fouilleul
f2cb96826c
[mtl canvas] fix bias computation for clockwise triangles
2023-03-15 10:04:51 +01:00
Martin Fouilleul
5c1a220f1f
[mtl canvas] don't reorder point to make clockwise triangles. Instead, store triangle orientation in triangle struct and multiply orientation in raster test
2023-03-14 15:08:39 +01:00
Martin Fouilleul
221fcbeb6b
[mtl canvas] store uv transform and color in triangle data (don't pass vertex or shape buffer to draw kernel)
2023-03-14 12:20:39 +01:00
Martin Fouilleul
c9a5b3d52d
[mtl canvas] rearranged triangle data for better packing
2023-03-14 09:42:17 +01:00
Martin Fouilleul
1b3583cc6d
[mtl canvas] remove box array, cache box in triangle struct
2023-03-14 09:42:12 +01:00
Martin Fouilleul
6536f4ac64
[mtl canvas] fused boxing and tiling, cache cubics in triangle data
2023-03-14 09:40:11 +01:00
Martin Fouilleul
ee4a667258
[mtl canvas] trying fused boxing/tiling passes
2023-03-14 09:25:20 +01:00
Martin Fouilleul
fd5a4d4cd8
[wip] trying to simplify metal shader
2023-03-14 09:25:09 +01:00
Martin Fouilleul
cee294d8ad
[mtl canvas] fixed setBuffer that was being called on the wrong encoder
2023-03-14 09:20:51 +01:00
Martin Fouilleul
e9d64166a3
[mtl canvas] fixed bug where tiles left and below screen where all bucketed to the first row/column (same as gl version, see 4a8c77f02
)
2023-03-13 16:53:12 +01:00
Martin Fouilleul
13f025ab21
[mtl canvas] convert triangle rasterization to fixed point
2023-03-13 15:18:18 +01:00
Martin Fouilleul
7c58145524
[mtl surface] Allow setting swap interval to 0. Note however that vsync needs to be turned off at the OS level for that to work smoothly. Otherwise, we get jittery frame rate with stalls when we run off of drawables (I suppose? should investigate some more).
...
This can be done with Quart Debugger in Additional Tools for XCode.
2023-03-13 12:21:33 +01:00
Martin Fouilleul
716bdc53d4
[ui] draw drop-down button with correct roundness
2023-03-13 10:53:21 +01:00
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
Martin Fouilleul
b907578eb4
Fix clipping one pixel short
2023-03-11 16:55:30 +01:00
Martin Fouilleul
009fe8e3e8
[ui, styling]Fix order of adding after rules to running list in rule-matching pass
2023-03-11 16:43:58 +01:00
Martin Fouilleul
bf92a6f307
Merge branch 'master' of ssh://git.forkingpaths.dev/martinfouilleul/milepost
2023-03-11 16:27:52 +01:00
Martin Fouilleul
da7e0f402b
[ui, layout] Add UI_FLAG_ALLOW_OVERFLOW_X/Y
2023-03-11 16:27:21 +01:00
martinfouilleul
137a75540b
[win32] implemented string clipboard functions
2023-03-09 19:44:55 +01:00
martinfouilleul
359e08b0a8
[ui] set text box cursor to the same color as text
2023-03-09 18:09:04 +01:00
martinfouilleul
cae8666561
[ui, win32] Fixed char input and modifier keys
2023-03-09 18:03:27 +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
d2f4f5083b
[ui, layout] solving layout constraints
2023-03-09 13:13:13 +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
d3a8a651e5
[ui, styling] make layout and floating properties part of styling system
2023-03-07 10:33:22 +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
1af132352a
[ui, textbox] Scroll text inside text box to always show edit cursor.
2023-03-05 16:35:55 +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
e95efe85e8
[wip, input system] Fixed bug on macOS, where keyUp events are not received when the command modifier key is down and makes a meaningful combination with the pressed key (note this is normal macOS event handling behaviour, but we still want all events to arrive to track key states).
...
Fixed by overloading the sendEvent method of our derived NSApplication class. There we check if modifier is down and send the event.
Note glfw solves that by adding a block handler for the keyUp event with addLocalMonitorForEventsMatchingMask.
2023-03-04 19:24:30 +01:00
Martin Fouilleul
c04e8639ab
[wip, ui] re-integrating UI subsystem and completing text box
2023-03-03 20:09:44 +01:00
Martin Fouilleul
d21e737733
[wip] re-introducing UI subsystem
2023-03-03 17:13:03 +01:00
martinfouilleul
653ddec978
[win32 surface sharing] win32 surface sharing using window reparenting
2023-03-03 12:41:09 +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
1dfc5dd684
[graphics, win32] applying changes to surface backend API
2023-03-01 17:41:39 +01:00
Martin Fouilleul
43d413dbbc
[surface] graphics surface sharing API + osx implementation
2023-03-01 16:15:36 +01:00
Martin Fouilleul
28f5af32fa
[graphics] Allocate canvases and fonts from graphics subsystem's arena
2023-03-01 11:37:33 +01:00
Martin Fouilleul
6bf989564d
[graphics] use a single handle arena for all graphics subsystem handles
2023-02-28 20:33:55 +01:00
Martin Fouilleul
5a19c03ad6
[canvas] removing unused old atlasing api
2023-02-28 18:47:45 +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
9cb4aedbc5
[canvas, gl] use pre-multiplied alpha in draw shader and when compositing batches
2023-02-27 19:50:18 +01:00
martinfouilleul
8f834fa1a5
[wip, canvas, gl] implementing basic image API
2023-02-27 19:25:41 +01:00
Martin Fouilleul
30aa6a4a48
[canvas] Put primitive's transform in the attributes struct. When rendering, set current transform at the beginning of mg_next_shape(). (This avoid using an additional prevTransform matrix to correctly setup uvTransform when mg_finalize_shape() at the beginning of mg_next_shape())
2023-02-27 15:01:44 +01:00
Martin Fouilleul
d195fb1f61
[canvas, mtl backend] Compute each layer with pre-multiplied alpha, starting from transparent color. Composite them to surface with premultiplied alpha too.
2023-02-27 14:24:59 +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
e66932e624
[canvas] Set command attributes to canvas->attributes by default in mg_push_command()
2023-02-25 15:35:24 +01:00
Martin Fouilleul
193afb61fd
[canvas] move canvas structs decl from graphics_internal.h to graphics.c, keep only surface/canvas backend interface stuff in graphics_internal.h
2023-02-25 15:23:15 +01:00
Martin Fouilleul
074b17b743
[canvas] Set transform matrix as part of primitive and don't replay push/pop during render
2023-02-25 14:20:07 +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
bb106b717f
Build user-space bounding box of shape in mg_push_vertex() _before_ transforming vertices
2023-02-24 19:20:05 +01:00
Martin Fouilleul
11c25bf001
Make transform implicit in mg_push_vertex()
2023-02-24 19:11:03 +01:00
Martin Fouilleul
5be019d166
[canvas, metal] compute uv coords in shader using uvTransformed computed in canvas backend, using shape bounding box, image dimension, source and dest regions
2023-02-24 18:50:46 +01:00