Ejemplo n.º 1
0
        /// <summary>
        /// Sets an allocation page to be displayed
        /// </summary>
        /// <param name="pageAddress">The page address.</param>
        /// <param name="databaseName">Name of the database.</param>
        /// <param name="connectionString">The connection string.</param>
        /// <param name="showHeader">if set to <c>true</c> [show header].</param>
        /// <returns></returns>
        public List <Marker> SetAllocationPage(PageAddress pageAddress, string databaseName, string connectionString, bool showHeader)
        {
            topPanel.Visible = showHeader;

            var allocationPage = new AllocationPage(connectionString, databaseName, pageAddress);

            allocationMap.Mode        = MapMode.Standard;
            allocationMap.ExtentCount = 63903;
            allocationMap.ExtentSize  = AllocationMap.Small;

            allocationMap.StartPage = allocationPage.StartPage;
            allocationMap.FileId    = allocationPage.StartPage.FileId;

            var layer = new AllocationLayer(allocationPage.PageAddress.ToString(),
                                            allocationPage,
                                            Color.Brown);

            layer.SingleSlotsOnly = false;

            allocationMap.MapLayers.Clear();
            allocationMap.MapLayers.Add(layer);

            allocationMap.Invalidate();

            if (showHeader)
            {
                SetIamInformation(allocationPage);
            }

            var markers = MarkerBuilder.BuildMarkers(allocationPage, string.Empty);

            return(markers);
        }
Ejemplo n.º 2
0
        private void DisplayCompressionInfoStructure(CompressionInformation.CompressionInfoStructure compressionInfoStructure)
        {
            var markers = new List <Marker>();

            switch (compressionInfoStructure)
            {
            case CompressionInformation.CompressionInfoStructure.Anchor:

                if (Page.CompressionInformation.AnchorRecord != null)
                {
                    markers = MarkerBuilder.BuildMarkers(Page.CompressionInformation.AnchorRecord);
                }

                break;

            case CompressionInformation.CompressionInfoStructure.Dictionary:

                if (Page.CompressionInformation.HasDictionary)
                {
                    markers = MarkerBuilder.BuildMarkers(Page.CompressionInformation.CompressionDictionary);
                }

                break;

            case CompressionInformation.CompressionInfoStructure.Header:

                markers = MarkerBuilder.BuildMarkers(Page?.CompressionInformation);
                break;
            }

            hexViewer.AddMarkers(markers);

            markerKeyTable.SetMarkers(markers);
        }
Ejemplo n.º 3
0
        protected override void MarkerBuilder_OnChanged(object sender, EventArgs e)
        {
            base.MarkerBuilder_OnChanged(sender, e);

            CurrentItemsPanel.Children.Add(renderingCanvas);
            renderingCanvas.Data     = data;
            renderingCanvas.Renderer = (MarkerRenderer)MarkerBuilder.CreateMarker(null);
        }
Ejemplo n.º 4
0
        public static GameObject GenerateBody(IPlanetConfig config)
        {
            Logger.Log("Begin generation sequence of [" + config.Name + "] ...", Logger.LogType.Log);

            var body = new GameObject(config.Name);

            body.SetActive(false);

            GeometryBuilder.Make(body, config.GroundSize);

            var outputTuple = BaseBuilder.Make(body, Locator.GetAstroObject(AstroObject.StringIDToAstroObjectName(config.PrimaryBody)), config);

            var owRigidbody = (OWRigidbody)outputTuple.Items[1];

            RFVolumeBuilder.Make(body, owRigidbody, config);

            if (config.HasMapMarker)
            {
                MarkerBuilder.Make(body, config);
            }

            var sector = MakeSector.Make(body, owRigidbody, config);

            if (config.HasClouds)
            {
                CloudsBuilder.Make(body, sector, config);
                SunOverrideBuilder.Make(body, sector, config);
            }

            AirBuilder.Make(body, config.TopCloudSize / 2, config.HasRain);

            if (config.HasWater)
            {
                WaterBuilder.Make(body, sector, config);
            }

            EffectsBuilder.Make(body, sector);
            VolumesBuilder.Make(body, config);
            AmbientLightBuilder.Make(body, sector, config);
            AtmosphereBuilder.Make(body, config);

            Logger.Log("Generation of [" + config.Name + "] completed.", Logger.LogType.Log);

            return(body);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Loads a record
        /// </summary>
        /// <param name="offset">The offset.</param>
        private void LoadRecord(ushort offset)
        {
            Record record = null;

            switch (Page.Header.PageType)
            {
            case PageType.Data:

                Structure tableStructure = new TableStructure(Page.Header.AllocationUnitId, Page.Database);

                if (Page.CompressionType == CompressionType.None)
                {
                    record = new DataRecord(Page, offset, tableStructure);
                }
                else
                {
                    record = new CompressedDataRecord(Page, offset, tableStructure);
                }

                allocationViewer.Visible = false;
                markerKeyTable.Visible   = true;
                break;

            case PageType.Index:

                Structure indexStructure = new IndexStructure(Page.Header.AllocationUnitId, Page.Database);

                record = new IndexRecord(Page, offset, indexStructure);

                allocationViewer.Visible = false;
                markerKeyTable.Visible   = true;
                break;

            case PageType.Iam:
            case PageType.Gam:
            case PageType.Sgam:
            case PageType.Bcm:
            case PageType.Dcm:

                allocationViewer.SetAllocationPage(Page.Header.PageAddress,
                                                   Page.Database.Name,
                                                   ConnectionString,
                                                   (Page.Header.PageType == PageType.Iam));

                markerKeyTable.Visible   = false;
                allocationViewer.Visible = true;
                break;

            case PageType.Pfs:

                allocationViewer.SetPfsPage(Page.Header.PageAddress,
                                            Page.Database.Name,
                                            ConnectionString);

                markerKeyTable.Visible   = false;
                allocationViewer.Visible = true;
                break;

            case PageType.Lob3:
            case PageType.Lob4:

                record = new BlobRecord(Page, offset);

                allocationViewer.Visible = false;
                markerKeyTable.Visible   = true;
                break;
            }

            if (record != null)
            {
                var markers = MarkerBuilder.BuildMarkers((Markable)record);

                hexViewer.AddMarkers(markers);

                markerKeyTable.SetMarkers(markers);

                hexViewer.ScrollToOffset(offset);

                offsetTableToolStripTextBox.Text = string.Format("{0:0000}", offset);
            }
        }