📄 ldrawmo2.cpp
字号:
#include <ldraw.h>
#include <stdio.h>
#define CLOSED 0
#define OPEN 1
#define MAX_SIZE (640L*480+4)
static char defImg[264]={
16,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,15,15,15,0,0,0,0,0,0,0,0,0,0,
0,0,0,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,
15,15,0,0,0,0,0,0,0,0,0,0,0,15,15,15,15,15,15,0,0,0,
0,0,0,0,0,0,0,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,
0,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,15,15,15,15,15,
0,0,0,0,0,0,0,0,0,0,0,15,15,0,15,15,0,0,0,0,0,0,
0,0,0,0,0,15,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
short lmlen=16, lmwid=16;
long lmtimedelay=60000L;
static char *MouseImg=defImg,MouseVFlag=CLOSED,*SaveImg=NULL;
static short sx=-20,sy=-20,canwork=1,timeinit=0;
static void Save();
static void Rest();
static TGDC sdc;
short LMouseNoWork=0;
void lmGetSaveXY(short *x,short *y) { *x=sx; *y=sy; }
void lmInitTimer()
{ if (timeinit) return;
lt_install_timer();
lt_install_int_ex(lmDraw,lmtimedelay);
timeinit=1;
}
void lmCloseTimer()
{ lt_remove_int(lmDraw);
timeinit=0;
}
char lmIfTimer()
{ return timeinit;
}
void lmImage(char *img)
{ short len,wid,status=MouseVFlag;
if (status==OPEN) lmClose();
canwork=0;
if (img==NULL) img=defImg;
len=*(short*)img; img+=2; wid=*(short*)img; img-=2;
lmlen=len; lmwid=wid;
MouseImg=img;
canwork=1;
if (status==OPEN) lmOpen();
}
void lmOpen()
{ if (MouseVFlag==OPEN) return;
canwork=0;
MouseVFlag=OPEN;
if (DrawBuf==VideoBuf)
{ Save();
}
canwork=1;
}
void lmClose()
{ if (MouseVFlag==CLOSED) return;
canwork=0;
MouseVFlag=CLOSED;
if (DrawBuf==VideoBuf)
{ Rest(); sx=sy=-lmlen-lmwid;
}
canwork=1;
}
void lmDraw()
{ short x,y,b;
if (canwork==0) { LMouseNoWork++; return; }
x=mouse_x; y=mouse_y;
if (MouseVFlag==CLOSED) return;
if (DrawBuf!=VideoBuf) { lputImage(x,y,MouseImg); return; }
if (x==sx&&y==sy) return;
Rest(); sx=x; sy=y;
Save();
lSaveDC(&sdc); lActiveDC(NULL);
lputImage(x,y,MouseImg);
lActiveDC(&sdc);
}
static void Save()
{ canwork=0;
if (SaveImg==NULL) SaveImg=new char[MAX_SIZE];
lSaveDC(&sdc); lActiveDC(NULL);
lgetImage(sx,sy,sx+lmlen-1,sy+lmwid-1,SaveImg);
lActiveDC(&sdc);
canwork=1;
}
static void Rest()
{ canwork=0;
if (SaveImg==NULL) SaveImg=new char[MAX_SIZE];
lSaveDC(&sdc); lActiveDC(NULL);
lputBlock(sx,sy,SaveImg);
lActiveDC(&sdc);
canwork=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -