Commit Graph

1744 Commits

Author SHA1 Message Date
Patrick Walton 343c67aa33 Remove commented out debug code 2017-08-18 17:13:44 -07:00
Patrick Walton 653530be0b Add a curve shader for ECAA and refactor the line shader to minimize code duplication 2017-08-18 17:12:58 -07:00
Patrick Walton 3a9b29735a Get exact antialiasing mostly working for lines (no curves yet) 2017-08-18 15:17:23 -07:00
Patrick Walton a9eeec39fe Implement the line antialiasing shader, untested as of yet 2017-08-18 11:44:17 -07:00
Patrick Walton ccf5000e1c Get the cover step mostly working 2017-08-17 22:47:28 -07:00
Patrick Walton 9a7063a29b Render conservative coverage. Not working yet. 2017-08-17 20:09:18 -07:00
Patrick Walton ec78a632dc Split path IDs and Loop-Blinn data into separate VBOs 2017-08-17 12:47:50 -07:00
Patrick Walton 0a4d57580a Add the ECAA cover shader, untested as of yet 2017-08-16 19:51:13 -07:00
Patrick Walton 4b62ec8fa7 Get edge detection working in the demo 2017-08-16 16:37:39 -07:00
Patrick Walton b10807d217 Initial setup for ECAA in the demo 2017-08-15 22:09:09 -07:00
Patrick Walton 3f7fc8baf6 Add an edge detection shader for ECAA, untested as of yet 2017-08-15 17:28:07 -07:00
Patrick Walton 7dc8f5debb Switch to depth textures to aid edge detection 2017-08-15 16:51:26 -07:00
Patrick Walton 0f5b23622a Implement SSAA in the demo 2017-08-15 15:57:52 -07:00
Patrick Walton 8bae26b521 Implement some antialiasing strategy infrastructure 2017-08-15 13:38:54 -07:00
Patrick Walton eb7cfe7c5f Fetch the colors of paths 2017-08-14 21:24:58 -07:00
Patrick Walton 309034b7dd Implement basic Loop-Blinn curves 2017-08-14 19:08:18 -07:00
Patrick Walton f8bd405759 Get basic polygons rendering in the demo 2017-08-14 16:08:45 -07:00
Patrick Walton 5f89f7ba50 Fix compile errors in shaders 2017-08-13 13:39:51 -07:00
Patrick Walton d0dd883ddf Switch to the Fetch API 2017-08-12 10:08:35 -07:00
Patrick Walton ee9c1a7998 Download shaders via XHR 2017-08-11 21:26:25 -07:00
Patrick Walton ebeaf119ba Add some OpenGL ES 2.0 shaders for direct rendering, untested 2017-08-11 18:12:17 -07:00
Patrick Walton 57ebbf8281 Split out B-vertex positions and info so that they're easier to pack into textures 2017-08-11 15:56:07 -07:00
Patrick Walton fa1b2390c7 Remove bad `extern crate` directive 2017-08-10 21:02:32 -07:00
Patrick Walton 933e4023ed Send mesh indices along to the client as well 2017-08-10 21:00:37 -07:00
Patrick Walton 5b84b052a0 Upload the chosen font to the server 2017-08-10 18:38:54 -07:00
Patrick Walton 3fcd4d472b Shuffle `BQuad` fields around for better alignment in GLSL 2017-08-10 17:47:46 -07:00
Patrick Walton 0ad2f9abfe Initial implementation of the Rocket-based demo server 2017-08-10 15:26:27 -07:00
Patrick Walton 92c5014ec6 font-renderer: Pull hinted outlines out of FreeType 2017-08-09 17:23:22 -07:00
Patrick Walton 2ddf95bd70 Initial work on the font renderer component 2017-08-09 15:36:41 -07:00
Patrick Walton 376faf8c38 Move `demo/` to `demo/client/` in preparation for making a partitioning web service 2017-08-08 11:35:10 -07:00
Patrick Walton 95b356435e Rename `partitionfinder` to `partitioner` and remove the old tessellator 2017-08-08 11:32:51 -07:00
Patrick Walton ef040b61bf Introduce demo skeleton code 2017-08-08 11:23:30 -07:00
Patrick Walton f4b8212280 Add a license file to `partitionfinder/`, and copy it into the root directory too so that GitHub
can display it.

Closes #23.
2017-08-07 10:22:10 -07:00
Patrick Walton 0e39b409ae Use de Casteljau subdivision to split curves instead of doing that repeatedly in the shader.
This doesn't seem to negatively affect performance on the CPU and reduces complexity overall.
2017-08-07 10:19:32 -07:00
Patrick Walton 8730df37a7 Quadratics work now for simple cases 2017-07-11 17:20:03 -07:00
Patrick Walton a7ba7d200e First draft of switch to quadratic Béziers 2017-07-10 20:07:10 -07:00
Patrick Walton 49026ae3c3 Fix off by one error 2017-07-10 14:52:43 -07:00
Patrick Walton a7b61969ff Fix compile errors in `partitionfinder.h` 2017-07-10 14:01:05 -07:00
Patrick Walton bd3d8aae44 Merge branch 'master' of github.com:pcwalton/pathfinder 2017-07-10 12:17:04 -07:00
Patrick Walton ca01e7eb6e Subdivide cubic Béziers in the legalizer if not monotonically increasing in X. 2017-07-10 12:16:58 -07:00
Patrick Walton efc8a8bfd7 Add the stub legalizer code to the C API 2017-07-09 13:59:33 -07:00
Patrick Walton 8bcf6de4f5 Add stub code for the legalizer, which will convert curves into monotonic segments. 2017-07-08 16:46:26 -07:00
Patrick Walton 9a9ef90cc9 Generate edge descriptors for instanced rendering when Levien AA is in use 2017-07-07 14:19:33 -07:00
Patrick Walton 0edb604612 Rename "bezieroid" to "B-quad" 2017-07-06 11:39:52 -07:00
Patrick Walton 56101cea9a Add `no_mangle` in a few places 2017-07-05 19:50:49 -07:00
Patrick Walton f2835071c7 Initial software tessellation code 2017-07-05 17:03:05 -07:00
Patrick Walton a066e77c72 Clear out old bezieroids when partitioning a new path. Oops! 2017-07-04 11:51:58 -07:00
Patrick Walton 410d2aa6cd Don't give up so quickly when performing Newton-Raphson 2017-07-03 20:25:55 -04:00
Patrick Walton 5393f63738 Set left endpoint indices properly on MIN points; basic paths without curves now partition properly 2017-07-03 20:02:59 -04:00
Patrick Walton 0468bbcc24 Fix more random silly bugs; a basic monotone polygon partitions correctly now 2017-07-03 19:26:55 -04:00
Patrick Walton ffd167a342 Various bug fixes 2017-07-03 15:32:22 -04:00
Patrick Walton b546ffebcc Fix issues with jemalloc; remove the needless path index from `Subpath` 2017-07-02 16:41:33 -04:00
Patrick Walton d695a3d11f Implement some missing geometry methods, and remove the `Path` type.
With the removal of the `Path` type, partitioning multiple paths becomes the responsibility of the user of the library. The reason is that users of the partitioner will frequently want to parallelize over paths via e.g. rayon or Grand Central Dispatch, and we shouldn't mandate a particular parallelism technique.
2017-07-02 15:48:57 -04:00
Patrick Walton 2fde50113c Initial commit of Pathfinder 2, still incomplete 2017-06-30 17:43:19 -07:00
Patrick Walton 93c928bf5c Move Pathfinder to `pathfinder-classic` in preparation for Pathfinder 2 2017-06-27 14:13:11 -07:00
Patrick Walton b75cd9e5a9 Add an API allowing for custom vector paths 2017-03-03 13:32:51 -08:00
Patrick Walton 7862bec2bb Speed up `lorem-ipsum`, especially in debug builds 2017-02-28 21:47:17 -08:00
Patrick Walton 45ade674be Refactor `lorem-ipsum` 2017-02-28 12:33:42 -08:00
Patrick Walton a9c4c7aa3e Implement most of the basic arithmetic and control structures in the hinting VM 2017-02-27 12:52:14 -08:00
Patrick Walton 6d66cfc30a Begin to implement the interpreter 2017-02-26 12:12:34 -08:00
Patrick Walton 37736b27b9 Fix interpreter a bit; Arial fpgm now parses 2017-02-24 12:19:32 -08:00
Patrick Walton 88d1e3163d Analyze branch targets in TrueType instructions 2017-02-24 09:38:46 -08:00
Patrick Walton 9c07c1a4a6 Parse TrueType instructions 2017-02-23 21:56:33 -08:00
Patrick Walton d29775c345 Add skeleton code for TrueType hinting, not functional yet 2017-02-23 17:41:52 -08:00
Patrick Walton b86133a4ef Initial experimental support for subpixel antialiasing 2017-02-22 16:31:44 -08:00
Patrick Walton 5e9b8c9423 Implement basic support for WOFF 1.0 2017-02-22 14:19:27 -08:00
Patrick Walton 9490fa2d3b Split the `otf` module up into `containers` and `tables`.
Putting all container format parsing in `otf/mod.rs` won't scale as we add more, such as WOFF.
2017-02-22 10:22:14 -08:00
Patrick Walton 9fda8f6534 Move the subpixel positioning logic in `lorem-ipsum` to the Typesetter abstraction 2017-02-21 21:50:00 -08:00
Patrick Walton 68f5694b6b Factor out more code from `lorem-ipsum` into a new `GlyphStore` abstraction 2017-02-21 15:51:39 -08:00
Patrick Walton abacb5a4c9 Move some code from `lorem-ipsum` into a new `Typesetter` object so others can use it 2017-02-21 13:06:48 -08:00
Patrick Walton 49408b95cb Add support for subpixel offsets.
Closes #11.
2017-02-20 16:01:15 -08:00
Patrick Walton e2014cff13 Add some missing CFF opcodes and refactor a bit 2017-02-16 20:39:25 -08:00
Patrick Walton 6ac37c5085 Support cubic Béziers for fonts with CFF outlines 2017-02-16 19:37:21 -08:00
Patrick Walton a508322f34 Merge pull request #10 from stshine/gitignore
Add .gitignore
2017-02-16 16:23:55 -08:00
Pu Xingyu c8e6d27520 Add .gitignore
Add gitignore file to ease development.
2017-02-16 16:06:17 +08:00
Patrick Walton 51e20b2a35 Mention Linux packages in the README
Closes #8.
2017-02-15 18:20:15 -08:00
Patrick Walton e71dd1241f Implement partial support for the CFF format
Curves are not yet supported.
2017-02-15 18:18:37 -08:00
Patrick Walton 4ffc3b9e41 Mention how to move and zoom in the demo 2017-02-14 13:46:53 -08:00
Patrick Walton 1b10ffdd54 Try to fix Linux/Windows 2017-02-14 12:29:30 -08:00
Patrick Walton 731360bc9d Try to fix RGBA atlas generation in OpenGL 2017-02-13 12:32:15 -08:00
Patrick Walton b000f6d882 Fix the case where the first and last points are both off-curve 2017-02-13 11:56:10 -08:00
Patrick Walton cd11deab46 Support RGBA atlases, needed for WebRender 2017-02-10 19:07:23 -08:00
Patrick Walton 959293839f Read shaders from disk instead of compiling them into the binary 2017-02-10 17:44:22 -08:00
Patrick Walton c4c19076c7 Allow the same glyph at different sizes to be rendered into the same atlas. 2017-02-10 17:20:05 -08:00
Patrick Walton d306ef01d1 Complete the documentation 2017-02-10 16:04:13 -08:00
Patrick Walton 6261c87b89 Read the OS/2 metrics to determine the right line spacing 2017-02-09 20:02:32 -08:00
Patrick Walton 55e1502eb2 Add build instructions 2017-02-09 17:40:37 -08:00
Patrick Walton 96daa32b90 Move direction calculation from the TCS to the TES to properly handle cusps 2017-02-09 17:09:19 -08:00
Patrick Walton 1e50bf78ba Implement basic kerning via the 'kern' table 2017-02-08 17:10:49 -08:00
Patrick Walton 5ecfadc3be Update for unorm change in `compute-shader` 2017-02-08 16:29:23 -08:00
Patrick Walton a0b23592b5 Allow specific fonts in collections to be selected 2017-02-08 15:34:16 -08:00
Patrick Walton ed4bc9b5b6 Add a README and a license 2017-02-08 14:10:42 -08:00
Patrick Walton 428a91aefa Get things working on Windows 2017-02-08 13:55:36 -08:00
Patrick Walton 851b40ea6c Document the crate 2017-02-07 20:20:14 -08:00
Patrick Walton ccf17493e0 Rename `GlyphRanges` to `GlyphMapping` and document it 2017-02-07 20:02:10 -08:00
Patrick Walton dcd3eefa33 Refactor the API to consume builders 2017-02-07 19:32:32 -08:00
Patrick Walton 9b6e8d1f41 Add some documentation 2017-02-07 17:19:36 -08:00
Patrick Walton 0e3aeb782d Fix a couple of integer overflows 2017-02-07 16:53:37 -08:00
Patrick Walton a6711af84f Add support for Format 12 cmaps 2017-02-07 16:04:15 -08:00
Patrick Walton 66d239cf2f Break at word boundaries 2017-02-07 14:40:03 -08:00