Commit Graph

15 Commits

Author SHA1 Message Date
thawk
629f7686f3 Add relative move and rotate to rel plugin (#794)
The relative position in rel plugin is currently based on the world coordinate. So for the same effect, like fly in from the right-hand side, we must use different `data-rel-x/y/z` value. Why not let the plugin do the hard part?

So I introduce a `data-rel-position`, when set to `relative`, all relative attribute is based on the position and rotation of previous slide. So no matter the rotation of previous slide, data-rel-x="1000" always looks like fly in from the right-hand side. We can change the position and rotation of one slide, and the position of all following slides will be changed too.

When `data-rel-position` is set to `relative`, relative rotation has a clear meaning. It describes the relative rotations between slides. We don't need to set rotations for all slide, setting the key slides is enough. If `data-rel-position` is not relative, the effect of `data-rel-rotate-x/y/z` is not clear, so they're only used when `data-rel-position="relative"`.

After the introduction of relative rotation, there're 6 attribute that will inherit from previous slide. If we want to set a relative X move, we have to set all other 5 attributes to 0. It's boring. So a `data-rel-clear` is used to set all 6 attributes to 0, and then the value specified in current slide is applied. 

The `examples/3D-positions/index.html` shows some usage. As you can see, the html code of two slide ring is the same, and slides except for the first two in a ring has no position attributes. It work by inheriting the previous one.

This PR invokes a lot math calculations. Basically, the rotation of a slide is translated into the coordinate describing the directions of X/Y/Z axes. And `data-rel-x/y/z` can be easily calculated by that. The rotations is the hard part, I mainly use the algorithm in the Quaternions and spatial rotation - Wikipedia to compose two and more rotations.  I'm not a math guy, hope I don't make much mistakes.
2022-04-24 21:37:50 +03:00
thawk
20f74a8b56 Fix relative-to-screen-size calculation (h and w) (#799) 2022-01-30 17:17:56 +02:00
Moritz
898083116b Update dependencies and remove outdated ones (#722)
* Update dependencies and remove outdated ones
* Add package lock file
* Add minified file
* Karma now uses headless browser to run QUnit
* Add to readme that node and npm install is required
* Update license info
* Add lint-new but don't use it in CI yet
2019-04-10 10:21:23 +03:00
Henrik Ingo
f6f4a36766 Add test/HOWTO.md (#696)
Note: I will now expect new PRs to add tests for the functionality they
add or change. (Including my own, mostly...)

Fixes #657
2018-12-17 21:35:15 +02:00
Henrik Ingo
436f92e09b Another attempt at fixing the race issue in tests for Chrome.
Seems like setting iframe.src to a dummy value causes Chrome
to trigger the onLoad event when it 404s.
2018-03-04 14:39:13 +02:00
Henrik Ingo
2a3dd7ebb2 Remove outdated comment about copying syn.js into repo. No longer the case. 2018-02-25 13:12:15 +02:00
Henrik Ingo
df3532085f impressConsole broke init() if root element didn't have id="impress"
Also adds regression tests to prevent this from happening in the future
as well as upgrades karma-chrome-launcher to newest version.

Fixes #654
2017-12-31 14:36:43 +02:00
Henrik Ingo
0dc8b43650 Introduce plugin framework
* Source files are under src/
* js/impress.js is now generated, but remains part of the repo (so it just works)
* npm run build
* build.js uses buildify node module
* Break out navigation and resize plugins from core src/impress.js file
2017-09-25 03:01:58 +03:00
Henrik Ingo
deca6c0ec3 Remove embedded qunit.js and syn.js, only use them as node modules
I will squash this commit with the previous so that qunit.js and syn.js
are never pushed to the repo.
2017-09-19 00:00:39 +03:00
Henrik Ingo
7aaea7fd37 Merge more testing coverage from henrikingo fork
* core_tests.js and navigation_tests.js have more tests
* qunit_test_runner.html runs QUnit in a browser (without karma) and
  provides a generic iframe based platform to test different  presentations.
* copy qunit.js and syn.js into the repo. This allows qunit_test_runner.html
  to work without any dependency on node/npm. (Karma obviously does need them.)
* Move jscs cli option to .jscsrc instead
2017-09-16 13:08:51 +03:00
John-David Dalton
1bf05799a0 Breakout perspective for better IE11 support. (#594) 2016-10-28 16:46:25 -07:00
Fagner Brack
53214e5849 Add encrypted sauce credentials with new key (#584)
* Add encrypted sauce credentials with new key

* Remove binary workaround in ".gitattributes"

* Revert a5fd940cd9

* Use the -out syntax instead of >>

* Revert "Use the -out syntax instead of >>"

This reverts commit 7caf1de18c9103ea9c7397c1c8f0a45c31850ec6.

Is this commit causing a "npm: command not found" error in CircleCI?

* Update sauce-encrypted-env-vars to use `export`.

* Normalize `transformOrigin` result for IE11 and Safari.

* Add webkit prefixes for Safari 8 test pass.
2016-10-01 10:34:40 -07:00
Nik Butenko
2c27f31263 Run tests with Karma test runner
Closes gh-566.
2016-06-16 21:35:08 +10:00
Fagner Brack
5bdd534321 Execute the tests through npm
Closes gh-556.
2016-05-07 18:40:30 +10:00
Henrik Ingo
f54cd8fab1 Adding qunit test framework and first set of basic tests
Some changes were cherry-picked from henrikingo/impress.js#1

Closes gh-510. Closes henrikingo/impress.js#1.
2016-04-30 13:04:29 +10:00