/* FLY-DEAL Version 3.0 fr TOS 12.07.1992 written '92 by Axel Schlter Die Hilfsgrafik-Routinen der Library */ #include "fly_prot.h" long FLY_countsize(int b,int h) { return(((long) ((b+15)/16) * (long) h * (long) PLANES * 2L)+ 8192L); } int FLY_bitblt(int x,int y,int x2,int y2,int b,int h,long *addr,long *addr2,int mode) { MFDB hinter,bild; int xy[8]; hinter.fd_w =(hinter.fd_wdwidth=((b+15)/16))*16; hinter.fd_h =h; hinter.fd_addr =addr; bild.fd_addr =NULL; hinter.fd_nplanes =PLANES; hinter.fd_stand =0; if(mode==PIC_TO_MEM) { xy[0]=x; xy[1]=y; xy[2]=x+b; xy[3]=y+h; xy[4]=x2; xy[5]=y2; xy[6]=b; xy[7]=h; v_hide_c(VDI_ID); vro_cpyfm(VDI_ID,S_ONLY,xy,&bild,&hinter); v_show_c(VDI_ID,1); } if(mode==MEM_TO_PIC) { xy[0]=x2; xy[1]=y2; xy[2]=b; xy[3]=h; xy[4]=x; xy[5]=y; xy[6]=x+b; xy[7]=y+h; v_hide_c(VDI_ID); vro_cpyfm(VDI_ID,S_ONLY,xy,&hinter,&bild); v_show_c(VDI_ID,1); } if(mode==PIC_TO_PIC) { hinter.fd_addr=NULL; xy[0]=x; xy[1]=y; xy[2]=x+b; xy[3]=x+h; xy[4]=x2; xy[5]=y2; xy[6]=x2+b; xy[7]=y2+h; v_hide_c(VDI_ID); vro_cpyfm(VDI_ID,S_ONLY,xy,&hinter,&bild); v_show_c(VDI_ID,1); } if(mode==MEM_TO_MEM) { xy[0]=x; xy[1]=y; xy[2]=x+b; xy[3]=y+h; xy[4]=x2; xy[5]=y2; xy[6]=x2+b; xy[7]=y2+h; bild.fd_addr=addr2; vro_cpyfm(VDI_ID,S_ONLY,xy,&hinter,&bild);} return(0); } void fly_rectangle(int x,int y,int b,int h) { int xy[10]; xy[0]=x; xy[1]=y; xy[2]=x+b; xy[3]=y; xy[4]=x+b; xy[5]=y+h; xy[6]=x; xy[7]=y+h; xy[8]=x; xy[9]=y; v_pline(VDI_ID,5,xy); } void fly_line(int x1,int y1,int x2,int y2) { int xy[4]; xy[0]=x1; xy[1]=y1; xy[2]=x2; xy[3]=y2; v_pline(VDI_ID,2,xy); } void fly_bar(int x,int y,int w,int h,int color) { int xy[4]; vsf_color(VDI_ID,color); xy[0]=x; xy[1]=y; xy[2]=x+w; xy[3]=y+h; v_bar(VDI_ID,xy); } void fly_circle(int x,int y,int mode) { BITBLK *bitblk=IMAGES[mode].ob_spec.bitblk; MFDB s,d; int index[2],xy[8]; s.fd_w =bitblk->bi_wb<<3; s.fd_wdwidth =bitblk->bi_wb>>1; s.fd_h =bitblk->bi_hl; s.fd_addr =(void*)bitblk->bi_pdata; d.fd_addr =NULL; s.fd_nplanes =1; index[0]=BLACK; index[1]=WHITE; xy[0]=0; xy[1]=0; xy[2]=16; xy[3]=s.fd_h; xy[4]=x+1; xy[5]=y+1; xy[6]=x+s.fd_w; xy[7]=y+s.fd_h; v_hide_c(VDI_ID); vrt_cpyfm(VDI_ID,MD_REPLACE,xy,&s,&d,index); v_show_c(VDI_ID,1); } void fly_radio_box(int mode,OBJECT *dealog,int SelObject,int RoundObject) { int x,y,b,h,adX,adY,atrbu[10]; vqt_attributes(VDI_ID,atrbu); adX=dealog[0].ob_x+dealog[RoundObject].ob_x; adY=dealog[0].ob_y+dealog[RoundObject].ob_y; switch(mode) { case 0: x=dealog[SelObject].ob_x+adX-1; y=dealog[SelObject].ob_y+adY-1; h=dealog[SelObject].ob_height+1; b=dealog[RoundObject].ob_width; fly_rectangle(x,y,b,h); fly_line(x+2,y+h+1,x+b+1,y+h+1); fly_line(x+b+1,y+2,x+b+1,y+h+1); x=(x+b)-2*atrbu[8]; fly_line(x,y,x,y+h); break; case 1: x=adX-1; y=adY-1; b=dealog[RoundObject].ob_width-2*atrbu[8]+2; h=dealog[RoundObject].ob_height; LITTLEbuf=Malloc(FLY_countsize(b,h)); FLY_bitblt(x,y,0,0,b+4,h+2,LITTLEbuf,0,PIC_TO_MEM); fly_bar(x,y,b,h,WHITE); fly_rectangle(x,y,b,h); fly_bar(x+b,y+1,2,h+1,BLACK); fly_bar(x+1,y+h,b+1,2,BLACK); break; case 2: x=adX-1; y=adY-1; b=dealog[RoundObject].ob_width-2*atrbu[8]+2; h=dealog[RoundObject].ob_height; FLY_bitblt(x,y,0,0,b+4,h+2,LITTLEbuf,0,MEM_TO_PIC); Mfree(LITTLEbuf); break; } } void trans_image(OBJECT *tree,int obj) { BITBLK *bitblk=tree[obj].ob_spec.bitblk; int *taddr=bitblk->bi_pdata, wb =bitblk->bi_wb, hl =bitblk->bi_hl; if(VERZERRT==1) { switch(obj) { case 1:bitblk->bi_pdata=FAchange; break; case 3:bitblk->bi_pdata=FAbuttOff; break; case 2:bitblk->bi_pdata=FAbuttOn; break; } hl=bitblk->bi_hl=7; } vdi_trans((void*)taddr,wb,(void*)taddr,wb,hl); } void vdi_fix(MFDB *pfd,void *saddr,int wb,int h) { pfd->fd_addr =saddr; pfd->fd_w =wb<<3; pfd->fd_h =h; pfd->fd_wdwidth=wb>>1; pfd->fd_nplanes=1; } void vdi_trans(void *saddr,int swb,void *daddr,int dwb,int h) { MFDB s,d; vdi_fix(&s,saddr,swb,h); s.fd_stand=1; vdi_fix(&d,daddr,dwb,h); vr_trnfm(VDI_ID,&s,&d); }