| 1 |
// SPDX-License-Identifier: MIT |
| 2 |
|
| 3 |
#include <string.h> |
| 4 |
#include "entity_ldef.h" |
| 5 |
#include "entity.h" |
| 6 |
#include "util.h" |
| 7 |
|
| 8 |
pascal void |
| 9 |
entity_ldef_proc(short message, Boolean selected, Rect *cellRect, |
| 10 |
Cell theCell, short dataOffset, short dataLen, |
| 11 |
ListHandle theList) |
| 12 |
{ |
| 13 |
FontInfo info; |
| 14 |
Handle cells = (**theList).cells; |
| 15 |
struct entity* ent; |
| 16 |
HLock(cells); |
| 17 |
|
| 18 |
GetFontInfo(&info); |
| 19 |
|
| 20 |
switch (message) |
| 21 |
{ |
| 22 |
case lInitMsg: |
| 23 |
break; |
| 24 |
case lCloseMsg: |
| 25 |
break; |
| 26 |
case lDrawMsg: |
| 27 |
if (dataLen > 0) |
| 28 |
{ |
| 29 |
if (dataLen != sizeof(Ptr)) die("invalid dataLen %d", dataLen); |
| 30 |
memcpy(&ent, (*cells) + dataOffset, dataLen); |
| 31 |
EraseRect(cellRect); |
| 32 |
MoveTo(cellRect->left + 2, cellRect->top + info.ascent); |
| 33 |
DrawText(ent->state.name, 0, strlen(ent->state.name)); |
| 34 |
} |
| 35 |
if (selected) |
| 36 |
{ |
| 37 |
InvertRect(cellRect); |
| 38 |
} |
| 39 |
break; |
| 40 |
case lHiliteMsg: |
| 41 |
InvertRect(cellRect); |
| 42 |
break; |
| 43 |
} |
| 44 |
|
| 45 |
HUnlock(cells); |
| 46 |
} |