{"action":"created","comment":{"url":"https://api.github.com/repos/AvaloniaUI/Avalonia/pulls/comments/186282855","pull_request_review_id":117835566,"id":186282855,"diff_hunk":"@@ -0,0 +1,21 @@\n+// Copyright (c) The Avalonia Project. All rights reserved.\n+// Licensed under the MIT license. See licence.md file in the project root for full license information.\n+\n+using System;\n+\n+namespace Avalonia.Animation.Easings\n+{\n+    /// <summary>\n+    /// Eases out a <see cref=\"double\"/> value \n+    /// using a overshooting cubic function.\n+    /// </summary>\n+    public class BackEaseOut : Easing\n+    {\n+        /// <inheritdoc/>\n+        public override double Ease(double progress)\n+        {\n+            double p = 1d - progress;\n+            return 1 - (p * p * p - p * Math.Sin(p * Math.PI));","path":"src/Avalonia.Animation/Easing/BackEaseOut.cs","position":18,"original_position":18,"commit_id":"d7036e0afe1b674401756b8966124c24b6620d1e","original_commit_id":"d7036e0afe1b674401756b8966124c24b6620d1e","user":{"login":"KvanTTT","id":1150330,"avatar_url":"https://avatars1.githubusercontent.com/u/1150330?v=4","gravatar_id":"","url":"https://api.github.com/users/KvanTTT","html_url":"https://github.com/KvanTTT","followers_url":"https://api.github.com/users/KvanTTT/followers","following_url":"https://api.github.com/users/KvanTTT/following{/other_user}","gists_url":"https://api.github.com/users/KvanTTT/gists{/gist_id}","starred_url":"https://api.github.com/users/KvanTTT/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KvanTTT/subscriptions","organizations_url":"https://api.github.com/users/KvanTTT/orgs","repos_url":"https://api.github.com/users/KvanTTT/repos","events_url":"https://api.github.com/users/KvanTTT/events{/privacy}","received_events_url":"https://api.github.com/users/KvanTTT/received_events","type":"User","site_admin":false},"body":"`1 - p * (p * p - Math.Sin(p * Math.PI))`","created_at":"2018-05-06T08:39:42Z","updated_at":"2018-05-06T08:56:13Z","html_url":"https://github.com/AvaloniaUI/Avalonia/pull/1461#discussion_r186282855","pull_request_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/pulls/1461","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/AvaloniaUI/Avalonia/pulls/comments/186282855"},"html":{"href":"https://github.com/AvaloniaUI/Avalonia/pull/1461#discussion_r186282855"},"pull_request":{"href":"https://api.github.com/repos/AvaloniaUI/Avalonia/pulls/1461"}}},"pull_request":{"url":"https://api.github.com/repos/AvaloniaUI/Avalonia/pulls/1461","id":176468175,"html_url":"https://github.com/AvaloniaUI/Avalonia/pull/1461","diff_url":"https://github.com/AvaloniaUI/Avalonia/pull/1461.diff","patch_url":"https://github.com/AvaloniaUI/Avalonia/pull/1461.patch","issue_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/issues/1461","number":1461,"state":"open","locked":false,"title":"WIP: CSS-like Animations & Transitions ","user":{"login":"jmacato","id":16554748,"avatar_url":"https://avatars0.githubusercontent.com/u/16554748?v=4","gravatar_id":"","url":"https://api.github.com/users/jmacato","html_url":"https://github.com/jmacato","followers_url":"https://api.github.com/users/jmacato/followers","following_url":"https://api.github.com/users/jmacato/following{/other_user}","gists_url":"https://api.github.com/users/jmacato/gists{/gist_id}","starred_url":"https://api.github.com/users/jmacato/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmacato/subscriptions","organizations_url":"https://api.github.com/users/jmacato/orgs","repos_url":"https://api.github.com/users/jmacato/repos","events_url":"https://api.github.com/users/jmacato/events{/privacy}","received_events_url":"https://api.github.com/users/jmacato/received_events","type":"User","site_admin":false},"body":"**This work-in-progress PR is in a constant state of breaking stuff and usage for anything other than playing around is highly discouraged, for now...** :) \r\n\r\nWith that out of the way, this PR tracks our experiment/attempt at implementing a CSS-like Style-definable Keyframe Animations and Property Transitions for Avalonia.\r\n \r\n### Non-Target\r\n- Extensive unit-tests (that will be filed after this PR).\r\n- Alternative KeyFrame interpolation algorithms (Splines, Bezier, etc.)\r\n\r\n## To-do list\r\n\r\n#### Property Transitions\r\n- [x] Style-declared Transitions \r\n- [x] Control-declared Transitions\r\n- [x] Numerical (`Double`, `Float`, `Integer`) Transitions\r\n ~~`SolidColorBrush` Transition~~ Will be on a future PR.\r\n#### Animations\r\n- [x] Style-declared Animations\r\n- [ ] Proper Class Triggering behavior\r\n- [x] Global Animations Timer with controllable play states \r\n- [x] Key frames\r\n    - [x] Generic `KeyFrame` objects\r\n    - [x] Numerical (`Double`, `Float`, `Integer`) Keyframes Animations\r\n    ~~Color (`SolidColorBrush`) Keyframes Animation~~ Will be on a future PR.\r\n- [x] Controllable Play state on every `Animatable`-derived controls.\r\n- [x] Repeat Behavior\r\n- [x] Fill modes (similar to [this](https://www.w3schools.com/cssref/css3_pr_animation-fill-mode.asp))\r\n\r\n#### Miscellaneous \r\n- [ ] Rework PageTransitions to use the new animations backend.\r\n- [ ] Rework ProgressBar's indeterminate state animation.","created_at":"2018-03-21T13:01:07Z","updated_at":"2018-05-06T08:56:13Z","closed_at":null,"merged_at":null,"merge_commit_sha":"99b69335bf31ac4b4daebdf32a0f00689664318a","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/pulls/1461/commits","review_comments_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/pulls/1461/comments","review_comment_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/pulls/comments{/number}","comments_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/issues/1461/comments","statuses_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/statuses/d7036e0afe1b674401756b8966124c24b6620d1e","head":{"label":"jmacato:wip-animations","ref":"wip-animations","sha":"d7036e0afe1b674401756b8966124c24b6620d1e","user":{"login":"jmacato","id":16554748,"avatar_url":"https://avatars0.githubusercontent.com/u/16554748?v=4","gravatar_id":"","url":"https://api.github.com/users/jmacato","html_url":"https://github.com/jmacato","followers_url":"https://api.github.com/users/jmacato/followers","following_url":"https://api.github.com/users/jmacato/following{/other_user}","gists_url":"https://api.github.com/users/jmacato/gists{/gist_id}","starred_url":"https://api.github.com/users/jmacato/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmacato/subscriptions","organizations_url":"https://api.github.com/users/jmacato/orgs","repos_url":"https://api.github.com/users/jmacato/repos","events_url":"https://api.github.com/users/jmacato/events{/privacy}","received_events_url":"https://api.github.com/users/jmacato/received_events","type":"User","site_admin":false},"repo":{"id":125504864,"name":"Avalonia","full_name":"jmacato/Avalonia","owner":{"login":"jmacato","id":16554748,"avatar_url":"https://avatars0.githubusercontent.com/u/16554748?v=4","gravatar_id":"","url":"https://api.github.com/users/jmacato","html_url":"https://github.com/jmacato","followers_url":"https://api.github.com/users/jmacato/followers","following_url":"https://api.github.com/users/jmacato/following{/other_user}","gists_url":"https://api.github.com/users/jmacato/gists{/gist_id}","starred_url":"https://api.github.com/users/jmacato/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmacato/subscriptions","organizations_url":"https://api.github.com/users/jmacato/orgs","repos_url":"https://api.github.com/users/jmacato/repos","events_url":"https://api.github.com/users/jmacato/events{/privacy}","received_events_url":"https://api.github.com/users/jmacato/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jmacato/Avalonia","description":"A multi-platform .NET UI framework","fork":true,"url":"https://api.github.com/repos/jmacato/Avalonia","forks_url":"https://api.github.com/repos/jmacato/Avalonia/forks","keys_url":"https://api.github.com/repos/jmacato/Avalonia/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jmacato/Avalonia/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jmacato/Avalonia/teams","hooks_url":"https://api.github.com/repos/jmacato/Avalonia/hooks","issue_events_url":"https://api.github.com/repos/jmacato/Avalonia/issues/events{/number}","events_url":"https://api.github.com/repos/jmacato/Avalonia/events","assignees_url":"https://api.github.com/repos/jmacato/Avalonia/assignees{/user}","branches_url":"https://api.github.com/repos/jmacato/Avalonia/branches{/branch}","tags_url":"https://api.github.com/repos/jmacato/Avalonia/tags","blobs_url":"https://api.github.com/repos/jmacato/Avalonia/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jmacato/Avalonia/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jmacato/Avalonia/git/refs{/sha}","trees_url":"https://api.github.com/repos/jmacato/Avalonia/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jmacato/Avalonia/statuses/{sha}","languages_url":"https://api.github.com/repos/jmacato/Avalonia/languages","stargazers_url":"https://api.github.com/repos/jmacato/Avalonia/stargazers","contributors_url":"https://api.github.com/repos/jmacato/Avalonia/contributors","subscribers_url":"https://api.github.com/repos/jmacato/Avalonia/subscribers","subscription_url":"https://api.github.com/repos/jmacato/Avalonia/subscription","commits_url":"https://api.github.com/repos/jmacato/Avalonia/commits{/sha}","git_commits_url":"https://api.github.com/repos/jmacato/Avalonia/git/commits{/sha}","comments_url":"https://api.github.com/repos/jmacato/Avalonia/comments{/number}","issue_comment_url":"https://api.github.com/repos/jmacato/Avalonia/issues/comments{/number}","contents_url":"https://api.github.com/repos/jmacato/Avalonia/contents/{+path}","compare_url":"https://api.github.com/repos/jmacato/Avalonia/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jmacato/Avalonia/merges","archive_url":"https://api.github.com/repos/jmacato/Avalonia/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jmacato/Avalonia/downloads","issues_url":"https://api.github.com/repos/jmacato/Avalonia/issues{/number}","pulls_url":"https://api.github.com/repos/jmacato/Avalonia/pulls{/number}","milestones_url":"https://api.github.com/repos/jmacato/Avalonia/milestones{/number}","notifications_url":"https://api.github.com/repos/jmacato/Avalonia/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jmacato/Avalonia/labels{/name}","releases_url":"https://api.github.com/repos/jmacato/Avalonia/releases{/id}","deployments_url":"https://api.github.com/repos/jmacato/Avalonia/deployments","created_at":"2018-03-16T11:02:48Z","updated_at":"2018-04-11T01:39:29Z","pushed_at":"2018-05-06T07:02:19Z","git_url":"git://github.com/jmacato/Avalonia.git","ssh_url":"git@github.com:jmacato/Avalonia.git","clone_url":"https://github.com/jmacato/Avalonia.git","svn_url":"https://github.com/jmacato/Avalonia","homepage":"http://avaloniaui.net","size":49635,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"AvaloniaUI:master","ref":"master","sha":"51eb3e1cef5b68aec2d909e80dc8dbdfadd5687c","user":{"login":"AvaloniaUI","id":14075148,"avatar_url":"https://avatars3.githubusercontent.com/u/14075148?v=4","gravatar_id":"","url":"https://api.github.com/users/AvaloniaUI","html_url":"https://github.com/AvaloniaUI","followers_url":"https://api.github.com/users/AvaloniaUI/followers","following_url":"https://api.github.com/users/AvaloniaUI/following{/other_user}","gists_url":"https://api.github.com/users/AvaloniaUI/gists{/gist_id}","starred_url":"https://api.github.com/users/AvaloniaUI/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AvaloniaUI/subscriptions","organizations_url":"https://api.github.com/users/AvaloniaUI/orgs","repos_url":"https://api.github.com/users/AvaloniaUI/repos","events_url":"https://api.github.com/users/AvaloniaUI/events{/privacy}","received_events_url":"https://api.github.com/users/AvaloniaUI/received_events","type":"Organization","site_admin":false},"repo":{"id":14964475,"name":"Avalonia","full_name":"AvaloniaUI/Avalonia","owner":{"login":"AvaloniaUI","id":14075148,"avatar_url":"https://avatars3.githubusercontent.com/u/14075148?v=4","gravatar_id":"","url":"https://api.github.com/users/AvaloniaUI","html_url":"https://github.com/AvaloniaUI","followers_url":"https://api.github.com/users/AvaloniaUI/followers","following_url":"https://api.github.com/users/AvaloniaUI/following{/other_user}","gists_url":"https://api.github.com/users/AvaloniaUI/gists{/gist_id}","starred_url":"https://api.github.com/users/AvaloniaUI/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AvaloniaUI/subscriptions","organizations_url":"https://api.github.com/users/AvaloniaUI/orgs","repos_url":"https://api.github.com/users/AvaloniaUI/repos","events_url":"https://api.github.com/users/AvaloniaUI/events{/privacy}","received_events_url":"https://api.github.com/users/AvaloniaUI/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/AvaloniaUI/Avalonia","description":"A multi-platform .NET UI framework","fork":false,"url":"https://api.github.com/repos/AvaloniaUI/Avalonia","forks_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/forks","keys_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/keys{/key_id}","collaborators_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/teams","hooks_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/hooks","issue_events_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/issues/events{/number}","events_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/events","assignees_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/assignees{/user}","branches_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/branches{/branch}","tags_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/tags","blobs_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/git/refs{/sha}","trees_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/git/trees{/sha}","statuses_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/statuses/{sha}","languages_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/languages","stargazers_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/stargazers","contributors_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/contributors","subscribers_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/subscribers","subscription_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/subscription","commits_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/commits{/sha}","git_commits_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/git/commits{/sha}","comments_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/comments{/number}","issue_comment_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/issues/comments{/number}","contents_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/contents/{+path}","compare_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/compare/{base}...{head}","merges_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/merges","archive_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/downloads","issues_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/issues{/number}","pulls_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/pulls{/number}","milestones_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/milestones{/number}","notifications_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/labels{/name}","releases_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/releases{/id}","deployments_url":"https://api.github.com/repos/AvaloniaUI/Avalonia/deployments","created_at":"2013-12-05T20:13:21Z","updated_at":"2018-05-06T07:37:33Z","pushed_at":"2018-05-06T07:02:21Z","git_url":"git://github.com/AvaloniaUI/Avalonia.git","ssh_url":"git@github.com:AvaloniaUI/Avalonia.git","clone_url":"https://github.com/AvaloniaUI/Avalonia.git","svn_url":"https://github.com/AvaloniaUI/Avalonia","homepage":"http://avaloniaui.net","size":49557,"stargazers_count":4306,"watchers_count":4306,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":389,"mirror_url":null,"archived":false,"open_issues_count":232,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":389,"open_issues":232,"watchers":4306,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/AvaloniaUI/Avalonia/pulls/1461"},"html":{"href":"https://github.com/AvaloniaUI/Avalonia/pull/1461"},"issue":{"href":"https://api.github.com/repos/AvaloniaUI/Avalonia/issues/1461"},"comments":{"href":"https://api.github.com/repos/AvaloniaUI/Avalonia/issues/1461/comments"},"review_comments":{"href":"https://api.github.com/repos/AvaloniaUI/Avalonia/pulls/1461/comments"},"review_comment":{"href":"https://api.github.com/repos/AvaloniaUI/Avalonia/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/AvaloniaUI/Avalonia/pulls/1461/commits"},"statuses":{"href":"https://api.github.com/repos/AvaloniaUI/Avalonia/statuses/d7036e0afe1b674401756b8966124c24b6620d1e"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"KvanTTT"}}