def test_cmyk_to_rgb(): """Test translation function cmyk_to_rgb""" cmyk = colormodel.CMYK(0.0, 0.0, 0.0, 1.2356) rgb = a3.cmyk_to_rgb(cmyk) cornelltest.assert_equals(252, rgb.red) cornelltest.assert_equals(252, rgb.green) cornelltest.assert_equals(252, rgb.blue) cmyk = colormodel.CMYK(7.1254, 100.0, 25.569, .123456032934) rgb = a3.cmyk_to_rgb(cmyk) cornelltest.assert_equals(237, rgb.red) cornelltest.assert_equals(0, rgb.green) cornelltest.assert_equals(190, rgb.blue) cmyk = colormodel.CMYK(63.409, 2.0000001, 100.0, 83.099) rgb = a3.cmyk_to_rgb(cmyk) cornelltest.assert_equals(16, rgb.red) cornelltest.assert_equals(42, rgb.green) cornelltest.assert_equals(0, rgb.blue) cmyk = colormodel.CMYK(100.0, 54.99999, 3.694286, 100.0) rgb = a3.cmyk_to_rgb(cmyk) cornelltest.assert_equals(0, rgb.red) cornelltest.assert_equals(0, rgb.green) cornelltest.assert_equals(0, rgb.blue)
def test_str5_color(): """Test the str5 functions for cmyk and hsv.""" cornelltest.assert_equals('(98.45, 25.36, 99.99, 21.99)',\ a3.str5_cmyk(colormodel.CMYK(98.448, 25.362, 99.99, 21.994))); cornelltest.assert_equals('(32.33, 6.355, 0.001, 10.01)',\ a3.str5_cmyk(colormodel.CMYK(32.3256, 6.3546, .0013, 10.013567)))
def test_cmyk_to_rgb(): """Test translation function cmyk_to_rgb""" cmyk = colormodel.CMYK(0.0, 0.0, 0.0, 0.0) rgb = a3.cmyk_to_rgb(cmyk) cornelltest.assert_equals(255, rgb.red) cornelltest.assert_equals(255, rgb.green) cornelltest.assert_equals(255, rgb.blue) cmyk = colormodel.CMYK(100.0, 100.0, 100.0, 100.0) rgb = a3.cmyk_to_rgb(cmyk) cornelltest.assert_equals(0, rgb.red) cornelltest.assert_equals(0, rgb.green) cornelltest.assert_equals(0, rgb.blue) cmyk = colormodel.CMYK(34.0, 12.5432, 66.666666, 1.0) rgb = a3.cmyk_to_rgb(cmyk) cornelltest.assert_equals(167, rgb.red) cornelltest.assert_equals(221, rgb.green) cornelltest.assert_equals(84, rgb.blue) cmyk = colormodel.CMYK(72.4444, 65.0, 90.1, 56.23) rgb = a3.cmyk_to_rgb(cmyk) cornelltest.assert_equals(31, rgb.red) cornelltest.assert_equals(39, rgb.green) cornelltest.assert_equals(11, rgb.blue) cmyk = colormodel.CMYK(0.0, 0.0, 0.0, 100.0) rgb = a3.cmyk_to_rgb(cmyk) cornelltest.assert_equals(0, rgb.red) cornelltest.assert_equals(0, rgb.green) cornelltest.assert_equals(0, rgb.blue)
def test_cmyk_to_rgb(): """Test translation function cmyk_to_rgb""" #Test cmyk_to_rgb() when K = 1: cmyk = colormodel.CMYK(10, 11, 12, 100) rgb = a3.cmyk_to_rgb(cmyk) cunittest.assert_equals(0, rgb.red) cunittest.assert_equals(0, rgb.green) cunittest.assert_equals(0, rgb.blue) #Test cmyk_to_rgb() when C, M, or Y = 0: cmyk = colormodel.CMYK(0, 11, 12, 0) rgb = a3.cmyk_to_rgb(cmyk) cunittest.assert_equals(255, rgb.red) cunittest.assert_equals(227, rgb.green) cunittest.assert_equals(224, rgb.blue) cmyk = colormodel.CMYK(10, 0, 12, 0) rgb = a3.cmyk_to_rgb(cmyk) cunittest.assert_equals(230, rgb.red) cunittest.assert_equals(255, rgb.green) cunittest.assert_equals(224, rgb.blue) cmyk = colormodel.CMYK(10, 11, 0, 0) rgb = a3.cmyk_to_rgb(cmyk) cunittest.assert_equals(230, rgb.red) cunittest.assert_equals(227, rgb.green) cunittest.assert_equals(255, rgb.blue) #General Test Case cmyk = colormodel.CMYK(4, 20, 7, 18.63) rgb = a3.cmyk_to_rgb(cmyk) cunittest.assert_equals(199, rgb.red) cunittest.assert_equals(166, rgb.green) cunittest.assert_equals(193, rgb.blue)
def rgb_to_cmyk(rgb): """Returns: color rgb in space CMYK, with the most black possible. Formulae from en.wikipedia.org/wiki/CMYK_color_model. Parameter rgb: the color to convert to a CMYK object Precondition: rgb is an RGB object""" # Divide all rgb values by 255.0 to change range from 0..255.0 to 0..1.0 r = rgb.red / 255.0 g = rgb.green / 255.0 b = rgb.blue / 255.0 #Subtract all rgb values from 1 c = 1 - r m = 1 - g y = 1 - b #Change all CMYK values to 0 except black if c == 1 and m == 1 and y == 1: return colormodel.CMYK(0.0, 0.0, 0.0, 1.0 * 100.0) else: k = min(c, m, y) cy = ((c - k) / (1 - k)) * 100.0 mag = ((m - k) / (1 - k)) * 100.0 yell = ((y - k) / (1 - k)) * 100.0 return colormodel.CMYK(cy, mag, yell, k * 100.0)
def rgb_to_cmyk(rgb): """Returns: color rgb in space CMYK, with the most black possible. Formulae from en.wikipedia.org/wiki/CMYK_color_model. Parameter rgb: the color to convert to a CMYK object Precondition: rgb is an RGB object""" # The RGB numbers are in the range 0..255. cmyk = colormodel.CMYK(0.0, 0.0, 0.0, 0.0) c = 1 - (rgb.red / 255.0) m = 1 - (rgb.green / 255.0) y = 1 - (rgb.blue / 255.0) if c == 1.0 and m == 1.0 and y == 1.0: cmyk = colormodel.CMYK(0.0, 0.0, 0.0, 100.0) else: k = min(c, m, y) cmyk.cyan = (c - k) / (1 - k) * 100 cmyk.magenta = (m - k) / (1 - k) * 100 cmyk.yellow = (y - k) / (1 - k) * 100 cmyk.black = k * 100 return cmyk
def test_str5_color(): """Test the str5 functions for cmyk and hsv.""" cornelltest.assert_equals( '(98.45, 25.36, 72.80, 1.000)', a3.str5_cmyk(colormodel.CMYK(98.448, 25.362, 72.8, 1.0))) cornelltest.assert_equals( '(1.000, 100.0, 23.12, 54.44)', a3.str5_cmyk(colormodel.CMYK(1, 100, 23.12345, 54.435))) cornelltest.assert_equals('(98.45, 0.000, 0.123)', a3.str5_hsv(colormodel.HSV(98.448, 0, .123456))) cornelltest.assert_equals('(312.0, 0.500, 0.568)', a3.str5_hsv(colormodel.HSV(312, 0.5, 0.56789)))
def test_str5_color(): """Test the str5 functions for cmyk and hsv.""" cornelltest.assert_equals( '(98.45, 25.36, 72.80, 1.000)', a3.str5_cmyk(colormodel.CMYK(98.448, 25.362, 72.8, 1.0))) cornelltest.assert_equals( '(100.0, 0.225, 83.50, 0.000)', a3.str5_cmyk(colormodel.CMYK(100.0, .2245, 83.5, 0.0))) cornelltest.assert_equals( '(56.00, 0.000, 0.987)', a3.str5_hsv(colormodel.HSV(55.999, 0.0, 0.9874234353442))) cornelltest.assert_equals( '(250.4, 1.000, 0.488)', a3.str5_hsv(colormodel.HSV(250.356, 1.0, .4878325345)))
def rgb_to_cmyk(rgb): """Returns: color rgb in space CMYK, with the most black possible. Formulae from en.wikipedia.org/wiki/CMYK_color_model. Precondition: rgb is an RGB object""" assert (type(rgb) == colormodel.RGB), ('Value ' + ` rgb ` + ' is not an RGB object') R = rgb.red / 255.0 G = rgb.green / 255.0 B = rgb.blue / 255.0 C = 1 - R M = 1 - G Y = 1 - B if C == 1 and M == 1 and Y == 1: C = 0 Y = 0 M = 0 K = 1 else: K = min(C, M, Y) C = (C - K) / (1 - K) M = (M - K) / (1 - K) Y = (Y - K) / (1 - K) C = C * 100.0 M = M * 100.0 Y = Y * 100.0 K = K * 100.0 return colormodel.CMYK(C, M, Y, K)
def on_cmyk_press(self,c,m,y,k): """Call back to cmyk button""" self.cmyk = colormodel.CMYK(c, m, y, k) temp = a3.cmyk_to_rgb(self.cmyk) assert (temp == None or type(temp) == colormodel.RGB), 'cmyk_to_rgb does not return a RGB object' self.rgb = self.rgb if temp is None else temp self.hsv = a3.rgb_to_hsv(self.rgb) assert (self.hsv == None or type(self.hsv) == colormodel.HSV), 'rgb_to_hsv does not return a HSV object' self.update()
def test_cmyk_to_rgb(): """Test translation function cmyk_to_rgb""" cmyk= colormodel.CMYK(100.0, 100.0, 100.0, 100.0); rgb = a3.cmyk_to_rgb(cmyk); cornelltest.assert_equals( 0, rgb.red) cornelltest.assert_equals( 0, rgb.green) cornelltest.assert_equals( 0, rgb.blue) cmyk= colormodel.CMYK(0.000, 000.0, 000.0, 000.0); rgb = a3.cmyk_to_rgb(cmyk); cornelltest.assert_equals( 255, rgb.red) cornelltest.assert_equals( 255, rgb.green) cornelltest.assert_equals( 255, rgb.blue) cmyk= colormodel.CMYK(50.00, 50.00, 50.00, 50.00); rgb = a3.cmyk_to_rgb(cmyk); cornelltest.assert_equals( 63, rgb.red) cornelltest.assert_equals( 63, rgb.green) cornelltest.assert_equals( 63, rgb.blue)
def test_to_strings(): """Test toString methods""" #Test rgb_to_string:() cunittest.assert_equals("(30, 240, 230)", a3.rgb_to_string(colormodel.RGB(30, 240, 230))) #Test cmyk_to_string() cunittest.assert_equals("(10.00, 11.00, 20.00, 12.00)", a3.cmyk_to_string(colormodel.CMYK(10, 11, 20, 12))) #Test that cmyk_to_string() uses round5(), not `truncate5()`: cunittest.assert_equals( "(10.01, 11.00, 20.01, 12.00)", a3.cmyk_to_string(colormodel.CMYK(10.005, 11.0045, 20.009, 12.001))) #Test hsv_to_string() cunittest.assert_equals("(100.0, 1.000, 1.000)", a3.hsv_to_string(colormodel.HSV(100, 1, 1))) #Test that hsv_to_string uses round5(), not `truncate5()`: cunittest.assert_equals( "(100.0, 0.500, 0.499)", a3.hsv_to_string(colormodel.HSV(99.999, .4996, .4994)))
def on_cmyk_slide(self,c,m,y,k): """Call back to cmyk sliders""" if not self.active: return cyan = c / 100.0 magenta = m / 100.0 yellow = y / 100.0 black = k / 100.0 self.cmyk = colormodel.CMYK(cyan, magenta, yellow, black) temp = a3.cmyk_to_rgb(self.cmyk) assert (temp == None or type(temp) == colormodel.RGB), 'cmyk_to_rgb does not return a RGB object' self.rgb = self.rgb if temp is None else temp self.hsv = a3.rgb_to_hsv(self.rgb) assert (self.hsv == None or type(self.hsv) == colormodel.HSV), 'rgb_to_hsv does not return a HSV object' self.update()