{"action":"created","issue":{"url":"https://api.github.com/repos/mattlag/Glyphr-Studio/issues/214","labels_url":"https://api.github.com/repos/mattlag/Glyphr-Studio/issues/214/labels{/name}","comments_url":"https://api.github.com/repos/mattlag/Glyphr-Studio/issues/214/comments","events_url":"https://api.github.com/repos/mattlag/Glyphr-Studio/issues/214/events","html_url":"https://github.com/mattlag/Glyphr-Studio/issues/214","id":108325982,"number":214,"title":"paper.js","user":{"login":"gambhiro","id":1586232,"avatar_url":"https://avatars.githubusercontent.com/u/1586232?v=3","gravatar_id":"","url":"https://api.github.com/users/gambhiro","html_url":"https://github.com/gambhiro","followers_url":"https://api.github.com/users/gambhiro/followers","following_url":"https://api.github.com/users/gambhiro/following{/other_user}","gists_url":"https://api.github.com/users/gambhiro/gists{/gist_id}","starred_url":"https://api.github.com/users/gambhiro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gambhiro/subscriptions","organizations_url":"https://api.github.com/users/gambhiro/orgs","repos_url":"https://api.github.com/users/gambhiro/repos","events_url":"https://api.github.com/users/gambhiro/events{/privacy}","received_events_url":"https://api.github.com/users/gambhiro/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-09-25T13:25:47Z","updated_at":"2015-09-25T17:12:20Z","closed_at":null,"body":"By all means I am coming late to the discussions (#119, byte-foundry/prototypo#115), but now, before\r\n@mattlag's big boolean target, is perhaps a good time bring it up.\r\n\r\nWhen I noticed that I'd like to rotate a bowl for a serif `o`, I thought, hmm,\r\nlet's add the feature and keep designing. But then, when I see that I'd have to\r\nimplement the classic matrix classes and transforms, debug the whole mess I'd\r\nwrite, work out the API for it and so on, I feel very tired. I was interested in\r\npretty typefaces and now I would have to code `compsci` to continue.\r\n\r\nDo you not get this feeling?\r\n\r\nI pick up the atmosphere that you think `paper.js` would be a good thing, but it\r\nwould mean re-writing most of `Glyphr Studio` using the paper.js classes and\r\nAPI, and perhaps just thinking of that makes you feel tired.\r\n\r\nRewriting is not a bad thing! I want to help putting fire in that flame.\r\n\r\nSure, math is just math, UI is just gfx, and `paper.js` is not magic, but compsci is time consuming, and the paper.js folks have already had the headaches of growing and debugging a rich library of vector\r\ngraphics features.\r\n\r\nIf all one needed was a rotation transform, then yes, the rest of a big lib is\r\ntoo much extra. But then you need booleans, intersections, some other feature,\r\nand so on, and adding UI for it is all about vector graphics animations (if not\r\nthe bouncy-bouncy type), so `paper.js` would get well used.\r\n\r\nIt also lowers the bar and the effort needed to add new features. I mean, I'm\r\nnot very experienced in JS, but if there is lib with docs, I can write a loop or\r\ntwo and keep going, like in #124. That vision is fun, in addition to actually drawing pretty letters! Even if it is the payoff of a major backtrack and rewrite.\r\n\r\nWhat are your thoughts on this?\r\n"},"comment":{"url":"https://api.github.com/repos/mattlag/Glyphr-Studio/issues/comments/143290681","html_url":"https://github.com/mattlag/Glyphr-Studio/issues/214#issuecomment-143290681","issue_url":"https://api.github.com/repos/mattlag/Glyphr-Studio/issues/214","id":143290681,"user":{"login":"mattlag","id":5897669,"avatar_url":"https://avatars.githubusercontent.com/u/5897669?v=3","gravatar_id":"","url":"https://api.github.com/users/mattlag","html_url":"https://github.com/mattlag","followers_url":"https://api.github.com/users/mattlag/followers","following_url":"https://api.github.com/users/mattlag/following{/other_user}","gists_url":"https://api.github.com/users/mattlag/gists{/gist_id}","starred_url":"https://api.github.com/users/mattlag/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mattlag/subscriptions","organizations_url":"https://api.github.com/users/mattlag/orgs","repos_url":"https://api.github.com/users/mattlag/repos","events_url":"https://api.github.com/users/mattlag/events{/privacy}","received_events_url":"https://api.github.com/users/mattlag/received_events","type":"User","site_admin":false},"created_at":"2015-09-25T17:12:20Z","updated_at":"2015-09-25T17:12:20Z","body":"Hi @gambhiro!\r\n\r\nThis is pretty cool.  I have two quick comments - and then I may have time to dig deep into this later.\r\n\r\n1. To answer your question about paper.js, i'm not inherently opposed to using it.  Glyphr Studio may seem like a big, fancy program (maybe it is?) but it's secret is that it can be better categorized as a crazy spare time project I do for fun.  Probably not too different than a lot of other projects out there.  Taking this into consideration, I actually have a different set of goals than most projects, and speed of development isn't one of them!  Additionally, digging into crazy maths and understanding random stuff is actually one of the benefits, in my opinion.  For the Bezier add-point-to-path, I actually sat down and spent time learning about Bezier curves - it took a long time, but that's my idea of an intellectual diversion.  So: Slow / Grueling / Boring / In-depth programming is something I like about this :-)\r\n\r\n2. Getting help from outside people has also been a goal of mine, but the scope of your improvement is much larger than any collaboration that i've done before.  Not a problem!  Eventually i'd like to actually have *native* Glyphr Studio code that does all the mundane matrix compsci stuff, but i'm not opposed to using paper.js as a stopgap.  I would recomend you dig a little deeper into how Components in Glyphr Studio work.  Essentially they take a pointer to another Glyph, and keep track of the changes between that Root Component and a Component Instance.  Any rotate / skew / whatever edit on a shape also has to be stored in Component Instances - so it can't just be a simple dump off to Paper.js and get new points back.  This shouldn't be too hard to do, but it will be a blocker for shipping a feature like this.  Because of the functionality of Components, most transform methods have to be implemented for Shapes, ComponentInstances, and Glyphs.\r\n\r\nThat's it - i'll look at your new stuff in more detail later.  Thank you!"}}