Ejemplo n.º 1
0
        public static bool TryParseDimensions(string format, out PaletteFormat paletteFormat)
        {
            paletteFormat = default;
            var formatContent = format.Substring(4, format.Length - 5);
            var pageSplit     = formatContent.Split(':');

            if (!int.TryParse(pageSplit[0], out var bits))
            {
                return(false);
            }
            int pages = 1, pageStart = 0;

            if (pageSplit.Length == 2)
            {
                var lastPageID    = pageSplit[1].ToUpper().LastOrDefault();
                var lastPageIndex = ViewModels.ViewPort.AllHexCharacters.IndexOf(lastPageID);
                if (lastPageIndex > 0)
                {
                    pages = lastPageIndex + 1;
                }
                var firstPageID    = pageSplit[1].ToUpper().FirstOrDefault();
                var firstPageIndex = ViewModels.ViewPort.AllHexCharacters.IndexOf(firstPageID);
                if (firstPageIndex > 0)
                {
                    pageStart = firstPageIndex;
                }
                pages -= firstPageIndex;
            }

            paletteFormat = new PaletteFormat(bits, pages, pageStart);
            return(true);
        }
Ejemplo n.º 2
0
 public static bool TryParsePaletteFormat(string pointerFormat, out PaletteFormat paletteFormat)
 {
     paletteFormat = default;
     if (!pointerFormat.StartsWith("`lzp") || !pointerFormat.EndsWith("`"))
     {
         return(false);
     }
     return(TryParseDimensions(pointerFormat, out paletteFormat));
 }
Ejemplo n.º 3
0
 public LzPaletteRun(PaletteFormat paletteFormat, IDataModel data, int start, SortedSpan <int> sources = null)
     : base(data, start, allowLengthErrors: paletteFormat.AllowLengthErrors, sources)
 {
     PaletteFormat = paletteFormat;
     if ((int)Math.Pow(2, paletteFormat.Bits) * 2 > DecompressedLength)
     {
         InvalidateLength();
     }
     FormatString = $"`lzp{paletteFormat.Bits}`";
     if (paletteFormat.InitialBlankPages != 0)
     {
         FormatString = $"`lzp{paletteFormat.Bits}:";
         for (int i = 0; i < paletteFormat.Pages; i++)
         {
             FormatString += ViewModels.ViewPort.AllHexCharacters[paletteFormat.InitialBlankPages + i];
         }
         FormatString += "`";
     }
 }
Ejemplo n.º 4
0
        public PaletteRun(int start, PaletteFormat format, SortedSpan <int> sources = null) : base(start, sources)
        {
            PaletteFormat = format;
            bits          = format.Bits;
            Pages         = format.Pages;
            if (bits == 8)
            {
                Length = 512;
            }
            if (bits == 4)
            {
                Length = Pages * 32;
            }
            var pagesPart = string.Empty;

            if (Pages > 1 || format.InitialBlankPages > 0)
            {
                pagesPart = ":" + GetPalettePages(format);
            }
            FormatString = $"`ucp{bits}{pagesPart}`";
        }
Ejemplo n.º 5
0
 public IPaletteRun Duplicate(PaletteFormat newFormat) => new LzPaletteRun(newFormat, Model, Start, PointerSources);
Ejemplo n.º 6
0
 public IPaletteRun Duplicate(PaletteFormat newFormat) => new PaletteRun(Start, newFormat, PointerSources);
Ejemplo n.º 7
0
        public static string GetPalettePages(PaletteFormat format)
        {
            var pageIDs = Enumerable.Range(format.InitialBlankPages, format.Pages).Select(i => ViewModels.ViewPort.AllHexCharacters[i]);

            return(new string(pageIDs.ToArray()));
        }