Ring chart implementation as typically used in disk allocation programs, also known as Multi-level Pie Charts.
It's size and the thickness of the rings adapt dynamically to the container. The rings can start and end at any angle. The segments of each ring are divided proportionally based on the segments value and drawn to the proper arc length based on the start and end angle.
Comments of the main classes: http://go.yuri.at/processing-rings-chart/