Пример #1
0
        public IReadOnlyList <short> GetPalette(IDataModel model, int page)
        {
            var data       = Decompress(model, Start);
            var colorCount = (int)Math.Pow(2, PaletteFormat.Bits);
            var pageLength = colorCount * 2;

            page %= Pages;
            return(PaletteRun.GetPalette(data, page * pageLength, colorCount));
        }
Пример #2
0
        public IReadOnlyList <short> GetPalette(IDataModel model, int page)
        {
            var data       = Decompress(model, Start, AllowLengthErrors);
            var colorCount = (int)Math.Pow(2, PaletteFormat.Bits);
            var pageLength = colorCount * 2;

            page %= Pages;
            if (data == null)
            {
                return(TileViewModel.CreateDefaultPalette(pageLength));
            }
            return(PaletteRun.GetPalette(data, page * pageLength, colorCount));
        }
Пример #3
0
        public IPaletteRun SetPalette(IDataModel model, ModelDelta token, int page, IReadOnlyList <short> colors)
        {
            var data       = Decompress(model, Start);
            var colorCount = (int)Math.Pow(2, PaletteFormat.Bits);
            var pageLength = colorCount * 2;

            page %= Pages;
            PaletteRun.SetPalette(data, page * pageLength, colors);

            var newModelData = Compress(data, 0, data.Length);
            var newRun       = (IPaletteRun)model.RelocateForExpansion(token, this, newModelData.Count);

            for (int i = 0; i < newModelData.Count; i++)
            {
                token.ChangeData(model, newRun.Start + i, newModelData[i]);
            }
            for (int i = newModelData.Count; i < Length; i++)
            {
                token.ChangeData(model, newRun.Start + i, 0xFF);
            }
            newRun = new LzPaletteRun(PaletteFormat, model, newRun.Start, newRun.PointerSources);
            model.ObserveRunWritten(token, newRun);
            return(newRun);
        }