@@ -223,15 +223,15 @@ fn irgb_to_alpha() {
223
223
224
224
#[ test]
225
225
fn irgb_from ( ) {
226
- let mut srgb = irgb_to_srgb ( IRGB ) ;
226
+ let mut srgb = irgb_to_srgb :: < f32 , 3 > ( IRGB ) ;
227
227
// Round decimal to hundredths
228
228
srgb. iter_mut ( ) . for_each ( |c| * c = ( * c * 100.0 ) . round ( ) / 100.0 ) ;
229
229
assert_eq ! ( [ 0.2 , 0.35 , 0.95 ] , srgb)
230
230
}
231
231
232
232
#[ test]
233
233
fn irgb_from_alpha ( ) {
234
- let mut srgb = irgb_to_srgb ( IRGBA ) ;
234
+ let mut srgb = irgb_to_srgb :: < f32 , 4 > ( IRGBA ) ;
235
235
// Round decimal to hundredths
236
236
srgb. iter_mut ( ) . for_each ( |c| * c = ( * c * 100.0 ) . round ( ) / 100.0 ) ;
237
237
assert_eq ! ( [ 0.2 , 0.35 , 0.95 , 0.35 ] , srgb)
@@ -583,100 +583,112 @@ fn space_strings() {
583
583
// ### Str2Col ### {{{
584
584
#[ test]
585
585
fn str2col_base ( ) {
586
- assert_eq ! ( str2col( "0.2, 0.5, 0.6" ) , Some ( ( Space :: SRGB , [ 0.2 , 0.5 , 0.6 ] ) ) )
586
+ assert_eq ! ( str2col( "0.2, 0.5, 0.6" ) , Some ( ( Space :: SRGB , [ 0.2f32 , 0.5 , 0.6 ] ) ) )
587
587
}
588
588
589
589
#[ test]
590
590
fn str2col_base_tight ( ) {
591
- assert_eq ! ( str2col( "0.2,0.5,0.6" ) , Some ( ( Space :: SRGB , [ 0.2 , 0.5 , 0.6 ] ) ) )
591
+ assert_eq ! ( str2col( "0.2,0.5,0.6" ) , Some ( ( Space :: SRGB , [ 0.2f32 , 0.5 , 0.6 ] ) ) )
592
592
}
593
593
594
594
#[ test]
595
595
fn str2col_base_lop ( ) {
596
- assert_eq ! ( str2col( "0.2,0.5, 0.6" ) , Some ( ( Space :: SRGB , [ 0.2 , 0.5 , 0.6 ] ) ) )
596
+ assert_eq ! ( str2col( "0.2,0.5, 0.6" ) , Some ( ( Space :: SRGB , [ 0.2f32 , 0.5 , 0.6 ] ) ) )
597
597
}
598
598
599
599
#[ test]
600
600
fn str2col_base_bare ( ) {
601
- assert_eq ! ( str2col( "0.2 0.5 0.6" ) , Some ( ( Space :: SRGB , [ 0.2 , 0.5 , 0.6 ] ) ) )
601
+ assert_eq ! ( str2col( "0.2 0.5 0.6" ) , Some ( ( Space :: SRGB , [ 0.2f32 , 0.5 , 0.6 ] ) ) )
602
602
}
603
603
604
604
#[ test]
605
605
fn str2col_base_bare_fat ( ) {
606
- assert_eq ! ( str2col( " 0.2 0.5 0.6 " ) , Some ( ( Space :: SRGB , [ 0.2 , 0.5 , 0.6 ] ) ) )
606
+ assert_eq ! ( str2col( " 0.2 0.5 0.6 " ) , Some ( ( Space :: SRGB , [ 0.2f32 , 0.5 , 0.6 ] ) ) )
607
607
}
608
608
609
609
#[ test]
610
610
fn str2col_base_paren ( ) {
611
- assert_eq ! ( str2col( "(0.2 0.5 0.6)" ) , Some ( ( Space :: SRGB , [ 0.2 , 0.5 , 0.6 ] ) ) )
611
+ assert_eq ! ( str2col( "(0.2 0.5 0.6)" ) , Some ( ( Space :: SRGB , [ 0.2f32 , 0.5 , 0.6 ] ) ) )
612
612
}
613
613
614
614
#[ test]
615
615
fn str2col_base_paren2 ( ) {
616
- assert_eq ! ( str2col( "{ 0.2 : 0.5 : 0.6 }" ) , Some ( ( Space :: SRGB , [ 0.2 , 0.5 , 0.6 ] ) ) )
616
+ assert_eq ! ( str2col( "{ 0.2 : 0.5 : 0.6 }" ) , Some ( ( Space :: SRGB , [ 0.2f32 , 0.5 , 0.6 ] ) ) )
617
617
}
618
618
619
619
#[ test]
620
620
fn str2col_base_none ( ) {
621
- assert_eq ! ( str2col( " 0.2 0.5 f" ) , None )
621
+ assert_eq ! ( str2col:: < f32 , 3 > ( " 0.2 0.5 f" ) , None )
622
622
}
623
623
624
624
#[ test]
625
625
fn str2col_base_none2 ( ) {
626
- assert_eq ! ( str2col( "0.2*0.5 0.6" ) , None )
626
+ assert_eq ! ( str2col:: < f32 , 3 > ( "0.2*0.5 0.6" ) , None )
627
627
}
628
628
629
629
#[ test]
630
630
fn str2col_base_paren_none ( ) {
631
- assert_eq ! ( str2col( "(0.2 0.5 0.6" ) , None )
631
+ assert_eq ! ( str2col:: < f32 , 3 > ( "(0.2 0.5 0.6" ) , None )
632
632
}
633
633
634
634
#[ test]
635
635
fn str2col_base_paren_none2 ( ) {
636
- assert_eq ! ( str2col( "0.2 0.5 0.6}" ) , None )
636
+ assert_eq ! ( str2col:: < f32 , 3 > ( "0.2 0.5 0.6}" ) , None )
637
637
}
638
638
639
639
#[ test]
640
640
fn str2col_lch ( ) {
641
- assert_eq ! ( str2col( "lch(50, 30, 160)" ) , Some ( ( Space :: CIELCH , [ 50.0 , 30.0 , 160.0 ] ) ) )
641
+ assert_eq ! (
642
+ str2col( "lch(50, 30, 160)" ) ,
643
+ Some ( ( Space :: CIELCH , [ 50.0f32 , 30.0 , 160.0 ] ) )
644
+ )
642
645
}
643
646
644
647
#[ test]
645
648
fn str2col_lch_space ( ) {
646
- assert_eq ! ( str2col( "lch 50, 30, 160" ) , Some ( ( Space :: CIELCH , [ 50.0 , 30.0 , 160.0 ] ) ) )
649
+ assert_eq ! (
650
+ str2col( "lch 50, 30, 160" ) ,
651
+ Some ( ( Space :: CIELCH , [ 50.0f32 , 30.0 , 160.0 ] ) )
652
+ )
647
653
}
648
654
649
655
#[ test]
650
656
fn str2col_lch_colon ( ) {
651
- assert_eq ! ( str2col( "lch:50:30:160" ) , Some ( ( Space :: CIELCH , [ 50.0 , 30.0 , 160.0 ] ) ) )
657
+ assert_eq ! ( str2col( "lch:50:30:160" ) , Some ( ( Space :: CIELCH , [ 50.0f32 , 30.0 , 160.0 ] ) ) )
652
658
}
653
659
654
660
#[ test]
655
661
fn str2col_lch_semicolon ( ) {
656
- assert_eq ! ( str2col( "lch;50;30;160" ) , Some ( ( Space :: CIELCH , [ 50.0 , 30.0 , 160.0 ] ) ) )
662
+ assert_eq ! ( str2col( "lch;50;30;160" ) , Some ( ( Space :: CIELCH , [ 50.0f32 , 30.0 , 160.0 ] ) ) )
657
663
}
658
664
659
665
#[ test]
660
666
fn str2col_lch_mixed ( ) {
661
- assert_eq ! ( str2col( "lch; (50,30,160)" ) , Some ( ( Space :: CIELCH , [ 50.0 , 30.0 , 160.0 ] ) ) )
667
+ assert_eq ! (
668
+ str2col( "lch; (50,30,160)" ) ,
669
+ Some ( ( Space :: CIELCH , [ 50.0f32 , 30.0 , 160.0 ] ) )
670
+ )
662
671
}
663
672
664
673
#[ test]
665
674
fn str2col_lch_mixed2 ( ) {
666
- assert_eq ! ( str2col( "lch(50; 30; 160)" ) , Some ( ( Space :: CIELCH , [ 50.0 , 30.0 , 160.0 ] ) ) )
675
+ assert_eq ! (
676
+ str2col( "lch(50; 30; 160)" ) ,
677
+ Some ( ( Space :: CIELCH , [ 50.0f32 , 30.0 , 160.0 ] ) )
678
+ )
667
679
}
668
680
669
681
#[ test]
670
682
fn str2col_lch_mixed3 ( ) {
671
683
assert_eq ! (
672
684
str2col( "lch (50 30 160)" ) ,
673
- Some ( ( Space :: CIELCH , [ 50.0 , 30.0 , 160.0 ] ) )
685
+ Some ( ( Space :: CIELCH , [ 50.0f32 , 30.0 , 160.0 ] ) )
674
686
)
675
687
}
676
688
677
689
#[ test]
678
690
fn str2col_hex ( ) {
679
- assert_eq ! ( str2col( HEX ) , Some ( ( Space :: SRGB , irgb_to_srgb( IRGB ) ) ) )
691
+ assert_eq ! ( str2col( HEX ) , Some ( ( Space :: SRGB , irgb_to_srgb:: < f32 , 3 > ( IRGB ) ) ) )
680
692
}
681
693
682
694
#[ test]
@@ -685,7 +697,11 @@ fn str2col_perc100() {
685
697
str2col( "oklch 100% 100% 100%" ) ,
686
698
Some ( (
687
699
Space :: OKLCH ,
688
- [ Space :: OKLCH . srgb_quant100( ) [ 0 ] , Space :: OKLCH . srgb_quant100( ) [ 1 ] , 360.0 ]
700
+ [
701
+ Space :: OKLCH . srgb_quant100( ) [ 0 ] ,
702
+ Space :: OKLCH . srgb_quant100( ) [ 1 ] ,
703
+ 360.0f32
704
+ ]
689
705
) )
690
706
)
691
707
}
@@ -699,7 +715,7 @@ fn str2col_perc50() {
699
715
[
700
716
( Space :: OKLCH . srgb_quant0( ) [ 0 ] + Space :: OKLCH . srgb_quant100( ) [ 0 ] ) / 2.0 ,
701
717
( Space :: OKLCH . srgb_quant0( ) [ 1 ] + Space :: OKLCH . srgb_quant100( ) [ 1 ] ) / 2.0 ,
702
- 180.0 ,
718
+ 180.0f32 ,
703
719
]
704
720
) )
705
721
)
@@ -711,7 +727,7 @@ fn str2col_perc0() {
711
727
str2col( "oklch 0% 0% 0%" ) ,
712
728
Some ( (
713
729
Space :: OKLCH ,
714
- [ Space :: OKLCH . srgb_quant0( ) [ 0 ] , Space :: OKLCH . srgb_quant0( ) [ 1 ] , 0.0 ]
730
+ [ Space :: OKLCH . srgb_quant0( ) [ 0 ] , Space :: OKLCH . srgb_quant0( ) [ 1 ] , 0.0f32 ]
715
731
) )
716
732
)
717
733
}
@@ -722,40 +738,54 @@ fn str2col_perc_mix() {
722
738
str2col( "oklab 0.5 100.000% 0%" ) ,
723
739
Some ( (
724
740
Space :: OKLAB ,
725
- [ 0.5 , Space :: OKLAB . srgb_quant100( ) [ 1 ] , Space :: OKLAB . srgb_quant0( ) [ 2 ] ]
741
+ [ 0.5f32 , Space :: OKLAB . srgb_quant100( ) [ 1 ] , Space :: OKLAB . srgb_quant0( ) [ 2 ] ]
726
742
) )
727
743
)
728
744
}
729
745
730
746
#[ test]
731
747
fn str2col_perc_inval ( ) {
732
- assert_eq ! ( str2col( "oklab 0.5 100 % 0%" ) , None )
733
- }
734
-
735
- #[ test]
736
- fn str2col_perc_inval2 ( ) {
737
- assert_eq ! ( str2col( "oklab 0.5% %100% 0%" ) , None )
748
+ assert_eq ! ( str2col:: <f32 , 3 >( "oklab 0.5 100 % 0%" ) , None ) ;
749
+ assert_eq ! ( str2col:: <f32 , 3 >( "oklab 0.5% %100% 0%" ) , None ) ;
750
+ assert_eq ! ( str2col:: <f32 , 3 >( "oklab 0.5 100%% 0%" ) , None ) ;
738
751
}
739
752
740
753
#[ test]
741
- fn str2col_perc_inval3 ( ) {
742
- assert_eq ! ( str2col( "oklab 0.5 100%% 0%" ) , None )
754
+ fn str2col_alpha ( ) {
755
+ assert_eq ! (
756
+ str2col( "srgb 0, 0.5, 0.75, 1.0" ) ,
757
+ Some ( ( Space :: SRGB , [ 0f32 , 0.5 , 0.75 , 1.0 ] ) )
758
+ ) ;
759
+ assert_eq ! (
760
+ str2col( "srgb 0, 0.5, 0.75, 1.0" ) ,
761
+ Some ( ( Space :: SRGB , [ 0f32 , 0.5 , 0.75 ] ) )
762
+ ) ;
763
+ assert_eq ! (
764
+ str2col( "srgb 10%, 20%, 50%, 80%" ) ,
765
+ Some ( ( Space :: SRGB , [ 0.1f32 , 0.2 , 0.5 , 0.8 ] ) )
766
+ ) ;
767
+ assert_eq ! (
768
+ str2col( "srgb 10%, 20%, 50%, 80%" ) ,
769
+ Some ( ( Space :: SRGB , [ 0.1f32 , 0.2 , 0.5 ] ) )
770
+ ) ;
771
+ let mut will_nan = str2col :: < f32 , 4 > ( "srgb 0, 0.5, 0.75" ) . unwrap ( ) ;
772
+ if will_nan. 1 [ 3 ] . is_nan ( ) {
773
+ will_nan. 1 [ 3 ] = 0.12345
774
+ }
775
+ assert_eq ! ( will_nan, ( Space :: SRGB , [ 0f32 , 0.5 , 0.75 , 0.12345 ] ) ) ;
743
776
}
744
777
745
778
#[ test]
746
779
fn str2space_base ( ) {
747
- let pix: [ f64 ; 3 ] = str2space ( "oklch : 0.62792590, 0.25768453, 29.22319405" , Space :: SRGB )
748
- . expect ( "STR2SPACE_BASE FAIL" )
749
- . map ( |v| v. into ( ) ) ;
780
+ let pix: [ f64 ; 3 ] =
781
+ str2space ( "oklch : 0.62792590, 0.25768453, 29.22319405" , Space :: SRGB ) . expect ( "STR2SPACE_BASE FAIL" ) ;
750
782
let reference = [ 1.00000000 , 0.00000000 , 0.00000000 ] ;
751
783
pix_cmp ( & [ pix] , & [ reference] , 1e-3 , & [ ] ) ;
752
784
}
753
785
754
786
#[ test]
755
787
fn str2space_hex ( ) {
756
- let pix: [ f64 ; 3 ] = str2space ( " { #FF0000 } " , Space :: OKLCH )
757
- . expect ( "STR2SPACE_HEX FAIL" )
758
- . map ( |v| v. into ( ) ) ;
788
+ let pix: [ f64 ; 3 ] = str2space ( " { #FF0000 } " , Space :: OKLCH ) . expect ( "STR2SPACE_HEX FAIL" ) ;
759
789
let reference = [ 0.62792590 , 0.25768453 , 29.22319405 ] ;
760
790
pix_cmp ( & [ pix] , & [ reference] , 1e-3 , & [ ] ) ;
761
791
}
0 commit comments