738{
739 #pragma unused (progressProc, refCon)
741 OSType srcSpace = 0;
742 OSType dstSpace = 0;
743
744
745 if (srcMap==NULL || srcMap->image==NULL ||
746 dstMap==NULL || dstMap->image==NULL)
747 return paramErr;
748
749 matchInfo.
height = srcMap->height;
750 matchInfo.
width = srcMap->width;
753
754 switch (srcMap->space)
755 {
756 case cmGray8Space:
757 srcSpace = cmGrayData;
758 matchInfo.
srcBuf[0] = (UInt8*)srcMap->image + 0;
759 matchInfo.
srcBuf[1] = NULL;
760 matchInfo.
srcBuf[2] = NULL;
761 matchInfo.
srcBuf[3] = NULL;
764 break;
765
766 case cmGray16Space:
767 case cmGray16LSpace:
768 srcSpace = cmGrayData;
769 matchInfo.
srcBuf[0] = (UInt8*)srcMap->image + 0;
770 matchInfo.
srcBuf[1] = NULL;
771 matchInfo.
srcBuf[2] = NULL;
772 matchInfo.
srcBuf[3] = NULL;
775 break;
776
777 case cmRGB24Space:
778 srcSpace = cmRGBData;
779 matchInfo.
srcBuf[0] = (UInt8*)srcMap->image + 0;
780 matchInfo.
srcBuf[1] = (UInt8*)srcMap->image + 1;
781 matchInfo.srcBuf[2] = (UInt8*)srcMap->image + 2;
782 matchInfo.srcBuf[3] = NULL;
783 matchInfo.srcChanBits = 8;
784 matchInfo.srcColBytes = 3;
785 break;
786
787 case cmRGB32Space:
788 case cmRGBA32Space:
789 srcSpace = cmRGBData;
790 matchInfo.srcBuf[0] = (UInt8*)srcMap->image + 1;
791 matchInfo.srcBuf[1] = (UInt8*)srcMap->image + 2;
792 matchInfo.srcBuf[2] = (UInt8*)srcMap->image + 3;
793 matchInfo.srcBuf[3] = NULL;
794 matchInfo.srcChanBits = 8;
795 matchInfo.srcColBytes = 4;
796 break;
797
798 case cmRGB48Space:
799 case cmRGB48LSpace:
800 srcSpace = cmRGBData;
801 matchInfo.srcBuf[0] = (UInt8*)srcMap->image + 0;
802 matchInfo.srcBuf[1] = (UInt8*)srcMap->image + 2;
803 matchInfo.srcBuf[2] = (UInt8*)srcMap->image + 4;
804 matchInfo.srcBuf[3] = NULL;
805 matchInfo.srcChanBits = 16;
806 matchInfo.srcColBytes = 6;
807 break;
808
809 case cmCMYK32Space:
810 srcSpace = cmCMYKData;
811 matchInfo.srcBuf[0] = (UInt8*)srcMap->image + 0;
812 matchInfo.srcBuf[1] = (UInt8*)srcMap->image + 1;
813 matchInfo.srcBuf[2] = (UInt8*)srcMap->image + 2;
814 matchInfo.srcBuf[3] = (UInt8*)srcMap->image + 3;
815 matchInfo.srcChanBits = 8;
816 matchInfo.srcColBytes = 4;
817 break;
818
819 case cmCMYK64Space:
820 case cmCMYK64LSpace:
821 srcSpace = cmCMYKData;
822 matchInfo.srcBuf[0] = (UInt8*)srcMap->image + 0;
823 matchInfo.srcBuf[1] = (UInt8*)srcMap->image + 2;
824 matchInfo.srcBuf[2] = (UInt8*)srcMap->image + 4;
825 matchInfo.srcBuf[3] = (UInt8*)srcMap->image + 6;
826 matchInfo.srcChanBits = 16;
827 matchInfo.srcColBytes = 8;
828 break;
829
830 case cmLAB24Space:
831 srcSpace = cmLabData;
832 matchInfo.srcBuf[0] = (UInt8*)srcMap->image + 0;
833 matchInfo.srcBuf[1] = (UInt8*)srcMap->image + 1;
834 matchInfo.srcBuf[2] = (UInt8*)srcMap->image + 2;
835 matchInfo.srcBuf[3] = NULL;
836 matchInfo.srcChanBits = 8;
837 matchInfo.srcColBytes = 3;
838 break;
839
840 case cmLAB48Space:
841 case cmLAB48LSpace:
842 srcSpace = cmLabData;
843 matchInfo.srcBuf[0] = (UInt8*)srcMap->image + 0;
844 matchInfo.srcBuf[1] = (UInt8*)srcMap->image + 2;
845 matchInfo.srcBuf[2] = (UInt8*)srcMap->image + 4;
846 matchInfo.srcBuf[3] = NULL;
847 matchInfo.srcChanBits = 16;
848 matchInfo.srcColBytes = 6;
849 break;
850
851 case cmXYZ24Space:
852 srcSpace = cmXYZData;
853 matchInfo.srcBuf[0] = (UInt8*)srcMap->image + 0;
854 matchInfo.srcBuf[1] = (UInt8*)srcMap->image + 1;
855 matchInfo.srcBuf[2] = (UInt8*)srcMap->image + 2;
856 matchInfo.srcBuf[3] = NULL;
857 matchInfo.srcChanBits = 8;
858 matchInfo.srcColBytes = 3;
859 break;
860
861 case cmXYZ48Space:
862 case cmXYZ48LSpace:
863 srcSpace = cmXYZData;
864 matchInfo.srcBuf[0] = (UInt8*)srcMap->image + 0;
865 matchInfo.srcBuf[1] = (UInt8*)srcMap->image + 2;
866 matchInfo.srcBuf[2] = (UInt8*)srcMap->image + 4;
867 matchInfo.srcBuf[3] = NULL;
868 matchInfo.srcChanBits = 16;
869 matchInfo.srcColBytes = 6;
870 break;
871
872 default:
873 return cmInvalidSrcMap;
874 break;
875 }
876
877
878 switch (dstMap->space)
879 {
880 case cmGray8Space:
881 dstSpace = cmGrayData;
882 matchInfo.dstBuf[0] = (UInt8*)srcMap->image + 0;
883 matchInfo.dstBuf[1] = NULL;
884 matchInfo.dstBuf[2] = NULL;
885 matchInfo.dstBuf[3] = NULL;
886 matchInfo.dstChanBits = 8;
887 matchInfo.dstColBytes = 1;
888 break;
889
890 case cmGray16Space:
891 case cmGray16LSpace:
892 dstSpace = cmGrayData;
893 matchInfo.dstBuf[0] = (UInt8*)srcMap->image + 0;
894 matchInfo.dstBuf[1] = NULL;
895 matchInfo.dstBuf[2] = NULL;
896 matchInfo.dstBuf[3] = NULL;
897 matchInfo.dstChanBits = 16;
898 matchInfo.dstColBytes = 2;
899 break;
900
901 case cmRGB24Space:
902 dstSpace = cmRGBData;
903 matchInfo.dstBuf[0] = (UInt8*)dstMap->image + 0;
904 matchInfo.dstBuf[1] = (UInt8*)dstMap->image + 1;
905 matchInfo.dstBuf[2] = (UInt8*)dstMap->image + 2;
906 matchInfo.dstBuf[3] = NULL;
907 matchInfo.dstChanBits = 8;
908 matchInfo.dstColBytes = 3;
909 break;
910
911 case cmRGB32Space:
912 case cmRGBA32Space:
913 dstSpace = cmRGBData;
914 matchInfo.dstBuf[0] = (UInt8*)dstMap->image + 1;
915 matchInfo.dstBuf[1] = (UInt8*)dstMap->image + 2;
916 matchInfo.dstBuf[2] = (UInt8*)dstMap->image + 3;
917 matchInfo.dstBuf[3] = NULL;
918 matchInfo.dstChanBits = 8;
919 matchInfo.dstColBytes = 4;
920 break;
921
922 case cmRGB48Space:
923 case cmRGB48LSpace:
924 dstSpace = cmRGBData;
925 matchInfo.dstBuf[0] = (UInt8*)dstMap->image + 0;
926 matchInfo.dstBuf[1] = (UInt8*)dstMap->image + 2;
927 matchInfo.dstBuf[2] = (UInt8*)dstMap->image + 4;
928 matchInfo.dstBuf[3] = NULL;
929 matchInfo.dstChanBits = 16;
930 matchInfo.dstColBytes = 6;
931 break;
932
933 case cmCMYK32Space:
934 dstSpace = cmCMYKData;
935 matchInfo.dstBuf[0] = (UInt8*)dstMap->image + 0;
936 matchInfo.dstBuf[1] = (UInt8*)dstMap->image + 1;
937 matchInfo.dstBuf[2] = (UInt8*)dstMap->image + 2;
938 matchInfo.dstBuf[3] = (UInt8*)dstMap->image + 3;
939 matchInfo.dstChanBits = 8;
940 matchInfo.dstColBytes = 4;
941 break;
942
943 case cmCMYK64Space:
944 case cmCMYK64LSpace:
945 dstSpace = cmCMYKData;
946 matchInfo.dstBuf[0] = (UInt8*)dstMap->image + 0;
947 matchInfo.dstBuf[1] = (UInt8*)dstMap->image + 2;
948 matchInfo.dstBuf[2] = (UInt8*)dstMap->image + 4;
949 matchInfo.dstBuf[3] = (UInt8*)dstMap->image + 6;
950 matchInfo.dstChanBits = 16;
951 matchInfo.dstColBytes = 8;
952 break;
953
954 case cmLAB24Space:
955 dstSpace = cmLabData;
956 matchInfo.dstBuf[0] = (UInt8*)dstMap->image + 0;
957 matchInfo.dstBuf[1] = (UInt8*)dstMap->image + 1;
958 matchInfo.dstBuf[2] = (UInt8*)dstMap->image + 2;
959 matchInfo.dstBuf[3] = NULL;
960 matchInfo.dstChanBits = 8;
961 matchInfo.dstColBytes = 3;
962 break;
963
964 case cmLAB48Space:
965 case cmLAB48LSpace:
966 dstSpace = cmLabData;
967 matchInfo.dstBuf[0] = (UInt8*)dstMap->image + 0;
968 matchInfo.dstBuf[1] = (UInt8*)dstMap->image + 2;
969 matchInfo.dstBuf[2] = (UInt8*)dstMap->image + 4;
970 matchInfo.dstBuf[3] = NULL;
971 matchInfo.dstChanBits = 16;
972 matchInfo.dstColBytes = 6;
973 break;
974
975 case cmXYZ24Space:
976 dstSpace = cmXYZData;
977 matchInfo.dstBuf[0] = (UInt8*)dstMap->image + 0;
978 matchInfo.dstBuf[1] = (UInt8*)dstMap->image + 1;
979 matchInfo.dstBuf[2] = (UInt8*)dstMap->image + 2;
980 matchInfo.dstBuf[3] = NULL;
981 matchInfo.dstChanBits = 8;
982 matchInfo.dstColBytes = 3;
983 break;
984
985 case cmXYZ48Space:
986 case cmXYZ48LSpace:
987 dstSpace = cmXYZData;
988 matchInfo.dstBuf[0] = (UInt8*)dstMap->image + 0;
989 matchInfo.dstBuf[1] = (UInt8*)dstMap->image + 2;
990 matchInfo.dstBuf[2] = (UInt8*)dstMap->image + 4;
991 matchInfo.dstBuf[3] = NULL;
992 matchInfo.dstChanBits = 16;
993 matchInfo.dstColBytes = 6;
994 break;
995
996 default:
997 return cmInvalidSrcMap;
998 break;
999 }
1000
1001 #if TARGET_RT_LITTLE_ENDIAN
1002 matchInfo.srcSwap = ((srcMap->space & cmLittleEndianPacking) == 0);
1003 matchInfo.dstSwap = ((dstMap->space & cmLittleEndianPacking) == 0);
1004 #else
1005 matchInfo.srcSwap = ((srcMap->space & cmLittleEndianPacking) == cmLittleEndianPacking);
1006 matchInfo.dstSwap = ((dstMap->space & cmLittleEndianPacking) == cmLittleEndianPacking);
1007 #endif
1008
1010 return noErr;
1011}
UInt32 width
Definition RefIccMAXCmm.cpp:93
UInt32 srcChanBits
Definition RefIccMAXCmm.cpp:96
UInt32 dstRowBytes
Definition RefIccMAXCmm.cpp:103
UInt32 height
Definition RefIccMAXCmm.cpp:92
UInt32 srcColBytes
Definition RefIccMAXCmm.cpp:98
UInt32 srcRowBytes
Definition RefIccMAXCmm.cpp:97
static void DoMatch(CMMStoragePtr storage, CMMMatchRec *pMatchInfo)
Definition RefIccMAXCmm.cpp:151
UInt8 * srcBuf[4]
Definition RefIccMAXCmm.cpp:95
Definition RefIccMAXCmm.cpp:91