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

📄 cmspack.c

📁 Linux下的无线网卡通用驱动程序
💻 C
📖 第 1 页 / 共 4 页
字号:
                                if (T_FLAVOR(dwInput))                                    FromInput = Unroll4BytesReverse;                                else                                    FromInput = Unroll4Bytes;                            }                      }                      break;              case 5:              case 6:              case 7:              case 8:                   if (!T_DOSWAP(dwInput) && !T_SWAPFIRST(dwInput))                       FromInput = UnrollAnyBytes;                   break;                                  default:;              }              break;       case 2: // 1 word per channel              switch (T_CHANNELS(dwInput) + T_EXTRA(dwInput))              {              case 1: if (T_ENDIAN16(dwInput))                            FromInput = Unroll1WordBigEndian;                      else                          if (T_FLAVOR(dwInput))                                FromInput = Unroll1WordReversed;                            else                                  FromInput = Unroll1Word;                      break;              case 2: if (T_ENDIAN16(dwInput))                            FromInput = Unroll2WordBigEndian;                        else {                          if (T_SWAPFIRST(dwInput))                              FromInput = Unroll2WordSwapFirst;                          else                               FromInput = Unroll2Word;                                      }                        break;              case 3: if (T_DOSWAP(dwInput)) {                            if (T_ENDIAN16(dwInput))                                   FromInput = Unroll3WordsSwapBigEndian;                            else                                   FromInput = Unroll3WordsSwap;                      }                      else {                            if (T_ENDIAN16(dwInput))                                   FromInput = Unroll3WordsBigEndian;                            else                                   FromInput = Unroll3Words;                      }                      break;              case 4: if (T_DOSWAP(dwInput)) {                            if (T_ENDIAN16(dwInput))                                   FromInput = Unroll4WordsSwapBigEndian;                            else {                                                                       if (T_SWAPFIRST(dwInput))                                        FromInput = Unroll4WordsSwapSwapFirst;                                    else                                         FromInput = Unroll4WordsSwap;                            }                                                  }                      else {                            if (T_EXTRA(dwInput) == 3)                                    FromInput = Unroll1WordSkip3;                            else                                if (T_ENDIAN16(dwInput)) {                                    if (T_FLAVOR(dwInput))                                        FromInput = Unroll4WordsBigEndianReverse;                                    else                                        FromInput = Unroll4WordsBigEndian;                                }                            else {                                  if (T_SWAPFIRST(dwInput))                                    FromInput = Unroll4WordsSwapFirst;                                  else {                                      if (T_FLAVOR(dwInput))                                            FromInput = Unroll4WordsReverse;                                      else                                            FromInput = Unroll4Words;                                                                      }                            }                      }                      break;              case 5:              case 6:              case 7:              case 8:                    if (!T_DOSWAP(dwInput) && !T_SWAPFIRST(dwInput))                       FromInput = UnrollAnyWords;                    break;              }              break;       default:;       }       }       }       if (!FromInput)              cmsSignalError(LCMS_ERRC_ABORTED, "Unknown input format");       return FromInput;}//  choose routine from Input identifier_cmsFIXFN _cmsIdentifyOutputFormat(_LPcmsTRANSFORM xform, DWORD dwOutput){       _cmsFIXFN ToOutput = NULL;       if (T_BYTES(dwOutput) == 0) {           switch (T_COLORSPACE(dwOutput)) {                          case PT_Lab:                     ToOutput = PackLabDouble;                    break;           case PT_XYZ:                     ToOutput = PackXYZDouble;                    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:                     ToOutput = PackDouble;                    break;            // Inks (%) 0.0 .. 100.0           default:                    ToOutput = PackInkDouble;                    break;           }                           }       else        if (T_PLANAR(dwOutput)) {       switch (T_BYTES(dwOutput)) {              case 1: ToOutput = PackPlanarBytes;                      break;              case 2:if (!T_ENDIAN16(dwOutput))                            ToOutput = PackPlanarWords;                      break;              default:;       }       }       else {              switch (T_BYTES(dwOutput)) {              case 1:                     switch (T_CHANNELS(dwOutput))                     {                     case 1:                            ToOutput = Pack1Byte;                            if (T_EXTRA(dwOutput) == 1) {                                if (T_SWAPFIRST(dwOutput))                                   ToOutput = Pack1ByteAndSkip1SwapFirst;                                else                                   ToOutput = Pack1ByteAndSkip1;                            }                            break;                     case 3:                         switch (T_EXTRA(dwOutput)) {                         case 0: if (T_DOSWAP(dwOutput))                                   ToOutput = Pack3BytesSwap;                                 else                                     if (T_COLORSPACE(dwOutput) == PT_Lab)                                        ToOutput = Pack3BytesLab;                                     else                                        ToOutput = Pack3Bytes;                             break;                         case 1:    // TODO: ALab8 should be handled here                                                                 if (T_DOSWAP(dwOutput)) {                                    if (T_SWAPFIRST(dwOutput))                                          ToOutput = Pack3BytesAndSkip1SwapSwapFirst;                                    else                                        ToOutput = Pack3BytesAndSkip1Swap;                                 }                             else {                                   if (T_SWAPFIRST(dwOutput))                                    ToOutput = Pack3BytesAndSkip1SwapFirst;                                   else                                     ToOutput = Pack3BytesAndSkip1;                             }                             break;                         default:;                         }                         break;                     case 4: if (T_EXTRA(dwOutput) == 0) {                                                            if (T_DOSWAP(dwOutput)) {                                     if (T_SWAPFIRST(dwOutput))                                         ToOutput = Pack4BytesSwapSwapFirst;                                     else                                         ToOutput = Pack4BytesSwap;                                 }                                 else {                                     if (T_SWAPFIRST(dwOutput))                                         ToOutput = Pack4BytesSwapFirst;                                     else {                                                                                  if (T_FLAVOR(dwOutput))                                             ToOutput = Pack4BytesReverse;                                         else                                             ToOutput = Pack4Bytes;                                     }                                 }                             }                            else {                                    if (!T_DOSWAP(dwOutput) && !T_SWAPFIRST(dwOutput))                                             ToOutput = PackNBytes;                            }                            break;                     // Hexachrome separations.                     case 6: if (T_EXTRA(dwOutput) == 0) {                                    if( T_DOSWAP(dwOutput))                                            ToOutput = Pack6BytesSwap;                            else                                   ToOutput = Pack6Bytes;                            }                            else {                                    if (!T_DOSWAP(dwOutput) && !T_SWAPFIRST(dwOutput))                                             ToOutput = PackNBytes;                            }                            break;					 case 2:                     case 5:                     case 7:                     case 8:                     case 9:                     case 10:                     case 11:                     case 12:                     case 13:                     case 14:                     case 15:                            if ((T_EXTRA(dwOutput) == 0) && (T_SWAPFIRST(dwOutput) == 0))                            {                                   if (T_DOSWAP(dwOutput))                                          ToOutput = PackNBytesSwap;                                   else                                          ToOutput = PackNBytes;                            }                            break;                     default:;                     }                     break;              case 2:                     switch (T_CHANNELS(dwOutput)) {                     case 1:                            if (T_ENDIAN16(dwOutput))                                   ToOutput = Pack1WordBigEndian;                            else                                   ToOutput = Pack1Word;                            if (T_EXTRA(dwOutput) == 1) {                               if (T_ENDIAN16(dwOutput))                                   ToOutput = Pack1WordAndSkip1BigEndian;                               else {                                   if (T_SWAPFIRST(dwOutput))                                      ToOutput = Pack1WordAndSkip1SwapFirst;                                   else                                       ToOutput = Pack1WordAndSkip1;                               }                            }                            break;                     case 3:                         switch (T_EXTRA(dwOutput)) {                         case 0:                               if (T_DOSWAP(dwOutput)) {                                   if (T_ENDIAN16(dwOutput))                                          ToOutput = Pack3WordsSwapBigEndian;                                   else                                          ToOutput = Pack3WordsSwap;                               }                               else {                                   if (T_ENDIAN16(dwOutput))                                      ToOutput = Pack3WordsBigEndian;                                   else                                      ToOutput = Pack3Words;                                   }                             break;                         case 1: if (T_DOSWAP(dwOutput)) {                                   if (T_ENDIAN16(dwOutput))                                          ToOutput = Pack3WordsAndSkip1SwapBigEndian;                                   else {                                       if (T_SWAPFIRST(dwOutput))                                           ToOutput = Pack3WordsAndSkip1SwapSwapFirst;                                       else                                           ToOutput = Pack3WordsAndSkip1Swap;                                   }                             }                             else  {                                   if (T_ENDIAN16(dwOutput))                                          ToOutput = Pack3WordsAndSkip1BigEndian;                                   else                                          ToOutput = Pack3WordsAndSkip1;                                   }                         default:;                         }                         break;                     case 4: if (T_EXTRA(dwOutput) == 0) {                                   if (T_DOSWAP(dwOutput)) {                                           if (T_ENDIAN16(dwOutput))                                                 ToOutput = Pack4WordsSwapBigEndian;                                           else                                                 ToOutput = Pack4WordsSwap;                                   }                                   else {                                       if (T_ENDIAN16(dwOutput)) {                                                                                         if (T_FLAVOR(dwOutput))                                                ToOutput = Pack4WordsBigEndianReverse;                                           else                                                ToOutput = Pack4WordsBigEndian;                                       }                                       else {                                          if (T_FLAVOR(dwOutput))                                              ToOutput = Pack4WordsReverse;                                          else                                                ToOutput = Pack4Words;                                        }                                   }                            }                            else {                                    if (!T_DOSWAP(dwOutput) && !T_SWAPFIRST(dwOutput))                                             ToOutput = PackNWords;                            }                                                        break;                     case 6: if (T_EXTRA(dwOutput) == 0) {                                   if (T_DOSWAP(dwOutput)) {                                          if (T_ENDIAN16(dwOutput))                                                 ToOutput = Pack6WordsSwapBigEndian;                                          else                                                 ToOutput = Pack6WordsSwap;                                   }                                   else {                                   if (T_ENDIAN16(dwOutput))                                          ToOutput = Pack6WordsBigEndian;                                   else                                          ToOutput = Pack6Words;                                   }                             }                            else {                                    if (!T_DOSWAP(dwOutput) && !T_SWAPFIRST(dwOutput))                                             ToOutput = PackNWords;                            }                                                        break;					 case 2:                     case 5:                     case 7:                     case 8:                     case 9:                     case 10:                     case 11:                     case 12:                     case 13:                     case 14:                     case 15: if ((T_EXTRA(dwOutput) == 0) && (T_SWAPFIRST(dwOutput) == 0)) {                                   if (T_DOSWAP(dwOutput)) {                                          if (T_ENDIAN16(dwOutput))                                                 ToOutput = PackNWordsSwapBigEndian;                                          else                                                 ToOutput = PackNWordsSwap;                                   }                                   else {                                          if (T_ENDIAN16(dwOutput))                                                 ToOutput = PackNWordsBigEndian;                                          else                                                 ToOutput = PackNWords;                                          }                             }                             break;                     default:;                     }                     break;              default:;              }              }              if (!ToOutput)                     cmsSignalError(LCMS_ERRC_ABORTED, "Unknown output format");              return ToOutput;}// User formatters for (weird) cases not already includedvoid LCMSEXPORT cmsSetUserFormatters(cmsHTRANSFORM hTransform, DWORD dwInput,  cmsFORMATTER Input,                                                               DWORD dwOutput, cmsFORMATTER Output){    _LPcmsTRANSFORM xform = (_LPcmsTRANSFORM) (LPSTR) hTransform;        if (Input != NULL) {        xform ->FromInput = (_cmsFIXFN) Input;        xform ->InputFormat = dwInput;    }    if (Output != NULL) {        xform ->ToOutput  = (_cmsFIXFN) Output;        xform ->OutputFormat = dwOutput;    }}void LCMSEXPORT cmsGetUserFormatters(cmsHTRANSFORM hTransform,                                      LPDWORD InputFormat, cmsFORMATTER* Input,                                      LPDWORD OutputFormat, cmsFORMATTER* Output){    _LPcmsTRANSFORM xform = (_LPcmsTRANSFORM) (LPSTR) hTransform;        *Input =  (cmsFORMATTER) xform ->FromInput;    *InputFormat = xform -> InputFormat;    *Output = (cmsFORMATTER) xform ->ToOutput;    *OutputFormat = xform -> OutputFormat;}// Change format of yet existing transform. No colorspace checking is performedvoid LCMSEXPORT cmsChangeBuffersFormat(cmsHTRANSFORM hTransform,                                         DWORD dwInputFormat,                                         DWORD dwOutputFormat){    cmsSetUserFormatters(hTransform,                         dwInputFormat,                        (cmsFORMATTER) _cmsIdentifyInputFormat((_LPcmsTRANSFORM ) hTransform, dwInputFormat),                        dwOutputFormat,                        (cmsFORMATTER) _cmsIdentifyOutputFormat((_LPcmsTRANSFORM ) hTransform, dwOutputFormat));}

⌨️ 快捷键说明

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