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