Commit graph

295 commits

Author SHA1 Message Date
Roland Fredenhagen
641f4bf52d
Add MakeWidgetList
Adds functions to convert `impl IntoIterator<Item = impl MakeWidget>`
directly into `Stack`, `Layers`, etc.
2024-02-05 23:17:33 +01:00
Jonathan Johnson
0e5976de10
Dynamic::try_lock
Plus other minor changes.
2024-01-26 18:13:42 -08:00
Jonathan Johnson
3f8fed65c3
Added Chinese ListStyles
This may seem like a lot of options, but here's the reasoning:

- The CSS spec offers four variations: Simplified/Traditional and
  Formal/Informal. This spec defines a character set for all for
  variations, and it also associates rules for omitting digits in the
  informal variants.
- The chinese_number crate does not implement a variant that includes
  the tens digit, as required by the cSS spec for the formal variants.

To be able to provide the enumerations that the CSS spec offers *and* to
provide the variations that the chinese_number crate supports, I've aded
8 total list styles for selecting a specific Chinese variation.

Technically nominals supports even more options, but the myriad counting
scale coveres u128::MAX and seems to be the most common counting style.
2024-01-18 15:06:54 -08:00
Jonathan Johnson
e2e5085b1f
Added List widget 2024-01-18 13:29:50 -08:00
Jonathan Johnson
76a42e2788
Updated to wgpu 0.19.0
Most of the changes were figures-related. Go figure.
2024-01-18 06:37:29 -08:00
Jonathan Johnson
570cfc6d94
Missing docs 2024-01-13 06:10:36 -08:00
Jonathan Johnson
c2bd9911ca
Started a List widget
a la HTML's <ul> tag.
2024-01-13 06:04:41 -08:00
Jonathan Johnson
1b97b39857
Label for CowString 2024-01-13 06:02:22 -08:00
Jonathan Johnson
0c36abf28e
Remving debugs 2024-01-13 06:02:10 -08:00
Jonathan Johnson
9bd78c648b
Switcher now unmounts
This isn't quite perfect, as a Switcher shared with multiple windows
will only unmount in one window.
2024-01-13 05:55:07 -08:00
Jonathan Johnson
02e90e48c6
Image aspect scaling now requests sizes 2024-01-13 05:54:51 -08:00
Jonathan Johnson
c242009cb8
Fixing set_font_family to not be sticky 2024-01-13 05:52:27 -08:00
Jonathan Johnson
f8cb7e7f32
Added the Delimiter widget 2024-01-12 15:44:18 -08:00
Jonathan Johnson
cc207fbf8c
Added optional plotters integration
Closes #133

The real work was done in Kludgine.
2024-01-11 20:52:40 -08:00
Jonathan Johnson
e2f8e04670
Fixing infintite loop in ColorSchemeBuilder
`generate_error` can technically fail to generate a contrasting color if
the primary color is desaturated too much. This is beacuse we never
increase the saturation.

This change makes the color scheme builder stop one iteration shy of a
full circle.
2024-01-11 14:58:27 -08:00
Jonathan Johnson
bd13003cbb
Finishing sentence in docs 2024-01-11 09:53:03 -08:00
Jonathan Johnson
956e4109f9
Added InvalidationBatch 2024-01-11 09:47:51 -08:00
Jonathan Johnson
64ad120be6
Clipping the checkerboard pattern 2024-01-11 07:17:38 -08:00
Jonathan Johnson
d701e179ae
Fixing ComponentPicker<Alpha>'s loupe coloring
The previous fix was a fix in contrast_between. However, I then
convinced myself that the selected color was changing when it wasn't
purely because the alpha picker utilizes a checkeboard pattern, and I
was specifically testing grayscale values.

Aka, I was reproducing the "different grays" optical illusion using the
loupe outline color and driving myself crazy trying to figure out what
my code was doing, when in reality it wasn't doing anything.

The real fix? Don't ask for contrast between two similar colors.
OutlineColor and TextColor are both meant to be contrasting colors to
SurfaceColor, which is the background color. The loupe color really
should have switched between any surface-type color and any
foreground-type color, but it instead was asking for two different
foreground colors.
2024-01-11 07:10:45 -08:00
Jonathan Johnson
6958c6863c
Fixing Color::contrast_between
While working on the color pickers, I was noticing the contrast_between
choices seem a little off.
2024-01-11 07:09:17 -08:00
Jonathan Johnson
8a274df730
Added more color pickers
This set of changes is making me think of adding Rgb/Rgba types and
having our own color enum.
2024-01-10 13:27:12 -08:00
Jonathan Johnson
246352fed2
Added HslPicker 2024-01-10 08:17:09 -08:00
Jonathan Johnson
6ad6cca32d
Children renamed to WidgetList
Plus more work on the user's guide, which inspired the rename.
2024-01-09 13:26:14 -08:00
Jonathan Johnson
d7fde0815f
Trying to make Mac CI fail gracefully
This message may be repeated multiple times as I work on the CI
configuration.

Refs #129
2024-01-08 09:17:03 -08:00
Jonathan Johnson
5556d2ea6d
FlexibleDimension now implements Zero 2024-01-08 09:07:17 -08:00
Jonathan Johnson
adb51dba7e
More user guide work 2024-01-07 15:57:23 -08:00
Jonathan Johnson
01d6da3d35
Added layout widget descriptions 2024-01-07 11:49:39 -08:00
Jonathan Johnson
8c3eaf4b6b
Fixing MSRV
I had forgotten why I had `self::image::Image` and it was causing the
docs to show up out of order. This now makes them all consisent, fixing
the docs issue.
2024-01-06 14:57:59 -08:00
Jonathan Johnson
882ec6f4aa
Fixing warnings + missing docs 2024-01-06 14:57:46 -08:00
Jonathan Johnson
e548f1255d
Closing no longer repeats
Closes #108

Turns out there was a property on KeyEvent this whole time... oops.
2024-01-06 14:55:49 -08:00
Jonathan Johnson
cda13c42a2
Guide intro + KeyEvent
Also fixed virtual window's refresh handling.
2024-01-06 14:46:48 -08:00
Jonathan Johnson
bb28f96b58
Space fix 2024-01-06 10:25:45 -08:00
Jonathan Johnson
1b608b39af
Removing direct winit access
This was a holdover while I was still implementing the PlatformWindow
interface. Cushy widgets shouldn't be able to access winit directly,
otherwise they could cause unwanted effects when not running in a
standalone Cushy app but rather embedded in a game.
2024-01-05 18:17:44 -08:00
Jonathan Johnson
a3e76f6472
Calling set_ime_cursor_location
Currently passing the entire input area because it's easy. Not closing
the issue because the correct thing to do would be to constrain the
location to a smaller area on the current line (or the current line).

Refs #122
2024-01-04 17:08:05 -08:00
Jonathan Johnson
5a78788396
Enabling animated transparent capture 2024-01-04 16:09:58 -08:00
Jonathan Johnson
6ff766846f
Added CushyWindow
While working on the changelog, I realized I didn't provide a type that
allowed a third party developer to provide a
PlatformWindowImplementation. This type now completes it.
2024-01-04 15:58:29 -08:00
Jonathan Johnson
a197bb5e81
Unit-tested, auto-generated screenshots
This commit adds my first take at creating a harness for a user's guide
using the new capture functionality. The example has tests that ensure
the align widget creates the expected results.
2024-01-04 13:56:45 -08:00
Jonathan Johnson
eb20133116
Reinstating weak_clone and non-weak callbacks
Somehow I missed that my changes for weak callbacks broke the theme
editor. I thought I had it working with the try_get changes, but I
discovered several flaws in this approach.

In the end, ownership has been transferred to the CallbackHandle, and a
CallbackHandle can relinquish its reference to create weak graphs. This
is how weak_clone now works.
2024-01-04 13:56:26 -08:00
Jonathan Johnson
36b80e8f34
Moved frame mapping to its own thread
This ensures frames render consistently.

This change only affects the animation recorder. The regular virtual
recorder interface blocks when refresh is called.
2024-01-03 20:15:00 -08:00
Jonathan Johnson
bc52be440f
Added animation recording + event wiring
Not great, but it technically exists.
2024-01-03 17:45:11 -08:00
Jonathan Johnson
cdef6bcbc3
Removed unnecessary bytemuck usage
This was copy-pasted from a Buffer<T> implementation that was removed
from Kludgine, since Buffer<T> isn't public.
2024-01-03 11:41:26 -08:00
Jonathan Johnson
be0399279c
Initial implementation of offscreen rendering 2024-01-03 11:35:43 -08:00
Jonathan Johnson
244797110e
Added to_ variants for into_ functions 2024-01-02 15:07:06 -08:00
Jonathan Johnson
83e44912ee
ReadOnly<T>, Owned<T>, IntoSource<T>, more
Closes #98

This finishes my initial refactoring of the dynamic system to add
support for several dataflows including:

- Pure data sources that can be implemented using an `Owned<T>` at the
  root of a graph of `Dynamic<U>`/`DynamicReader<U>`s.
- Read-only data sinks. I thought this would be more useful across other
  widgets, but in general, Progress and Label seem like the only types
  that this applies to currently.
- The ability to mix/match Dynamic/DynamicReader in tuple-based
  for_each/map_each.
2024-01-02 14:36:53 -08:00
Jonathan Johnson
8b19c4c304
Fixing doctests 2024-01-02 09:18:18 -08:00
Jonathan Johnson
276ba97bf7
Actually clamping on f32 div
For some reason I forgot about 1.0 being an edge case, but I also didn't
think about negatives either. Applying a clamp is the right move here.

Refs #120
2024-01-02 09:16:21 -08:00
Jonathan Johnson
e70e92726c
Source<T> + Destination<T> (breaking)
Refs #98

This refactor overhauls the reactive system to move all the reactive
methods to traits. The side effect of this change is that now
DynamicReader's API is the same as Dynamic's API, but because it only
implements Source<T>, DynamicReader does not offer any mutation
functions.

While it's unfortunate to have more traits to include to use Cushy, this
seems like the best option, and it offers a path to try to integrate
this into the tuple ForEach/MapEach traits. Unfortunately, my attempt at
doing those in this set of changes led to issues specifying generic
associated lifetimes for the DynamicGuard. But, I was also in the middle
of this larger refactoring, so it might be that a fresh attempt will
succeed.
2024-01-02 09:00:29 -08:00
Jonathan Johnson
c1d6e3f7fd
Fixed Switcher widget
This was broken in unreleased changes, hence no changelog update.
2024-01-02 08:37:10 -08:00
Jonathan Johnson
aa790d0411
Disambiguating image reference
When building tests, dev-dependencies include image which apparently is
ambiguous in 1.70.0.
2024-01-01 13:04:51 -08:00
Jonathan Johnson
4d94bccfa6
Restoring MSRV 1.70.0
Fixes #120
2024-01-01 12:55:18 -08:00