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(); }
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); }