Beispiel #1
0
unsigned char TFT::drawFloat(float floatNumber,unsigned int poX, unsigned int poY,unsigned int size,unsigned int fgcolor)
{
    unsigned char decimal=2;
    unsigned int temp=0;
    float decy=0.0;
    float rounding = 0.5;
    unsigned char f=0;
    if(floatNumber<0.0)                                                 /* floatNumber < 0              */
    {
        drawChar('-',poX, poY, size, fgcolor);                          /* add a '-'                    */
        floatNumber = -floatNumber;
        if(poX < MAX_X)
        {
            poX+=FONT_SPACE*size;                                       /* Move cursor right            */
        }
        f =1;
    }
    for (unsigned char i=0; i<decimal; ++i)
    {
        rounding /= 10.0;
    }
    floatNumber += rounding;

    temp = (unsigned int)floatNumber;
    unsigned char howlong=drawNumber(temp,poX, poY, size, fgcolor);
    f += howlong;
    if((poX+8*size*howlong) < MAX_X)
    {
        poX+=FONT_SPACE*size*howlong;                                   /* Move cursor right            */
    }


    if(decimal>0)
    {
        drawChar('.',poX, poY, size, fgcolor);
        if(poX < MAX_X)
        {
            poX += FONT_SPACE*size;                                     /* Move cursor right            */
        }
        f +=1;
    }
    decy = floatNumber-temp;                                            /* decimal part,                */
    for(unsigned char i=0;i<decimal;i++)
    {
        decy *=10;                                                      /* for the next decimal         */
        temp = decy;                                                    /* get the decimal              */
        drawNumber(temp,poX, poY, size, fgcolor);
        floatNumber = -floatNumber;
        if(poX < MAX_X)
        {
            poX += FONT_SPACE*size;                                     /* Move cursor right            */
        }
        decy -= temp;
    }
    f += decimal;
    return f;
}
Beispiel #2
0
INT8U TFT::drawFloat(float floatNumber,INT16U poX, INT16U poY,INT16U size,INT16U fgcolor)
{
    INT8U decimal=2;
    INT16U temp=0;
    float decy=0.0;
    float rounding = 0.5;
    INT8U f=0;
    if(floatNumber<0.0)                                                 /* floatNumber < 0              */
    {
        drawChar('-',poX, poY, size, fgcolor);                          /* add a '-'                    */
        floatNumber = -floatNumber;
        if(poX < MAX_X)
        {
            poX+=FONT_SPACE*size;                                       /* Move cursor right            */
        }
        f =1;
    }
    for (INT8U i=0; i<decimal; ++i)
    {
        rounding /= 10.0;
    }
    floatNumber += rounding;

    temp = (INT16U)floatNumber;
    INT8U howlong=drawNumber(temp,poX, poY, size, fgcolor);
    f += howlong;
    if((poX+8*size*howlong) < MAX_X)
    {
        poX+=FONT_SPACE*size*howlong;                                   /* Move cursor right            */
    }


    if(decimal>0)
    {
        drawChar('.',poX, poY, size, fgcolor);
        if(poX < MAX_X)
        {
            poX += FONT_SPACE*size;                                     /* Move cursor right            */
        }
        f +=1;
    }
    decy = floatNumber-temp;                                            /* decimal part,                */
    for(INT8U i=0;i<decimal;i++)
    {
        decy *=10;                                                      /* for the next decimal         */
        temp = decy;                                                    /* get the decimal              */
        drawNumber(temp,poX, poY, size, fgcolor);
        floatNumber = -floatNumber;
        if(poX < MAX_X)
        {
            poX += FONT_SPACE*size;                                     /* Move cursor right            */
        }
        decy -= temp;
    }
    f += decimal;
    return f;
}
Beispiel #3
0
void GameMenu::drawScore(GameScoreType score, GameScoreType total, const Common::Rect &scoreBounds, Surface *numbers) {
	CoordType x = scoreBounds.right;
	drawNumber(total, x, scoreBounds.top, numbers);

	x -= 12;
	Common::Rect r1(120, 0, 132, 12); // The slash.
	Common::Rect r2 = r1;
	r2.moveTo(x, scoreBounds.top);
	numbers->copyToCurrentPort(r1, r2);
	drawNumber(score, x, scoreBounds.top, numbers);
}
void DIGITAL_drawBackground(struct tm *t)
{
  drawDate(t);
  
  /* Initialize the current time */
  drawNumber(t->tm_hour, TIME_ROW, HOUR_COL);
  drawNumber(t->tm_min,  TIME_ROW, MINUTE_COL);
  drawNumber(t->tm_sec,  TIME_ROW, SECOND_COL);
  
  GUI_DispStringAt(":",  6 * 8, TIME_ROW);
  GUI_DispStringAt(":",  9 * 8, TIME_ROW);
}
Beispiel #5
0
void Pong::drawTimer(int time)
{
	time = (time - 45) * -1; // the time sent is starting at 0. this makes it look like a countdown, 
								//rather than it counting up
	div_t timeSplit = div(time, 10);

	if (timeSplit.quot > 0)
	{
		drawNumber(timeSplit.quot, TIMER_TENS);
	}

	drawNumber(timeSplit.rem, TIMER_ONES);
}
Beispiel #6
0
/*********************************************
 * GAME :: DRAW
 * Draw everything on the screen
 *********************************************/
void Game :: draw(const Interface & ui)
{
   lander.draw();

   if (lander.isLanded())
   {
      drawText(Point(), "You have successfully landed!");
   }

   if (!lander.isAlive())
   {
      drawText(Point(), "You have crashed!");
   }

   if (lander.canThrust())
   {
      drawLanderFlames(lander.getPoint(), ui.isDown(), ui.isLeft(), ui.isRight());
   }

   Point fuelLocation;
   fuelLocation.setX(topLeft.getX() + 5);
   fuelLocation.setY(topLeft.getY() - 5);

   drawNumber(fuelLocation, lander.getFuel());

   // draw ground
   ground.draw();
}
void StackLayout::processLine(uint8_t *pixelData, int dataOffset)
{
	if (itemNr < 0)
		return;
	if (itemScanLine >= getItemHeight(itemNr)) {
		itemScanLine = 0;
		if (--itemNr < 0)
			return;
		currentNumberWidth = getNumberWidth(itemNr + firstLevelVisible);
	}
	DisplayItem *item = NULL;
	if (itemNr < getItems().getLength())
		item = getItems().getAt(itemNr);
	if (itemScanLine == 0 && item) {
		if (drawOffsetX <= item->getX())
			item->initLineScanning(0, 0, drawWidth - item->getX());
		else
			item->initLineScanning(0, drawOffsetX - item->getX(), drawWidth);
	}

	if (itemNr > 0)
		drawNumber(pixelData, dataOffset, itemNr + firstLevelVisible);
	if (item != NULL && isItemVisible(item)) {
		if (itemScanLine < item->getHeight()) {
			if (drawOffsetX <= item->getX())
				item->processLine(pixelData, dataOffset + item->getX() - drawOffsetX);
			else
				item->processLine(pixelData, dataOffset);
		}
	}

	itemScanLine++;
}
Beispiel #8
0
void CSVRenderer::drawBar(CSVElement *csvElement, int idx) {
	CSVDST cdst, cdst_next;
	CSVSRC csrc;

	// get Object
	CSVSelectData *current = CSVSelectList::getSongData(idx - csvElement->parent->barCenter);
	if (!current)
		return;

	// get DSTs
	if (!(csvElement->getDSTBar(&cdst, idx) && (csvElement->getDSTBar(&cdst_next, idx+1)))) {
		return;
	}
	
	// morphing X/Y coordination
	double a = CSVSelectList::moveProgress;
	cdst.setDSTX( cdst.getX() * (1-a)
		+ cdst_next.getX() * a );
	cdst.setDSTY( cdst.getY() * (1-a)
		+ cdst_next.getY() * a );

	// search BAR_BODY for SRC
	csvElement->srcNum = current->type;
	csvElement->getSRC(&csrc);

	// draw bar
	drawFunc(csvElement->src[csvElement->srcNum]->getImgNum(), 0, &csrc, &cdst);

	// draw BAR_FLASH
	// - this implemented in drawElement
	
	// draw BAR_LEVEL
	// only draws when type == SONG
	if (current->type == CSVSelectType::SONG) {
		CSVElement *cele_level = csvElement->parent->csvBarLevel;
		if (cele_level) {
			cele_level->srcNum = cele_level->dstNum = current->songData.difficulty;	// 0 means NONE
			cele_level->dstOffsetX = cdst.getX();
			cele_level->dstOffsetY = cdst.getY();
			drawNumber(cele_level, current->songData.level);
		}
	}

	// draw BAR_LAMP
		
	// draw BAR_MY_LAMP
		
	// draw BAR_RIVAL_LAMP
		
	// draws BAR_TITLE
	for (int i=0; i<csvElement->parent->csvBarTitle.size(); i++) {
		CSVElement *cele_title = csvElement->parent->csvBarTitle[i];
		cele_title->dstOffsetX = cdst.getX();
		cele_title->dstOffsetY = cdst.getY();
		drawText(cele_title, current->songData.title.c_str());
	}

	// restore everything to default
	csvElement->srcNum = 0;
}
Beispiel #9
0
//////////////////////////////////////////////////////////////////
// drawMenu
//
//
//
// Returns:
//    void
//
void drawMenu() {
    u8* pvmem;

    cpct_waitVSYNC();

    cpct_memset(CPCT_VMEM_START, cpct_px2byteM0(0, 0), 0x4000);

    //Small Logo
    pvmem = cpct_getScreenPtr(CPCT_VMEM_START, 23, 0);
    cpct_drawSprite(logo_micro, pvmem, 5, 18);

    drawText("AMSTHREES", 30, 4, 0);

    // Session Highest Card
    drawText("SESSION", 1, 57, 0);
    drawText("HIGH", 5, 72, 0);
    pvmem = cpct_getScreenPtr(CPCT_VMEM_START, 7, 92);
    cpct_drawSprite(cards[highestCardAll], pvmem, CARD_W, CARD_H);

    drawFrame(23, 43, 76, 151);

    //Camelot Mode Badgae
    if (camelotMode) {
        pvmem = cpct_getScreenPtr(CPCT_VMEM_START, 80 - G_CAMELOTBADGE_W, 8);
        cpct_drawSpriteMaskedAlignedTable(g_camelotBadge, pvmem, G_CAMELOTBADGE_W, G_CAMELOTBADGE_H, am_tablatrans);
    }

    drawText("REDEFINE", 38, 60, 0);
    drawText("MUSIC", 38, 80, 0);
    if (playing)
        drawText("OFF", 56, 80, 0);
    else
        drawText("ON", 56, 80, 0);
    drawText("HELP", 38, 100, 0);
    drawText("PLAY", 38, 120, 0);

    drawNumber(1, 1, 31, 60);
    drawNumber(2, 1, 31, 80);
    drawNumber(3, 1, 31, 100);
    drawNumber(4, 1, 31, 120);


    drawText("JOHN LOBO", 25, 170, 1);
    drawText("@ GLASNOST CORP 2016", 11, 185, 1);

    drawMarker();
}
Beispiel #10
0
void dibPunto::procesFile(Document_Interface *doc)
{
    QString sep;
    QMessageBox::information(this, "Info", "dibpunto procesFile");
    currDoc = doc;

//Warning, can change adding or reordering "formatedit"
    QString::SplitBehavior skip = QString::KeepEmptyParts;
    switch (formatedit->currentIndex()) {
    case 0:
        sep = " ";
        break;
    case 3:
        sep = " ";
        skip = QString::SkipEmptyParts;
        break;
    case 2:
        sep = ",";
        break;
    default:
        sep = "\t";
    }
    if (!QFile::exists(fileedit->text()) ) {
        QMessageBox::critical ( this, "DibPunto", QString(tr("The file %1 not exist")).arg(fileedit->text()) );
        return;
    }
    QFile infile(fileedit->text());
    if (!infile.open(QIODevice::ReadOnly | QIODevice::Text)) {
        QMessageBox::critical ( this, "DibPunto", QString(tr("Can't open the file %1")).arg(fileedit->text()) );
         return;
    }

//Warning, can change adding or reordering "formatedit"
    if (formatedit->currentIndex() == 4)
        procesfileODB(&infile, sep);
    else
        procesfileNormal(&infile, sep, skip);
    infile.close ();
    QString currlay = currDoc->getCurrentLayer();

    if (pt2d->checkOn() == true)
        draw2D();
    if (pt3d->checkOn() == true)
        draw3D();
    if (ptelev->checkOn() == true)
        drawElev();
    if (ptnumber->checkOn() == true)
        drawNumber();
    if (ptcode->checkOn() == true)
        drawCode();

    currDoc->setLayer(currlay);
    /* draw lines in current layer */
    if ( connectPoints->isChecked() )
        drawLine();

    currDoc = NULL;

}
Beispiel #11
0
void Hruler::drawMarks(QPainter& p)
{
	p.setBrush(Qt::black);
	p.setPen(Qt::black);
	//p.drawLine(0, 16, width(), 16);
	double sc = Scaling;
	double cc = width() / sc;
	double firstMark = ceil(offs / iter) * iter - offs;
	while (firstMark < cc)
	{
		p.drawLine(qRound(firstMark * sc), 13, qRound(firstMark * sc), 16);
		firstMark += iter;
	}
	firstMark = ceil(offs / iter2) * iter2 - offs;
	int markC = static_cast<int>(ceil(offs / iter2));

	QString tx;
	double xl, frac;
	while (firstMark < cc)
	{
		p.drawLine(qRound(firstMark * sc), topline + 5, qRound(firstMark * sc), 16);
		switch (m_doc->unitIndex())
		{
			case SC_MM:
				tx = QString::number(markC * iter2 / (iter2 / 100) / cor);
				break;
			case SC_IN:
				xl = (markC * iter2 / iter2) / cor;
				tx = QString::number(static_cast<int>(xl));
				frac = fabs(xl - static_cast<int>(xl));
				if ((static_cast<int>(xl) == 0) && (frac > 0.1))
					tx = "";
				if ((frac > 0.24) && (frac < 0.26))
					tx += QChar(0xBC);
				if ((frac > 0.49) && (frac < 0.51))
					tx += QChar(0xBD);
				if ((frac > 0.74) && (frac < 0.76))
					tx += QChar(0xBE);
				tx = tx;
				break;
			case SC_P:
			case SC_C:
				tx = QString::number(markC * iter2 / (iter2 / 5) / cor);
				break;
			case SC_CM:
				tx = QString::number(markC * iter2 / iter2 / cor);
				break;
			default:
				tx = QString::number(markC * iter2);
				break;
		}
		drawNumber(tx, qRound(firstMark * sc) + 2, 9, p);
		//p.drawText(qRound(firstMark * sc)+2, 9, tx);
		firstMark += iter2;
		markC++;
	}
}	
void ScenePause::draw()
{
	m_sp1P->Draw(m_sp1P->_pos);
	m_spHi->Draw(m_spHi->_pos);
	m_spBadge->Draw(m_spBadge->_pos);
	m_spRest->Draw(m_spRest->_pos);
	m_spStage->Draw(m_spStage->_pos);
	m_spNameStage->Draw(m_spNameStage->_pos);
	m_spTitle->Draw(m_spTitle->_pos);

	// ve so
	int delta = m_timeCount % 15;
	if (m_timeCount % 15 > 4 && m_timeCount % 15 < 15)
	{
		drawNumber(to_string(m_resource->m_numScore), 100, 25);
		drawNumber(to_string(m_resource->m_highScore), 110, 75);
		drawNumber(to_string(m_resource->m_life), 70, 45);
	}
	// ve hieu ung button
	if (!m_checkItem)
	{
		m_spConti->Draw(m_spConti->_pos);
		m_spEnd->Draw(m_spEnd->_pos);
	}
	else
	{
		if (m_curItem == Item1)
		{
			m_spEnd->Draw(m_spEnd->_pos);
			if (m_timeDuring % 15 > 5 && m_timeDuring % 15 < 10)
			{
				m_spConti->Draw(m_spConti->_pos);
			}
		}
		else if (m_curItem == Item2)
		{
			m_spConti->Draw(m_spConti->_pos);
			if (m_timeDuring % 15 > 5 && m_timeDuring % 15 < 10)
			{
				m_spEnd->Draw(m_spEnd->_pos);
			}
		}
	}
}
Beispiel #13
0
void GraduationView::paintEvent(QPaintEvent *)
{
    QPainter painter(this);

    dimg->setImage(dimg->getImageOriginal()->scaled(this->width()-ADJUSTEMENT,this->height()-ADJUSTEMENT));
    dimg->updateImage(rampEditor);
    painter.drawImage(MARGIN+1,MARGIN,*dimg->getImage());
    drawMillimeter(&painter);
    drawNumber(&painter);
}
Beispiel #14
0
void Pong::drawScore(int right, int left) // draws the score of each paddle in their respective field halves
{
	div_t rightDiv = div(right, 10);
	div_t leftDiv = div(left, 10);

	if (rightDiv.quot > 0)
	{
		drawNumber((int)rightDiv.quot, RIGHT_TENS);
	}

	drawNumber((int)rightDiv.rem, RIGHT_ONES);

	if (leftDiv.quot > 0)
	{
		drawNumber((int)leftDiv.quot, LEFT_TENS);
	}

	drawNumber((int)leftDiv.rem, LEFT_ONES);
}
Beispiel #15
0
void updateTopScore() {
  drawNumber(COORDS(5, 1), hiScores[0].score);

  drawChar(COORDS(1,  39), hiScores[0].name[0]);
  drawChar(COORDS(4,  39), hiScores[0].name[1]);
  drawChar(COORDS(7,  39), hiScores[0].name[2]);
  drawChar(COORDS(10, 39), hiScores[0].name[3]);
  drawChar(COORDS(12, 39), hiScores[0].name[4]);
  drawChar(COORDS(14, 39), hiScores[0].name[5]);
}
/** Draws a digital watch */
static DrawLimits drawWatchFace(struct tm *t)
{
  DrawLimits ret = getDrawingLimits(t);
  
  if ( lastTime.tm_yday != t->tm_yday ) {
    
    /* Date changed, update everything */
    FB_clearBuffer();
    DIGITAL_drawBackground(t);
  }
  
  drawNumber(t->tm_sec, TIME_ROW, SECOND_COL);
 
  drawNumber(t->tm_min, TIME_ROW, MINUTE_COL);
  
  drawNumber(t->tm_hour, TIME_ROW, HOUR_COL);

  /* Save the rendered time */
  lastTime = *t;
  
  return ret;
}
Beispiel #17
0
/*************************************************
 * PONG : DRAW
 * Draw the stuff
 ************************************************/
void Pong::draw()
{
   // draw the ball and the paddle
   drawRect(paddle, 2, PADDLE * 2, 0);

   // draw the ball
   if (!dead)
      drawCircle(ball, 8);

   // draw the score
   Point point(ball.getXMin() + 5, ball.getYMax() - 5);
   drawNumber(point, score);
}
Beispiel #18
0
static void drawResult(void)
{
    /*  Score  */
    arduboy.setTextSize(2);
    int dx = 59;
    uint32_t dummy = score;
    while (dummy >= 10) {
        dummy /= 10;
        dx -= 6;
    }
    drawNumber(dx, 0, score);
    arduboy.setTextSize(1);

    /*  Each die  */
    uint32_t totalErasedDice = 0;
    for (int i = 0; i < 6; i++) {
        int dx = (i % 3) * 30 + 37;
        int dy = (i / 3) * 6 + 38;
        arduboy.drawBitmap(dx, dy, imgMiniDie[i], 5, 5, WHITE);
        drawNumber(dx + 6, dy, min(erasedEachDie[i], EACHDIE_MAX));
        totalErasedDice += erasedEachDie[i];
    }

    /*  Others  */
    arduboy.printEx(1, 14, F("LEVEL"));
    arduboy.printEx(1, 20, F("MAX CHAIN"));
    arduboy.printEx(1, 26, F("PLAY TIME"));
    arduboy.printEx(1, 32, F("ERASED DICE"));
    if (gameMode == GAME_MODE_ENDLESS) {
        drawNumber(73, 14, level);
    } else {
        arduboy.printEx(73, 14, F("--"));
    }
    drawNumber(73, 20, maxChain);
    drawTime(73, 26, gameFrames);
    drawNumber(73, 32, totalErasedDice);
}
Beispiel #19
0
void GLWidget::paintGL()
{
    glClearColor(0.847f, 0.749f, 0.847f, 0.0f); //background color
    glClear(GL_COLOR_BUFFER_BIT);

    glLoadIdentity();

    //Background
    glColor3f(0.502f, 0.000f, 0.502f);
    drawCircle(200);

    glColor3f(0.0f, 0.0f, 0.0f);
    glScaled(0.8,0.8,1);
    drawCircle(200);

    glColor3f(0.980f, 0.502f, 0.447f);
    drawNumber();

    //Second Hand
    glLoadIdentity();
    glColor3f(0.980f, 0.502f, 0.447f);
    glRotated(-6*sec,0,0,1);
    drawRec(160,1);

    //Minute Hand
    glLoadIdentity();
    glColor3f(0.980f, 0.502f, 0.447f);
    glRotated(-6*min,0,0,1);
    drawRec(170,5);

    //Hour Hand
    glLoadIdentity();
    glColor3f(0.980f, 0.502f, 0.447f);
    glRotated(-30*hour-0.5*min,0,0,1);
    drawRec(130,8);

    //Center dot
    glLoadIdentity();
    glColor3f(0.502f, 0.000f, 0.502f);
    drawCircle(10);



//    glPushMatrix();
//    glPopMatrix();
}
Beispiel #20
0
/**
 * drawPoints
 * Zeichnen der bis zu dem Zeitpunkt erreichten Punktzahl.
 */
void
GameWorld::drawPoints() {

	CMatrix * modelview = getModelView();

	modelview->Push();
	modelview->Translate(1.8,4.2,0.0);

	drawNumber(getGameState()->getPoints());

	modelview->Pop();

	/*glPushMatrix();
		glTranslatef(0.8,2.2,0.0);
		drawNumber(getGameState()->getPoints());
	glPopMatrix();*/
}
Beispiel #21
0
int drawNumberString(gdImagePtr im, char* buffer, int x, int y, int color, bool doDraw)
{
	char c;
	int offsetX = 0;
	
	int i = 0;
	
	while((c = buffer[i]) != 0)
	{
		int number = c - ZERO_CHAR;
		
		if(c == ':')
		{
			number = 10;
			offsetX -= 2;
		}
		
		if(c == '1')
		{
			offsetX -= 1;
		}
		
		if(number < 0 || number > 10)
			number = 0;
		
		if(doDraw)
			drawNumber(im, number, offsetX + x, y, color);
		
		switch(c)
		{
			case ':':
				offsetX += 4;
				break;
			default:
				offsetX += 6;
				break;
		}
		
		i++;
	}
	
	return offsetX;
}
Beispiel #22
0
int main()
{
		WidgetTable.init();

		clearScreen();

		Packet p;

		while (1)
		{
			interpret();

			drawNumber(4, 207,counter, CYAN);
			++counter;
		}


    return 0;
}
Beispiel #23
0
void LayoutPulseCounter::draw(GMCounterBase* data, layoutConfig_t& conf)
{
    itsDisplay.clearDisplay();

    // show legend
    uint8_t pulseValue = data->getSample(0U);
    drawNumber(pulseValue, 0U, 0U);
    drawText(conf.pulseConfig.pulseLabel, 18U, 0U);
    

    // TODO: dirty hack, we want to show value only when
    // showing graph for pulses per minute.
    if(conf.pulseConfig.doseLabel != "")
    {
        // TODO use a wrapper for writting numbers
        float doseValue = data->getDose();
        itsDisplay.setTextSize(0);
        itsDisplay.setTextColor(BLACK);
        itsDisplay.setCursor(36, 0);
        itsDisplay.print(doseValue);

        drawText(conf.pulseConfig.doseLabel, 59U, 0U);
    }


    // show graph
    const uint8_t graphHeight = 40U;
    sample_t maxValue = data->getMaxSampleValue();

    for (uint16_t i = 0U; (i < data->getSampleCount()) && (i < LCDWIDTH); i++)
    {
        sample_t sampleValue = data->getSample(i);
        
        // data normalization
        sampleValue = uint8_t( (float(sampleValue) / float(maxValue)) *graphHeight);        

        const uint16_t x = LCDWIDTH - i - 1U;
        itsDisplay.drawLine(x, itsDisplay.height(), x, itsDisplay.height() - sampleValue, BLACK);
    }

    itsDisplay.display();
}
Beispiel #24
0
void drawScore(uint score) {
  uchar n;  

  drawNumber(COORDS(67, 1), score);

  if(score < hiScores[0].score) n = (score / (hiScores[0].score / 6));
                           else n = 7;

  if(playerSpriteTop != n) {
    playerSpriteTop = n;
    waitHorzSync();
    if(n > 6) { superDraw(COORDS(63, 6), 0, 23, 7, rightSprite, 17, 17); n=1; }
         else { superDraw(COORDS(63, 6), 6-n, 23, n, gameScreen + 63 + 12*80, 17, 80); n=0; }  
    if(kingSprite != n) {
      kingSprite = n;
      if(n) superDraw(COORDS(0, 6), 5, 16, 0, leftSprite, 18, 18);
       else superDraw(COORDS(0, 6), 0, 21, 0, gameScreen + 0 + 6*80, 18, 80);
    }
  }
}
Beispiel #25
0
static void drawIssues(void)
{
    arduboy.printEx(34, 0, F("[ PUZZLE ]"));
    for (int i = 0; i <= COUNT_ISSUES; i++) {
        int dx = i % 5 * 24 + 10, dy = i / 5 * 6 + 8;
        if (i == issue) {
            dx -= 4;
            arduboy.fillRect(dx - 6, dy, 5, 5, WHITE);
        }
        if (i == COUNT_ISSUES) {
            arduboy.printEx(dx, dy, F("BACK TO TITLE"));
        } else {
            drawNumber(dx, dy, i + 1);
            if (record.puzzleClearFlag[i / 8] & 1 << i % 8) {
                arduboy.drawFastHLine(dx - 2, dy + 2, 15 - (i < 9) * 6, WHITE);
            }
        }
    }
    drawSoundEnabled();
}
Beispiel #26
0
/**
 * drawEndPoints
 * Zeichnen der erreichten Endpunktzahl.
 */
void
GameWorld::drawEndPoints() {

	CMatrix * modelview = getModelView();

	modelview->Push();
	modelview->Translate(-0.1,2.0,0.0);
	modelview->Scale(1.5,1.5,1.5);

	drawNumber(getGameState()->getPoints());

	modelview->Pop();

	/*
	glPushMatrix();
		glTranslatef(-0.1,1.3,0.0);
		glScalef(1.5,1.5,1.5);
		drawNumber(getGameState()->getPoints());
	glPopMatrix();
	*/
}
Beispiel #27
0
/******************************************************************
 * Score::draw()
 * Draws the user and computers scores on the screen! Excellent!
 * Calls a function in uiDraw.h to do this for us.
 *****************************************************************/
void Score::draw()
{
   char multiplier = 0;

   if (score[HIT] > 9 && score[HIT] < 100)
      multiplier = 1;
   else if (score[HIT] > 99 && score[HIT] < 1000)
      multiplier = 2;
   else if (score[HIT] > 999 && score[HIT] < 10000)
      multiplier = 3;
   else if (score[HIT] > 9999 && score[HIT] < 100000)
      multiplier = 4;

   hitPos.setX(hitPos.getXMax() - (12 + (11 * multiplier)));

   glColor3ub(0, 255, 0);
   drawNumber(hitPos, score[HIT]);
   glColor3ub(255, 255, 255);

   return;
}
Beispiel #28
0
//////////////////////////////////////////////////////////////////
// drawScore
//
//
//
// Returns:
//    void
//
void drawScore() {
    u8 i, j, z;
    u8 x, y;
    u32 partialScore;

    for (i = 0; i < 4; i++) {
        y = 4 + (i * 48);
        for (j = 0; j < 4; j++) {
            x = 6 + (j * 12);
            z = cells[i][j];
            if (z >= 3) {
                if (z == 3) {
                    partialScore = 1;
                } else {
                    partialScore = scores[z];
                }
                score += partialScore;
                drawNumber(partialScore, 4, x - 3, y);
            }
        }
    }
}
Beispiel #29
0
/**
 * drawTime
 * Zeichnen der Zeit.
 */
void
GameWorld::drawTime() {
	int time = getGameState()->getTime();

	if(time >= 0) {

		CMatrix * modelview = getModelView();

		modelview->Push();
		modelview->Translate(-2.0,4.2,0.0);

		drawNumber(time);

		modelview->Pop();

		/*
		glPushMatrix();
			glTranslatef(-1.0,2.2,0.0);
			drawNumber(time);
		glPopMatrix();
		*/
	}
}
void *inputCheck(void *data) {
	// Variables to be assigned values
	extern int frequency[];
	extern float amplitude[];
	extern float timeDiv;
	extern int triggerLevel;
	extern int voltageDiv;
	extern int waveType[2];
	extern int offset;
	extern int menu;
	extern int mode;

	//Stores latest value of buttons
	int latestValue[4];
	//Stores previous values for buttons
	int previousValue[4] = { 1, 1, 1, 1 };

	while (!gShouldStop) {

		//Handles Scroll Button Input
		if (is_high(scrollButton))
			latestValue[0] = 1;
		else
			latestValue[0] = 0;
		//Cycles through menu
		if (latestValue[0] == 0 && previousValue[0] == 1) {
			if (mode == -1) {
				menu++;
				menu %= 3;
				memcpy(displayBuffer, &menuBuffer[menu], 1024);
			}
		}
		previousValue[0] = latestValue[0];

		//Handles Select Button Input
		if (is_high(selectButton))
			latestValue[1] = 1;
		else
			latestValue[1] = 0;

		if (latestValue[1] == 0 && previousValue[1] == 1) {
			//Selects menu or goes back to menu
			if (mode == -1) {
				if (menu == 0) {
					mode = 0;
					memcpy(displayBuffer, &oscilliscopeBuffer, 1024);
				} else if (menu == 1) {
					mode = 1;
					memcpy(displayBuffer, &signalGenBuffer, 1024);
				} else if (menu == 2) {
					mode = 2;
					memcpy(displayBuffer, &aboutBuffer, 1024);
				}
			} else {
				mode = -1;
				memcpy(displayBuffer, &menuBuffer[menu], 1024);
			}
		}
		previousValue[1] = latestValue[1];

		//Handles Wave Type For Channel 1 or Offset for oscilloscope
		if (is_high(button1))
			latestValue[2] = 1;
		else
			latestValue[2] = 0;

		if (latestValue[2] == 0 && previousValue[2] == 1) {
			if (mode == 1) {
				if (waveType[0] == 0) {
					waveType[0] = 1;
					drawCross(26, 57, 0);
					drawCross(58, 57, 1);
				} else if (waveType[0] == 1) {
					waveType[0] = 2;
					drawCross(26, 57, 0);
					drawCross(58, 57, 0);
				} else {
					waveType[0] = 0;
					drawCross(26, 57, 1);
				}
			} else if (mode == 0) {
				offset++;
				if (offset > 30)
					offset = 30;
			}
		}
		previousValue[2] = latestValue[2];

		//Handles Wave Type For Channel 2 or Offset for oscilloscope
		if (is_high(button2))
			latestValue[3] = 1;
		else
			latestValue[3] = 0;

		if (latestValue[3] == 0 && previousValue[3] == 1) {
			if (mode == 1) {
				if (waveType[1] == 0) {
					waveType[1] = 1;
					drawCross(89, 57, 0);
					drawCross(121, 57, 1);
				} else if (waveType[1] == 1) {
					waveType[1] = 2;
					drawCross(89, 57, 0);
					drawCross(121, 57, 0);
				} else {
					waveType[1] = 0;
					drawCross(89, 57, 1);
				}
			} else if (mode == 0) {
				offset--;
				if (offset < 1)
					offset = 1;
			}
		}

		previousValue[3] = latestValue[3];

		//Retrieves 10 analouge samples
		BBBIO_work(10);

		//Averages the retrieved smaples
		int sampleAverage[5] = { 0, 0, 0, 0, 0 };
		for (int n = 0; n < 10; n++) {
			for (int m = 0; m < 5; m++) {
				sampleAverage[m] += analougeInputs[m][n];
			}
		}
		for (int n = 0; n < 5; n++)
			sampleAverage[n] /= 10;
		//End of averaging

		//checks if device in oscilliscope mode
		if (mode == 0) {

			triggerLevel = 1 + (sampleAverage[2] * (62 - 1) / 4096); // Normalises trigger level to between 1 and 62

			voltageDiv = 1 + (sampleAverage[1] * (5 - 1) / 4096); // normalise to between 0 and 5 for voltage division

			sampleAverage[0] = (sampleAverage[0] * 6 / 4096); // normalise to between 0 and 6 for time divisions

			//10 pixels per division hence sampleSkip=sampleRate X timeDiv /10
			switch (sampleAverage[0]) {
			case 0:
				timeDiv = 0.1; //0.1mS
				sampleSkip = 1; //0.96
				break;
			case 1:
				timeDiv = 0.5; //0.5mS
				sampleSkip = 5; //4.8
				break;
			case 2:
				timeDiv = 1; //1mS
				sampleSkip = 10; //9.6
				break;
			case 3:
				timeDiv = 2; //2mS
				sampleSkip = 19; //19.2
				break;
			case 4:
				timeDiv = 5; //5mS
				sampleSkip = 48; //48
				break;
			case 5:
				timeDiv = 10; //10mS
				sampleSkip = 96; //96
				break;
			}

			printf(
					"\rTime Div = %.1f mS, Voltage Div = %.2f v,TriggerLevel= %d ",
					timeDiv, (float) voltageDiv / 4, triggerLevel);

			fflush(stdout);
			//Checks if device in signal generator mode
		} else if (mode == 1) {

			frequency[0] = ((50 + (sampleAverage[3] * (20000 - 50) / 4096)) / 50
					* 50); // normalise to 50-20000 and assigns to frequency1
			frequency[1] = ((50 + (sampleAverage[4] * (20000 - 50) / 4096)) / 50
					* 50); // normalise to 50-20000 and assigns to frequency2

			drawNumber(18, 19, frequency[0], 4);
			drawNumber(82, 19, frequency[1], 4);

			amplitude[0] = (float) sampleAverage[1] / 4096;
			amplitude[1] = (float) sampleAverage[2] / 4096;
			drawNumber(42, 30, sampleAverage[1] * (100) / 4096, 1);
			drawNumber(106, 30, sampleAverage[2] * (100) / 4096, 1);
		}

		updateDisplay();
		usleep(30000);
	}
	pthread_exit(NULL);

}