pax_global_header 0000666 0000000 0000000 00000000064 13533732012 0014511 g ustar 00root root 0000000 0000000 52 comment=94b392ac20648947a37f7166d98bc6988424bfad
MutatorMath-3.0/ 0000775 0000000 0000000 00000000000 13533732012 0013620 5 ustar 00root root 0000000 0000000 MutatorMath-3.0/.coveragerc 0000664 0000000 0000000 00000001625 13533732012 0015745 0 ustar 00root root 0000000 0000000 [run]
# measure 'branch' coverage in addition to 'statement' coverage
# See: http://coverage.readthedocs.org/en/coverage-4.0.3/branch.html#branch
branch = True
# list of directories or packages to measure
source = mutatorMath
# these are treated as equivalent when combining data
[paths]
source =
Lib/mutatorMath
.tox/*/lib/python*/site-packages/mutatorMath
.tox/pypy*/site-packages/mutatorMath
[report]
# Regexes for lines to exclude from consideration
exclude_lines =
# keywords to use in inline comments to skip coverage
pragma: no cover
# don't complain if tests don't hit defensive assertion code
raise AssertionError
raise NotImplementedError
# don't complain if non-runnable code isn't run
if 0:
if __name__ == .__main__.:
# ignore source code that can’t be found
ignore_errors = True
# when running a summary report, show missing lines
show_missing = True
MutatorMath-3.0/.gitignore 0000664 0000000 0000000 00000001041 13533732012 0015604 0 ustar 00root root 0000000 0000000 # Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*.idea
*.log
# Distribution / Packaging
*.egg-info
*.eggs
build
dist
# Unit test / coverage files
.tox/
.coverage
.coverage.*
htmlcov/
Lib/support/axes.py
Lib/support/mutatorMath-A.py
Lib/support/mutatorMath-B.py
Lib/support/mutatorMath-performance.py
.coverage
.coverage.*
Lib/mutatorMath/test/ufo/testData
Lib/mutatorMath/test/ufo/data/instances
Lib/mutatorMath/test/ufo/data/no_warpmap_test.designspace
Lib/mutatorMath/test/ufo/data/warpmap_test.designspace
.pytest_cache
MutatorMath-3.0/.pyup.yml 0000664 0000000 0000000 00000000250 13533732012 0015413 0 ustar 00root root 0000000 0000000 # controls the frequency of updates (undocumented beta feature)
schedule: every week
# do not pin dependencies unless they have explicit version specifiers
pin: False
MutatorMath-3.0/.travis.yml 0000664 0000000 0000000 00000002701 13533732012 0015731 0 ustar 00root root 0000000 0000000 language: python
env:
global:
- TWINE_USERNAME="anthrotype"
- secure: CMCLOo9Y8eKK8BfYZeHfclvwx5uJX7078/nLVFF8qZJssopTA34kuJvIOG3UIGpN0Q/iy+GwKVcEHOA59aOuS+lLUjX9U6O/p9Byxg4hNrYQkqEGUS+2eUvGII9ko03ZzWpX4uGSvhRx6013cCNM3iCGtcoCQhMYsIkxAipVXBEdeo78km9lN4FEvdLy4P9KcRP8rEFWvIOg+zrvQr8i5M8UMLloL5E+AY0q+W+qVCGx6k2hxt5UGqEiffoC99Y36iXlge932ftAxOS3Yf5seh8lN5RlTnJ3fB6cqkXV28ZNi390R1kGLRQSos1bqvk3KPk3ItfSjqVJtzkKemtWbZcu0KfUzdbvjugNudfxSHYxs5rpj3ncPFC8C4Os94ICgr+HrgTODj8PBfwfm1bgKU7RboHzPa0pCPboaO1Hxac/c2BNzQPvtO8xbOw/ehIPSNTzZf/zszhcULB17nx6OUoWZKhwXw217ZUlSCd9Vo/nxx7IYktkmaydAKUbBoMBUXq6b+DgMHGpt4fRtQ/6CqU35HIvdcyiuSfFck/17Wep26GQ35JJunE/w3KNES6bcWlUShyJyk/meZwyCOEqg3n9OCax9GedO28DsQML7WK1L36JFDXk2FWq+noz/gts99u4RgBOekQ/ggRIsMFKeW0XzqYuYTqorHmbLVfYPLE=
matrix:
include:
- python: 2.7
env: TOXENV=py27-cov
- python: 3.6
env: TOXENV=py36-cov
- python: 3.7
env:
- TOXENV=py37-cov
- BUILD_DIST=true
dist: xenial
install:
- pip install tox
- pip install coveralls
script:
- tox
after_success:
- coverage combine
- coveralls
# if it's a tagged commit, upload distribution packages to pypi
- |
if [ -n "$TRAVIS_TAG" ] && [ "$TRAVIS_REPO_SLUG" == "LettError/MutatorMath" ] && [ "$BUILD_DIST" == true ]; then
pip install --upgrade twine pip setuptools wheel
python setup.py sdist
pip wheel --no-deps --wheel-dir dist .
twine upload dist/*.whl dist/*.zip
fi
MutatorMath-3.0/Docs/ 0000775 0000000 0000000 00000000000 13533732012 0014510 5 ustar 00root root 0000000 0000000 MutatorMath-3.0/Docs/designSpaceFactors.md 0000664 0000000 0000000 00000005054 13533732012 0020605 0 ustar 00root root 0000000 0000000 DesignSpace Factors
===================
In MutatorMath instances are calculated by multiplying all masters with a specific factor and then adding them all up. Determining the factors is then the important job. MutatorMath has to deal with all sorts of edge cases and extrapolation so the code might be a bit cryptic, but the basic idea is not so complex. So here are some images.
These graphs were made with Drawbot and represent actual factors calculated by MutatorMath. It is a two dimensional designspace with four masters. The axes are gray. The third dimension maps the value of the factors of the masters: 0 in the plane with the axes, 1 up in space. So while it looks like a three axis system, it is a two axis system with the factors as the third dimension.

The master at the origin, the place where all dimensions are 0, is called neutral. All other on-axis masters in the designspace are relative to this neutral. That means that the neutral is subtracted from each. At the end of the calculation the neutral is added again to inflate the instance. So the factor for the neutral is 1, it is part of everything. The factors of the neutral master form a box.

Now we insert the second master at `Location(A=1, B=0)`. It is on-axis because only one of its dimensions (A) has magnitude. Its factor is 1 along the line A=1. Note its factor is 0 at the origin and at the line A=0 (and all other axes if we had more). In this designspace the influence of this master forms a wedge.

Next we insert a another on-axis master, but now at `Location(A=0, B=1)`. This factor is 1 along the line B=1, it is 0 at the origin and the line B=1. It looks like another wedge.

But we also want to include masters at other locations, what about `Location(A=1, B=1)` for instance? We can see that at that location both on-axis masters are at full force, and even the neutral is added with factor 1. Here something interesting needs to happen. First MutatorMath calculates the instance at that location using only the on-axis masters. If you were to look at this instance closely it would be distorted: it is an extrapolation. This on-axis-only instance is then subtracted from the object we want to insert. Now the sum of the masters will look familiar again: the off-axis master corrects it. The factors for an off-axis master look like a part of a pyramid.
MutatorMath-3.0/Docs/designSpaceFileFormat.md 0000664 0000000 0000000 00000000274 13533732012 0021233 0 ustar 00root root 0000000 0000000 DesignSpace Format
==================
Please refer to the [designSpaceDocument](https://github.com/LettError/designSpaceDocument) repository for an up to data specification of the file.
MutatorMath-3.0/Docs/designSpace_neutral.jpg 0000664 0000000 0000000 00000051535 13533732012 0021202 0 ustar 00root root 0000000 0000000 JFIF d d Ducky <