⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmspack.c

📁 Linux下的无线网卡通用驱动程序
💻 C
📖 第 1 页 / 共 4 页
字号:
    }}staticLPBYTE UnrollXYZDouble(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum){       if (T_PLANAR(info -> InputFormat)) {        double* Pt = (double*) accum;        cmsCIEXYZ XYZ;        XYZ.X = Pt[0];        XYZ.Y = Pt[info->StrideIn];        XYZ.Z = Pt[info->StrideIn*2];        cmsFloat2XYZEncoded(wIn, &XYZ);        return accum + sizeof(double);    }    else {        cmsFloat2XYZEncoded(wIn, (LPcmsCIEXYZ) accum);        accum += sizeof(cmsCIEXYZ);        return accum;    }}// Inks does come in percentagestaticLPBYTE UnrollInkDouble(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum){    double* Inks = (double*) accum;    int nChan  = T_CHANNELS(info -> InputFormat);    int Planar = T_PLANAR(info -> InputFormat);    int i;    double v;    for (i=0; i <  nChan; i++) {        if (Planar)            v = Inks[i * info ->StrideIn];        else            v = Inks[i];                    v = floor(v * 655.35 + 0.5);                if (v > 65535.0) v = 65535.0;        if (v < 0) v = 0;        wIn[i] = (WORD) v;    }    if (T_PLANAR(info -> InputFormat))        return accum + sizeof(double);    else        return accum + (nChan + T_EXTRA(info ->InputFormat)) * sizeof(double);}// Remaining cases are between 0..1.0staticLPBYTE UnrollDouble(register _LPcmsTRANSFORM info, register WORD wIn[], register LPBYTE accum){    double* Inks = (double*) accum;    int nChan = T_CHANNELS(info -> InputFormat);    int Planar = T_PLANAR(info -> InputFormat);    int i;    double v;    for (i=0; i < nChan; i++) {        if (Planar)            v = Inks[i * info ->StrideIn];        else            v = Inks[i];                v = floor(v * 65535.0 + 0.5);        if (v > 65535.0) v = 65535.0;        if (v < 0) v = 0;        wIn[i] = (WORD) v;    }    if (T_PLANAR(info -> InputFormat))        return accum + sizeof(double);    else        return accum + (nChan + T_EXTRA(info ->InputFormat)) * sizeof(double);}// ----------------------------------------------------------- Packing routines// Generic chunky for bytestaticLPBYTE PackNBytes(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       int nChan  = T_CHANNELS(info -> OutputFormat);       register int i;       for (i=0; i < nChan;  i++)              *output++ = RGB_16_TO_8(wOut[i]);       return output + T_EXTRA(info ->OutputFormat);}// Chunky reversed order bytesstaticLPBYTE PackNBytesSwap(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       int nChan  = T_CHANNELS(info -> OutputFormat);       register int i;       for (i=nChan-1; i >= 0;  --i)              *output++ = RGB_16_TO_8(wOut[i]);       return output + T_EXTRA(info ->OutputFormat);}staticLPBYTE PackNWords(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       int nChan  = T_CHANNELS(info -> OutputFormat);       register int i;       for (i=0; i < nChan; i++) {              *(LPWORD) output = wOut[i];              output += sizeof(WORD);       }       return output + T_EXTRA(info ->OutputFormat) * sizeof(WORD);}staticLPBYTE PackNWordsSwap(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       int nChan  = T_CHANNELS(info -> OutputFormat);       register int i;       for (i=nChan-1; i >= 0; --i) {              *(LPWORD) output = wOut[i];              output += sizeof(WORD);       }       return output + T_EXTRA(info ->OutputFormat) * sizeof(WORD);}staticLPBYTE PackNWordsBigEndian(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       int nChan  = T_CHANNELS(info -> OutputFormat);       register int i;       for (i=0; i < nChan; i++) {              *(LPWORD) output = CHANGE_ENDIAN(wOut[i]);              output += sizeof(WORD);       }       return output + T_EXTRA(info ->OutputFormat) * sizeof(WORD);}staticLPBYTE PackNWordsSwapBigEndian(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       int nChan  = T_CHANNELS(info -> OutputFormat);       register int i;       for (i=nChan-1; i >= 0; --i) {              *(LPWORD) output = CHANGE_ENDIAN(wOut[i]);              output += sizeof(WORD);       }       return output + T_EXTRA(info ->OutputFormat) * sizeof(WORD);}staticLPBYTE PackPlanarBytes(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       int nChan = T_CHANNELS(info -> OutputFormat);       register int i;       LPBYTE Init = output;       for (i=0; i < nChan; i++) {              *(LPBYTE) output = RGB_16_TO_8(wOut[i]);              output += info -> StrideOut;       }       return (Init + 1);}staticLPBYTE PackPlanarWords(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       int nChan = T_CHANNELS(info -> OutputFormat);       register int i;       LPBYTE Init = output;       for (i=0; i < nChan; i++) {              *(LPWORD) output = wOut[i];              output += (info -> StrideOut * sizeof(WORD));       }       return (Init + 2);}// CMYKcm (unrolled for speed)staticLPBYTE Pack6Bytes(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){         *output++ = RGB_16_TO_8(wOut[0]);         *output++ = RGB_16_TO_8(wOut[1]);         *output++ = RGB_16_TO_8(wOut[2]);         *output++ = RGB_16_TO_8(wOut[3]);         *output++ = RGB_16_TO_8(wOut[4]);         *output++ = RGB_16_TO_8(wOut[5]);         return output;}// KCMYcmstaticLPBYTE Pack6BytesSwap(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       *output++ = RGB_16_TO_8(wOut[3]);       *output++ = RGB_16_TO_8(wOut[0]);       *output++ = RGB_16_TO_8(wOut[1]);       *output++ = RGB_16_TO_8(wOut[2]);       *output++ = RGB_16_TO_8(wOut[4]);       *output++ = RGB_16_TO_8(wOut[5]);       return output;}// CMYKcmstaticLPBYTE Pack6Words(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       *(LPWORD) output = wOut[0];       output+= 2;       *(LPWORD) output = wOut[1];       output+= 2;       *(LPWORD) output = wOut[2];       output+= 2;       *(LPWORD) output = wOut[3];       output+= 2;       *(LPWORD) output = wOut[4];       output+= 2;       *(LPWORD) output = wOut[5];       output+= 2;       return output;}// KCMYcmstaticLPBYTE Pack6WordsSwap(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       *(LPWORD) output = wOut[3];       output+= 2;       *(LPWORD) output = wOut[0];       output+= 2;       *(LPWORD) output = wOut[1];       output+= 2;       *(LPWORD) output = wOut[2];       output+= 2;       *(LPWORD) output = wOut[4];       output+= 2;       *(LPWORD) output = wOut[5];       output+= 2;       return output;}// CMYKcmstaticLPBYTE Pack6WordsBigEndian(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       *(LPWORD) output = CHANGE_ENDIAN(wOut[0]);       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(wOut[1]);       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(wOut[2]);       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(wOut[3]);       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(wOut[4]);       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(wOut[5]);       output+= 2;       return output;}// KCMYcmstaticLPBYTE Pack6WordsSwapBigEndian(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       *(LPWORD) output = CHANGE_ENDIAN(wOut[3]);       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(wOut[0]);       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(wOut[1]);       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(wOut[2]);       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(wOut[4]);       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(wOut[5]);       output+= 2;       return output;}staticLPBYTE Pack4Bytes(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){         *output++ = RGB_16_TO_8(wOut[0]);         *output++ = RGB_16_TO_8(wOut[1]);         *output++ = RGB_16_TO_8(wOut[2]);         *output++ = RGB_16_TO_8(wOut[3]);         return output;}staticLPBYTE Pack4BytesReverse(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){         *output++ = REVERSE_FLAVOR_8(RGB_16_TO_8(wOut[0]));         *output++ = REVERSE_FLAVOR_8(RGB_16_TO_8(wOut[1]));         *output++ = REVERSE_FLAVOR_8(RGB_16_TO_8(wOut[2]));         *output++ = REVERSE_FLAVOR_8(RGB_16_TO_8(wOut[3]));         return output;}staticLPBYTE Pack4BytesSwapFirst(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){         *output++ = RGB_16_TO_8(wOut[3]);         *output++ = RGB_16_TO_8(wOut[0]);         *output++ = RGB_16_TO_8(wOut[1]);         *output++ = RGB_16_TO_8(wOut[2]);                  return output;}// ABGRstaticLPBYTE Pack4BytesSwap(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       *output++ = RGB_16_TO_8(wOut[3]);       *output++ = RGB_16_TO_8(wOut[2]);       *output++ = RGB_16_TO_8(wOut[1]);       *output++ = RGB_16_TO_8(wOut[0]);       return output;}staticLPBYTE Pack4BytesSwapSwapFirst(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       *output++ = RGB_16_TO_8(wOut[2]);       *output++ = RGB_16_TO_8(wOut[1]);       *output++ = RGB_16_TO_8(wOut[0]);       *output++ = RGB_16_TO_8(wOut[3]);       return output;}staticLPBYTE Pack4Words(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       *(LPWORD) output = wOut[0];       output+= 2;       *(LPWORD) output = wOut[1];       output+= 2;       *(LPWORD) output = wOut[2];       output+= 2;       *(LPWORD) output = wOut[3];       output+= 2;       return output;}staticLPBYTE Pack4WordsReverse(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       *(LPWORD) output = REVERSE_FLAVOR_16(wOut[0]);       output+= 2;       *(LPWORD) output = REVERSE_FLAVOR_16(wOut[1]);       output+= 2;       *(LPWORD) output = REVERSE_FLAVOR_16(wOut[2]);       output+= 2;       *(LPWORD) output = REVERSE_FLAVOR_16(wOut[3]);       output+= 2;       return output;}// ABGRstaticLPBYTE Pack4WordsSwap(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       *(LPWORD) output = wOut[3];       output+= 2;       *(LPWORD) output = wOut[2];       output+= 2;       *(LPWORD) output = wOut[1];       output+= 2;       *(LPWORD) output = wOut[0];       output+= 2;       return output;}// CMYKstaticLPBYTE Pack4WordsBigEndian(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       *(LPWORD) output = CHANGE_ENDIAN(wOut[0]);       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(wOut[1]);       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(wOut[2]);       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(wOut[3]);       output+= 2;       return output;}staticLPBYTE Pack4WordsBigEndianReverse(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       *(LPWORD) output = CHANGE_ENDIAN(REVERSE_FLAVOR_16(wOut[0]));       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(REVERSE_FLAVOR_16(wOut[1]));       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(REVERSE_FLAVOR_16(wOut[2]));       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(REVERSE_FLAVOR_16(wOut[3]));       output+= 2;       return output;}// KYMCstaticLPBYTE Pack4WordsSwapBigEndian(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       *(LPWORD) output = CHANGE_ENDIAN(wOut[3]);       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(wOut[2]);       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(wOut[1]);       output+= 2;       *(LPWORD) output = CHANGE_ENDIAN(wOut[0]);       output+= 2;       return output;}staticLPBYTE Pack3Bytes(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       *output++ = RGB_16_TO_8(wOut[0]);       *output++ = RGB_16_TO_8(wOut[1]);       *output++ = RGB_16_TO_8(wOut[2]);       return output;}staticLPBYTE Pack3BytesLab(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       *output++ = (BYTE) (wOut[0] >> 8);       *output++ = (BYTE) (wOut[1] >> 8);       *output++ = (BYTE) (wOut[2] >> 8);       return output;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -