示例#1
0
        public Bitmap PfsBitmap(PfsByte pfsByte)
        {
            var pfsBitmap = new Bitmap(36, 36);

            pfsBitmap.SetResolution(100, 100);
            var g = Graphics.FromImage(pfsBitmap);

            DrawPfsPage(g, pageRectangle, pfsByte);

            return(pfsBitmap);
        }
        public static PfsByte Parse(byte data)
        {
            var pfsByte = new PfsByte();

            var bitArray = new BitArray(new[] { data });

            pfsByte.GhostRecords = bitArray[3];
            pfsByte.Iam          = bitArray[4];
            pfsByte.Mixed        = bitArray[5];
            pfsByte.Allocated    = bitArray[6];

            pfsByte.PageSpaceFree = (SpaceFree)(data & 7);

            return(pfsByte);
        }
        /// <summary>
        /// Refreshes the allocation status from the various allocation pages
        /// </summary>
        /// <param name="pageAddress">The page address.</param>
        private void RefreshAllocationStatus(PageAddress pageAddress)
        {
            Image unallocated   = ExtentColour.KeyImage(Color.Gainsboro);
            Image gamAllocated  = ExtentColour.KeyImage(Color.FromArgb(172, 186, 214));
            Image sGamAllocated = ExtentColour.KeyImage(Color.FromArgb(168, 204, 162));
            Image dcmAllocated  = ExtentColour.KeyImage(Color.FromArgb(120, 150, 150));
            Image bcmAllocated  = ExtentColour.KeyImage(Color.FromArgb(150, 120, 150));

            gamPictureBox.Image  = Page.AllocationStatus(PageType.Gam) ? unallocated : gamAllocated;
            sGamPictureBox.Image = Page.AllocationStatus(PageType.Sgam) ? sGamAllocated : unallocated;
            dcmPictureBox.Image  = Page.AllocationStatus(PageType.Dcm) ? dcmAllocated : unallocated;
            bcmPictureBox.Image  = Page.AllocationStatus(PageType.Bcm) ? bcmAllocated : unallocated;

            gamTextBox.Text  = Allocation.AllocationPageAddress(pageAddress, PageType.Gam).ToString();
            sgamTextBox.Text = Allocation.AllocationPageAddress(pageAddress, PageType.Sgam).ToString();
            dcmTextBox.Text  = Allocation.AllocationPageAddress(pageAddress, PageType.Dcm).ToString();
            bcmTextBox.Text  = Allocation.AllocationPageAddress(pageAddress, PageType.Bcm).ToString();
            pfsTextBox.Text  = Allocation.AllocationPageAddress(pageAddress, PageType.Pfs).ToString();

            pfsByte = Page.PfsStatus();

            pfsPanel.Invalidate();
        }
示例#4
0
        public void DrawPfsPage(Graphics g, Rectangle rect, PfsByte pfsByte)
        {
            var spaceFree      = string.Empty;
            var spaceUsedWidth = 0;

            var indLen = (rect.Height / 3);

            var pfsRect   = new Rectangle(rect.X, rect.Y, rect.Width, indLen);
            var iamRect   = new Rectangle(rect.X + 1, rect.Y + pfsRect.Height, indLen, indLen);
            var mixedRect = new Rectangle(rect.X + 1 + iamRect.Width, rect.Y + pfsRect.Height, indLen, indLen);
            var ghostRect = new Rectangle(rect.X + 1 + iamRect.Width * 2, rect.Y + pfsRect.Height, indLen, indLen);
            var spaceRect = new Rectangle(rect.X, mixedRect.Y + mixedRect.Height + 1, rect.Width, indLen + 1);

            if (pfsByte.Allocated)
            {
                g.FillRectangle(pfsAllocatedBrush, pfsRect);
            }
            if (pfsByte.Iam)
            {
                g.FillRectangle(pfsIamBrush, iamRect);
            }

            if (pfsByte.Mixed)
            {
                g.FillRectangle(pfsMixedBrush, mixedRect);
            }

            if (pfsByte.GhostRecords)
            {
                g.FillRectangle(pfsGhostBrush, ghostRect);
            }

            switch (pfsByte.PageSpaceFree)
            {
            case SpaceFree.Empty:

                spaceFree      = "0%";
                spaceUsedWidth = 0;
                break;

            case SpaceFree.FiftyPercent:

                spaceFree      = "50%";
                spaceUsedWidth = (int)(rect.Width * 0.5);
                break;

            case SpaceFree.EightyPercent:

                spaceFree      = "80%";
                spaceUsedWidth = (int)(rect.Width * 0.8);
                break;

            case SpaceFree.NinetyFivePercent:

                spaceFree      = "95%";
                spaceUsedWidth = (int)(rect.Width * 0.95);
                break;

            case SpaceFree.OneHundredPercent:

                spaceFree      = "100%";
                spaceUsedWidth = rect.Width;
                break;
            }

            g.FillRectangle(pfsSpaceBrush, new Rectangle(spaceRect.X, spaceRect.Y, spaceUsedWidth, spaceRect.Height));

            if (displayAllocationText)
            {
                TextRenderer.DrawText(g,
                                      spaceFree,
                                      pfsFont,
                                      spaceRect,
                                      Color.Black,
                                      TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter);
            }

            g.DrawRectangle(borderPen, iamRect);
            g.DrawRectangle(borderPen, mixedRect);
            g.DrawRectangle(borderPen, ghostRect);
            g.DrawRectangle(pageBorderPen, rect);
        }