public ElemUndo( Rectangle sArea, int[][] clr, int[][] lyr, Block[][] blk, String cmd ) { int i, j; name = cmd; area = new Rectangle( sArea.Location, sArea.Size ); origBlk = new Block[ LoadSave.W ][]; origClr = new int[ LoadSave.W ][]; origLyr = new int[ LoadSave.W ][]; for( i = 0; i < LoadSave.W; i++ ) { origBlk[ i ] = new Block[ LoadSave.H ]; origClr[ i ] = new int[ LoadSave.H ]; origLyr[ i ] = new int[ LoadSave.H ]; for( j = 0; j < LoadSave.H; j++ ) { origBlk[ i ][ j ] = blk[ i ][ j ]; origClr[ i ][ j ] = clr[ i ][ j ]; origLyr[ i ][ j ] = lyr[ i ][ j ]; } } }
public Rectangle undo( Rectangle sArea, int[][] clr, int[][] lyr, Block[][] blks ) { Block tmpB; int tmpC, tmpL, i, j; Rectangle tmpR = area; area = sArea; // switch for redo for( i = 0; i < LoadSave.W; i++ ) { for( j = 0; j < LoadSave.H; j++ ) { tmpB = blks[ i ][ j ]; tmpC = clr[ i ][ j ]; tmpL = lyr[ i ][ j ]; blks[ i ][ j ] = origBlk[ i ][ j ]; clr[ i ][ j ] = origClr[ i ][ j ]; lyr[ i ][ j ] = origLyr[ i ][ j ]; origBlk[ i ][ j ] = tmpB; // switch for redo origClr[ i ][ j ] = tmpC; origLyr[ i ][ j ] = tmpL; } } return tmpR; }
private void createCopy() { int i, j; if( resC == null || ( resC.Length != selC.Length || resC[ 0 ].Length != selC[ 0 ].Length )) { resB = new Block[ selectArea.Width ][]; resC = new int[ selectArea.Width ][]; GC.Collect(); for( i = 0; i < selectArea.Width; i++ ) { resB[ i ] = new Block[ selectArea.Height ]; resC[ i ] = new int[ selectArea.Height ]; for( j = 0; j < selectArea.Height; j++ ) { resC[ i ][ j ] = -65281; resB[ i ][ j ] = new Block(); } } } }
private void createSelectMover() { int i, j; selB = new Block[ selectArea.Width ][]; selC = new int[ selectArea.Width ][]; GC.Collect(); for( i = 0; i < selectArea.Width; i++ ) { selB[ i ] = new Block[ selectArea.Height ]; selC[ i ] = new int[ selectArea.Height ]; for( j = 0; j < selectArea.Height; j++ ) { selC[ i ][ j ] = -65281; selB[ i ][ j ] = new Block(); } } }