📄 ccbp_lib.h
字号:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <graphics.h>
#include <conio.h>
#include <dos.h>
#include <math.h>
void outhzxy3(int x,int y,char *p,int size,int direction,int color)
{ int oldcolor;
oldcolor=getcolor();
setcolor(color);
setfillstyle(SOLID_FILL,color);
while(*p){
if(((unsigned char)*p>=0xa1&&(unsigned char)*p<=0xfe)&&
((unsigned char)*(p+1)>=0xa1&&(unsigned char)*(p+1)<=0xfe))
{
disp_hz3(x,y,*p,*(p+1),size,direction,color);
p+=2;
if(direction==HORIZ_DIR)
x+=size*16+2;
if(direction==VERT_DIR)
y-=size*16+2;
moveto(x,y);
}
else{
char q[2];
moveto(x,y);
*q=*p;*(q+1)='\0';
outtextxy(x,y+4,q);
x+=8;p++;
}
}
setcolor(oldcolor);
}
int disp_hz3(int left,int top,unsigned char byte1,
unsigned char byte2,int size,int direction,int color)
{
FILE * cclibfile;
unsigned char buf[32];
long p;
int i,j,x,y,radiumX,radiumY;
unsigned char mark;
cclibfile=fopen("CCLIB.DAT","rb");
if(cclibfile==NULL) {
outtextxy(10,10,"Not find CCLIB.DOT!Press any key to exit...");
getch();
exit(1);
}
if((byte1>=0xa1&&byte1<=0xfe)&&(byte2>=0xa1&&
byte2<=0xfe)){
p=(byte1-0xa1)*0x5e+byte2-0xa1;
p*=32;
fseek(cclibfile,(long)p,SEEK_SET);
fread(buf,sizeof(unsigned char),32,cclibfile);
fclose(cclibfile);
if((left+size*16-1)>getmaxx()||(top+size*16-1)>getmaxy())
return 0;
if(size==1){
if(direction==HORIZ_DIR){
for(i=0,y=top;i<31;i+=2,y++)
for(mark=0x80,j=0;mark>0;mark=mark>>1,j++){
if((buf[i]&mark)!=0)
putpixel(left+j,y,color);
if((buf[i+1]&mark)!=0)
putpixel(left+j+8,y,color);
}
}
if(direction==VERT_DIR){
for(i=0,x=left;i<31;i+=2,x++)
for(mark=0x80,j=0;mark>0;mark=mark>>1,j++){
if((buf[i]&mark)!=0)
putpixel(x,top-j,color);
if((buf[i+1]&mark)!=0)
putpixel(x,top-j-8,color);
}
}
return 1;
}
if(size==2){
radiumX=size/2+1;
radiumY=size/2;
}
else{
radiumX=size/2+1;
radiumY=size/2+1;
}
if(direction==VERT_DIR){
for(i=0,x=left;i<31;i+=2,x+=size)
for(mark=0x80,j=0;mark>0;mark=mark>>1,j++){
if((buf[i]&mark)!=0)
bar(x+size/2,top-j*size-size/2,
x+size/2+radiumX,top-j*size-size/2+radiumY);
if((buf[i+1]&mark)!=0)
bar(x+size/2,top-(j+8)*size-size/2,
x+size/2+radiumX,top-(j+8)*size-size/2+radiumY);
}
return 1;
}
if(direction==HORIZ_DIR){
for(i=0,y=top;i<31;i+=2,y+=size)
for(mark=0x80,j=0;mark>0;mark=mark>>1,j++){
if((buf[i]&mark)!=0)
bar(left+j*size+size/2,y+size/2,
left+j*size+size/2+radiumX,y+size/2+radiumY);
if((buf[i+1]&mark)!=0)
bar(left+(j+8)*size+size/2,y+size/2,
left+(j+8)*size+size/2+radiumX,y+size/2+radiumY);
}
return 1;
}
}
fclose(cclibfile);
return 0;
}
int outhzxy1(int x,int y,char *p,int color)
{
int oldcolor;
oldcolor=getcolor();
setcolor(color);
while(*p)
{
if(((unsigned char)*p>=0xa1&&(unsigned char)*p<=0xfe)&&
((unsigned char)*(p+1)>=0xa1&&(unsigned char)*(p+1)<=0xfe))
{
if((x+16-1)>getmaxx()||(y+16-1)>getmaxy())
return 0;
disp_hz1(x,y,*p,*(p+1),color);
p+=2;
x+=16+2;
moveto(x,y);
}
else{
char q[2];
moveto(x,y);
*q=*p;*(q+1)='\0';
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
outtextxy(x,y+4,q);
x+=8+1;p++;
}
}
setcolor(oldcolor);
return 1;
}
int disp_hz1(int left,int top,unsigned char byte1,
unsigned char byte2,int color)
{
FILE *cclibfile;
unsigned char buf[32];
unsigned char mark;
long p;
int x,y,i,j;
int quma,weima;
cclibfile=fopen("CCLIB.DAT","rb");
if(cclibfile==NULL)
{
outtextxy(10,10,"Can't open CCLIB.DAT file! Press any key to halt ...");
exit(1);
}
if((byte1>=0xa1&&byte1<=0xfe)&&(byte2>=0xa1&&byte2<=0xfe))
{
quma=byte1-0xa0;
weima=byte2-0xa0;
p=(quma-1)*94+weima-1;
p*=32;
fseek(cclibfile,(long)p,SEEK_SET);
fread(buf,sizeof(unsigned char),32,cclibfile);
fclose(cclibfile);
for(i=0,y=top;i<31;i+=2,y++)
for(mark=0x80,j=0;mark>0;mark=mark>>1,j++)
{
if((buf[i]&mark)!=0)
putpixel(left+j,y,color);
if((buf[i+1]&mark)!=0)
putpixel(left+j+8,y,color);
}
}
fclose(cclibfile);
return 1;
}
void coordc(int x,int y,double l,double a,double u,int c)
{
int i;
double p,q,x1,y1,x2,x3,y3,y2,b,L;
a=(a-0.01)*3.1415926548/180.0;
b=0.197395559;
L=10.19803903;
x1=x+l*cos(a);
y1=y-l*sin(a);
x2=x1-L*cos(b-a);
y2=y1-L*sin(b-a);
x3=x1-L*cos(b+a);
y3=y1+L*sin(b+a);
setcolor(c);
line(x,y,(int)x1,(int)y1);
if(l<11.0)return;
moveto((int)x1,(int)y1);
lineto((int)x2,(int)y2);
lineto((int)x3,(int)y3);
lineto((int)x1,(int)y1);
for(i=0;i<l/u-1;i++)
{
p=x+u*cos(a);
q=y-u*sin(a);
moveto(p,q);
lineto(p-1*sin(a),q-1*cos(a));
x=p;y=q;
}
}
void coord(int x,int y,double l,double a,double u)
{
int i;
double p,q,x1,y1,x2,x3,y3,y2,b,L;
a=(a-0.01)*3.1415926548/180.0;
b=0.197395559;
L=10.19803903;
x1=x+l*cos(a);
y1=y-l*sin(a);
x2=x1-L*cos(b-a);
y2=y1-L*sin(b-a);
x3=x1-L*cos(b+a);
y3=y1+L*sin(b+a);
setcolor(15);
line(x,y,(int)x1,(int)y1);
if(l<11.0)return;
moveto((int)x1,(int)y1);
lineto((int)x2,(int)y2);
lineto((int)x3,(int)y3);
lineto((int)x1,(int)y1);
for(i=0;i<l/u-1;i++)
{
p=x+u*cos(a);
q=y-u*sin(a);
moveto(p,q);
lineto(p-1*sin(a),q-1*cos(a));
x=p;y=q;
}
}
void coil1(int x0,int y0,int l,int h,int n,int r,int p,int m)
{
int i;
setcolor(n);
setfillstyle(1,m);
bar(x0,y0,x0+l,y0+h);
for(i=0;i<p;i++)
{
arc(x0+l,y0+3*r+6*r*i,-90,90,r);
line(x0+l,y0+4*r+6*r*i,x0,y0+7*r+6*r*i);
arc(x0,y0+8*r+6*r*i,90,270,r);
line(x0,y0+2*r,x0-50,y0+2*r);
}
arc(x0+l,y0+3*r+6*r*i,-90,90,r);
line(x0+l,y0+4*r+6*r*i,x0,y0+7*r+6*r*i);
line(x0,y0+7*r+6*r*i,x0-50,y0+7*r+6*r*i);
arc(x0-50,y0+7*r+6*r*i,0,360,3);
arc(x0-50,y0+2*r,0,360,3);
}
void coil2(int x0,int y0,int l,int h,int n,int r,int p,int m)
{
int i;
setcolor(m);
setfillstyle(1,n);
bar(x0,y0,x0+h,y0+l);
for(i=0;i<p;i++)
{
arc(x0+2*r+6*r*i,y0,0,180,r);
line(x0+3*r+6*r*i,y0,x0+6*r+6*r*i,y0+l);
arc(x0+7*r+6*r*i,y0+l,180,360,r);
line(x0+2*r,y0+l,x0+2*r,y0+50+l);
}
arc(x0+2*r+6*r*i,y0,0,180,r);
line(x0+3*r+6*r*i,y0,x0+6*r+6*r*i,y0+l);
line(x0+6*r+6*r*i,y0+l,x0+6*r+6*r*i,y0+50+l);
arc(x0+6*r+6*r*i,y0+50+l,0,360,3);
arc(x0+2*r,y0+50+l,0,360,3);
}
void coil3(int x0,int y0,int l,int h,int m,int r,int p,int n)
{
int i;
setcolor(n);
setfillstyle(1,m);
bar(x0,y0,x0+l,y0+h);
for(i=0;i<p;i++)
{
arc(x0,y0+2*r+6*r*i,90,270,r);
line(x0,y0+3*r+6*r*i,x0+l,y0+6*r+6*r*i);
arc(x0+l,y0+7*r+6*r*i,-90,90,r);
line(x0+l,y0+2*r,x0+50+l,y0+2*r);
}
arc(x0,y0+2*r+6*r*i,90,270,r);
line(x0,y0+3*r+6*r*i,x0+l,y0+6*r+6*r*i);
line(x0+l,y0+6*r+6*r*i,x0+50+l,y0+6*r+6*r*i);
arc(x0+50+l,y0+6*r+6*r*i,0,360,3);
arc(x0+50+l,y0+2*r,0,360,3);
}
void coil4(int x0,int y0,int l,int h,int n,int r,int p,int m)
{
int i;
setcolor(m);
rectangle(x0,y0,x0+l,y0+h);
setcolor(n);
for(i=0;i<p;i++)
{
arc(x0,y0+2*r+6*r*i,90,270,r);
line(x0,y0+3*r+6*r*i,x0+l,y0+6*r+6*r*i);
arc(x0+l,y0+7*r+6*r*i,-90,90,r);
line(x0+l,y0+2*r,x0+50+l,y0+2*r);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -