public ColorCMYK GetCanonical()
The canonical color representation, when converted to RGB and back, should not be any different from its original value, aside from any minor loss of accuracy that could occur during the conversions.
For the CMYK color space, if either the key is 1 or if cyan, magenta, and yellow are all 1, then the color is essentially black, and the canonical form is to set cyan, magenta, and yellow all to 0 and key to 1. Otherwise, if at least one of cyan, magenta, or yellow is 0, then the color is canonical. If not, then, these three channels are reduced and the key is increased, so that at least one channel is 0.