Пример #1
0
 public override ExifInterOperability GetInteroperability(BitConverterEx.ByteOrder fileByteOrder)
 {
     if (mTag == ExifTag.ExifVersion || mTag == ExifTag.FlashpixVersion ||
         mTag == ExifTag.InteroperabilityVersion)
     {
         return(new ExifInterOperability(ExifTagFactory.GetTagID(mTag), 7, 4,
                                         new AsciiEncoding().GetBytes(mValue)));
     }
     else
     {
         byte[] data = new byte[4];
         for (int i = 0; i < 4; i++)
         {
             data[i] = byte.Parse(mValue[0].ToString());
         }
         return(new ExifInterOperability(ExifTagFactory.GetTagID(mTag), 7, 4, data));
     }
 }
Пример #2
0
        public override ExifInterOperability GetInteroperability(BitConverterEx.ByteOrder fileByteOrder)
        {
            //if (mEncoding == null)
            //    enc = "\0\0\0\0\0\0\0\0";
            //else if (mEncoding.EncodingName == "US-ASCII")
            //    enc = "ASCII\0\0\0";
            //else if (mEncoding.EncodingName == "Japanese (JIS 0208-1990 and 0212-1990)")
            //    enc = "JIS\0\0\0\0\0";
            //else if (mEncoding.EncodingName == "Unicode")
            //    enc = "Unicode\0";
            //else
            string enc   = "\0\0\0\0\0\0\0\0";
            var    ascii = new AsciiEncoding();

            byte[] benc = ascii.GetBytes(enc);
            byte[] bstr = (mEncoding == null ? ascii.GetBytes(mValue) : mEncoding.GetBytes(mValue));
            byte[] data = new byte[benc.Length + bstr.Length];
            Array.Copy(benc, 0, data, 0, benc.Length);
            Array.Copy(bstr, 0, data, benc.Length, bstr.Length);

            return(new ExifInterOperability(ExifTagFactory.GetTagID(mTag), 7, (uint)data.Length, data));
        }
Пример #3
0
        public override ExifInterOperability GetInteroperability(BitConverterEx.ByteOrder fileByteOrder)
        {
            ushort tagid = ExifTagFactory.GetTagID(mTag);

            Type type     = typeof(T);
            Type basetype = Enum.GetUnderlyingType(type);

            if (type == typeof(FileSource) || type == typeof(SceneType))
            {
                // UNDEFINED
                return(new ExifInterOperability(tagid, 7, 1, new byte[] { (byte)((object)mValue) }));
            }
            else if (type == typeof(GPSLatitudeRef) || type == typeof(GPSLongitudeRef) ||
                     type == typeof(GPSStatus) || type == typeof(GPSMeasureMode) ||
                     type == typeof(GPSSpeedRef) || type == typeof(GPSDirectionRef) ||
                     type == typeof(GPSDistanceRef))
            {
                // ASCII
                return(new ExifInterOperability(tagid, 2, 2, new byte[] { (byte)((object)mValue), 0 }));
            }
            else if (basetype == typeof(byte))
            {
                // BYTE
                return(new ExifInterOperability(tagid, 1, 1, new byte[] { (byte)((object)mValue) }));
            }
            else if (basetype == typeof(ushort))
            {
                // SHORT
                return(new ExifInterOperability(tagid, 3, 1,
                                                ExifBitConverter.GetBytes((ushort)((object)mValue), BitConverterEx.ByteOrder.System,
                                                                          BitConverterEx.ByteOrder.System)));
            }
            else
            {
                throw new UnknownEnumTypeException();
            }
        }
Пример #4
0
 public override ExifInterOperability GetInteroperability(BitConverterEx.ByteOrder fileByteOrder)
 {
     return(new ExifInterOperability(ExifTagFactory.GetTagID(mTag), 1, 1, new byte[] { mValue }));
 }
Пример #5
0
 public override ExifInterOperability GetInteroperability(BitConverterEx.ByteOrder fileByteOrder)
 {
     return(new ExifInterOperability(ExifTagFactory.GetTagID(mTag), 10, (uint)mValue.Length, ExifBitConverter.GetBytes(mValue, BitConverterEx.ByteOrder.System)));
 }
Пример #6
0
 public override ExifInterOperability GetInteroperability(BitConverterEx.ByteOrder fileByteOrder)
 {
     return(new ExifInterOperability(ExifTagFactory.GetTagID(mTag), 7, (uint)mValue.Length, mValue));
 }
Пример #7
0
 public override ExifInterOperability GetInteroperability(BitConverterEx.ByteOrder fileByteOrder)
 {
     return(new ExifInterOperability(ExifTagFactory.GetTagID(mTag), 2, (uint)20, ExifBitConverter.GetBytes(mValue, true)));
 }