private void Write130_ISOSpeedTypeConverter(string n, string ns, ISOSpeedTypeConverter o, bool isNullable, bool needType)
 {
     if (o == null)
     {
         if (isNullable)
         {
             base.WriteNullTagLiteral(n, ns);
         }
     }
     else
     {
         if (!needType && (o.GetType() != typeof(ISOSpeedTypeConverter)))
         {
             throw base.CreateUnknownTypeException(o);
         }
         base.WriteStartElement(n, ns, o, false, null);
         if (needType)
         {
             base.WriteXsiType("ISOSpeedTypeConverter", "");
         }
         base.WriteEndElement(o);
     }
 }
        public bool Register(Hashtable options)
        {
            if (options == null)
            {
                return false;
            }
            MaxThumbnailSize = PropertyProviderManager.ReadOption<Size>(options, "maxThumbnailSize", new Size(120, 120));
            KeepThumbnailSize = PropertyProviderManager.ReadOption<bool>(options, "keepThumbnailSize", true);
            List<PropertyTag> list = null;
            string str = options["propertyTags"] as string;
            if (str != null)
            {
                list = new List<PropertyTag>();
                foreach (string str2 in StringHelper.SplitString(str, new char[] { ',' }))
                {
                    try
                    {
                        list.Add((PropertyTag) Enum.Parse(typeof(PropertyTag), str2, true));
                    }
                    catch
                    {
                    }
                }
            }
            ImageExtMap = new Dictionary<string, TagCapability>(StringComparer.OrdinalIgnoreCase);
            foreach (ImageCodecInfo info in ImageCodecInfo.GetImageDecoders())
            {
                TagCapability size = TagCapability.Size;
                if (info.FormatID == ImageFormat.Gif.Guid)
                {
                    size |= TagCapability.Frames;
                }
                else if (info.FormatID == ImageFormat.Icon.Guid)
                {
                    size |= TagCapability.Frames;
                }
                else if (info.FormatID == ImageFormat.Jpeg.Guid)
                {
                    size |= TagCapability.Exif | TagCapability.Properties;
                }
                else if (info.FormatID == ImageFormat.Png.Guid)
                {
                    size |= TagCapability.Properties;
                }
                else if (info.FormatID == ImageFormat.Tiff.Guid)
                {
                    size |= TagCapability.Exif | TagCapability.Properties | TagCapability.Frames;
                }
                foreach (string str3 in StringHelper.SplitString(info.FilenameExtension, new char[] { ';' }))
                {
                    ImageExtMap.Add(Path.GetExtension(str3), size);
                }
            }
            int groupId = VirtualProperty.RegisterGroup("Image");
            if (list != null)
            {
                foreach (PropertyTag tag in list)
                {
                    Type type;
                    int length = -1;
                    TypeConverter converter = null;
                    PropertyTag tag2 = tag;
                    if (tag2 <= PropertyTag.ImageDescription)
                    {
                        switch (tag2)
                        {
                            case PropertyTag.ImageWidth:
                            case PropertyTag.ImageHeight:
                                length = 4;
                                goto Label_030A;

                            case PropertyTag.ImageDescription:
                            {
                                continue;
                            }
                        }
                        goto Label_030A;
                    }
                    if (tag2 != PropertyTag.SoftwareUsed)
                    {
                        if (tag2 == PropertyTag.ExifISOSpeed)
                        {
                            goto Label_0301;
                        }
                        goto Label_030A;
                    }
                    int num3 = VirtualProperty.RegisterGroup("Document");
                    int num4 = DefaultProperty.RegisterProperty("SoftwareUsed", num3, typeof(string), -1);
                    PropertyTagMap.Add(tag, num4);
                    continue;
                Label_0301:
                    converter = new ISOSpeedTypeConverter();
                Label_030A:
                    type = PropertyTagHelper.GetPropertyType(tag);
                    if (type == typeof(DateTime))
                    {
                        converter = DateTimeTypeConverter.Default;
                    }
                    int num5 = DefaultProperty.RegisterProperty(tag.ToString(), groupId, type, length, converter, 0);
                    switch (tag)
                    {
                        case PropertyTag.ImageWidth:
                            PropertyImageWidth = num5;
                            break;

                        case PropertyTag.ImageHeight:
                            PropertyImageHeight = num5;
                            break;
                    }
                    PropertyTagMap.Add(tag, num5);
                }
            }
            PropertyTagMap.Add(PropertyTag.ImageDescription, 11);
            if (PropertyImageWidth < 0)
            {
                PropertyImageWidth = DefaultProperty.RegisterProperty("ImageWidth", groupId, typeof(int), 4);
            }
            if (PropertyImageHeight < 0)
            {
                PropertyImageHeight = DefaultProperty.RegisterProperty("ImageHeight", groupId, typeof(int), 4);
            }
            PropertyImageSize = DefaultProperty.RegisterProperty("ImageSize", groupId, typeof(Size), -1, ImageSizeTypeConverter.Default, 0);
            PropertyFrameCount = DefaultProperty.RegisterProperty("FrameCount", groupId, typeof(int), 2);
            PropertyColorSpace = DefaultProperty.RegisterProperty("ColorSpace", groupId, typeof(ColorSpace), 5);
            PropertyBPP = DefaultProperty.RegisterProperty("BPP", groupId, typeof(int), 2);
            PropertyDPI = DefaultProperty.RegisterProperty("DPI", groupId, typeof(int), -1, DPITypeConverter.Default, 0);
            return true;
        }
 private ISOSpeedTypeConverter Read130_ISOSpeedTypeConverter(bool isNullable, bool checkType)
 {
     XmlQualifiedName type = checkType ? base.GetXsiType() : null;
     bool flag = false;
     if (isNullable)
     {
         flag = base.ReadNull();
     }
     if ((checkType && (type != null)) && ((type.Name != this.id87_ISOSpeedTypeConverter) || (type.Namespace != this.id2_Item)))
     {
         throw base.CreateUnknownTypeException(type);
     }
     if (flag)
     {
         return null;
     }
     ISOSpeedTypeConverter o = new ISOSpeedTypeConverter();
     while (base.Reader.MoveToNextAttribute())
     {
         if (!base.IsXmlnsAttribute(base.Reader.Name))
         {
             base.UnknownNode(o);
         }
     }
     base.Reader.MoveToElement();
     if (base.Reader.IsEmptyElement)
     {
         base.Reader.Skip();
         return o;
     }
     base.Reader.ReadStartElement();
     base.Reader.MoveToContent();
     int whileIterations = 0;
     int readerCount = base.ReaderCount;
     while ((base.Reader.NodeType != XmlNodeType.EndElement) && (base.Reader.NodeType != XmlNodeType.None))
     {
         if (base.Reader.NodeType == XmlNodeType.Element)
         {
             base.UnknownNode(o, "");
         }
         else
         {
             base.UnknownNode(o, "");
         }
         base.Reader.MoveToContent();
         base.CheckReaderCount(ref whileIterations, ref readerCount);
     }
     base.ReadEndElement();
     return o;
 }