1018 {
1019 uint8_t *p1;
1020 uint8_t *p2;
1021 uint8_t changes = 0;
1022
1023 p1 = (uint8_t *)current.entries;
1024 p2 = (uint8_t *)target.entries;
1025
1026 const uint8_t totalChannels = sizeof(CRGBPalette16);
1027 for (uint8_t i = 0; i < totalChannels; ++i) {
1028
1029 if (p1[i] == p2[i]) {
1030 continue;
1031 }
1032
1033
1034 if (p1[i] < p2[i]) {
1035 ++p1[i];
1036 ++changes;
1037 }
1038
1039
1040
1041 if (p1[i] > p2[i]) {
1042 --p1[i];
1043 ++changes;
1044 if (p1[i] > p2[i]) {
1045 --p1[i];
1046 }
1047 }
1048
1049
1050 if (changes >= maxChanges) {
1051 break;
1052 }
1053 }
1054}