Commit Graph

1675 Commits

Author SHA1 Message Date
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
Adam Nemecek 3d39c5e9b7 trimmed whitespace 2020-02-27 08:13:14 -08:00
Patrick Walton 060241e4d0 Fix Metal backend 2020-02-27 04:07:09 -08:00
Patrick Walton e913f83eee Remove obsolete TODOs 2020-02-27 04:03:08 -08:00
Patrick Walton b998449885 Remove unused #define 2020-02-26 18:46:48 -08:00
Patrick Walton 3a014d78eb Implement a blur filter for canvas shadows 2020-02-26 18:43:41 -08:00
Patrick Walton d1c7da8bd2 Implement pattern repeating and image smoothing control 2020-02-26 14:56:05 -08:00
Patrick Walton 77b3555828 Separate opacity out from paint.
This allows `globalAlpha` to work on render targets.
2020-02-26 12:43:07 -08:00
Patrick Walton 1deb53fa9c Implement the remaining Porter-Duff compositing operators 2020-02-25 18:37:23 -08:00
Patrick Walton e7de50eb67 Fix sub-Z-buffer indexing error with render targets 2020-02-25 18:36:46 -08:00