예제 #1
0
void drawLine(unsigned char col1, unsigned char row1, unsigned char col2, unsigned char row2) 
{
	if(row1 == row2 && col2 > col1) {
		for(col1; col1<=col2; col1++) {
			setPx(row1,col1);
		}
	} else if(col1 == col2 && row2 > row1) {
		for(row1; row1<=row2; row1++) {
			setPx(row1,col1);
		}
	}
}
예제 #2
0
TilePixelValue::TilePixelValue(unsigned int zoom, unsigned int px, unsigned int py)
    : data_(0)
{
    setZoom(zoom);
    setPx(px);
    setPy(py);
}
예제 #3
0
PlayerButton::PlayerButton (QWidget *parent, const QString &pic) : QLabel (parent)
{
	setMargin (3);

	setPx (pic);
	setFrameStyle (QFrame::StyledPanel | QFrame::Plain);

	setAutoFillBackground (true);
}
예제 #4
0
void cbPIO_write(
    cbPIO_Port      port,
    cbPIO_Pin       pin,
    cbPIO_Value     value)
{
    cb_ASSERT(port <= cbPIO_PORT_2);
    cb_ASSERT((port != cbPIO_PORT_2) || (pin < cbPIO_PIN_5));

    setPx(port, pin, value);
}
예제 #5
0
파일: draw2D.c 프로젝트: JDongian/EE319k
void drawPoint(point myPoint, unsigned char shade) {
	setPx(makePoint(myPoint.x%128, myPoint.y%96), shade);
}
예제 #6
0
파일: foe.c 프로젝트: serprex/DoubleFire
void eloop(){
	if(Btop>B||Etop>E)marke();
	for(bxy*b=B;b<Btop;b++){
		if(0)killb:if(killb(b))break;
		float bx=b->x,by=b->y;
		b->x+=b->xd;
		b->y+=b->yd;
		if(b->y<0||b->x<0||b->x>128||b->y>256)goto killb;
		if(T==MT){
			glLine(bx,by,b->x,b->y);
			glRect(b->x-1,b->y-1,b->x+1,b->y+1);
		}
		for(int i=0;i<2;i++)
			if(btop(i,b)<256){
				if(Php[i]!=b->p){
					Ph[i]--;
					Php[i]=b->p;
				}
				goto killb;
			}
	}
	for(obje*e=E;e<Etop;e++){
		if(0)kille:if(kille(e))break;
		float x=e->x,y=e->y,r;
		int et=!!(e->t&128);
		switch(e->t&127){
		case(CAN)
			e->x=x+=e->xd;
			e->y=y+=e->yd;
			et=nerdest(e);
			erotxy(e,Px[et],Py[et],M_PI/16);
			if(!(T-e->c&3))
				mkbd(e->c,x+cos(e->d)*r*2,y+sin(e->d)*r*2,6,e->d);
			if(x<-5||x>133||y<-5||y>261||e->h<1)goto kille;
			else(e->h<4||rdmg(x,y,e->h*3/2)){
				deceh(e);
			}
			if(T==MT){
				float r=min(T-e->c,e->h);
				glColor(wht);
				glLine(x,y,x+cos(e->d)*r*2,y+sin(e->d)*r*2);
				glColor(red+et);
				glCirc(x,y,r);
			}
		case(TAR)
			r=min(T-e->c,abs(e->h));
			et=e->h<6?4:rdmg(x,y,r);
			if(et)
				seteh(e,e->h-et);
			setexdyd(e,rrotxy(e->xd,x,y,Px[0],Py[0],M_PI/72),rrotxy(e->yd,x,y,Px[1],Py[1],M_PI/72));
			if(e->h<-120)goto kille;
			if(T==MT){
				glColor(wht);
				glCirc(x,y,r);
				rndcol();
				glCirc(x,y,min(r,24));
				glColor(wht);
				glCirc(x,y,min(r,16));
				rndcol();
				glCirc(x,y,min(r,8));
			}
			for(int i=0;i<2;i++)
				xLz(min(T-e->c,127+e->h),x,y,i?e->yd:e->xd);
		case(ROT)
			e->x=x+=e->xd;
			e->y=y+=e->yd;
			e->d+=M_PI/(et?128:-128);
			for(int i=0;i<3;i++)
				mkbd(e->c,x+cos(e->d+i*M_PI*2/3)*32,y+sin(e->d+i*M_PI*2/3)*32,8,e->d+i*M_PI*2/3);
			if(x<-5||x>133||y<-5||y>261||e->h<1)goto kille;
			else(e->h<8||rdmg(x,y,e->h)){
				deceh(e);
			}
			if(T==MT){
				rndcol();
				glCirc(x,y,e->h);
				glColor(wht);
				for(int i=0;i<3;i++)
					glLine(x+cos(e->d+i*M_PI*2/3)*(32-e->h*3),y+sin(e->d+i*M_PI*2/3)*(32-e->h*3),x+cos(e->d+i*M_PI*2/3)*32,y+sin(e->d+i*M_PI*2/3)*32);
			}
		case(DOG)
			et=nearest(e);
			if(dst2(x,y,Px[et],Py[et])<64){
				setPx(et,e->x);
				setPy(et,e->y);
			}else{
				erotxy(e,Px[et],Py[et],M_PI/32);
				setexy(e,x+=cos(e->d)*e->xd,y+=sin(e->d)*e->xd);
				et=2;
			}
			if(rdmg2(x,y,16)&(et==2?0xFFFF:et==1?0x00FF:0xFF00)){
				deceh(e);
				if(!e->h)goto kille;
			}
			if(T==MT){
				glColor(et==2?wht:red+et);
				glCirc(x,y,min(e->h,T-e->c));
			}
		case(POO)
			et=nearest(e);
			erotxy(e,Px[et],Py[et],M_PI/48);
			setexy(e,x+=cos(e->d)*e->xd,y+=sin(e->d)*e->xd);
			if(!(T-e->c&7))
				mkbd(e->c,x,y,0,0);
			if(T==MT){
				rndcol();
				glCirc(x,y,min(T-e->c,e->h)/2);
			}
			if(dst2(x,y,Px[et],Py[et])<sqr(e->h)||e->h<16){
				deceh(e);
				if(!e->h)goto kille;
			}
		case(B1)
			if(y<64){
				add2ey(e);
				y+=2;
			}
			mkbxy(e->c,x,y,Px[0],Py[0],4);
			mkbxy(e->c+1,x,y,Px[1],Py[1],4);
			mkbxy(e->c+2,x,y,Px[!(e->h&8)],Py[!(e->h&8)],1);
			et=rdmg2(x,y,e->h);
			if((e->h&7)!=7&&getb(et,e->h&8))
				seteh(e,e->h+1);
			else(getb(et,!(e->h&8))||e->h<7){
				deceh(e);
				if(!e->h)goto kille;
			}
예제 #7
0
void cbPIO_open(
    cbPIO_Port              port,
    cbPIO_Pin               pin,
    cbPIO_NotifyCallbIrq    notifyCallbFcn,
    cbPIO_Mode              mode,
    cbPIO_Value             value)
{
    uint8   i;
    bool    done = FALSE;
    uint8   selBit = pin;
    uint8   inpBit = pin;

    cb_ASSERT(port < cbPIO_PORT_INVALID);
    cb_ASSERT((port != cbPIO_PORT_2) || (pin < cbPIO_PIN_5));
    
    if(port == cbPIO_PORT_2)
    {
      switch(pin)
      {
      case cbPIO_PIN_0:
        selBit = 0x01;
        break;
        
      case cbPIO_PIN_3:
        selBit = 0x02;
        break;
        
      case cbPIO_PIN_4:
        selBit = 0x04;
        break;
        
      default:
        selBit = 0x00;
        break;
      }
    }
    else if(port == cbPIO_PORT_1)
    {
      inpBit &= 0xFC;
    }

    switch(mode)
    {
    case cbPIO_INPUT_PU:
        *(pxSel[port]) &= ~selBit;
        *(pxDir[port]) &= ~pin;
        *(pxInp[port]) &= ~inpBit;

        if(port == cbPIO_PORT_0)
        {
            *(pxInp[2]) &= ~(0x20);
        }
        else if(port == cbPIO_PORT_1)
        {
            *(pxInp[2]) &= ~(0x40);
        }
        else
        {
            *(pxInp[2]) &= ~(0x80);
        }
        break;

    case cbPIO_INPUT_PD:
        *(pxSel[port]) &= ~selBit;
        *(pxDir[port]) &= ~pin;
        *(pxInp[port]) &= ~inpBit;

        if(port == cbPIO_PORT_0)
        {
            *(pxInp[2]) |= 0x20;
        }
        else if(port == cbPIO_PORT_1)
        {
            *(pxInp[2]) |= 0x40;
        }
        else
        {
            *(pxInp[2]) |= 0x80;
        }
        break;

    case cbPIO_INPUT_FLOATING:
        *(pxSel[port]) &= ~selBit;
        *(pxDir[port]) &= ~pin;
        break;

    case cbPIO_OUTPUT:
        *(pxSel[port]) &= ~selBit;
        *(pxDir[port]) |= pin;
        
#if 0
        if(value == cbPIO_HIGH)
        {
          *(px[port]) |= pin;
        }
        else
        {
          *(px[port]) &= ~pin;
        }
#else   
        setPx(port, pin, value);
#endif
        break;

    case cbPIO_ALTERNATE:
        *(pxSel[port]) |= selBit;
        break;

    default:
        cb_EXIT(mode);
    }

    if( (notifyCallbFcn != NULL) &&
        ((mode == cbPIO_INPUT_FLOATING) ||
         (mode == cbPIO_INPUT_PU) ||
         (mode == cbPIO_INPUT_PD)))
    {
        for(i = 0; (i < cbPIO_MAX_CALLBACKS) && (done == FALSE); i++)
        {
            if(pio.callb[i] == NULL)
            {
                pio.callb[i] = notifyCallbFcn;
                pio.port[i] = port;
                pio.pin[i] = pin;

                done = TRUE;

                cfgIrq(port, pin);
            }
        }
    }
}