/// <summary>
        /// Util function to Add Folders icons and information to list
        /// </summary>
        /// <param name="iconSize">The icon size, support multi size flags</param>
        public void AddFolder(IconReader.IconSize iconSize)
        {
            IconProperties iconPropOpen   = new IconProperties();
            IconProperties iconPropClosed = new IconProperties();

            if ((iconSize & IconReader.IconSize.Small) == IconReader.IconSize.Small)
            {
                Add(FolderOpen, IconReader.IconSize.Small, iconPropOpen, IconReader.FolderType.Open);
                Add(FolderClosed, IconReader.IconSize.Small, iconPropClosed, IconReader.FolderType.Closed);
            }
            if ((iconSize & IconReader.IconSize.Large) == IconReader.IconSize.Large)
            {
                Add(FolderOpen, IconReader.IconSize.Large, iconPropOpen, IconReader.FolderType.Open);
                Add(FolderClosed, IconReader.IconSize.Large, iconPropClosed, IconReader.FolderType.Closed);
            }
            if ((iconSize & IconReader.IconSize.ExtraLarge) == IconReader.IconSize.ExtraLarge)
            {
                Add(FolderOpen, IconReader.IconSize.ExtraLarge, iconPropOpen, IconReader.FolderType.Open);
                Add(FolderClosed, IconReader.IconSize.ExtraLarge, iconPropClosed, IconReader.FolderType.Closed);
            }
            if ((iconSize & IconReader.IconSize.Jumbo) == IconReader.IconSize.Jumbo)
            {
                Add(FolderOpen, IconReader.IconSize.Jumbo, iconPropOpen, IconReader.FolderType.Open);
                Add(FolderClosed, IconReader.IconSize.Jumbo, iconPropClosed, IconReader.FolderType.Closed);
            }
            IconList.Add(FolderOpen, iconPropOpen);
            IconList.Add(FolderClosed, iconPropClosed);
        }
Example #2
0
    // Computation of the absolute x and z coordinates for each node
    private void SecondWalk(GenericOperator nodeN, float x, float z, float l, float t)
    {
        IconProperties np  = nodeN.GetIcon().GetComponent <IconProperties>();
        Vector3        pos = new Vector3(x, 2, z);

        l = np.depth / (np.depth + 1);

        nodeN.GetIcon().transform.position = pos;
        float dd        = l * np.d;
        float p         = t + Mathf.PI;
        float freeSpace = (nodeN.Children.Count == 0 ? 0 : np.f / (nodeN.Children.Count + 1));
        float previous  = 0;

        foreach (var child in nodeN.Children)
        {
            IconProperties cp = child.GetIcon().GetComponent <IconProperties>();
            float          aa = np.c * cp.a;
            float          rr = np.d * Mathf.Tan(aa) / (1 - Mathf.Tan(aa));
            p += previous + aa + freeSpace;
            float xx = (l * rr + dd) * Mathf.Cos(p);
            float zz = (l * rr + dd) * Mathf.Sin(p);
            previous = aa;
            SecondWalk(child, x + xx, z + zz, l * np.c, p);
        }
    }
Example #3
0
 // Adjusting the radii of the halfsectors of the children
 private void AdjustChildren(IconProperties np, float s)
 {
     if (s > Mathf.PI)
     {
         np.c = Mathf.PI / s;
         np.f = 0;
     }
     else
     {
         np.c = 1;
         np.f = Mathf.PI - s;
     }
 }
        /// <summary>
        /// Internal add a icon to class
        /// FOLDERS ONLY!!!!!!
        /// </summary>
        /// <param name="path">Icon Path on filesystem, or extension</param>
        /// <param name="iconSize">Icon Size</param>
        /// <param name="iconProp">Icon Properties to assign to list</param>
        /// <param name="folder">Folder type (open or closed)</param>
        private void Add(string path, IconReader.IconSize iconSize, IconProperties iconProp, IconReader.FolderType folder)
        {
            iconProp.IconsIndex[iconSize] = -1;
            iconProp.IconsInfo[iconSize]  = new Shell32.SHFILEINFO();
            Shell32.SHFILEINFO shfi = new Shell32.SHFILEINFO();
            iconProp.Icons[iconSize] = IconReader.GetFolderIcon(iconSize, folder, ref shfi);

            iconProp.IconsInfo[iconSize] = shfi;
            if (IImageList[iconSize] != null)
            {
                iconProp.IconsIndex[iconSize] = IImageList[iconSize].Images.Count;
                IImageList[iconSize].Images.Add(path, iconProp.Icons[iconSize]);
            }
        }
Example #5
0
    /* Bottom up proceeding, computing value for distances
     * possibly computing scaling factor for children and
     * computing radius of circles
     */
    private void FirstWalk(GenericOperator node)
    {
        IconProperties np = node.GetIcon().GetComponent <IconProperties>();

        np.d = 0;
        float s = 0;

        foreach (var child in node.Children)
        {
            FirstWalk(child);
            IconProperties cp = child.GetIcon().GetComponent <IconProperties>();
            np.d = Mathf.Max(np.d, cp.r);
            cp.a = Mathf.Atan(cp.r / (np.d + cp.r));
            s   += cp.a;
        }
        AdjustChildren(np, s);
        SetRadius(np);
    }
        /// <summary>
        /// Add an extension to List
        /// </summary>
        /// <param name="path">The extension,
        /// such as ex: ".mp3" or full path "C:\\mymusic.mp3".</param>
        /// <param name="iconSize">The icon size, support multi size flags</param>
        /// <returns>Returns Icon and thier information.</returns>
        public IconProperties AddEx(string path, IconReader.IconSize iconSize)
        {
            IconProperties iconProp = IsValidEx(path);

            if ((iconSize & IconReader.IconSize.Small) == IconReader.IconSize.Small)
            {
                if (!iconProp.IsValidEx(IconReader.IconSize.Small))
                {
                    Add(path, IconReader.IconSize.Small, iconProp);
                }
            }
            if ((iconSize & IconReader.IconSize.Large) == IconReader.IconSize.Large)
            {
                if (!iconProp.IsValidEx(IconReader.IconSize.Large))
                {
                    Add(path, IconReader.IconSize.Large, iconProp);
                }
            }
            if ((iconSize & IconReader.IconSize.ExtraLarge) == IconReader.IconSize.ExtraLarge)
            {
                if (!iconProp.IsValidEx(IconReader.IconSize.ExtraLarge))
                {
                    Add(path, IconReader.IconSize.ExtraLarge, iconProp);
                }
            }
            if ((iconSize & IconReader.IconSize.Jumbo) == IconReader.IconSize.Jumbo)
            {
                if (!iconProp.IsValidEx(IconReader.IconSize.Jumbo))
                {
                    Add(path, IconReader.IconSize.Jumbo, iconProp);
                }
            }
            if (!IsValid(path))
            {
                IconList.Add(path, iconProp);
            }
            return(iconProp);
        }
Example #7
0
 //Setting the radius of a node
 private void SetRadius(IconProperties np)
 {
     np.r = Mathf.Max(np.d, _minRadius) + 2 * np.d;
 }
        /// <summary>
        /// Internal add a icon to class
        /// FOLDERS ONLY!!!!!!
        /// </summary>
        /// <param name="path">Icon Path on filesystem, or extension</param>
        /// <param name="iconSize">Icon Size</param>
        /// <param name="iconProp">Icon Properties to assign to list</param>
        /// <param name="folder">Folder type (open or closed)</param>
        private void Add(string path, IconReader.IconSize iconSize, IconProperties iconProp, IconReader.FolderType folder)
        {
            iconProp.IconsIndex[iconSize] = -1;
            iconProp.IconsInfo[iconSize] = new Shell32.SHFILEINFO();
            Shell32.SHFILEINFO shfi = new Shell32.SHFILEINFO();
            iconProp.Icons[iconSize] = IconReader.GetFolderIcon(iconSize, folder, ref shfi);

            iconProp.IconsInfo[iconSize] = shfi;
            if(IImageList[iconSize] != null)
            {
                iconProp.IconsIndex[iconSize] = IImageList[iconSize].Images.Count;
                IImageList[iconSize].Images.Add(path, iconProp.Icons[iconSize]);
            }
        }
 /// <summary>
 /// Util function to Add Folders icons and information to list
 /// </summary>
 /// <param name="iconSize">The icon size, support multi size flags</param>
 public void AddFolder(IconReader.IconSize iconSize)
 {
     IconProperties iconPropOpen = new IconProperties();
     IconProperties iconPropClosed = new IconProperties();
     if ((iconSize & IconReader.IconSize.Small) == IconReader.IconSize.Small)
     {
         Add(FolderOpen, IconReader.IconSize.Small, iconPropOpen, IconReader.FolderType.Open);
         Add(FolderClosed, IconReader.IconSize.Small, iconPropClosed, IconReader.FolderType.Closed);
     }
     if ((iconSize & IconReader.IconSize.Large) == IconReader.IconSize.Large)
     {
         Add(FolderOpen, IconReader.IconSize.Large, iconPropOpen, IconReader.FolderType.Open);
         Add(FolderClosed, IconReader.IconSize.Large, iconPropClosed, IconReader.FolderType.Closed);
     }
     if ((iconSize & IconReader.IconSize.ExtraLarge) == IconReader.IconSize.ExtraLarge)
     {
         Add(FolderOpen, IconReader.IconSize.ExtraLarge, iconPropOpen, IconReader.FolderType.Open);
         Add(FolderClosed, IconReader.IconSize.ExtraLarge, iconPropClosed, IconReader.FolderType.Closed);
     }
     if ((iconSize & IconReader.IconSize.Jumbo) == IconReader.IconSize.Jumbo)
     {
         Add(FolderOpen, IconReader.IconSize.Jumbo, iconPropOpen, IconReader.FolderType.Open);
         Add(FolderClosed, IconReader.IconSize.Jumbo, iconPropClosed, IconReader.FolderType.Closed);
     }
     IconList.Add(FolderOpen, iconPropOpen);
     IconList.Add(FolderClosed, iconPropClosed);
 }