Commit Graph

1684 Commits

Author SHA1 Message Date
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
Patrick Walton a1f0ae097a Add thumbnail images to the NanoVG demo 2020-03-30 16:18:41 -07:00
Patrick Walton 257067e368 Flesh out the NanoVG example even more 2020-03-28 12:45:23 -07:00
Sebastian cb91f40d7a
add Contour::clear 2020-03-28 19:22:39 +03:00
Patrick Walton ed2807eb84 Flesh out the NanoVG demo some more 2020-03-27 20:53:57 -07:00
Patrick Walton 9723fa441b Update `image`, `glutin`, and `jni` crates.
From #277.
2020-03-27 15:49:26 -07:00
Patrick Walton b6762cecb8 Don't include the closing segment when printing a path as a string.
Closes #279.
Closes #282.
2020-03-27 15:40:27 -07:00
Patrick Walton 6239356d89 Add a `Debug` impl for `Path2D` 2020-03-27 15:05:10 -07:00
Patrick Walton 6eb0232aad Add `precision highp sampler2D` everywhere so our winding numbers don't get clipped
Closes #280.
2020-03-27 14:53:00 -07:00
Patrick Walton 7b53cc6731 Close all subpaths right before filling them.
Closes #269.
2020-03-27 14:50:02 -07:00
Patrick Walton c258616bad Add `Path2D::add_path()` 2020-03-27 12:33:06 -07:00
Patrick Walton 15718d297c Add `Contour::with_capacity()` from #289 2020-03-27 10:06:56 -07:00
Patrick Walton b29ffdf3fa Add missing packed comparisons to the scalar implementation of `I32x2` 2020-03-27 10:04:42 -07:00
Patrick Walton 55df287fec Move radial gradients from the CPU to the GPU 2020-03-26 21:24:20 -07:00
Patrick Walton 0c24619dd0 Add a `clear` method to `Outline` as suggested in #289 2020-03-26 08:34:47 -07:00
Patrick Walton 0c93045f50 Replace the individual tile shaders with an ubershader 2020-03-25 21:59:51 -07:00
Patrick Walton 51277a2027
Merge pull request #288 from kyythane/master
Add derive(Clone) to no text font context
2020-03-25 16:58:04 -07:00
Lillian Primrose 22d54a82ca
CanvasFontContext now implements .clone() 2020-03-24 22:15:09 -04:00
Patrick Walton 0f5de612f9
Merge pull request #281 from zimond/master
Use instant crate to build for wasm32 target
2020-03-09 17:17:09 -07:00
Patrick Walton 0b0c45a49a Collapse linear gradients down to a single 256x1 sliver instead of a 256x256
square
2020-03-05 16:58:26 -08:00
Patrick Walton 2548ab853a Unify solid tiles and render target tiles.
This commit also removes old shaders from the manifest.
2020-03-05 12:22:01 -08:00
Patrick Walton 9935c9fdff Don't distinguish between render targets and other images in the texture atlas
allocator
2020-03-04 19:41:24 -08:00
Patrick Walton a8f7438cd9 Remove transforms from paths.
Paints aren't scale-invariant when rendered into the texture atlas, so they
actually do need individual transforms.
2020-03-04 16:28:21 -08:00
Patrick Walton 27357a23d3 Separate the `AddPaintData` render command into different subcommands 2020-03-04 15:50:53 -08:00
Patrick Walton e50039f4c2 Create framebuffers for every texture page 2020-03-04 12:35:07 -08:00
Patrick Walton a3736859ba Rename "paint texture" to just "texture page" 2020-03-04 12:09:08 -08:00
乌戈 22f9c3bf6e Use instant crate to build for wasm32 target 2020-03-05 01:54:36 +08:00
Patrick Walton d0f4579864 Move `RenderTargetId` out of the `pattern` module 2020-03-03 15:50:48 -08:00
Patrick Walton 2beb2bb126 Apply path transforms to paints 2020-03-03 14:26:38 -08:00
Patrick Walton 12574101e5 Add a transform field to `DrawPath`.
This is currently applied to the outline and should eventually be applied to
paints as well.
2020-03-03 11:18:01 -08:00
Patrick Walton afd1585d5d
Merge pull request #278 from inferiorhumanorgans/iho/pub-outline
Make Path2D#into_outline public
2020-03-03 11:00:00 -08:00
Patrick Walton 468848086a Use the paint texture uniform belonging to the appropriate program 2020-03-03 10:56:32 -08:00
Patrick Walton f607b607b0 Composite render targets using tiles, taking the Z-buffer into account.
We can do more tile-based optimization, but this should be enough to ensure a
correct rendering.

This temporarily breaks subpixel AA, but it should be fixable by modifying
`blur.fs.glsl`.

Closes #271.
2020-03-02 20:10:10 -08:00
Alex Zepeda c8496a1cb2 Make Path2D#into_outline public 2020-03-02 00:14:24 -08:00
Patrick Walton 0f35d9c817 Add an embedded resource loader that places resources directly in the binary.
This is useful for WebGL and for downstream crates.io use.
2020-02-28 17:10:53 -08:00
Patrick Walton ee6c7e0797 Explicitly cast `aTessCoord` to `vec2` for WebGL compatibility 2020-02-28 12:49:21 -08:00
Sebastian K e2fbde820d Implement a WebGL backend
Signed-off-by: Patrick Walton <pcwalton@mimiga.net>
2020-02-28 10:41:35 -08:00
Patrick Walton c59b347c62 Mention CoC in the community section 2020-02-28 10:07:27 -08:00
Patrick Walton fa2cb9b6e0 Update README to mention chat room 2020-02-28 10:05:39 -08:00
Patrick Walton d2ae183ed6 Update README 2020-02-28 09:46:42 -08:00
Patrick Walton b4681dcf8f Add a PNG version of the logo 2020-02-28 09:44:09 -08:00
Patrick Walton 40bb1b412c Implement radial gradients along a line, following Pixman. 2020-02-27 16:24:10 -08:00
Patrick Walton 59783ad457
Merge pull request #272 from adamnemecek/master
trimmed whitespace
2020-02-27 09:04:21 -08:00