Cursor
uses MyUnit;
type
CursorShape = record
ScreenMask : array [0..15] of word;
CursorMask : array [0..15] of word;
Xhot, Yhot : integer;
end;
const
CrossHair : CursorShape =
(ScreenMask : ($FC7F, $FC7F, $FC7F, $FC7F, $FC7F, $FC7F, $0101, $0381,
$0101, $FC7F, $FC7F, $FC7F, $FC7F, $FC7F, $FC7F, $FFFF);
CursorMask : ($0000, $0100, $0100, $0100, $0100, $0100, $0000, $7C7C,
$0000, $0100, $0100, $0100, $0100, $0100, $0000, $0000);
Xhot : 7;
Yhot : 7);
Check : CursorShape =
(ScreenMask : ($FFF0, $FFE0, $FFC0, $FF81, $FF03, $0607, $000F, $001F,
$C03F, $F07F, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF);
CursorMask : ($0000, $0006, $000C, $0018, $0030, $0060, $70C0, $1D80,
$0700, $0000, $0000, $0000, $0000, $0000, $0000, $0000);
Xhot : 6;
Yhot : 7);
Hand : CursorShape =
(ScreenMask : ($E1FF, $E1FF, $E1FF, $E1FF, $E1FF, $E000, $E000, $E000,
$0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000);
CursorMask : ($0C00, $1200, $1200, $1200, $1200, $13B6, $1249, $1249,
$7249, $9001, $9001, $9001, $8001, $8001, $8001, $FFFF);
Xhot : 5;
Yhot : 0);
Cross : CursorShape =
(ScreenMask : ($07E0, $0180, $0000, $C003, $F00F, $C003, $0000, $0180,
$07E0, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF, $FFFF);
CursorMask : ($0000, $700E, $1C38, $0660, $03C0, $0660, $1C38, $700E,
$0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000);
Xhot : 7;
Yhot : 4);
Standard : CursorShape =
(ScreenMask : ($3FFF, $1FFF, $0FFF, $07FF, $03FF, $01FF, $00FF, $007F,
$003F, $001F, $01FF, $10FF, $30FF, $F87F, $F87F, $FC3F);
CursorMask : ($0000, $4000, $6000, $7000, $7800, $7C00, $7E00, $7F00,
$7F80, $7FC0, $7C00, $4600, $0600, $0300, $0300, $0180);
Xhot : -1;
Yhot : -1);
HourGlass : CursorShape =
(ScreenMask : ($0000, $0000, $0000, $0000, $8001, $C003, $E007, $F00F,
$E007, $C003, $8001, $0000, $0000, $0000, $0000, $FFFF);
CursorMask : ($0000, $7FFE, $6006, $300C, $1818, $0C30, $0660, $03C0,
$0660, $0C30, $1998, $33CC, $67E6, $7FFE, $0000, $0000);
Xhot : 7;
Yhot : 7);
Mitko : CursorShape =
(ScreenMask : ($0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000,
$0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000);
CursorMask : ($0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000,
$0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000);
Xhot : 1;
Yhot : 1);
LowerRight : CursorShape =
(ScreenMask : ($FFF0, $FFF0, $FFF0, $FFF0, $FFF0, $FFF0, $FFF0, $FFF0,
$FFF0, $FFF0, $FFF0, $FFF0, $0000, $0000, $0000, $0000);
CursorMask : ($0000, $0006, $0006, $0006, $0006, $0006, $0006, $0006,
$0006, $0006, $0006, $0006, $0006, $7FFE, $7FFE, $0000);
Xhot : 14;
Yhot : 14);
TestCursor: CursorShape = (
ScreenMask: ($3FFF,$1FFF,$0FFF,$07FF,$03FF,$01FF,$00FF,$007F,
$003F,$001F,$000F,$07FF,$0248,$76DD,$F6ED,$F64D);
CursorMask: ($0000,$4000,$6000,$7000,$7800,$7C00,$7E00,$7F00,
$7F80,$7FC0,$7000,$4000,$1DB7,$0922,$0912,$09B2);
Xhot: 0;
Yhot: 0
);
Wait : CursorShape = (
ScreenMask: ($01FF,$01FF,$39FF,$01FF,$83FF,$83FF,$C7FF,$93FF,
$93FF,$29FF,$01FF,$01FF,$01FF,$FFFF,$FFFF,$FFFF);
CursorMask: ($0000,$7C00,$4400,$4400,$2800,$2800,$1000,$2800,
$2800,$4400,$4400,$7C00,$0000,$0000,$0000,$0000);
Xhot: 4;
Yhot: 4
);
Mark : CursorShape = (
ScreenMask: ($EFFF,$EFFF,$EFFF,$11FF,$EFFF,$EFFF,$EFFF,$FFFF,
$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF);
CursorMask: ($1000,$1000,$0000,$C600,$0000,$1000,$1000,$0000,
$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000);
Xhot: 4;
Yhot: 4
);
Big : CursorShape = (
ScreenMask: ($FFFF,$BFFF,$9FFF,$8FFF,$87FF,$83FF,$81FF,$80FF,
$807F,$803F,$81FF,$B9FF,$F9FF,$F8FF,$FCFF,$FFFF);
CursorMask: ($C000,$E000,$F000,$F800,$FC00,$FE00,$FF00,$FF80,
$FFC0,$FFE0,$FFF0,$FF00,$EF00,$8380,$0780,$0380);
Xhot: 0;
Yhot: 0
);
procedure SetMouse( Cursor : CursorShape ); assembler;
asm
LES DI, Cursor
MOV AX, 9
MOV BX, ES:[DI].CursorShape.Xhot
MOV CX, ES:[DI].CursorShape.Yhot
MOV DX, DI
INT 33H
end;
begin
InitGraph;
SetMouse(hand);
ShowMouse;
WaitKey;
CloseGraph;
end.