Ejemplo n.º 1
0
        /// <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");
                }
            }
        }
Ejemplo n.º 2
0
		/// <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);
            }
        }