public void RepackImage(byte[] img, int l) { if (data[0] != (byte)'P' || data[1] != (byte)'K' || data[2] != (byte)l || data[3] != (byte)(l >> 8)) { l = PackDepack.Pack(img, l, data, 4); data[0] = (byte)'P'; data[1] = (byte)'K'; data[2] = (byte)l; data[3] = (byte)(l >> 8); Array.Resize(ref data, l); } }
private void DepactPK() { byte[] Palette = new byte[0x100]; // Valeurs par défaut cpcPlus = false; nbCol = 80; nbLig = 200; // //PKSL -> 320x200 STD //PKS3 -> 320x200 Mode 3 //PKSP -> 320x200 PLUS //PKVL -> Overscan STD //PKVP -> Overscan PLUS // cpcPlus = (bmpCpc[3] == 'P') || (bmpCpc[2] == 'O'); bool Overscan = (bmpCpc[2] == 'V') || (bmpCpc[3] == 'V'); bool Std = (bmpCpc[2] == 'S' && bmpCpc[3] == 'L'); if (Std) { for (int i = 0; i < 17; i++) { Palette[i] = bmpCpc[i + 4]; } } PackDepack.Depack(bmpCpc, Std ? 21 : 4, bufTmp); System.Array.Copy(bufTmp, bmpCpc, 0x10000); if (Overscan) { nbCol = maxColsCpc; nbLig = maxLignesCpc; SetPalette(bmpCpc, 0x600, cpcPlus); } else { if (Std) { SetPalette(Palette, 0, cpcPlus); } else { SetPalette(bmpCpc, 0x17D0, cpcPlus); } } }
public void GetImage(byte[] dest, int[] p) { int l = data.Length; if (data[0] == (byte)'P' && data[1] == (byte)'K' && data[2] == (byte)l && data[3] == (byte)(l >> 8)) { PackDepack.Depack(data, 4, dest); } else { Array.Copy(data, dest, data.Length); } pal.SendPalette(p); }