Esempio n. 1
0
        ///////////////////////////////////////

        private Image GetIconForResourceLang(ResourceLang lang)
        {
            ResourceData data = lang.Data;

            if (data is IconDirectoryResourceData)
            {
                IconDirectoryResourceData icoDir = data as IconDirectoryResourceData;
                IconImage bestMember             = icoDir.IconGroup.GetIconForSize(__images.ImageSize);

                if (bestMember == null)
                {
                    return(null);
                }

                IconCursorImageResourceData rd = (bestMember.ResourceData as IconCursorImageResourceData);
                return(rd.Image);
            }
            else if (data is CursorDirectoryResourceData)
            {
                CursorDirectoryResourceData curDir = data as CursorDirectoryResourceData;
                IconImage bestMember = curDir.IconGroup.GetIconForSize(__images.ImageSize);

                if (bestMember == null)
                {
                    return(null);
                }

                IconCursorImageResourceData rd = (bestMember.ResourceData as IconCursorImageResourceData);
                return(rd.Image);
            }
            else if (data is IconCursorImageResourceData)
            {
                IconCursorImageResourceData icoImg = data as IconCursorImageResourceData;
                return(icoImg.Image);
            }
            else if (data is ImageResourceData)
            {
                ImageResourceData imgData = data as ImageResourceData;
                Size s = __images.ImageSize;

                Image thumb = GetThumbnailImage(s, imgData.Image);

                return(thumb);
            }
            else
            {
                return(null);
            }
        }
Esempio n. 2
0
        /// <summary>Tests the ResourceData type as specified by the hint. If it works it returns a ResourceData. If it fails it returns null.</summary>
        private static ResourceData Heuristic(ResourceLang lang, ResourceHint hint, Byte[] rawData)
        {
            // try the hint's suggestion, if it doesn't fall-back on the tried 'n' true brute-force approach

            ResourceData rd;

            switch (hint)
            {
                #region Image

            case ResourceHint.Bitmap:

                if (BmpImageResourceData.TryCreate(lang, rawData, out rd))
                {
                    return(rd);
                }
                break;

            case ResourceHint.Gif:

                if (GifImageResourceData.TryCreate(lang, rawData, out rd))
                {
                    return(rd);
                }
                break;

            case ResourceHint.Jpeg:

                if (JpegImageResourceData.TryCreate(lang, rawData, out rd))
                {
                    return(rd);
                }
                break;

            case ResourceHint.Png:

                if (PngImageResourceData.TryCreate(lang, rawData, out rd))
                {
                    return(rd);
                }
                break;

                #endregion

                #region Directory

            case ResourceHint.CursorDirectory:

                if (CursorDirectoryResourceData.TryCreate(lang, rawData, out rd))
                {
                    return(rd);
                }

                break;

            case ResourceHint.IconDirectory:

                if (IconDirectoryResourceData.TryCreate(lang, rawData, out rd))
                {
                    return(rd);
                }

                break;

                #endregion

            // experiment:

            case ResourceHint.IconImage:

                if (IconImageResourceData.TryCreate(lang, rawData, out rd))
                {
                    return(rd);
                }
                break;

/*					case Win32ResourceType.CursorImage:
 *                              case Win32ResourceType.IconImage:
 *
 *                                      retval = new IconCursorImageResourceData(lang, rawData);
 *                                      break;
 *
 * //					case Win32ResourceType.CursorAnimated: // I have zero documentation on these 'animated' types
 * //					case Win32ResourceType.IconAnimated:
 *                              case Win32ResourceType.CursorDirectory:
 *                              case Win32ResourceType.IconDirectory:
 *
 *                                      retval = new IconCursorDirectoryResourceData(lang, rawData);
 *                                      break;
 *
 *                              case Win32ResourceType.Manifest:
 *
 *                                      retval = new XmlHtmlResourceData(lang, rawData);
 *                                      break;
 *
 *                              case Win32ResourceType.Version:
 *
 *                                      retval = new VersionResourceData(lang, rawData);
 *                                      break;
 */
            }

            return(null);
        }