Define for Transformations on Path only, also fixed segfault due to GraphicsBuffer
authorSam Moore <[email protected]>
Sat, 27 Sep 2014 14:10:06 +0000 (22:10 +0800)
committerSam Moore <[email protected]>
Sat, 27 Sep 2014 14:10:06 +0000 (22:10 +0800)
commit2d12d37f1657d6aef9bb80d735b6c7022aecba6e
tree7f139dcb26c120738c6b87f89a8098ac3f83d74f
parentb29310a04a51cd7d39d0858e2dec8a75c15cf097
Define for Transformations on Path only, also fixed segfault due to GraphicsBuffer

The "invalidated" is used to recycle memory in the GraphicsBuffer,
but that can only be done if there is actually enough memory.

This was causing a segfault if the document was initially empty and had things added to it.
Can now remove the hack in main.cpp where documents started with a {0,0,0,0} RECT in them.

We can now (ab)use the Path for transformations.
The idea was that Arbitrary precision stuff might be faster if we only care about the bounds of the paths.

Unfortunately the way Real was used everywhere will make it a bit difficult to actually use this.
We need Beziers and their bounds to be stored with floats, but the Path bounds to be stored with GMPrat or some other arbitrary type.

It probably won't help that much, but evaluating those Beziers with GMPrat really slows down the CPU renderer.
It's also a giant hack because I still use BezierRenderer for GPU rendering but I now use PathRenderer for CPU rendering of Beziers.

Le sigh.

We can now store Bezier bounds relative to Path bounds and apply transformations only to the Path bounds.
20 files changed:
src/bezier.cpp
src/bezier.h
src/document.cpp
src/document.h
src/eye_of_the_rabbit.script
src/graphicsbuffer.cpp
src/main.cpp
src/main.h
src/objectrenderer.cpp
src/objectrenderer.h
src/paranoidnumber.cpp
src/paranoidnumber.h
src/path.cpp
src/path.h
src/rect.h
src/svg-tests/paths.svg
src/tests/muldiv.cpp
src/tests/realops.cpp
src/view.cpp
src/view.h

UCC git Repository :: git.ucc.asn.au