Commit Graph

1507 Commits

Author SHA1 Message Date
Patrick Walton 36db39883c Add C bindings to the canvas text APIs 2019-06-20 16:07:38 -07:00
Jon Hardie b1dc8a1ab7 Merge remote-tracking branch 'origin/swf_renderer' into swf_renderer 2019-06-21 11:00:49 +12:00
Jon Hardie ba1ff45cb2 Merge branch 'master' of https://github.com/servo/pathfinder into swf_renderer 2019-06-21 10:58:52 +12:00
Patrick Walton 2129e4f2e1 Add missing path methods to the C API 2019-06-20 15:51:25 -07:00
Patrick Walton d2fbb23031 Expose more stroke features in the C API 2019-06-20 13:01:54 -07:00
Patrick Walton 71623eaab3 Make Metal dependencies in the demo Mac-only 2019-06-20 12:34:55 -07:00
Patrick Walton 487577a11b Add Metal support.
This commit substantially reworks the `pathfinder_gpu` API to better support
modern APIs like Metal. It should open the door to `gfx-rs`, `wgpu`, Vulkan,
and D3D12 backends relatively straightforwardly.

A new example, `canvas_metal_minimal`, has been added.

Note that the new Metal shaders require a patched version of `spirv-cross` to
build properly. An upstream patch is forthcoming.
2019-06-20 11:47:22 -07:00
jonathanhardie b17d6c605a Remove incorrect debug assertion 2019-06-19 11:25:26 +12:00
Patrick Walton 5c5fe00b27 Fix build problem 2019-06-17 13:16:03 -07:00
Sebastian Köln 4039658155 add a simple PDF export 2019-06-15 17:50:25 +03:00
Jon Hardie 96f0ed0926 Merge branch 'master' of https://github.com/servo/pathfinder into swf_renderer 2019-06-15 16:22:45 +12:00
Jon Hardie 5d698998e9 [WIP] Initial support for rendering graphic symbols from swf files. 2019-06-15 16:08:46 +12:00
Patrick Walton 5dfe14ebc4 Add a minimal `glutin` example 2019-06-12 10:50:24 -07:00
Patrick Walton dbf02fb742 Make `get_vertex_attr()` fallible 2019-06-12 10:50:24 -07:00
Patrick Walton 636ff6dbf8
Merge pull request #190 from asajeffrey/offwhite-svgs
Make the backgrounds of the demo SVGs off-white
2019-06-08 10:02:03 -07:00
Patrick Walton fac4f0d347
Merge pull request #189 from asajeffrey/sharpen-text
Improve reprojection on magicleap
2019-06-07 22:08:10 -07:00
Alan Jeffrey 45d7f7ad9a Make the backgrounds of the demo SVGs off-white 2019-06-07 12:23:55 -05:00
Alan Jeffrey a507e1955e Set the scene transform by linear iterpolation of the eye transforms 2019-06-07 12:02:30 -05:00
Alan Jeffrey 005e7d3835 Set the scene transform to be one of the eye transforms 2019-06-07 10:15:34 -05:00
Alan Jeffrey 3c91c1cc97 Better error handling of magicleap demo args 2019-06-07 10:15:34 -05:00
Patrick Walton 966c836d4b
Merge pull request #188 from asajeffrey/magicleap-fix-for-luminos-0.96
Fix the magicleap app to work in LuminOS 0.96
2019-06-07 08:11:32 -07:00
Alan Jeffrey d877ca1d3a Fix the magicleap app to work in LuminOS 0.96 2019-06-06 12:36:32 -05:00
Patrick Walton 412d35ae57
Merge pull request #182 from toolness/cfg-debug-assertions
Define ck() based on cfg(debug_assertions)
2019-06-05 18:32:51 -07:00
Patrick Walton 1897cc54f6
Merge pull request #184 from luisbg/master
Add more tests for F32x4
2019-06-05 18:31:50 -07:00
Patrick Walton 9f9233c153 Add Metal shaders, cross-compiled from the GLSL via SPIR-V.
The Metal shaders are checked into the repository for convenience, but they
should not be directly edited. Instead, edit the corresponding GLSL shader in
the top-level `shaders/` directory, and rerun `make` in there.
2019-06-05 18:29:25 -07:00
Patrick Walton 678e12aed6
Merge pull request #181 from jrr/travis-tweaks
full build in CI
2019-06-05 16:16:41 -07:00
Luis de Bethencourt 70e9adc0da Add more tests for F32x4 2019-06-05 17:30:31 -04:00
Atul Varma 7563e95d96 Add a more helpful panic message when GL errors occur. 2019-06-05 08:15:21 -04:00
Atul Varma 5ce4e2e128 Define ck() based on cfg(debug_assertions). 2019-06-05 07:45:52 -04:00
John Ruble 48e3f20516 add cmake, run full build
try test

disable test step
2019-06-04 23:18:24 -04:00
Patrick Walton 893f735a2b
Merge pull request #180 from toolness/patch-1
Mention PFCanvasCreate() consumes the font context
2019-06-04 16:52:14 -07:00
Atul Varma 6d41cb4dad
Mention PFCanvasCreate() consumes the font context 2019-06-04 18:00:22 -04:00
Patrick Walton e3112d1a84 Add `PFCanvasFontContextClone()` 2019-06-04 14:55:59 -07:00
Patrick Walton 3be3de23d8
Merge pull request #177 from jrr/patch-1
Update README.md
2019-06-04 08:22:15 -07:00
John Ruble dc0f00051b
Update README.md
travis badge and note about demos
2019-06-04 07:55:54 -04:00
Patrick Walton 7973148603 Implement basic shadows (no blur yet) 2019-06-03 21:09:04 -07:00
Patrick Walton bd248bf850 Implement line dash offset 2019-06-03 19:36:08 -07:00
Patrick Walton 5e64ee4947
Merge pull request #175 from asajeffrey/get-magicleap-working-again
Get magicleap working again
2019-06-03 16:01:02 -07:00
Alan Jeffrey 9c641f6ce3 Renamed Point2D to Vector2 2019-06-03 17:58:34 -05:00
Alan Jeffrey c71a20805f Removed some unused imports 2019-06-03 17:52:18 -05:00
Alan Jeffrey 848234ef61 Updated magicleap demo for new pathfinder API 2019-06-03 17:52:18 -05:00
Alan Jeffrey a2c8d71a3f Rayon's thread builder API requires ownership 2019-06-03 17:52:18 -05:00
Alan Jeffrey f5b5843c31 Make demo camera Mode public 2019-06-03 17:52:18 -05:00
Alan Jeffrey 635d3bc1f3 Call make_current(eye) when rendering for each eye. 2019-06-03 17:52:18 -05:00
Patrick Walton dc45dc459e Remove unused `LineSegment2F::cross` and vector cross product functions 2019-06-03 15:50:39 -07:00
Patrick Walton 1a42bbf4d3 Implement dashing for line segments (no curves yet) 2019-06-03 14:16:58 -07:00
Patrick Walton a1b0df0a42 Rename `Point2DF` to `Vector2F`, `Point3DF` to `Vector4F`, and `LineSegmentF`
to `LineSegment2F`.

Straw poll on Twitter suggested that these names were preferred.
2019-06-03 12:39:29 -07:00
Patrick Walton 678b6f12c7 Add support for counterclockwise winding to arcs 2019-06-01 12:56:31 -07:00
Patrick Walton 99c1cca05c Clean up `Outline::push_segment` and `Outline::push_full_segment` 2019-06-01 12:03:03 -07:00
Patrick Walton 44167beff5 Implement `Path2D::arc_to`. 2019-05-31 16:01:53 -07:00
Patrick Walton f20d41800c Use a correct algorithm for approximating arcs with Bézier curves 2019-05-31 16:01:28 -07:00
Patrick Walton 0b9a41c533 Treat the miter limit as part of the canvas state, allowing it to be saved and
restored even if miter joins are not in use.

In my opinion, this behavior is less logical, but it matches the behavior of
the HTML canvas API, which we aim to remain close to.
2019-05-30 21:39:08 -07:00
Patrick Walton eeaf51ce72 Expose line cap features to C 2019-05-30 21:28:52 -07:00
Patrick Walton 712c69faf1 Precompute the curve for a quarter-circle arc 2019-05-30 21:20:32 -07:00
Patrick Walton 48f825077c Add new join and cap features to SVG, fixing the demo 2019-05-30 20:55:58 -07:00
Patrick Walton 95f3337c6f Add the `ellipse` method to canvas paths 2019-05-30 17:24:12 -07:00
Patrick Walton 9756aa89f9 Base the core arc primitive on a unit chord and transform.
This lets us handle ellipses better.
2019-05-30 17:19:21 -07:00
Patrick Walton 607a518544 Implement canvas text align 2019-05-30 15:08:15 -07:00
Patrick Walton 5974aeba7b Implement miter limit 2019-05-30 13:08:30 -07:00
Patrick Walton 8d078ff345 Add an initial implementation of canvas `measureText` 2019-05-30 12:38:32 -07:00
Patrick Walton ce127caf76 Fix drawing of full circles 2019-05-30 10:56:19 -07:00
Patrick Walton d5ba6ab6da Change the core arc primitive to chord and radius, not chord and center.
This makes it harder to call the function with illegal arguments and simplifies
the join/cap code.
2019-05-30 10:17:17 -07:00
Patrick Walton 9138e1e0bb Pass in the font context to the canvas rendering context constructor so that it
can be reused.

Creating a system font source can do I/O on some platforms, so obviously we
don't want to do it every frame.
2019-05-29 21:15:42 -07:00
Patrick Walton e1bcc11ace Change the `F32` and `I32` suffixes to `F` and `I` to match the C API.
They're shorter and less noisy.
2019-05-29 19:17:16 -07:00
Patrick Walton a75b635722 Implement round joins 2019-05-29 19:09:15 -07:00
Patrick Walton acf666b701 Stop using triangle fans for DX12/Vulkan compatibility.
Closes #165.
2019-05-29 16:04:33 -07:00
Patrick Walton 339397bf23 Revert accidental change 2019-05-29 15:21:02 -07:00
Patrick Walton 51877426ea Take paths by reference, not by value, in outline stroke-to-fill. 2019-05-29 15:15:40 -07:00
Patrick Walton 5dd9e8b67d
Merge pull request #173 from luisbg/scalar
Start adding tests for scalar::F32x4
2019-05-29 14:21:33 -07:00
Luis de Bethencourt 9f4bcd8c42 Start adding tests for scalar::F32x4 2019-05-29 17:04:28 -04:00
Patrick Walton 5133bbfe1a Use unit vectors instead of angles for arcs.
This makes things faster and will also simplify the implementation of round
joins.
2019-05-29 12:14:47 -07:00
Patrick Walton 1df5e7a129
Merge pull request #172 from luisbg/i32x4
Complete I32x4 swizzles
2019-05-28 14:19:31 -07:00
luisbg 16813b9ebe Test I32x4 swizzles 2019-05-28 16:50:22 -04:00
luisbg b887690b73 Complete I32x4 swizzles 2019-05-28 16:50:17 -04:00
Patrick Walton e86389ac1c
Merge pull request #171 from luisbg/tests
Add test_i32x4_swizzles
2019-05-28 10:31:46 -07:00
Luis de Bethencourt 7240dafb05 Add test_i32x4_swizzles 2019-05-28 13:24:41 -04:00
Patrick Walton 4813084eed
Merge pull request #169 from luisbg/tests
Complete test_f32x4_swizzles
2019-05-27 20:18:49 -07:00
Luis de Bethencourt 3ccd1fce20 Complete test_f32x4_swizzles 2019-05-27 21:43:25 -04:00
Patrick Walton 848eb00443
Merge pull request #168 from luisbg/unused
Fix unused variable warning
2019-05-27 12:30:37 -07:00
Luis de Bethencourt 0231542141 Fix unused variable warning
Fixing the following warning
warning: unused variable: `resources`
2019-05-27 15:22:27 -04:00
Patrick Walton 4327d75058
Merge pull request #167 from toolness/pathfinder-unity-fun
Add GLDevice::set_default_framebuffer()
2019-05-27 11:28:33 -07:00
Atul Varma ea3cdbb2a9 Merge remote-tracking branch 'origin/master' into pathfinder-unity-fun 2019-05-27 13:41:19 -04:00
Atul Varma a51501791d Add GLDevice::set_default_framebuffer(). 2019-05-27 07:56:36 -04:00
Patrick Walton bc713a5181 Remove the rustache dependency.
1/3 reduction in binary size for `canvas_minimal`.

Closes #158.
2019-05-26 13:02:52 -07:00
Patrick Walton e04cc273ee Add enough C bindings to recreate `canvas_minimal` in C.
Closes #12.
2019-05-25 20:21:38 -07:00
Patrick Walton 009f78ba26
Merge pull request #161 from Eijebong/quickcheck
Update quickcheck to 0.8
2019-05-24 11:05:13 -07:00
Patrick Walton e8a5c2a04b
Merge pull request #160 from luisbg/master
Remove cross method from F32x4
2019-05-24 11:04:58 -07:00
Bastien Orivel 349c1a9cd0 Update quickcheck to 0.8
This dedupes some dependencies
2019-05-24 19:22:23 +02:00
Luis de Bethencourt 8c0415c9b9 Remove cross method from F32x4
Silencing the following rustc warning:
warning: unused variable: `other`

Followup to Pull Request #152.
Instead of marking `other` unused (`_other`) we can remove the method
entirely.
2019-05-24 12:19:13 -04:00
Patrick Walton 8c4f05ce39 Initial rudimentary Lottie parsing code 2019-05-23 18:03:09 -07:00
Patrick Walton cd23d62f3d Fix off-by-epsilon error in `push_arc` that was breaking the Moiré demo 2019-05-21 20:24:04 -07:00
Patrick Walton 2131724a2a Implement round line caps 2019-05-21 20:21:46 -07:00
Patrick Walton 197f01d56a Write in the line segment intersection code in matrix form 2019-05-21 14:51:50 -07:00
Patrick Walton c6fc853579 Don't miter join on stroke endpoints.
Fixes the Moiré demo.
2019-05-21 14:49:01 -07:00
Patrick Walton cba5444f03 Add miter joins at endpoints 2019-05-16 12:47:18 -07:00
Patrick Walton e282eb57d5 Implement interior miter line joins (not yet endpoints) 2019-05-16 11:10:15 -07:00
Patrick Walton 272b63a017 Implement square line caps 2019-05-16 10:43:43 -07:00
Patrick Walton 1b9cfa98a9 Stroke closed paths properly 2019-05-16 08:35:14 -07:00
Patrick Walton 6eab3fa2d8 Implement `globalAlpha` for canvas 2019-05-14 18:26:10 -07:00
Patrick Walton 0deb12b3a2 Implement `fill-opacity` and `stroke-opacity` in SVG 2019-05-14 18:09:01 -07:00