initial commit
added screenshots, readme, more comments
initial commit
included gitignore
added ini paresr and report
updated gitignore
removed latex junk
updated .pro to include parser
made some fixes to the parser
including .out files
Improvements and bug fixes in parser/

- No longer using std::string, instead QString is used.
- Trimming bug where nothing was actually trimmed fixed by using
  QString::trimmed()
- Included a few docstrings as internal documentation.
Successfully integrated new config parser.

- No longer using QFile and QXML libraries to parser config file.
- Config file is now .ini from XML
- Included a CONF_PATH in main.cc for easy testing.
- Separated parsing for different items.
- Rename readConfig() to read()
Ball.* files are now in items/

Adding an extra directory structure makes the code cleaner. This is especially
true when adding new items (for example holes). Having everything in the root
directory just makes it unnecessarily messy.
included the original config data file
Added holes - no physics implemented.

- Updated .pro file to include holes and types
- Renamed read() in configure to readAndRender(), makes more sense.
- Added some more error checking in item parsers.
- Fixed item stacking problem in QQgraphicsScene by setting balls to have a
  higher ZValue.
- Included a hole parser.
- Added pre/post checks to ensure certain use cases were met. There is still
  one extra use case that needs to be added.

  Holes cannot be placed ontop of each other. In other words, no hole can
  overlap. I might have to add this in the post-check resulting in quite an
  expensive check.
- No longer uses dynamic_cast to determine QGraphicsItem user types. Instead,
  all QGraphicsItems should reimplement the types() member function. Each item
  is given their own specific type defined inside type.h. This allows the usage
  of qgraphicsitem_cast.
- Added getRadius() getters for ball and hole as they're kind of needed when
  balls collide into holes. I need to get the their radius so I can do a bit of
  math to determine whether or not to make the ball fall into the hole.
- Added extra documentation here and there.
moved old config.xml to data/
Fully implemented holes.

- Backwards compatible with previous config settings, i.e. it will still run
  without holes.
- Added extra error checking for hole thresholds.
- Added extra threshold (speed, distance) -> will need to rename this to:
    lowerAreaThreshold, upperSpeedThreshold

    to be a little more clear.
- Made some changes to the original config file to match the original XML file.
- Included getSpeed() getters for ball.
- Included scaleRadius() for ball. I want to add a little animation where the
  ball gets smaller when it falls into the hole.
- I have yet to implement the extension holes. I will do them when I get some
  more time.

Bugs

- There's an error with the reading a config file that doesn't exist. I have no
  idea why but I'm guessing it's something to do with NULL pointers. Anyway,
  this needs to be fixed ASAP
Bug fixes and general clean up.

- CONF_PATH has now been changed from QString to std::string. All classes that
  need to use this variable now have their signatures and member variables
  changed.
- Type names in types.h has been changed from XType to X_t.
- Hole name changes from speedThreshold to upperSpeedThreshold and
  distanceThreshold to lowerAreaPercentThreshold.
- Fixed bug with parser.cc crashing the program when an invalid file path was
  given. parser::load(...) now returns a bool indicating whether or not the
  load was successful.
- Cleaned up soem comments and docstrings.
Implemented disappearing holes.

- Updated .pro file to include disappearing hole src
- Added extra comments here and there to improve readability.
- Added disappearing hole parser. It looks exactly like the normal hole parser
  with the exception of one additional attribute. This seems like it's the only
  way of doing it without making major changes. I want to avoid changing as
  much of the original code as possible.
- Still have not added checks that holes and be overlapped ontop of each other.
  I'll need to add an expensive post check on all QGraphicsItems of type hole
  to see if any collisions occur.
- Made some changes to the hole base class to allow for proper subhole
  inheritance. I'll have to double check that I used the correct accessors.
- Uncommented DisappearingHole_t in types.h

WARNING:
- I haven't refactored the code. This is a pre-commit to the proper "real"
  comment later on.
More error checks, less bugs, refactored code.

- The minRadius of a disappearing hole is now an attribute that needs to be
  specified inside the config.ini file. As a result, updated the disappearing
  hole class as accordingly.
- Balls, and all holes are now never allowed to collide with another item when
  the program starts. They can collide after it runs however initially they
  cannot. This avoids problems like having a hole on a ball or a hole on a
  hole.
- Updated config_holes.ini file to add changes to the disappearing hole.
- Removed scaleRadius(...) from ball as it's no longer needed.
- DisappearingHole now returns a proper type.
- Added extra useful comments here and there.
- Factored out the colliding ball deletion into a new member function inside
  hole.
- Removed virtual from disappearing hole member variables. They should of been
  non-virtual to begin with. I do not plan to let this class be subclassed.