@@ -1238,8 +1238,8 @@ def RGB_to_XYZ(
12381238
12391239
12401240def matrix_RGB_to_RGB (
1241- input_colourspace : RGB_Colourspace ,
1242- output_colourspace : RGB_Colourspace ,
1241+ input_colourspace : RGB_Colourspace | str ,
1242+ output_colourspace : RGB_Colourspace | str ,
12431243 chromatic_adaptation_transform : Literal [
12441244 "Bianco 2010" ,
12451245 "Bianco PC 2010" ,
@@ -1285,11 +1285,38 @@ def matrix_RGB_to_RGB(
12851285 ... )
12861286 >>> matrix_RGB_to_RGB(RGB_COLOURSPACE_sRGB, RGB_COLOURSPACE_PROPHOTO_RGB)
12871287 ... # doctest: +ELLIPSIS
1288+ array([[ 0.5288241..., 0.3340609..., 0.1373616...],
1289+ [ 0.0975294..., 0.8790074..., 0.0233981...],
1290+ [ 0.0163599..., 0.1066124..., 0.8772485...]])
1291+ >>> matrix_RGB_to_RGB("sRGB", "ProPhoto RGB")
1292+ ... # doctest: +ELLIPSIS
12881293 array([[ 0.5288241..., 0.3340609..., 0.1373616...],
12891294 [ 0.0975294..., 0.8790074..., 0.0233981...],
12901295 [ 0.0163599..., 0.1066124..., 0.8772485...]])
12911296 """
12921297
1298+ from colour .models import RGB_COLOURSPACES
1299+
1300+ if isinstance (input_colourspace , str ):
1301+ input_colourspace = validate_method (
1302+ input_colourspace ,
1303+ RGB_COLOURSPACES ,
1304+ '"{0}" "RGB" colourspace is invalid, it must be one of {1}!' ,
1305+ )
1306+ input_colourspace = cast (
1307+ RGB_Colourspace , RGB_COLOURSPACES [input_colourspace ]
1308+ )
1309+
1310+ if isinstance (output_colourspace , str ):
1311+ output_colourspace = validate_method (
1312+ output_colourspace ,
1313+ RGB_COLOURSPACES ,
1314+ '"{0}" "RGB" colourspace is invalid, it must be one of {1}!' ,
1315+ )
1316+ output_colourspace = cast (
1317+ RGB_Colourspace , RGB_COLOURSPACES [output_colourspace ]
1318+ )
1319+
12931320 M = input_colourspace .matrix_RGB_to_XYZ
12941321
12951322 if chromatic_adaptation_transform is not None :
@@ -1308,8 +1335,8 @@ def matrix_RGB_to_RGB(
13081335
13091336def RGB_to_RGB (
13101337 RGB : ArrayLike ,
1311- input_colourspace : RGB_Colourspace ,
1312- output_colourspace : RGB_Colourspace ,
1338+ input_colourspace : RGB_Colourspace | str ,
1339+ output_colourspace : RGB_Colourspace | str ,
13131340 chromatic_adaptation_transform : Literal [
13141341 "Bianco 2010" ,
13151342 "Bianco PC 2010" ,
@@ -1386,8 +1413,33 @@ def RGB_to_RGB(
13861413 >>> RGB_to_RGB(RGB, RGB_COLOURSPACE_sRGB, RGB_COLOURSPACE_PROPHOTO_RGB)
13871414 ... # doctest: +ELLIPSIS
13881415 array([ 0.2568891..., 0.0721446..., 0.0465553...])
1416+ >>> RGB_to_RGB(RGB, "sRGB", "ProPhoto RGB")
1417+ ... # doctest: +ELLIPSIS
1418+ array([ 0.2568891..., 0.0721446..., 0.0465553...])
13891419 """
13901420
1421+ from colour .models import RGB_COLOURSPACES
1422+
1423+ if isinstance (input_colourspace , str ):
1424+ input_colourspace = validate_method (
1425+ input_colourspace ,
1426+ RGB_COLOURSPACES ,
1427+ '"{0}" "RGB" colourspace is invalid, it must be one of {1}!' ,
1428+ )
1429+ input_colourspace = cast (
1430+ RGB_Colourspace , RGB_COLOURSPACES [input_colourspace ]
1431+ )
1432+
1433+ if isinstance (output_colourspace , str ):
1434+ output_colourspace = validate_method (
1435+ output_colourspace ,
1436+ RGB_COLOURSPACES ,
1437+ '"{0}" "RGB" colourspace is invalid, it must be one of {1}!' ,
1438+ )
1439+ output_colourspace = cast (
1440+ RGB_Colourspace , RGB_COLOURSPACES [output_colourspace ]
1441+ )
1442+
13911443 RGB = to_domain_1 (RGB )
13921444
13931445 if apply_cctf_decoding and input_colourspace .cctf_decoding is not None :
0 commit comments