void displayscreen(int updating) /* Displays the current screen of the spreadsheet */ { int row; for (row = toprow; row <= bottomrow; row++) displayrow(row, updating); clearlastcol(); } /* displayscreen */
void moverowup(void) /* Moves up 1 row */ { displaycell(curcol, currow, NOHIGHLIGHT, NOUPDATE); if (currow > toprow) currow--; else if (toprow != 0) { scroll(DOWN, 1, LEFTMARGIN + 1, 3, 80, SCREENROWS + 2, WHITE); displayrow(--toprow, NOUPDATE); currow--; setbottomrow(); } } /* moverowup */
void moverowdown(void) /* Moves down one row */ { displaycell(curcol, currow, NOHIGHLIGHT, NOUPDATE); if (currow < bottomrow) currow++; else if (bottomrow < (MAXROWS - 1)) { scroll(UP, 1, LEFTMARGIN + 1, 3, 80, SCREENROWS + 2, WHITE); toprow++; currow++; setbottomrow(); displayrow(bottomrow, NOUPDATE); } } /* moverowdown */
void insertrow(int row) /* Inserts a row */ { int counter, rowc; if (lastrow == MAXROWS - 1) { for (counter = 0; counter <= lastcol; counter++) deletecell(counter, lastrow, NOUPDATE); printfreemem(); } if (row != MAXROWS - 1) { for (counter = 0; counter < MAXCOLS; counter++) { movmem(&cell[counter][row], &cell[counter][row + 1], sizeof(CELLPTR) * (MAXROWS - row - 1)); movmem(&format[counter][row], &format[counter][row + 1], MAXROWS - row - 1); } } for (counter = 0; counter < MAXCOLS; counter++) { cell[counter][row] = NULL; format[counter][row] = DEFAULTFORMAT; } lastrow = MAXROWS - 1; setlastrow(); for (counter = 0; counter <= lastcol; counter++) { for (rowc = 0; rowc <= lastrow; rowc++) { if ((cell[counter][rowc] != NULL) && (cell[counter][rowc]->attrib == FORMULA)) fixformula(counter, rowc, ROWADD, row); } } while (row <= bottomrow) displayrow(row++, NOUPDATE); changed = TRUE; recalc(); } /* insertrow */
void deleterow(int row) /* Deletes a row */ { int counter, rowc; for (counter = 0; counter <= lastcol; counter++) deletecell(counter, row, NOUPDATE); printfreemem(); if (row != MAXROWS - 1) { for (counter = 0; counter < MAXCOLS; counter++) { movmem(&cell[counter][row + 1], &cell[counter][row], sizeof(CELLPTR) * (MAXROWS - row - 1)); movmem(&format[counter][row + 1], &format[counter][row], MAXROWS - row - 1); } } else { for (counter = 0; counter <= lastcol; counter++) { cell[counter][MAXROWS - 1] = NULL; format[counter][MAXROWS - 1] = DEFAULTFORMAT; } } if ((lastrow >= row) && (lastrow > 0)) lastrow--; for (counter = 0; counter <= lastcol; counter++) { for (rowc = 0; rowc <= lastrow; rowc++) { if ((cell[counter][rowc] != NULL) && (cell[counter][rowc]->attrib == FORMULA)) fixformula(counter, rowc, ROWDEL, row); } } while (row <= bottomrow) displayrow(row++, NOUPDATE); changed = TRUE; recalc(); } /* deleterow */