/// <summary>
    /// Enumerates available D3D adapters, devices, modes, etc.
    /// </summary>
    public void Enumerate()
    {
        foreach (AdapterInformation ai in Manager.Adapters)
        {
            ArrayList           adapterFormatList = new ArrayList();
            GraphicsAdapterInfo adapterInfo       = new GraphicsAdapterInfo();
            adapterInfo.AdapterOrdinal = ai.Adapter;
            adapterInfo.AdapterDetails = ai.Information;

            // Get list of all display modes on this adapter.
            // Also build a temporary list of all display adapter formats.
            foreach (DisplayMode displayMode in ai.SupportedDisplayModes)
            {
                if (displayMode.Width < AppMinFullscreenWidth)
                {
                    continue;
                }
                if (displayMode.Height < AppMinFullscreenHeight)
                {
                    continue;
                }
                if (GraphicsUtility.GetColorChannelBits(displayMode.Format) < AppMinColorChannelBits)
                {
                    continue;
                }
                adapterInfo.DisplayModeList.Add(displayMode);
                if (!adapterFormatList.Contains(displayMode.Format))
                {
                    adapterFormatList.Add(displayMode.Format);
                }
            }

            // Sort displaymode list
            DisplayModeComparer dmc = new DisplayModeComparer();
            adapterInfo.DisplayModeList.Sort(dmc);

            // Get info for each device on this adapter
            EnumerateDevices(adapterInfo, adapterFormatList);

            // If at least one device on this adapter is available and compatible
            // with the app, add the adapterInfo to the list
            if (adapterInfo.DeviceInfoList.Count == 0)
            {
                continue;
            }
            AdapterInfoList.Add(adapterInfo);
        }
    }
        private static IEnumerable <string> ContentStyles(IPortalViewContext portalViewContext, SiteMapNode node, IDictionary <string, object> cache, IEnumerable <string> except, IEnumerable <KeyValuePair <string, string> > only)
        {
            var styles = ContentStyles(portalViewContext, node, cache).ToArray();

            string[] allDisplayModes;
            string[] availableDisplayModes;

            if (TryGetDisplayModes(out allDisplayModes, out availableDisplayModes))
            {
                var partialUrlTrie      = new FileNameTrie(styles);
                var displayModeComparer = new DisplayModeComparer(availableDisplayModes);

                var groups = GetDisplayModeFileGroups(partialUrlTrie, allDisplayModes);

                if (only != null)
                {
                    return(only.Select(o =>
                    {
                        var extensionless = Path.GetFileNameWithoutExtension(o.Key);

                        var matchGroup = groups.FirstOrDefault(s => string.Equals(s.Prefix, extensionless, StringComparison.OrdinalIgnoreCase));

                        if (matchGroup == null)
                        {
                            return o.Value;
                        }

                        var file = matchGroup.Where(f => availableDisplayModes.Contains(f.DisplayModeId))
                                   .OrderBy(f => f, displayModeComparer)
                                   .FirstOrDefault();

                        return file == null ? o.Value : file.Name.Item1;
                    }));
                }

                if (except != null)
                {
                    return(groups
                           .Where(group => !except.Any(e => string.Equals(Path.GetFileNameWithoutExtension(e), group.Prefix, StringComparison.OrdinalIgnoreCase)))
                           .Select(group => group.Where(f => availableDisplayModes.Contains(f.DisplayModeId))
                                   .OrderBy(f => f, displayModeComparer)
                                   .FirstOrDefault())
                           .Where(f => f != null)
                           .Select(f => f.Name.Item1));
                }

                return(groups
                       .Select(group => group.Where(f => availableDisplayModes.Contains(f.DisplayModeId))
                               .OrderBy(f => f, displayModeComparer)
                               .FirstOrDefault())
                       .Where(f => f != null)
                       .Select(f => f.Name.Item1));
            }

            if (only != null)
            {
                return(only.Select(o =>
                {
                    var match = styles.FirstOrDefault(s => string.Equals(s.Item2, o.Key, StringComparison.InvariantCultureIgnoreCase));

                    return match == null ? o.Value : match.Item1;
                }));
            }

            if (except != null)
            {
                return(styles
                       .Where(s => !except.Any(e => string.Equals(e, s.Item2, StringComparison.InvariantCultureIgnoreCase)))
                       .Select(s => s.Item1));
            }

            return(styles.Select(s => s.Item1));
        }
    /// <summary>
    /// Enumerates available D3D adapters, devices, modes, etc.
    /// </summary>
    public void Enumerate()
    {
        foreach (AdapterInformation ai in Manager.Adapters) {
            ArrayList adapterFormatList = new ArrayList();
            GraphicsAdapterInfo adapterInfo = new GraphicsAdapterInfo();
            adapterInfo.AdapterOrdinal = ai.Adapter;
            adapterInfo.AdapterDetails = ai.Information;

            // Get list of all display modes on this adapter.
            // Also build a temporary list of all display adapter formats.
            foreach (DisplayMode displayMode in ai.SupportedDisplayModes) {
                if (displayMode.Width < AppMinFullscreenWidth)
                    continue;
                if (displayMode.Height < AppMinFullscreenHeight)
                    continue;
                if (GraphicsUtility.GetColorChannelBits(displayMode.Format) < AppMinColorChannelBits)
                    continue;
                adapterInfo.DisplayModeList.Add(displayMode);
                if (!adapterFormatList.Contains(displayMode.Format))
                    adapterFormatList.Add(displayMode.Format);
            }

            // Sort displaymode list
            DisplayModeComparer dmc = new DisplayModeComparer();
            adapterInfo.DisplayModeList.Sort(dmc);

            // Get info for each device on this adapter
            EnumerateDevices(adapterInfo, adapterFormatList);

            // If at least one device on this adapter is available and compatible
            // with the app, add the adapterInfo to the list
            if (adapterInfo.DeviceInfoList.Count == 0)
                continue;
            AdapterInfoList.Add(adapterInfo);
        }
    }