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

📄 cmspack.c

📁 Linux下的无线网卡通用驱动程序
💻 C
📖 第 1 页 / 共 4 页
字号:
}staticLPBYTE Pack3BytesSwap(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]);       return output;}staticLPBYTE Pack3Words(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;       return output;}staticLPBYTE Pack3WordsSwap(register _LPcmsTRANSFORM info, register WORD wOut[], register LPBYTE output){       *(LPWORD) output = wOut[2];       output+= 2;       *(LPWORD) output = wOut[1];       output+= 2;       *(LPWORD) output = wOut[0];       output+= 2;       return output;}staticLPBYTE Pack3WordsBigEndian(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;       return output;}staticLPBYTE Pack3WordsSwapBigEndian(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output){       *(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 Pack3BytesAndSkip1(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++;       return output;}staticLPBYTE Pack3BytesAndSkip1SwapFirst(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output){        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 Pack3BytesAndSkip1Swap(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output){        output++;       *output++ = RGB_16_TO_8(wOut[2]);       *output++ = RGB_16_TO_8(wOut[1]);       *output++ = RGB_16_TO_8(wOut[0]);           return output;}staticLPBYTE Pack3BytesAndSkip1SwapSwapFirst(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++;           return output;}staticLPBYTE Pack3WordsAndSkip1(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;       output+= 2;       return output;}staticLPBYTE Pack3WordsAndSkip1Swap(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output){       output+= 2;       *(LPWORD) output = wOut[2];       output+= 2;       *(LPWORD) output = wOut[1];       output+= 2;       *(LPWORD) output = wOut[0];       output+= 2;              return output;}staticLPBYTE Pack3WordsAndSkip1SwapSwapFirst(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output){             *(LPWORD) output = wOut[2];       output+= 2;       *(LPWORD) output = wOut[1];       output+= 2;       *(LPWORD) output = wOut[0];       output+= 2;       output+= 2;              return output;}staticLPBYTE Pack3WordsAndSkip1BigEndian(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;       output+= 2;       return output;}staticLPBYTE Pack3WordsAndSkip1SwapBigEndian(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output){        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 Pack1Byte(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output){       *output++ = RGB_16_TO_8(wOut[0]);       return output;}staticLPBYTE Pack1ByteAndSkip1(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output){       *output++ = RGB_16_TO_8(wOut[0]);       output++;       return output;}staticLPBYTE Pack1ByteAndSkip1SwapFirst(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output){       output++;       *output++ = RGB_16_TO_8(wOut[0]);              return output;}staticLPBYTE Pack1Word(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output){       *(LPWORD) output = wOut[0];       output+= 2;       return output;}staticLPBYTE Pack1WordBigEndian(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output){       *(LPWORD) output = CHANGE_ENDIAN(wOut[0]);       output+= 2;       return output;}staticLPBYTE Pack1WordAndSkip1(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output){       *(LPWORD) output = wOut[0];       output+= 4;       return output;}staticLPBYTE Pack1WordAndSkip1SwapFirst(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output){       output += 2;        *(LPWORD) output = wOut[0];       output+= 2;       return output;}staticLPBYTE Pack1WordAndSkip1BigEndian(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output){       *(LPWORD) output = CHANGE_ENDIAN(wOut[0]);       output+= 4;       return output;}// Unencoded Float values -- don't try optimize speedstaticLPBYTE PackLabDouble(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output){    if (T_PLANAR(Info -> OutputFormat)) {        cmsCIELab  Lab;        double* Out = (double*) output;        cmsLabEncoded2Float(&Lab, wOut);        Out[0]                  = Lab.L;        Out[Info ->StrideOut]   = Lab.a;        Out[Info ->StrideOut*2] = Lab.b;        return output + sizeof(double);    }    else {       if (Info ->lOutputV4Lab)           cmsLabEncoded2Float4((LPcmsCIELab) output, wOut);       else           cmsLabEncoded2Float((LPcmsCIELab) output, wOut);        output += sizeof(cmsCIELab);            return output;    }}staticLPBYTE PackXYZDouble(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output){    if (T_PLANAR(Info -> OutputFormat)) {        cmsCIEXYZ XYZ;        double* Out = (double*) output;        cmsXYZEncoded2Float(&XYZ, wOut);        Out[0]                  = XYZ.X;        Out[Info ->StrideOut]   = XYZ.Y;        Out[Info ->StrideOut*2] = XYZ.Z;        return output + sizeof(double);    }    else {    cmsXYZEncoded2Float((LPcmsCIEXYZ) output, wOut);    output += sizeof(cmsCIEXYZ);    return output;    }}staticLPBYTE PackInkDouble(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output){    double* Inks = (double*) output;    int nChan = T_CHANNELS(Info -> OutputFormat);    int i;    if (T_PLANAR(Info -> OutputFormat)) {        for (i=0; i <  nChan; i++) {            Inks[i*Info ->StrideOut] = wOut[i] / 655.35;        }        return output + sizeof(double);    }     else {        for (i=0; i <  nChan; i++) {            Inks[i] = wOut[i] /  655.35;        }        return output + (nChan + T_EXTRA(Info ->OutputFormat)) * sizeof(double);    }}staticLPBYTE PackDouble(register _LPcmsTRANSFORM Info, register WORD wOut[], register LPBYTE output){    double* Inks = (double*) output;    int nChan = T_CHANNELS(Info -> OutputFormat);    int i;    if (T_PLANAR(Info -> OutputFormat)) {        for (i=0; i <  nChan; i++) {            Inks[i*Info ->StrideOut] = wOut[i] / 65535.0;        }        return output + sizeof(double);    }    else {        for (i=0; i <  nChan; i++) {            Inks[i] = wOut[i] /  65535.0;        }        return output + (nChan + T_EXTRA(Info ->OutputFormat)) * sizeof(double);    }}//  choose routine from Input identifier_cmsFIXFN _cmsIdentifyInputFormat(_LPcmsTRANSFORM xform, DWORD dwInput){       _cmsFIXFN FromInput = NULL;       // Check Named Color       if (xform) {                      if (xform ->InputProfile) {           if (cmsGetDeviceClass(xform ->InputProfile) == icSigNamedColorClass) {                if (dwInput != TYPE_NAMED_COLOR_INDEX) {                    cmsSignalError(LCMS_ERRC_ABORTED, "Named color needs TYPE_NAMED_COLOR_INDEX");                    return NULL;                }           }                        }       }       // Unencoded modes       if (T_BYTES(dwInput) == 0) {           switch (T_COLORSPACE(dwInput)) {                          case PT_Lab:                     FromInput = UnrollLabDouble;                    break;           case PT_XYZ:                     FromInput = UnrollXYZDouble;                    break;           // 0.0 .. 1.0 range           case PT_GRAY:           case PT_RGB:           case PT_YCbCr:           case PT_YUV:           case PT_YUVK:           case PT_HSV:           case PT_HLS:           case PT_Yxy:                     FromInput = UnrollDouble;                    break;            // Inks (%) 0.0 .. 100.0           default:                    FromInput = UnrollInkDouble;                    break;           }                           }       else {                      if (T_PLANAR(dwInput)) {                              switch (T_BYTES(dwInput)) {                                  case 1:                    FromInput = UnrollPlanarBytes;                   break;                                  case 2:                                      if (T_ENDIAN16(dwInput))                       FromInput = UnrollPlanarWordsBigEndian;                   else                       FromInput = UnrollPlanarWords;                                   break;                                  default:;               }       }       else {       switch (T_BYTES(dwInput)) {       case 1: // 1 byte per channel              switch (T_CHANNELS(dwInput) + T_EXTRA(dwInput)) {              case 1: if (T_FLAVOR(dwInput))                                FromInput = Unroll1ByteReversed;                            else                                  FromInput = Unroll1Byte;                      break;              case 2: if (T_SWAPFIRST(dwInput))                        FromInput = Unroll2ByteSwapFirst;                      else                        FromInput = Unroll2Byte;                      break;              case 3: if (T_DOSWAP(dwInput))                            FromInput = Unroll3BytesSwap;                      else {                            if (T_EXTRA(dwInput) == 2)                                FromInput = Unroll1ByteSkip2;                            else                                if (T_COLORSPACE(dwInput) == PT_Lab)                                    FromInput = Unroll3BytesLab;                                else                                    FromInput = Unroll3Bytes;                      }                      break;              case 4:                      // TODO: ALab8 must be fixed to match v2 encoding                      if (T_DOSWAP(dwInput)) {                            if (T_SWAPFIRST(dwInput))                                FromInput = Unroll4BytesSwapSwapFirst;                            else                                 FromInput = Unroll4BytesSwap;                      }                      else {                            if (T_SWAPFIRST(dwInput))                                FromInput = Unroll4BytesSwapFirst;                            else {

⌨️ 快捷键说明

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