About to break everything with a merge
Mostly features added to DebugScript Also got MPFR C++ reals to work Should allow for a quantitative comparison between Rationals and Arbitrary Precision Floats Just... overwhelming amounts of results that it would be nice to get, so I don't know where to start...
Turtles all the way down Also fix up DebugScript's performance data I can actually plot things! Still haven't actually plotted things, but in theory I can.
Gmprat logarithms now O(1) not O(N) ... Where the "1" is determined log(3), don't get too excited So we can finally actually print values outside DBL_MIN->DBL_MAX Now to go through and remove all the cast to doubles...
Totally FITH everything I'm trying to get it so that Path and View can use a different number representation to Bezier. It's not going well.
Use Gmprat for Path bounds with TRANSFORM_BEZIERS_TO_PATH So, the bounds of Paths are stored with Gmprat The Bezier's are all stored relative to the Path, as floats The transformations are only applied to the Path Gmprat bounds. This seems to work rather well. In other news, the DeCasteljau algorithm in the CPU renderer had no upper limit, which is why it was slowing down so much. The CPU renderer tends to suffer from SIGFPE-itis when using floats, because when you do a cast there is a SIGFPE if the resultant type can't represent the operand. This occurs in a few places that don't actually affect the rendering...
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.
More debugscript things, sanity fading fast
Script should still work after loadsvg is used This is why I always use "<= 0" not "== 0"... Although if loops were unsigned that still wouldn't help.