Patrick Walton
564533ff29
Switch from Rust MPSC channels to `crossbeam-channel`.
...
7x performance improvement in contour.svg from MPVG!
2020-04-21 09:57:47 -07:00
Patrick Walton
561582c0ac
Add SVG dashing support
2020-04-21 09:29:36 -07:00
Patrick Walton
6c996981a3
Fix some transform issues and implement transformed radial gradients in SVG.
...
In particular, this fixes the usvg-to-Pathfinder transform conversion and the
definition of `Transform2F::row_major()`.
Makes `drops.svg` from the MPVG samples work.
2020-04-20 16:40:02 -07:00
Patrick Walton
d8875efd61
Update build result flags (unsupported feature flags) in the SVG backend
2020-04-17 16:37:12 -07:00
Patrick Walton
d9a93a102c
Publish `pathfinder_svg` to crates.io
2020-04-17 13:57:04 -07:00
Patrick Walton
ef20671ab7
Publish `pathfinder_canvas` to crates.io
2020-04-17 13:50:36 -07:00
Patrick Walton
686773224c
Publish `pathfinder_text` to crates.io
2020-04-17 13:44:11 -07:00
Patrick Walton
1cd5966d3d
Publish `pathfinder_content` and `pathfinder_renderer` to crates.io
2020-04-17 13:23:45 -07:00
Patrick Walton
ccf9822e11
Fix `pathfinder_metal` crate description
2020-04-17 13:05:45 -07:00
Patrick Walton
adf87d7636
Bump the `pathfinder_color` version to 0.5 to match other crates
2020-04-17 13:00:43 -07:00
Patrick Walton
a91da6fdb4
Publish `pathfinder_resources` to crates.io
2020-04-17 12:33:22 -07:00
Patrick Walton
171fb21fe7
Switch back to upstream `skribo`
2020-04-17 12:15:55 -07:00
Patrick Walton
5819b8dc60
Stop reallocating texture pages every frame
2020-04-17 11:50:46 -07:00
Patrick Walton
07ce2a2536
Add a scene field to render target IDs to reduce the chance of misuse
2020-04-16 16:54:52 -07:00
Patrick Walton
0b43f629cd
Cache loaded fonts and glyph outlines.
...
Approximately a 70% CPU time improvement on the NanoVG demo.
2020-04-16 16:28:44 -07:00
Sebastian K
582f025c91
Update WebGL backend for recent changes
2020-04-16 12:02:42 -07:00
Patrick Walton
afe1a64f68
Allow multiple tile pages.
...
Closes #151 .
2020-04-15 20:13:37 -07:00
Patrick Walton
83c05e9f77
Improve the fidelity of the NanoVG demo some more
2020-04-14 18:49:47 -07:00
Patrick Walton
0fec0061e6
Clamp radial gradient t values to [0.0, 1.0] instead of rendering transparent
...
black
2020-04-14 16:13:32 -07:00
Patrick Walton
b1d8e0526e
Make some shadow blurs match the original NanoVG demo better
2020-04-14 16:13:12 -07:00
Patrick Walton
39f84b287d
Make the paragraph color and line height in the NanoVG demo match the original
...
more
2020-04-14 15:21:01 -07:00
Patrick Walton
5efdf2a04a
Implement the missing pieces of `TextMetrics` for canvas.
...
This required a `font-kit` upgrade, and with it a `skribo` upgrade.
2020-04-14 15:01:30 -07:00
Patrick Walton
b9b1472b6c
Resolve fill and stroke paints when filling and stroking text.
...
Makes text respect global alpha.
2020-04-14 10:08:11 -07:00
Patrick Walton
667a6c7c43
Fix definition of `TextBaseline::Middle`
2020-04-14 09:45:18 -07:00
Patrick Walton
cdbe2fbb6b
Introduce the concept of a base color in order to handle canvas shadow alpha
...
correctly
2020-04-13 18:31:25 -07:00
Patrick Walton
fda9b8b9e1
Make the clip example match the NanoVG example
2020-04-11 19:08:20 -07:00
Patrick Walton
3e9558957f
Add a shadow to the color wheel marker in the NanoVG demo
2020-04-11 19:08:00 -07:00
Patrick Walton
def7da5de2
Remove obsolete TODOs in the NanoVG demo
2020-04-11 19:07:50 -07:00
Patrick Walton
15101e90dd
Draw caret position in the NanoVG demo
2020-04-10 18:13:42 -07:00
Patrick Walton
ca0e9e9e14
Draw the paragraph gutter in the NanoVG demo
2020-04-10 16:00:25 -07:00
Patrick Walton
4f1d376fe5
Refactor paragraph layout in the NanoVG demo; fix BG/FG draw order
2020-04-10 15:30:12 -07:00
Patrick Walton
4365b75629
Treat negative hues correctly in HSL.
2020-04-10 13:48:31 -07:00
Patrick Walton
e598249186
Use column vector length to extract scale from matrices.
...
Closes #298 .
2020-04-10 13:38:25 -07:00
Patrick Walton
df08d76627
Make the color wheel animation in the NanoVG demo match NanoVG
2020-04-10 13:37:06 -07:00
Patrick Walton
ca36fed47b
Fix calculation of wallclock time in the NanoVG demo
2020-04-09 18:01:12 -07:00
Patrick Walton
47919db8f3
Fix frame time measurement in the GL backend, and add it to the NanoVG demo
2020-04-09 17:49:28 -07:00
Patrick Walton
19aa9c8e54
Only paint text backgrounds up to the appropriate width in the NanoVG demo
2020-04-09 12:33:16 -07:00
Patrick Walton
a196f1eff8
Fix spriting imperfections in the thumbnails in the NanoVG
2020-04-09 12:15:39 -07:00
Patrick Walton
0211296128
Publish version 0.1 of `pathfinder_color`
2020-04-09 10:36:04 -07:00
Patrick Walton
0399061a70
Bump versions of `pathfinder_simd` and `pathfinder_geometry`
2020-04-09 10:31:18 -07:00
Patrick Walton
55f89c4ffa
Merge pull request #293 from pyfisch/canvas-reexport
...
Re-export necessary items in pathfinder-canvas
2020-04-09 10:29:39 -07:00
Patrick Walton
205a63340c
Merge pull request #296 from servo/jdm-patch-1
...
Add arm64 CI and fix build errors
2020-04-09 10:28:55 -07:00
Patrick Walton
895f73096e
Switch back to instanced drawing for tiles.
...
Improves tile build time by something around 2x in the NanoVG demo.
2020-04-08 17:16:54 -07:00
Josh Matthews
3a8339fece
Allow dividing a Vector2F by an f32 value.
2020-04-07 15:36:46 -04:00
Josh Matthews
43adc9c24a
Fix arm I32x4 min/max operations that require on floating point values.
2020-04-07 15:35:03 -04:00
Josh Matthews
e87b330123
Add min/max to i32x2.
2020-04-07 12:42:28 -04:00
Josh Matthews
db205f71d6
Fix incorrect cast ordering in arm simd.
2020-04-07 12:31:28 -04:00
Josh Matthews
f2b668f9d7
Add missing import.
2020-04-07 12:28:37 -04:00
Josh Matthews
b28e04a22d
Install rustup target before building.
2020-04-07 12:06:26 -04:00
Josh Matthews
fe80bad31b
Build with nightly on CI.
2020-04-07 11:53:50 -04:00
Josh Matthews
a4c9b7ea3d
Only build certain crates.
2020-04-07 11:39:00 -04:00
Josh Matthews
22bab4f1e9
Add arm64 target with rustup.
2020-04-07 11:26:41 -04:00
Josh Matthews
2cd534609d
Add arm64 to CI.
2020-04-07 11:15:29 -04:00
Pyfisch
dfb035dec0
Re-export necessary items in pathfinder-canvas
...
Export types need to use the canvas API from other pathfinder crates.
From pathfinder-color all types and convinience functions are exported.
From pathfinder-geometry only the 2D vector and rect types with
their convinience functions are exported.
Items from pathfinder-renderer are not re-exported as they also
belong to the back-end.
Pattern, while used in the canvas API, is not re-exported as
it is not needed for basic usage and depends on a lot of other types.
See #283
2020-04-04 14:06:40 +02:00
Patrick Walton
941abd202e
Add the tooltip to the NanoVG demo
2020-04-03 15:38:14 -07:00
Patrick Walton
9d5dd7fd6a
Make text respect clip, blend mode, and opacity
2020-04-03 15:37:59 -07:00
Patrick Walton
b38f75a38d
Add line widths to the NanoVG demo
2020-04-03 14:51:37 -07:00
Patrick Walton
ad61b78e39
Remove box gradients from the NanoVG demo in favor of shadows
2020-04-03 14:33:00 -07:00
Patrick Walton
bba6aab0fe
Don't blur the entire canvas
2020-04-03 14:32:51 -07:00
Patrick Walton
eb2b622615
Remove `draw_render_target()` in favor of the standard tile-based rendering
...
path
2020-04-03 13:05:53 -07:00
Patrick Walton
cd37791d72
Implement the `drawImage()` method on canvas.
...
Closes #223 .
2020-04-02 16:30:49 -07:00
Patrick Walton
ba7fe4be39
Add the ability to merge scenes together, and expose it to the canvas API.
...
Closes #268 .
2020-04-02 14:04:58 -07:00
Patrick Walton
5d43eedf20
Replace a drop shadow with a box gradient
2020-04-02 11:59:35 -07:00
Patrick Walton
404d536254
Add some more operators to rects and vectors
2020-04-02 11:59:11 -07:00
Patrick Walton
542d2c27fa
Add `translate`, `rotate`, and `scale` methods to `CanvasRenderingContext2D`.
2020-04-02 11:40:53 -07:00
Sebastian K
29c6a2e428
Transform paints by the render transform
2020-04-02 11:17:03 -07:00
Patrick Walton
8f2fabbc47
Add icons to the NanoVG demo from Noto Emoji
2020-04-01 20:20:32 -07:00
Patrick Walton
e05b5df562
Stop duplicating font names everywhere in the NanoVG demo
2020-04-01 17:31:16 -07:00
Patrick Walton
da9b944e77
Clean up a few uses of `RectF::contract()` and `RectF::dilate()`
2020-04-01 17:27:08 -07:00
Patrick Walton
794dd55038
Add some implicit conversions between scalars and vectors where appropriate
2020-04-01 17:20:32 -07:00
Patrick Walton
40bd13aa5a
Add convenience color construction methods
2020-04-01 16:37:36 -07:00
Patrick Walton
ae97ccea5a
Improve ergonomics of the canvas font interface, and use the right fonts in the
...
NanoVG demo.
2020-04-01 16:25:13 -07:00
Patrick Walton
f823cb9474
Rename `SIL Open Font License.txt` to `LICENSE-SIL` for consistency
2020-04-01 13:24:07 -07:00
Patrick Walton
956b9020e8
Rename `overpass-regular.otf` to `Overpass-Regular.otf`
2020-04-01 13:22:29 -07:00
Patrick Walton
cedc5595db
Fix `canvas_moire`
2020-04-01 13:03:58 -07:00
Patrick Walton
3d71703950
Stop copying images every frame on CPU.
...
We can avoid reuploading them to the GPU every frame as well, but this is a
bigger, and easier, win for now.
2020-04-01 13:01:08 -07:00
Patrick Walton
bf6890b341
Fix `canvas_minimal`
2020-03-31 20:21:27 -07:00
Patrick Walton
7c5c43b50f
Use HiDPI and a larger window size in the NanoVG demo
2020-03-31 20:18:25 -07:00
Patrick Walton
e6d8aab974
Don't draw backwards miters.
2020-03-31 19:38:43 -07:00
Patrick Walton
764953a643
Fix counterclockwise arc drawing logic
2020-03-31 17:59:41 -07:00
Patrick Walton
bf2fd6569b
Fix tests
2020-03-31 17:17:25 -07:00
Patrick Walton
32a56eab85
Stop leaking textures and framebuffers in the OpenGL backend.
...
Closes #264 .
Possibly addresses #286 .
2020-03-31 17:14:28 -07:00
Patrick Walton
bbcd371efc
Show the progress spinners behind thumbnail images in the NanoVG demo
2020-03-31 17:14:06 -07:00
Patrick Walton
2f6071c059
Make solid tiles not use mask 1.
...
Fixes random garbage appearing in the thumbnails in the NanoVG demo.
2020-03-31 14:16:04 -07:00
Patrick Walton
2db4cfcfed
Uncomment round join code in the NanoVG demo now that it doesn't crash
2020-03-31 13:32:23 -07:00
Patrick Walton
40377d657a
Prevent taking the square root of a negative number in the half-angle formula
2020-03-31 13:32:23 -07:00
Patrick Walton
f142f045aa
Detect coincident points and bail out of the line join code as necessary.
2020-03-31 13:31:22 -07:00
Patrick Walton
c7ca630aad
Search backward for a non-coincident point if the two ending points of a capped
...
stroke are coincident.
This prevents a divide by zero in normalization.
2020-03-31 13:29:47 -07:00
Patrick Walton
9212c742b7
Avoid taking the square root of a negative number in `arc_from_cos()`.
2020-03-31 13:28:55 -07:00
Patrick Walton
df4021e3c5
Limit the number of trips through the round join loop.
...
This is a safety measure to prevent infinite loops.
2020-03-31 13:27:47 -07:00
Patrick Walton
93f5fbc6d2
Add convenience constructors: `vec2f`, `vec2i`, `Vector2F::zero()`,
...
`Vector2I::zero()`
2020-03-31 11:29:21 -07:00
Patrick Walton
d83f54457c
Merge pull request #290 from s3bk/patch-1
...
add Contour::clear
2020-03-30 22:01:04 -07:00
Patrick Walton
4af74f225d
Add support to canvas for the commonly-used `textBaseline` values
2020-03-30 22:00:13 -07:00
Patrick Walton
9a0fbe1d11
Flesh out the NanoVG demo yet more
2020-03-30 21:33:20 -07:00
Patrick Walton
f1d7a0bfa3
Make the gradient construction methods more convenient
2020-03-30 21:32:55 -07:00
Patrick Walton
6d6b5191bb
Clean up the `text` module inside `canvas` a bit
2020-03-30 21:32:30 -07:00
Patrick Walton
e864536b31
Add a `From` implementation to `FillStyle` and use it in `canvas` for brevity
2020-03-30 21:31:18 -07:00
Patrick Walton
f1d5906c9e
Switch to my branch of `skribo` for much better `fill_text()` performance
2020-03-30 21:30:14 -07:00
Patrick Walton
7ac822bc2e
Cache image hashes.
2020-03-30 16:48:01 -07:00
Patrick Walton
cf78ac4569
Fix image pattern texture atlas logic.
2020-03-30 16:19:03 -07:00