ipdf/code.git
7 years agoAnimation of precision_vs_zoom
Sam Moore [Wed, 17 Sep 2014 16:09:00 +0000 (00:09 +0800)]
Animation of precision_vs_zoom

7 years agoSome sort of vague ipython analysis
Sam Moore [Wed, 17 Sep 2014 11:47:33 +0000 (19:47 +0800)]
Some sort of vague ipython analysis

Should probably be split into .py files and just use ipython to do the plots.
Should probably see if we can get Jenkins to run things... oh what am I saying.

7 years agoChange to things to make performance testing easier
Sam Moore [Mon, 15 Sep 2014 17:26:00 +0000 (01:26 +0800)]
Change to things to make performance testing easier

- Saving of CPU and GPU BMPs
  - OverlayBMP doesn't overlay a BMP which is good because we don't want it to...
- SVG loads in centre of view
  - This will break the Quad tree, probably
- tests/bmpdiff allows us to quantitatively compare output bmp images.
  - I didn't say it was a good metric, there's just a metric now.
- Arguments to set rendering and transform type, argument to set maximum number of frames to render,
argument to turn off the lazy rendering.

Will make some kind of ipython notebook next I guess.

7 years agoMerge branch 'master' of git.ucc.asn.au:/ipdf/code
Sam Moore [Tue, 16 Sep 2014 10:46:43 +0000 (18:46 +0800)]
Merge branch 'master' of git.ucc.asn.au:/ipdf/code

sulix fixed the quad trees and I forgot about `git stash` again.

7 years agoSlightly better results
Sam Moore [Tue, 16 Sep 2014 10:43:39 +0000 (18:43 +0800)]
Slightly better results

Assuming we can trust Wolfram's Giant Ego, err, I mean Wolfram Alpha, to give exact results,
it is generally giving a better result than doubles.

Try simplifying the "a/b + c/d" cases next?

Also at the moment "(a + b)*c" does not simplify to "a*c + b*c" even if
a*c is exact.

Have to be careful because sometimes making the representation more exact
ends up making the conversion back to double have a bigger error.

7 years agoParanoidNumbers work except for the simplifying bit...
Sam Moore [Tue, 16 Sep 2014 09:26:46 +0000 (17:26 +0800)]
ParanoidNumbers work except for the simplifying bit...

I really really hope they work anyway.
Tester doesn't fail too disastrously, but PN gives a worse result than doubles.

7 years agoAdd quadtree back to the Makefile
David Gow [Mon, 15 Sep 2014 05:38:27 +0000 (13:38 +0800)]
Add quadtree back to the Makefile

7 years agoNope.avi
Sam Moore [Sat, 13 Sep 2014 18:36:12 +0000 (02:36 +0800)]
Nope.avi

7 years agoBreak maths some more
Sam Moore [Thu, 11 Sep 2014 17:33:37 +0000 (01:33 +0800)]
Break maths some more

CombineTerms is somewhat horribly broken

But it works well enough to beat doubles at "0.3 + 0.3 + 0.3"
...
And nothing else I've tried. In fact it's worse or equal to doubles at everything else so far.
But I haven't done many operations because CombineTerms breaks everything. Maybe it will get better if that isn't broken horribly.

7 years agoParanoia is setting in
Sam Moore [Thu, 11 Sep 2014 16:37:35 +0000 (00:37 +0800)]
Paranoia is setting in

Paranoid Numbers are hard to simplify properly. But they work. Kind of...

7 years agoHeinous Quadtree crimes.
David Gow [Thu, 11 Sep 2014 12:44:19 +0000 (20:44 +0800)]
Heinous Quadtree crimes.

"The bézier tiptoed out of bed. What an adventure it would be to go beyond the
quadtree node in which it had lived its entire life. Its mother had told it
sternly that it was dangerous to wander the dark  wastes beyond the root node.
Bobby Bézier had never believed the stories, though: there were no such things
as wild NaNs that ate all of the coefficients of naughty boys. Bobby looked up
at the sky: the infinite void of night penetrated only by the debug text high
above. Tentatively, he inched one of his endpoints over the quadtree node
boundary. But alas: his mother had perhaps been right all along. She would scald
him so... how would he hide the fact that his endpoint had been clipped right
off!"

7 years agoMerge branch 'master' of git.ucc.asn.au:ipdf/code
David Gow [Thu, 11 Sep 2014 12:08:49 +0000 (20:08 +0800)]
Merge branch 'master' of git.ucc.asn.au:ipdf/code

7 years agoBecause merging is going to be fun.
David Gow [Thu, 11 Sep 2014 12:08:27 +0000 (20:08 +0800)]
Because merging is going to be fun.

7 years agoSome really horrible utility Quadtree functions.
David Gow [Thu, 11 Sep 2014 12:04:59 +0000 (20:04 +0800)]
Some really horrible utility Quadtree functions.

Who writes a recursive function with four switch statements in it?
(Apparently, I do...)

7 years agoThe QuadTree is ~72% more amazing.
David Gow [Wed, 10 Sep 2014 07:30:55 +0000 (15:30 +0800)]
The QuadTree is ~72% more amazing.

7 years agoAdd MPFRC++ mpreal type
Sam Moore [Wed, 10 Sep 2014 04:45:00 +0000 (12:45 +0800)]
Add MPFRC++ mpreal type

It's slow but less slow than Rationals.

Project complete.

Haha I wish.

7 years agoFix compiling with non doubles
Sam Moore [Thu, 4 Sep 2014 18:14:52 +0000 (02:14 +0800)]
Fix compiling with non doubles

Added really terrible number representation as a series of operations on floats.
It currently gets a few things wrong...

7 years ago// there is no elegance here. only sleep deprivation and regret.
David Gow [Thu, 4 Sep 2014 08:38:28 +0000 (16:38 +0800)]
// there is no elegance here. only sleep deprivation and regret.

Basically, clipping Béziers now actually works, because De Casteljau is
no longer totally back to front. (In fact, I think I just made it more back to front,
which cancelled the original out?)

Also disabled zoom out in the quadtree and some dodgy disabled debug in the bezier shader.

7 years agoCompositing on CPU sort of kind of works if we ignore Alpha*
Sam Moore [Tue, 2 Sep 2014 10:43:40 +0000 (18:43 +0800)]
Compositing on CPU sort of kind of works if we ignore Alpha*

*Alpha is hard and I'm just going to ignore it.

Hacky fix to "overflood" problem where the fill point is outside the boundary;
since it can't be more than 1 pixel outside, check the neighbours before starting
the fill.

Unfortunately this means if the fill point is only one pixel *inside* the boundary,
there is no fill.

Tried brute force approach for low resolution paths, but that doesn't really work.
Path::PointInside doesn't seem to succeed where it should...

Other things might have happened.

Not much happened towards actually getting infinite precision,
starting to run out of time, panic mode engaged...

PANIC MODE ENGAGED

PANIC LEVELS AT 100%

EMERGENCY ANTIPROCRASTINATION MEASURES FAILED

PANIC LEVELS AT 200%

ENGAGE SHUT UP AND FIX EVERYTHING MODE

FAILED TO SHUT UP

PANIC LEVELS AT 300%

ENGAGE DINNER TIME

DINNER TIME SUCCESSFUL

PANIC LEVELS STILL AT 300%
apathy levels at 1000%

7 years agoClassify Beziers, use DeCasteljau for CPU renderer
Sam Moore [Mon, 1 Sep 2014 12:55:55 +0000 (20:55 +0800)]
Classify Beziers, use DeCasteljau for CPU renderer

I don't know how glDrawLines does it, but I can't get rid of the wiggles in straight lines done using CPU renderer.
So I switched to DeCasteljau.

Then I made it classify the lines and only use one Bresenham instead of 100 anyway.

7 years agoCareful, you may have to shade your eyes
Sam Moore [Thu, 28 Aug 2014 23:05:41 +0000 (07:05 +0800)]
Careful, you may have to shade your eyes

Except for all the things that don't quite work, shading works perfectly.

7 years agoMostly working, optimize curves completely within nodes.
David Gow [Thu, 28 Aug 2014 11:57:09 +0000 (19:57 +0800)]
Mostly working, optimize curves completely within nodes.

7 years agoSlighlymoreworkingish
David Gow [Thu, 28 Aug 2014 05:53:50 +0000 (13:53 +0800)]
Slighlymoreworkingish

7 years agoCrash instead of generating NaN. This breaks everything.
David Gow [Thu, 28 Aug 2014 03:47:43 +0000 (11:47 +0800)]
Crash instead of generating NaN. This breaks everything.

7 years agoInfinite Quadtree precision now works with some Béziers
David Gow [Wed, 27 Aug 2014 15:13:47 +0000 (23:13 +0800)]
Infinite Quadtree precision now works with some Béziers

You can zoom in a long way on some, others exhibit precision problems after
quite a long way. Probably the curve cannot be further simplified or something?

7 years agoAdd a vec2 struct.
David Gow [Wed, 27 Aug 2014 08:24:25 +0000 (16:24 +0800)]
Add a vec2 struct.

7 years agoA Song of Floodfills and Segfaults
Sam Moore [Tue, 26 Aug 2014 10:42:33 +0000 (18:42 +0800)]
A Song of Floodfills and Segfaults

Ok, just need to make the FloodFillOnCPU not stack overflow...

7 years agoMerge branch 'master' of git.ucc.asn.au:ipdf/code
David Gow [Mon, 25 Aug 2014 08:54:46 +0000 (16:54 +0800)]
Merge branch 'master' of git.ucc.asn.au:ipdf/code

Conflicts:
src/document.cpp

7 years agoShading still doesn't work
Sam Moore [Mon, 25 Aug 2014 14:44:33 +0000 (22:44 +0800)]
Shading still doesn't work

Actually it's supposed to be "filling" shading implies the colour changes.
Whatever.

7 years agoSome half-done quadtree experiments.
David Gow [Mon, 25 Aug 2014 08:30:00 +0000 (16:30 +0800)]
Some half-done quadtree experiments.

7 years agoSupport colours in shading
Sam Moore [Sun, 24 Aug 2014 10:30:32 +0000 (18:30 +0800)]
Support colours in shading

Shading doesn't actually work still but that's of minor concern

7 years agoBéziers magically work with the QuadTree (sometimes)
David Gow [Thu, 21 Aug 2014 10:58:24 +0000 (18:58 +0800)]
Béziers magically work with the QuadTree (sometimes)

Also maybe broke qt. It fixed it for my laptop.`

7 years agoMore broken quadtree monstrosity.
David Gow [Thu, 21 Aug 2014 05:15:22 +0000 (13:15 +0800)]
More broken quadtree monstrosity.

7 years agoTotally break Quadtree Béziers.
David Gow [Wed, 20 Aug 2014 17:13:22 +0000 (01:13 +0800)]
Totally break Quadtree Béziers.

7 years agoAdded a Bezier::ReParametrise() function.
David Gow [Wed, 20 Aug 2014 15:06:40 +0000 (23:06 +0800)]
Added a Bezier::ReParametrise() function.

This returns a bezier equivalent to the segment from t0 -> t1 of the
original bezier.

Derivation at: http://davidgow.net/stuff/cubic_bezier_reparam.pdf
for now. If it's not too embarrasing, it might end up in the documents repo.

7 years agoFix adding text.
David Gow [Tue, 19 Aug 2014 12:11:57 +0000 (20:11 +0800)]
Fix adding text.

(And remove some Debug printing)

7 years agoMerge branch 'master' of git.ucc.asn.au:/ipdf/code
Sam Moore [Mon, 18 Aug 2014 13:47:51 +0000 (21:47 +0800)]
Merge branch 'master' of git.ucc.asn.au:/ipdf/code

Noooo

7 years agoGo nuts with Qt
Sam Moore [Mon, 18 Aug 2014 14:47:00 +0000 (22:47 +0800)]
Go nuts with Qt

We can do all the things I promised!*
And we can do it without having to implement a vim style stdio based interface!
Or adding 16 extra mouse buttons!

Qt can parse XML or even SVG all by itself though...
I'm going to ignore that and just keep treating it as a menu system.

* Commit --amend

Well, the set of things we can do is neither a subset nor a superset of the things I promised.

7 years agoFix kerning for the first pair of characters
David Gow [Mon, 18 Aug 2014 13:18:31 +0000 (21:18 +0800)]
Fix kerning for the first pair of characters

7 years agoTerrible hacky SolveCubic.
David Gow [Mon, 18 Aug 2014 13:08:18 +0000 (21:08 +0800)]
Terrible hacky SolveCubic.

(I'm sorry, but I'm going to need more sleep before I tackle
complex numbers here)

7 years agoSlightly better kerning maybe?
David Gow [Mon, 18 Aug 2014 08:59:28 +0000 (16:59 +0800)]
Slightly better kerning maybe?

7 years agoMake Qt4 work
Sam Moore [Mon, 18 Aug 2014 05:18:39 +0000 (13:18 +0800)]
Make Qt4 work

Needed to generate a special "moc" cpp file from the header file

7 years agoInflict Qt4 upon the codebase
Sam Moore [Sun, 17 Aug 2014 09:28:51 +0000 (17:28 +0800)]
Inflict Qt4 upon the codebase

I'm getting issues compiling it though
Qt seems to expect some magical auto-generated Makefile

Remove the not-very-functional control panel with a "CONTROLPANEL_DISABLED" define.

7 years agoMake project relevant to Mechatronics
Sam Moore [Sun, 17 Aug 2014 05:59:26 +0000 (13:59 +0800)]
Make project relevant to Mechatronics

Also fix missing actually setting the origin with the "moveto" path command.

7 years agoDon't write past the end of a GPU mem buffer.
David Gow [Fri, 15 Aug 2014 04:38:08 +0000 (12:38 +0800)]
Don't write past the end of a GPU mem buffer.

(It causes crashiness)

7 years agoRe-fix QuadTree GPU rendering, discard groups
David Gow [Thu, 14 Aug 2014 13:44:14 +0000 (21:44 +0800)]
Re-fix QuadTree GPU rendering, discard groups

7 years agoAttempt Shading + Bezier Bounds (hopefully) correct
Sam Moore [Thu, 14 Aug 2014 20:20:37 +0000 (04:20 +0800)]
Attempt Shading + Bezier Bounds (hopefully) correct

Turns out I can't do high school calculus despite 4 years of Physics study.

The shading algorithm I envisioned has several rather hilarious
things wrong with it...

Although that 'j' does look damn good if you set the zoom *just* right...

7 years agoMake bezier control point coordinates relative
Sam Moore [Thu, 14 Aug 2014 16:48:03 +0000 (00:48 +0800)]
Make bezier control point coordinates relative

So the quad tree should just have to care about bounding rectangles.
Also so the GPU renderer now doesn't need transforming but CPU renderer does now.

AddBezier assumes absolute coordinates and transforms to relative coordinates
AddBezierData is assuming relative coordinates.

Totally clear.

PS: Basically whatever is convenient/efficient for the GPU is inconvenient/inefficient for the CPU
and vice versa. Fun!

7 years agoFix ymax in GROUP bounding box
Sam Moore [Thu, 14 Aug 2014 04:54:57 +0000 (12:54 +0800)]
Fix ymax in GROUP bounding box

svg-tests/circlepath.svg has the right box now

BTW: Segfaults in previous commit occur only for quadtree enabled

7 years agoSVG tests are 100% less symlinky
Sam Moore [Thu, 14 Aug 2014 04:48:04 +0000 (12:48 +0800)]
SVG tests are 100% less symlinky

That's the good news.
The bad news is that somewhere along the way a bunch of them became 100% more segfaulty.

7 years agoGroups are a thing and sort of have a bounding box now
Sam Moore [Thu, 14 Aug 2014 04:34:55 +0000 (12:34 +0800)]
Groups are a thing and sort of have a bounding box now

That was what I forgot in the last commit; I added "GROUP".

So, the idea is that GROUP can be used to shade a path.
Maybe. Eventually.

Or, it could just be used to make quad tree magic easier (?)

Or it could do both! (Since you can pretty easily just turn off the shading...
 but we're getting ahead of ourselves a bit there)

Or, if it gets given a name, then it can be used to implement the <use> SVG tag.
And then we can allow recursion (which regular SVG doesn't support).

Wouldn't it be nice...

7 years agoBezier bounds rectangles are calculated correctly
Sam Moore [Thu, 14 Aug 2014 04:21:31 +0000 (12:21 +0800)]
Bezier bounds rectangles are calculated correctly

CPU rendering and SVG parsing uses absolute coordinates.
GPU rendering uses relative coordinates (relative to the bounding box).

The Objects struct stores the absolute bounding boxes now.

Previously it was just using {0,0,1,1} (and thus the GPU's relative coordinates were
equivelant to the CPU's absolute coordinates).

I might have fixed some other things but I can't remember.

7 years agoSupport some more SVG stuff.
David Gow [Wed, 13 Aug 2014 13:38:56 +0000 (21:38 +0800)]
Support some more SVG stuff.

Can now get a dodgy, slightly hacked bit of gnuplot output to
render.

7 years agoClipping for RECT types. Breaks a little.
David Gow [Wed, 13 Aug 2014 13:09:59 +0000 (21:09 +0800)]
Clipping for RECT types. Breaks a little.

When using QuadTrees, RECT_OUTLINE and RECT_FILLED are clipped to
the quadtree node.

This lets you zoom in forever on rectangles with a couple of caveats:
1. This is technically wrong for RECT_OUTLINE, as more lines will be added.
2. There are a couple of issues related to the fact that only one node is
   visible at a time. Notably:
   (a) You lose the infinite precision when stradling a quadtree boundary,
       which will happen eventually.
   (b) Zooming out will show random broken things.

However, if you look at shape.svg, you can see how moving the camera around when
both the RECT and the BEZIER are in view, the RECT moves smoothly and the BEZIER
doesn't.

7 years agoUse correct font metrics from truetype files.
David Gow [Wed, 13 Aug 2014 12:52:57 +0000 (20:52 +0800)]
Use correct font metrics from truetype files.

Kerning, etc. should now be correct, but we use a monospace font
so it doesn't matter.

7 years agoAutomatically generate quadtree children.
David Gow [Wed, 13 Aug 2014 11:49:33 +0000 (19:49 +0800)]
Automatically generate quadtree children.

This mostly works, and does the view reparenting. It doesn't do any clipping,
so we still hit precision issues as (for example) bézier control points are
outside the quadtree node's coordinate system, and become very, very large.

There are some issues with the boundaries of quadtree nodes, as the system
currently can't display two nodes at once. To compensate, it traverses up the
tree until it finds a single node which contains both, though this will be
a distant anscestor if the nodes are distantly related.

Quadtrees are still disabled by default. There are also a couple of minor
changes to the GL code to make it spit out fewer error messages and run
slightly faster on some hardware.

7 years agoI am an idiot: the quadtree code is now fixed.
David Gow [Wed, 13 Aug 2014 08:05:38 +0000 (16:05 +0800)]
I am an idiot: the quadtree code is now fixed.

tl;dr: needed more * by 2.

iab;wtd*: The index buffers on the GPU contain _two_ elements per object,
one for the top left of the object's bounding box, one for the bottom-right.
We were taking that into account when computing the number of indices to give
the DrawElements() call, but not when calculating the offset into the buffer.

Oops.

*: I am bored; want tedious detail

7 years agoA bunch of OpenGL debug annotations.
David Gow [Wed, 13 Aug 2014 04:45:26 +0000 (12:45 +0800)]
A bunch of OpenGL debug annotations.

(Which will probably break compiling on cabellera)

7 years agoSVG transforms now less broken
Sam Moore [Tue, 12 Aug 2014 16:54:35 +0000 (00:54 +0800)]
SVG transforms now less broken

They work for rabbit_simple.svg now; that's pretty cool
Still appear slightly broken for more complicated SVGs (eg: the fox in ipdf/sam).

svg-tests/recursive.svg produces this error in eye of mate:
(eom:7883): librsvg-WARNING **: Circular SVG reference noticed, dropping

(If you have only one group referencing itself, there is no error but no recursion).

7 years agoMerge branch 'master' of git.ucc.asn.au:ipdf/code
David Gow [Tue, 12 Aug 2014 14:08:36 +0000 (22:08 +0800)]
Merge branch 'master' of git.ucc.asn.au:ipdf/code

7 years agoStill-broken quadtree shenanigans!
David Gow [Tue, 12 Aug 2014 14:07:56 +0000 (22:07 +0800)]
Still-broken quadtree shenanigans!

Quadtrees are, therefore, still disabled by default.

7 years agoOnly slightly totally broken SVG transformations
Sam Moore [Tue, 12 Aug 2014 10:29:59 +0000 (18:29 +0800)]
Only slightly totally broken SVG transformations

Argh

The matrices are ((a c e) (b d f) (0 0 1))

*Not* ((a b c) (d e f) (0 0 1))

I guess it's better than the Rect bounds crap.
But still broken.

7 years agoSVG text and line elements
Sam Moore [Tue, 12 Aug 2014 07:14:40 +0000 (15:14 +0800)]
SVG text and line elements

Totally not done properly but whatever

7 years agoMake adding text to the document easier
Sam Moore [Tue, 12 Aug 2014 06:36:47 +0000 (14:36 +0800)]
Make adding text to the document easier

tl;dr Use Document::AddText() to put text in places
Pass the font file in the Document constructor or call Document::SetFont() to change fonts

ts;iwtrm I am not freeing the font data buffer because I strongly suspect we will want to keep it.

You might be able to have arbitrary precision text only documents really easily if you
just re-add the glyphs at a new scale. That might be better than reparenting each individual bezier.

We could add a Document::Finalize() to free memory like the font data
which is used in creating the document but not needed afterwards.

But I want to be able to interactively add text anyway, so there doesn't seem
to be much point at the moment.

7 years agoDeal with groups in SVG parsing
Sam Moore [Tue, 12 Aug 2014 06:08:00 +0000 (14:08 +0800)]
Deal with groups in SVG parsing

ParseSVGNode will recursively parse <svg>, <g> and <group> nodes.

Basically just going to try and implement a bunch more of SVG now.

The "transform" attribute would be a useful one to deal with because svg editors (at least, inkscape)
seem to be rather liberal in using it.

I hope the timestamp for this is correct, I ran git commit --amend but
I don't know if that will fix it.

7 years agoMerge branch 'master' of git://git.ucc.asn.au/ipdf/code
Sam Moore [Fri, 8 Aug 2014 08:08:30 +0000 (16:08 +0800)]
Merge branch 'master' of git://git.ucc.asn.au/ipdf/code

7 years agoYes, we do need to delete m_op somehow.
David Gow [Thu, 7 Aug 2014 14:45:02 +0000 (22:45 +0800)]
Yes, we do need to delete m_op somehow.

7 years ago"fixed" Rational::ToDouble().
David Gow [Thu, 7 Aug 2014 14:30:37 +0000 (22:30 +0800)]
"fixed" Rational::ToDouble().

Previously if the numerator or denominator was > the range of a double,
Rational.ToDouble() would return NaN. We now check for this case, and
discard precision accordingly.

7 years agoFix compiling with Arbint/Gmpint rationals
David Gow [Thu, 7 Aug 2014 14:05:03 +0000 (22:05 +0800)]
Fix compiling with Arbint/Gmpint rationals

7 years agoFix SVG rendering of glyphs.svg
David Gow [Thu, 7 Aug 2014 13:40:33 +0000 (21:40 +0800)]
Fix SVG rendering of glyphs.svg

- Convert Quadratics -> Cubics properly
- Correctly handle relative movements in LineTo.

7 years agoThe power of truetype font rendering!
David Gow [Thu, 7 Aug 2014 13:34:33 +0000 (21:34 +0800)]
The power of truetype font rendering!

7 years agoMake it work on Cabellera (again)
Sam Moore [Thu, 7 Aug 2014 03:44:01 +0000 (11:44 +0800)]
Make it work on Cabellera (again)

I keep forgetting I shouldn't use C++11 features
THEY ARE JUST SO CONVENIENT!

:(

Clownfish has C++11 but the open source AMD drivers don't like
geometry shaders and sulix threatened me with dire consequences
of installing fglrx...

Also fix the symlinks in svg-tests

7 years agoMerge branch 'master' of git.ucc.asn.au:/ipdf/code
Sam Moore [Thu, 7 Aug 2014 02:46:46 +0000 (10:46 +0800)]
Merge branch 'master' of git.ucc.asn.au:/ipdf/code

Dammit I hate merges

7 years agoCubic Beziers and more SVG stuff
Sam Moore [Thu, 7 Aug 2014 02:42:02 +0000 (10:42 +0800)]
Cubic Beziers and more SVG stuff

Cubic Beziers!
Actually transform the coordinates properly!

Sort of maybe kind of render shape.svg correctly*

* Shading and stroke width will be available in the premium edition, order today for $99.99

7 years agoMerge branch 'master' of git.ucc.asn.au:ipdf/code
David Gow [Wed, 6 Aug 2014 16:09:37 +0000 (00:09 +0800)]
Merge branch 'master' of git.ucc.asn.au:ipdf/code

7 years agoSome QuadTree fixes.
David Gow [Wed, 6 Aug 2014 16:09:23 +0000 (00:09 +0800)]
Some QuadTree fixes.

7 years agoMerge branch 'master' of git.ucc.asn.au:/ipdf/code
Sam Moore [Wed, 6 Aug 2014 10:14:14 +0000 (18:14 +0800)]
Merge branch 'master' of git.ucc.asn.au:/ipdf/code

At least I set my time correctly this time. ho ho.

7 years agoThe view size is not 640x480 and hasn't been for a long time
Sam Moore [Wed, 6 Aug 2014 10:11:40 +0000 (18:11 +0800)]
The view size is not 640x480 and hasn't been for a long time

So taking that plus some other stuff into account, the CPU renderer
for Beziers now uses the same number of lines as the GPU renderer!

Except when the bezier is a straight line. Then it just uses 1.

They still look slightly different. There is probably something wrong
with my Bresenham implementation.

7 years agoQuadTree should segfault less frequently.
David Gow [Wed, 6 Aug 2014 03:56:03 +0000 (11:56 +0800)]
QuadTree should segfault less frequently.

Still gives incorrect results w/ GPU transform.

7 years agoFix Bézier CPU rendering.
David Gow [Tue, 5 Aug 2014 15:10:28 +0000 (23:10 +0800)]
Fix Bézier CPU rendering.

7 years agoFix beziers on GPU.
David Gow [Tue, 5 Aug 2014 14:54:25 +0000 (22:54 +0800)]
Fix beziers on GPU.

We can now render an SVG correctly(ish)! Woah!

7 years agoFix a huge bunch of memory corruption bugs in GL
David Gow [Tue, 5 Aug 2014 14:19:26 +0000 (22:19 +0800)]
Fix a huge bunch of memory corruption bugs in GL

It now is equally broken across Intel and nVidia.

The brokenness can be very pretty, though.

7 years agoDon't try to unmap buffers which aren't mapped.
David Gow [Tue, 5 Aug 2014 13:48:59 +0000 (21:48 +0800)]
Don't try to unmap buffers which aren't mapped.

Fixes the GL_INAVLID_OPERATION that snuck in: this would occur
when calling GraphicsBuffer::Resize() on an unmapped, non-invalidated buffer.

7 years agoPerpetrate SVG on the codebase
Sam Moore [Tue, 5 Aug 2014 18:46:41 +0000 (02:46 +0800)]
Perpetrate SVG on the codebase

Well, parts of it.
We can have black and white SVG only.
I think it's currently buggy.

I figure we should probably be able to actually parse a document format.
And SVG, despite being XML, seems like the least terrible.

Using pugixml for XML parsing and horrible string tokenising because
SVG is not really a DOM language because of the "d" attribute (-_-)

Did I mention it was the least terrible?

Also, there seem to be lots and lots of bugs with things,
including Quadtree rendering of Beziers and actually just  GPU rendering of more than one
Bezier in general.

Also I compiled atril without zoom limits but it crashes
due to things not related to precision. So we're beating atril I guess. Woo!

7 years agoCS Lab machines have met their nemesis
Sam Moore [Mon, 4 Aug 2014 07:52:58 +0000 (15:52 +0800)]
CS Lab machines have met their nemesis

The ongoing adventures of overcomplicated makefile land.

David is dictating this commit message by the way,

PS:
 They are i686 and only g++0x from before 0x

Tune in next week for another exciting episode (or installment, you, the
viewer, decide!) of randomly ifdefing things out! Will our heroes
successfully defeat the 32 bit long? Or will they perish in an integer
overflow?

(I think the project is beginning to affect our minds)

7 years agoApparently things were done
Sam Moore [Mon, 4 Aug 2014 11:16:58 +0000 (19:16 +0800)]
Apparently things were done

7 years agoRemove terrible "pow()" functions
Sam Moore [Sun, 3 Aug 2014 13:55:56 +0000 (21:55 +0800)]
Remove terrible "pow()" functions

There are many reasons why that was terrible and it finally all came apart
in a segfaultastic display.

We now have Power which only works for integer powers
But we only need those at the moment anyway.

7 years agoVFPU derpage fixed
Sam Moore [Sun, 3 Aug 2014 12:50:10 +0000 (20:50 +0800)]
VFPU derpage fixed

In my defence, hex and binary are only 14 digits apart

7 years agoAdd VFPU::Float (but it is broken)
Sam Moore [Tue, 29 Jul 2014 14:36:53 +0000 (22:36 +0800)]
Add VFPU::Float (but it is broken)

Fails every single realops test.
Also it's stuck at 32 bits still.

7 years agoUse "Real" in CPU renderer for filled circles
Sam Moore [Tue, 29 Jul 2014 14:12:16 +0000 (22:12 +0800)]
Use "Real" in CPU renderer for filled circles

7 years agoGet it compiling on Cabellera (g++0x not c++11)
Sam Moore [Fri, 25 Jul 2014 05:03:15 +0000 (13:03 +0800)]
Get it compiling on Cabellera (g++0x not c++11)

... But at what cost?

7 years agoMore QuadTree code.
David Gow [Wed, 23 Jul 2014 04:50:48 +0000 (12:50 +0800)]
More QuadTree code.

7 years agoFix some quadtree rendering bugs.
David Gow [Wed, 16 Jul 2014 07:40:29 +0000 (15:40 +0800)]
Fix some quadtree rendering bugs.

7 years agoQuadtree Rendering for CPU transorm+render
David Gow [Wed, 16 Jul 2014 06:48:11 +0000 (14:48 +0800)]
Quadtree Rendering for CPU transorm+render

7 years agoQuadTree Rendering with GPU coord transform.
David Gow [Tue, 15 Jul 2014 13:26:52 +0000 (21:26 +0800)]
QuadTree Rendering with GPU coord transform.

7 years agoWe should compile even if REAL is not 5
David Gow [Tue, 15 Jul 2014 13:10:05 +0000 (21:10 +0800)]
We should compile even if REAL is not 5

7 years agoActually add the Quadtree coordinate code
David Gow [Mon, 14 Jul 2014 15:12:56 +0000 (23:12 +0800)]
Actually add the Quadtree coordinate code

7 years agoQuadtree transforms
David Gow [Mon, 14 Jul 2014 01:24:00 +0000 (09:24 +0800)]
Quadtree transforms

7 years agoMerge branch 'master' of git.ucc.asn.au:ipdf/code
David Gow [Mon, 7 Jul 2014 16:02:11 +0000 (00:02 +0800)]
Merge branch 'master' of git.ucc.asn.au:ipdf/code

7 years agoQuadtrees! (Almost)
David Gow [Mon, 7 Jul 2014 16:01:55 +0000 (00:01 +0800)]
Quadtrees! (Almost)

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