/// <summary> Factory method for creating instances of this class.</summary> /// <param name="src">-- source of image data /// </param> /// <param name="csMap">-- provides colorspace info /// </param> /// <returns> ColorSpaceMapper instance /// </returns> /// <exception cref="IOException">profile access exception /// </exception> public static BlkImgDataSrc createInstance(BlkImgDataSrc src, ColorSpace csMap) { // Check parameters csMap.pl.checkList(OPT_PREFIX, CSJ2K.j2k.util.ParameterList.toNameArray(pinfo)); // Perform ICCProfiling or ColorSpace tranfsormation. if (csMap.Method == ColorSpace.MethodEnum.ICC_PROFILED) { return(ICCProfiler.createInstance(src, csMap)); } else { ColorSpace.CSEnum colorspace = csMap.getColorSpace(); if (colorspace == ColorSpace.CSEnum.sRGB) { return(EnumeratedColorSpaceMapper.createInstance(src, csMap)); } else if (colorspace == ColorSpace.CSEnum.GreyScale) { return(EnumeratedColorSpaceMapper.createInstance(src, csMap)); } else if (colorspace == ColorSpace.CSEnum.sYCC) { return(SYccColorSpaceMapper.createInstance(src, csMap)); } if (colorspace == ColorSpace.CSEnum.esRGB) { return(EsRgbColorSpaceMapper.createInstance(src, csMap)); } else if (colorspace == ColorSpace.CSEnum.Unknown) { return(null); } else { throw new ColorSpaceException("Bad color space specification in image"); } } }
/// <summary>Analyze the box content. </summary> private void readBox() { byte[] boxHeader = new byte[256]; in_Renamed.seek(dataStart); in_Renamed.readFully(boxHeader, 0, 11); switch (boxHeader[0]) { case 1: method = CSJ2K.Color.ColorSpace.MethodEnum.ENUMERATED; int cs = CSJ2K.Icc.ICCProfile.getInt(boxHeader, 3); switch (cs) { case 16: colorSpace = CSJ2K.Color.ColorSpace.CSEnum.sRGB; break; // from switch (cs)... case 17: colorSpace = CSJ2K.Color.ColorSpace.CSEnum.GreyScale; break; // from switch (cs)... case 18: colorSpace = CSJ2K.Color.ColorSpace.CSEnum.sYCC; break; // from switch (cs)... case 20: colorSpace = CSJ2K.Color.ColorSpace.CSEnum.esRGB; break; #region Known but unsupported colorspaces case 3: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace YCbCr(2) in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 4: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace YCbCr(3) in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 9: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace PhotoYCC in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 11: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace CMY in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 12: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace CMYK in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 13: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace YCCK in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 14: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace CIELab in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 15: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace Bi-Level(2) in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 19: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace CIEJab in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 21: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace ROMM-RGB in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 22: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace YPbPr(1125/60) in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 23: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace YPbPr(1250/50) in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 24: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace e-sYCC in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; #endregion default: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unknown enumerated colorspace (" + cs + ") in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; } break; // from switch (boxHeader[0])... case 2: method = CSJ2K.Color.ColorSpace.MethodEnum.ICC_PROFILED; int size = CSJ2K.Icc.ICCProfile.getInt(boxHeader, 3); iccProfile = new byte[size]; in_Renamed.seek(dataStart + 3); in_Renamed.readFully(iccProfile, 0, size); break; // from switch (boxHeader[0])... default: throw new ColorSpaceException("Bad specification method (" + boxHeader[0] + ") in " + this); } }
/// <summary>Analyze the box content. </summary> private void readBox() { byte[] boxHeader = new byte[256]; in_Renamed.seek(dataStart); in_Renamed.readFully(boxHeader, 0, 11); switch (boxHeader[0]) { case 1: method = CSJ2K.Color.ColorSpace.MethodEnum.ENUMERATED; int cs = CSJ2K.Icc.ICCProfile.getInt(boxHeader, 3); switch (cs) { case 16: colorSpace = CSJ2K.Color.ColorSpace.CSEnum.sRGB; break; // from switch (cs)... case 17: colorSpace = CSJ2K.Color.ColorSpace.CSEnum.GreyScale; break; // from switch (cs)... case 18: colorSpace = CSJ2K.Color.ColorSpace.CSEnum.sYCC; break; // from switch (cs)... case 20: colorSpace = CSJ2K.Color.ColorSpace.CSEnum.esRGB; break; #region Known but unsupported colorspaces case 3: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace YCbCr(2) in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 4: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace YCbCr(3) in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 9: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace PhotoYCC in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 11: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace CMY in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 12: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace CMYK in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 13: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace YCCK in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 14: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace CIELab in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 15: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace Bi-Level(2) in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 19: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace CIEJab in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 21: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace ROMM-RGB in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 22: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace YPbPr(1125/60) in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 23: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace YPbPr(1250/50) in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; case 24: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unsupported enumerated colorspace e-sYCC in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; #endregion default: FacilityManager.getMsgLogger().printmsg(CSJ2K.j2k.util.MsgLogger_Fields.WARNING, "Unknown enumerated colorspace (" + cs + ") in color specification box"); colorSpace = CSJ2K.Color.ColorSpace.CSEnum.Unknown; break; } break; // from switch (boxHeader[0])... case 2: method = CSJ2K.Color.ColorSpace.MethodEnum.ICC_PROFILED; int size = CSJ2K.Icc.ICCProfile.getInt(boxHeader, 3); iccProfile = new byte[size]; in_Renamed.seek(dataStart + 3); in_Renamed.readFully(iccProfile, 0, size); break; // from switch (boxHeader[0])... default: throw new ColorSpaceException("Bad specification method (" + boxHeader[0] + ") in " + this); } }