public void CalcPaletteSplit() { int[] curPal = new int[16]; for (int i = 0; i < 16; i++) { curPal[i] = Palette[0, 0, i]; } // Raz splits for (int y = 0; y < 272; y++) { for (int x = 0; x < 96; x++) { for (int i = 0; i < 16; i++) { Palette[x, y, i] = curPal[i]; } } } int numCol = 0; for (int y = 0; y < 272; y++) { LigneSplit lSpl = splitEcran.LignesSplit[y]; numCol = lSpl.numPen; int xpos = lSpl.retard >> 2; // de x à xpos => faire palette = curPal int x = AppliquePalette(0, y, xpos, curPal); for (int ns = 0; ns < 6; ns++) { Split s = lSpl.GetSplit(ns); if (s.enable) { xpos += s.longueur >> 2; curPal[numCol] = s.couleur; if (xpos > 96) { xpos = 96; } // de x à xpos => faire palette = curPal x = AppliquePalette(x, y, xpos, curPal); } else { break; } } // Terminer ligne AppliquePalette(x, y, 96, curPal); if (y < 271 && lSpl.changeMode) { tabMode[y + 1] = lSpl.newMode; } } }
public void Render() { if (doRender) { bitmapCpc.CalcPaletteSplit(); bitmapCpc.Render(bmpLock, offsetX, offsetY, false); DrawZoomPicture(); if (chkChgt.Checked) { LigneSplit lSpl = bitmapCpc.splitEcran.GetLigne((int)numLigne.Value); Graphics g = Graphics.FromImage(pictureBox.Image); numCol = lSpl.numPen; int xpos = lSpl.retard >> 2; int x = xpos; XorDrawing.DrawXorLine(g, (Bitmap)pictureBox.Image, x << 3, 0, x << 3, pictureBox.Image.Height); for (int ns = 0; ns < 6; ns++) { Split s = lSpl.GetSplit(ns); if (s.enable) { xpos += s.longueur >> 2; if (xpos > 96) { xpos = 96; } // de x à xpos => faire palette = curPal x = xpos; XorDrawing.DrawXorLine(g, (Bitmap)pictureBox.Image, x << 3, 0, x << 3, pictureBox.Image.Height); } else { break; } } } pictureBox.Refresh(); } }
private void DisplayLigne(bool forceRender) { doRender = false; curLigneSplit = bitmapCpc.splitEcran.GetLigne((int)numLigne.Value); numPen.Value = curLigneSplit.numPen; lblColor0.Visible = largSplit0.Visible = chkSplit0.Checked = curLigneSplit.GetSplit(0).enable; largSplit0.Value = curLigneSplit.GetSplit(0).longueur; lblColor0.BackColor = System.Drawing.Color.FromArgb(BitmapCpc.RgbCPC[curLigneSplit.GetSplit(0).couleur].GetColorArgb); lblColor1.Visible = largSplit1.Visible = chkSplit1.Checked = curLigneSplit.GetSplit(1).enable; largSplit1.Value = curLigneSplit.GetSplit(1).longueur; lblColor1.BackColor = System.Drawing.Color.FromArgb(BitmapCpc.RgbCPC[curLigneSplit.GetSplit(1).couleur].GetColorArgb); lblColor2.Visible = largSplit2.Visible = chkSplit2.Checked = curLigneSplit.GetSplit(2).enable; largSplit2.Value = curLigneSplit.GetSplit(2).longueur; lblColor2.BackColor = System.Drawing.Color.FromArgb(BitmapCpc.RgbCPC[curLigneSplit.GetSplit(2).couleur].GetColorArgb); lblColor3.Visible = largSplit3.Visible = chkSplit3.Checked = curLigneSplit.GetSplit(3).enable; largSplit3.Value = curLigneSplit.GetSplit(3).longueur; lblColor3.BackColor = System.Drawing.Color.FromArgb(BitmapCpc.RgbCPC[curLigneSplit.GetSplit(3).couleur].GetColorArgb); lblColor4.Visible = largSplit4.Visible = chkSplit4.Checked = curLigneSplit.GetSplit(4).enable; largSplit4.Value = curLigneSplit.GetSplit(4).longueur; lblColor4.BackColor = System.Drawing.Color.FromArgb(BitmapCpc.RgbCPC[curLigneSplit.GetSplit(4).couleur].GetColorArgb); lblColor5.Visible = largSplit5.Visible = chkSplit5.Checked = curLigneSplit.GetSplit(5).enable; largSplit5.Value = curLigneSplit.GetSplit(5).longueur; lblColor5.BackColor = System.Drawing.Color.FromArgb(BitmapCpc.RgbCPC[curLigneSplit.GetSplit(5).couleur].GetColorArgb); doRender = true; if (chkAutoApplique.Checked || forceRender) { UpdatePalette(); Render(); } }
private void ChangeLargeur(int index, NumericUpDown val) { curLigneSplit.GetSplit(index).longueur = ((int)val.Value) & 0xFFC; DisplayLigne(false); }