home *** CD-ROM | disk | FTP | other *** search
- /*
- * lemop.c - operate on objects (and update the display)
- *
- * copyright (c) by Alan W. Paeth, 1987. All rights reserved.
- */
-
- #include "lem.h"
-
- objectop(i, instatus, outstatus)
- {
- int col;
- if (i && (Ostat == instatus))
- {
- if ( instatus == SEL) anysel--;
- if (outstatus == SEL) anysel++;
- Ostat = outstatus;
- switch(Ostat)
- {
- case DEL: col = ERASECOL; break;
- case UNDEL: col = DRAWCOL; break;
- case SEL: col = SELECTCOL; break;
- }
- objdraw(i, col);
- if (Odel && (i == markobj)) markobj = 0;
- changes |= ( (instatus == DEL) || (outstatus == DEL) );
- if ( instatus == DEL)
- return(1);
- }
- return(0);
- }
-
- any(i, opcode)
- {
- if (Ogroup) all(opcode, Ogroup);
- else
- switch(opcode)
- {
- case SELECT: objectop(i, UNDEL, SEL); break;
- case DESELECT: objectop(i, SEL, UNDEL); break;
- case DELETE: objectop(i, SEL, DEL); break;
- case UNDELETE: objectop(i, DEL, SEL); break;
- }
- }
-
- all(opcode, group)
- {
- int i, saveg;
- forobjects
- {
- if (!group || Ogroup == group)
- {
- saveg = Ogroup;
- Ogroup = 0;
- any(i, opcode);
- Ogroup = saveg;
- }
- }
- }
-