Commit Graph

1745 Commits

Author SHA1 Message Date
Sebastian Köln 251785db67 cleanup 2019-06-25 11:39:31 +03:00
Sebastian Köln 21fffb29f7 merge with master 2019-06-25 11:36:04 +03:00
Sebastian Köln 090c21a20a Move all scene exports into the export crate.
SVG, PDF and PS can now be created with Scene::export.
2019-06-25 11:26:37 +03:00
Patrick Walton fd357725de Update the README 2019-06-24 23:09:22 -07:00
Patrick Walton 4d866f4a75 Move `svg2pdf` to `utils/` 2019-06-24 23:05:09 -07:00
Patrick Walton ad858564a9 Add a minimal macOS example app using the C Metal API 2019-06-24 23:03:37 -07:00
Patrick Walton 6785ba0623 Flesh out the Metal C API more 2019-06-24 22:55:55 -07:00
Patrick Walton a8d20cb37f Add transform support to the C API, and fix build problems 2019-06-24 14:03:26 -07:00
Sebastian Köln a02e370675 rename pdf subcrate to export 2019-06-24 23:07:51 +03:00
Sebastian Köln 781074a0e6 Merge branch 'ps_export' of github.com:s3bk/pathfinder into ps_export 2019-06-24 22:55:20 +03:00
Sebastian Köln b41388c3ed Merge https://github.com/servo/pathfinder 2019-06-24 22:44:07 +03:00
Sebastian Köln 1ca35d8426 add PS export as well. also rename svg2pdf into convert and add PS export to it 2019-06-24 22:41:34 +03:00
Patrick Walton 82171088c5 Expose text alignment in the C API 2019-06-24 12:06:05 -07:00
Patrick Walton 9efe44640d Update `Cargo.lock` 2019-06-24 12:05:59 -07:00
Patrick Walton e727fd9018 Try to work around #199 2019-06-24 11:45:44 -07:00
Patrick Walton 0b299060d5
Merge pull request #203 from s3bk/pdf_export
Pdf export
2019-06-24 11:34:07 -07:00
Sebastian Köln 0e08bc6696 fix warning 2019-06-24 20:20:15 +03:00
Sebastian Köln 8b64d5add1 update pdf 2019-06-24 20:17:48 +03:00
Sebastian Köln 0a5c4007f9 merge with master 2019-06-24 18:31:13 +03:00
Sebastian Köln 17f0e50878 Merge https://github.com/servo/pathfinder 2019-06-24 18:23:10 +03:00
Sebastian Köln 2a129b7bbd add CanvasRenderingContext2D::fill_layout – a method to draw layouts directly, without using skribo 2019-06-24 16:12:05 +03:00
Patrick Walton dfdfebfdd2 Fix use-after-free in Metal argument encoding 2019-06-22 14:39:29 -07:00
Patrick Walton d86ff9011a Update the postprocessing shader and vertex array for the Metal changes.
Closes #201.
2019-06-21 18:04:18 -07:00
Patrick Walton 2c49a3360e Add Metal support to the C API 2019-06-21 13:37:17 -07:00
Patrick Walton 1c34b12948 Add some font functions to the C API 2019-06-21 13:17:11 -07:00
Patrick Walton 1caad35b46 Use `cbindgen` instead of hand-writing a header file 2019-06-21 11:35:18 -07:00
Patrick Walton 9107f21966 wip 2019-06-21 10:40:32 -07:00
Patrick Walton 431dcf3d2e Rename `pathfinder_geometry::basic` to simply `pathfinder_geometry`, and move
the remaining code in that crate to a new crate, `pathfinder_content`

The old hierarchy was confusing.
2019-06-21 10:06:19 -07:00
Patrick Walton b16300bf02 Move the SWF assets into `resources/`. 2019-06-21 09:32:48 -07:00
Patrick Walton 336f2ca302 Rename `pathfinder_flash` to `pathfinder_swf` for consistency with other crates
in the Rust Flash ecosystem
2019-06-21 09:28:15 -07:00
Patrick Walton 82b0826407 Merge remote-tracking branch 'hardiesoft/swf_renderer' 2019-06-21 09:25:00 -07:00
Patrick Walton de0662e08e Update `spirv-cross` to upstream master.
A fix has been merged for the issue that was breaking Pathfinder, so we can now
use the master branch.
2019-06-21 07:24:24 -07:00
Patrick Walton 0012f09eeb Fix examples 2019-06-20 21:43:57 -07:00
Patrick Walton 8ec4f04deb Make `canvas-text` use a custom font 2019-06-20 21:34:46 -07:00
Patrick Walton 010bc66073 Upgrade `resvg` to 0.7 2019-06-20 17:13:15 -07:00
Patrick Walton 3f601be08c Add C bindings to fill and stroke styles 2019-06-20 16:57:20 -07:00
Jon Hardie f730e5d2db [WIP] Remove incorrect debug assertion 2019-06-21 11:12:10 +12:00
Jon Hardie 4d53ab60fc [WIP] Updating to master 2019-06-21 11:10:26 +12:00
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