Commit Graph

1157 Commits

Author SHA1 Message Date
Patrick Walton 437eda96da Overload `*` between transforms and points 2019-07-12 11:55:01 -07:00
Patrick Walton 2c984de1ea Add convenience translation, rotation, and scaling methods to `Transform2D` 2019-07-12 11:34:48 -07:00
Patrick Walton 1eb28a5539 Fix incorrect definition of 2D transform multiplication 2019-07-12 11:26:09 -07:00
Patrick Walton 96758dfc17 Add `rotate` and `scale` methods to `Transform4F` 2019-07-11 15:57:45 -07:00
Patrick Walton 3f91206d57 Add a `translate` method to 3D transforms 2019-07-11 15:44:01 -07:00
Patrick Walton bcac119324 Rename `Transform2DF` to `Transform2F` and `Transform3DF` to `Transform4F` 2019-07-11 14:59:10 -07:00
Patrick Walton 55825cbc6a Switch scale and translation constructors for `Transform3DF` over to use vectors 2019-07-11 14:58:45 -07:00
Patrick Walton eb0a61679d Use operator overloading for 3D matrix multiplication 2019-07-11 13:59:39 -07:00
Patrick Walton abf97c9adb
Merge pull request #210 from s3bk/push_layout_fix
SceneExt::push_layout make transform apply to offsets
2019-07-10 08:48:58 -07:00
Patrick Walton 850980eb9d
Merge pull request #211 from Jason-Cooke/patch-1
docs: fix typo
2019-07-06 23:23:50 -07:00
Jason Cooke 4ec9666d1d
docs: fix typo 2019-07-06 14:36:05 +12:00
Sebastian Köln 2f6c33cbcb SceneExt::push_layout make transform apply to offsets 2019-07-03 14:49:43 +03:00
Patrick Walton b886c157c1 Use 2-lane instead of 4-lane SIMD types for 2D vectors.
Also, this commit rewrites the `add_fill()` method to stop using shuffle
instructions, which can be slow and make the code overly complicated. The
shuffle instructions have been removed from the various SIMD backends.
2019-06-26 16:38:37 -07:00
Patrick Walton 222fa89b23 Use a 3D transform in the tile vertex shaders.
This opens the door to caching tiles at different zoom levels (issue #191).
2019-06-25 11:32:39 -07:00
Patrick Walton 4cdded74b4 Fix SVG export in the demo; update `Cargo.lock` 2019-06-25 11:32:26 -07:00
Patrick Walton ff777f7995
Merge pull request #205 from s3bk/ps_export
Unify exports into the export crate.
2019-06-25 08:21:49 -07: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 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
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