Commit Graph

609 Commits

Author SHA1 Message Date
Patrick Walton 45a14c08e1 Flatten 2018-12-14 20:34:36 -08:00
Patrick Walton c77d5df20d wip 2018-12-14 20:03:48 -08:00
Patrick Walton a443e41909 Guard band clipping 2018-12-14 18:52:34 -08:00
Patrick Walton 689dfdadf9 wip 2018-12-14 14:33:33 -08:00
Patrick Walton 8f5eb1ca60 add strokes 2018-12-14 14:33:33 -08:00
Patrick Walton 316a130143 wip 2018-12-14 14:33:33 -08:00
Patrick Walton 3dd961c1b4 Optimize a bit 2018-12-14 14:33:33 -08:00
Patrick Walton cfd1965a42 wip 2018-12-14 14:33:33 -08:00
Patrick Walton 670a6001fb wip 2018-12-14 14:33:33 -08:00
Patrick Walton dda3e16d2e wip, too slow 2018-12-13 14:04:17 -08:00
Patrick Walton 4597414e21 Quickcheck intervals 2018-12-12 14:55:53 -08:00
Patrick Walton ececd70760 Apply transforms 2018-12-11 16:53:57 -08:00
Patrick Walton b80e1ea38f wip: parsing svgs 2018-12-11 16:38:06 -08:00
Patrick Walton a03a1d2058 wip 2018-12-05 16:08:16 -05:00
Patrick Walton f18af6d650 Approximation 2018-12-04 13:35:50 -05:00
Patrick Walton 2cf3be651c More work on strokes 2018-12-03 18:14:50 -08:00
Patrick Walton 077a3dc806 Fix H/V handling 2018-12-03 17:54:44 -08:00
Patrick Walton 4c772433b0 Do a better job of cubic-to-quadratic conversion 2018-12-03 17:50:09 -08:00
Patrick Walton 2aba5fdcfc Hokey implementation of path stroking 2018-12-03 17:16:44 -08:00
Patrick Walton 27ba918192 Refactor `flattenPath` and `canonicalizePath` out 2018-12-03 16:31:25 -08:00
Patrick Walton b51028568b Add opaque tiles 2018-12-03 16:19:10 -08:00
Patrick Walton 0929a98e2a wip: cull opaque tiles 2018-12-03 14:08:08 -08:00
Patrick Walton 2a07733144 Initial support for curves 2018-12-03 12:30:12 -08:00
Patrick Walton 7bf5ac1098 Clip via recursive subdivision 2018-12-03 12:20:12 -08:00
Patrick Walton b05e5d5281 Time CPU side work 2018-12-02 18:07:54 -08:00
Patrick Walton aa08cd1499 Shrink tile size 2018-12-02 17:53:30 -08:00
Patrick Walton 81912a91c9 Use new tiler 2018-12-02 16:39:22 -08:00
Patrick Walton b5b2b76ff0 Cull empty tiles 2018-12-02 16:11:26 -08:00
Patrick Walton 6bc8c0ed80 Make coordinates tile-relative 2018-12-02 12:51:51 -08:00
Patrick Walton bc3f6b6ae5 New tiling mostly working 2018-12-02 12:44:02 -08:00
Patrick Walton 79e69c6916 WIP Newton's method for stencil AAA 2018-12-01 11:48:22 -08:00
Patrick Walton c1407c3970 WIP 2018-11-30 15:42:19 -08:00
Patrick Walton 26bbf2c3d5 optzn 2018-11-26 19:19:37 -08:00
Patrick Walton 7c4f817d96 WIP: optimizations 2018-11-26 18:51:52 -08:00
Patrick Walton eda11577c6 wip 2018-11-26 18:30:04 -08:00
Patrick Walton e9d1d3c322 WIP 2018-11-26 10:41:00 -08:00
Patrick Walton 19d17afdb8 WIP 2018-11-26 08:24:09 -08:00
Patrick Walton 726c3c013c WIP 2018-11-16 21:44:33 -08:00
Patrick Walton 3097585a2a Proper AA stenciling 2018-11-16 20:43:27 -08:00
Patrick Walton 1ef6d8df58 Flatten path 2018-11-16 15:38:41 -08:00
Patrick Walton bb8aa46c1a Detect square paths 2018-11-16 15:34:01 -08:00
Patrick Walton 8c1414e75d Enlarge 2018-11-16 14:14:16 -08:00
Patrick Walton fd848468bc Basic drawing working now 2018-11-15 21:23:03 -08:00
Patrick Walton 052e9b27cd WIP with fills 2018-11-15 19:23:42 -08:00
Patrick Walton 5698dfb791 Add color support 2018-11-15 18:06:19 -08:00
Patrick Walton 32792f81a7 WIP using lines 2018-11-15 14:37:32 -08:00
Patrick Walton 208565603e WIP 2018-11-14 13:56:45 -08:00
Patrick Walton a2522e3845 wip 2018-11-14 10:33:53 -08:00
Patrick Walton 3a5069b1e7
Merge pull request #98 from EisenbergEffect/patch-1
docs(readme): clarify demo build requirements
2018-10-31 09:28:16 -07:00
Rob Eisenberg 6a622b7f04
doc(readme): clarify demo build requirements
My normal workflow involves using tools that are mostly in "JavaScript land". So, I didn't have either Rust or CMake installed. The instructions mentioned Rust nightly builds as a dependency, but not CMake. So, I've added CMake and then turned each of these dependencies into a link as a convenience for anyone that comes along later.
2018-09-26 10:46:28 -07:00
Patrick Walton 883ccceb2d Update various dependencies 2018-09-19 20:03:33 -07:00
Patrick Walton 81c3f08a5c Make macOS-only code conditionally compiled; update dependencies 2018-08-22 13:34:50 -07:00
Patrick Walton c6cc6e6fd8 Remove `pathfinder_font_renderer` in favor of `font-kit`.
Closes #69.

Closes #84.
2018-08-02 15:07:25 -07:00
Patrick Walton a518cdac21
Merge pull request #93 from Eijebong/num-traits-0.1-is-goooone
Update dependencies to remove num-traits 0.1
2018-07-31 13:45:26 -07:00
Bastien Orivel 9d19454c36 Update app_units 0.7
See ya num-traits 0.1 o/
2018-07-31 20:16:44 +02:00
Bastien Orivel 3cfd0a3126 Update image to 0.19 2018-07-31 20:16:00 +02:00
Patrick Walton d04912fec6
Merge pull request #92 from paulrouget/euclid_update
Euclid and lyon updates
2018-07-30 09:47:38 -07:00
Paul Rouget 6d7dd604f8 Euclid and lyon updates 2018-07-27 11:40:45 +02:00
Patrick Walton 9b7da26d1e Update `core-graphics` and `core-text` 2018-07-20 16:48:10 -07:00
Patrick Walton 673dd81fa7 Commit Cargo.lock to help keep things reproducible.
Closes #87.
2018-07-18 08:30:01 -07:00
Patrick Walton 0a1adb0e18 iOS support 2018-07-18 08:24:09 -07:00
Patrick Walton 2e5b70805f
Merge pull request #89 from nical/lyon-0-11
Update lyon and euclid dependencies
2018-07-17 08:24:17 -07:00
Nicolas Silva 46d1878ef5 Update lyon and euclid dependencies. 2018-07-11 00:27:42 +02:00
Patrick Walton 2ec2adf1c7
Merge pull request #88 from Eijebong/bump-core-stuff
Update core-graphics, core-text and bump version
2018-07-09 15:58:48 -07:00
Bastien Orivel 42d1c439aa Update core-graphics, core-text and bump version 2018-07-09 12:50:43 +02:00
Patrick Walton 63c17a7f15
Merge pull request #82 from fschutt/pathfinder_glyph_dimensions_directwrite
Fixed calculation of glyph dimensions on Windows
2018-05-03 18:10:57 -07:00
fschutt 9223717234 Fixed calculation of glyph dimensions on Windows
The dimensions in the `DWRITE_GLYPH_METRICS` are a bit special:
the `rightSideBearing` is measured from the right edge of the
character boundary, not the left edge.

So, doing (right - left) would usually return a negative or very
small number, which, when casted to a u32 in an unsafe block, would
silently overflow to a very large number and make webrender crash.

Therefore, in order to calculate the metrics correctly, we have
to first calculate the full width of the character, then subtract
the right and left edges, same width the height.
2018-05-03 07:55:40 +02:00
Patrick Walton 2701757e29
Merge pull request #81 from fschutt/fix_compile_windows
Fix the API of glyph_dimensions to make webrender compile on Windows
2018-04-27 08:41:10 -07:00
fschutt 80a872ca46 Add add_native_font function to get feature parity on Windows + publicly export necessary types 2018-04-13 13:24:53 +02:00
fschutt ddcde6d1ae Fix the API of glyph_dimensions to make webrender compile on Windows 2018-04-13 11:50:52 +02:00
Patrick Walton 235c51e160 Fix the Cargo version conflict in the front end 2018-04-10 11:20:17 -07:00
Patrick Walton f755002983 Switch to the crates.io version of Servo's `freetype` library 2018-04-09 13:28:31 -07:00
Patrick Walton 6e1fe50202 Switch to Servo's version of the FreeType library bindings.
This enables compatibility with WebRender on Linux.
2018-04-09 12:41:41 -07:00
Patrick Walton fcfd157c70 Remove `F32ArrayToMat4` in favor of `glmatrix.mat4.clone()` 2018-04-04 17:56:01 -07:00
Patrick Walton 2fde232982 Factor the text paragraph rendering code out into a separate class so it
can be reused
2018-04-03 13:57:46 -07:00
Patrick Walton 6ba87277c2 Remove the explicit WebVR API dependency; it seems to be upstream now 2018-04-03 12:42:33 -07:00
Patrick Walton 881be4967d Fix TypeScript build errors 2018-04-03 12:40:02 -07:00
Patrick Walton 6f839cd1b2
Merge pull request #76 from Manishearth/vr-better
Cleaned up VR implementation
2018-04-02 19:11:13 -07:00
Manish Goregaokar 8ed4e96ff9 Various review cleanups 2018-04-02 19:10:19 -07:00
Manish Goregaokar 3d223c1a4a Match screen size as much as possible 2018-04-02 19:10:11 -07:00
Manish Goregaokar 0751da81a4 Move VR stuff to ThreeDView 2018-04-02 19:10:11 -07:00
Manish Goregaokar 2b0b699fa0 Turn off lighting for VR 2018-04-02 19:10:11 -07:00
Manish Goregaokar 3af3635eea Use correct viewport and clear correctly 2018-04-02 19:10:11 -07:00
Manish Goregaokar 148e77d995 Use correct projection and view matrices 2018-04-02 19:10:11 -07:00
Manish Goregaokar 975685c23b Make it possible to enter VR mode 2018-04-02 19:10:11 -07:00
Manish Goregaokar 7e115826a1 Remove dependence on frag_depth 2018-04-02 19:10:04 -07:00
Patrick Walton d66a5b6c54 Update to `env-logger` 0.5 2018-03-30 14:25:52 -07:00
Patrick Walton dcc3a0fc94 Update to bincode 1.0 2018-03-22 15:03:25 -07:00
Patrick Walton dbd3a36f3d Generate a reasonable normal for the superfluous control point generated
for lines.
2018-03-21 14:56:24 -07:00
Patrick Walton 5e5148df54 Fix on Chrome, which doesn't support WebGL queries 2018-03-20 19:40:28 -07:00
Patrick Walton 96d2f909ea wip 2018-03-19 18:34:27 -07:00
Patrick Walton 6e13fb171c Use a lookup table to do area calculations instead of Loop-Blinn-style
distance-to-edge for stencil analytic antialiasing.

This improves the rendering quality of stencil AAA significantly.

Additionally, this adds an approximation of Core Graphics' (macOS')
defringing filter.

Closes #73.
2018-03-19 14:35:36 -07:00
Patrick Walton e851afd5d9
Merge pull request #74 from pythonesque/patch-1
The Send impl for `FontContext` is too forgiving.
2018-03-10 10:29:19 -08:00
Joshua Yanovski c7064b31ce
The Send impl for `FontContext` is too forgiving.
I'm pretty confident that it is only thread safe if FK is (or another way of putting it is, I'm pretty sure if you include an `Rc<_>` in FK it should not be safe to share between threads).
2018-03-09 01:20:49 +01:00
Patrick Walton 64c818e530 Construct meshes independently of mesh libraries (renamed to "mesh
packs").

This fits in better with the way WebRender does things. It simplifies
the code too.
2018-03-08 15:10:29 -08:00
Patrick Walton cffff886c3 Be more robust in the presence of duplicated points when computing
normals
2018-03-07 11:53:44 -08:00
Patrick Walton db6986ca1f Take the orientation of a path into account when computing normals 2018-03-07 11:21:08 -08:00
Patrick Walton aa3ecf28a5 Quantize to subpixel boundaries.
This doesn't break meshes the way the previous "discard if too thin"
code did. It fixes several issues observed on Wikipedia when using
Pathfinder in Firefox.

Closes #72.
2018-03-06 19:20:19 -08:00
Patrick Walton 6c2c34aa3c Make the mesh library serializable and deserializable.
This is needed for the new WebRender infrastructure.
2018-03-06 15:12:47 -08:00
Patrick Walton 18121208d4 Update euclid to 0.17 and Lyon to 0.10 2018-03-06 15:06:06 -08:00