static void Draw(void) { glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); glRotatef(Xrot, 1, 0, 0); glRotatef(Yrot, 0, 1, 0); glPushMatrix(); glTranslatef(0, +1.2, 0); DrawSample(GL_FALSE); glPopMatrix(); /* set Mesa back-door state for testing cylindrical wrap mode */ if (CylWrap) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 0.125); glPushMatrix(); glTranslatef(0, -1.2, 0); DrawSample(GL_TRUE); glPopMatrix(); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 1.0); glPopMatrix(); glutSwapBuffers(); }
void DrawSignal( uint32_t Voffset, uSample * PrevData, uSample * CurrData, uint16_t PrevColor, uint16_t CurrColor) { register uint32_t i = SIGNAL_HSTART+1; register SampleRet Prev; register SampleRet Curr; Prev.C = CurrData[SIGNAL_HSTART].i + Voffset; if (Prev.C <= GRID_RECT_START_Y) Prev.C = GRID_RECT_START_Y+1; if (Prev.C >= GRID_RECT_END_Y) Prev.C = GRID_RECT_END_Y-1; Prev.P = PrevData[SIGNAL_HSTART].i + Voffset; if (Prev.P <= GRID_RECT_START_Y) Prev.P = GRID_RECT_START_Y+1; if (Prev.P >= GRID_RECT_END_Y) Prev.P = GRID_RECT_END_Y-1; for (; i < SIGNAL_HSTOP; ++i) { /* Prev = PrevData[i].i + Voffset; lastPrev = DrawSample(PrevColor,i,Prev,lastPrev); Curr = CurrData[i].i + Voffset; lastCurr = DrawSample(CurrColor,i,Curr,lastCurr);*/ Curr.P = PrevData[i].i + Voffset; Curr.C = CurrData[i].i + Voffset; /* avoid drawing out of grid only once per sample (return value)*/ if (Curr.P <= GRID_RECT_START_Y) Curr.P = GRID_RECT_START_Y+1; if (Curr.P >= GRID_RECT_END_Y) Curr.P = GRID_RECT_END_Y-1; if (Curr.C <= GRID_RECT_START_Y) Curr.C = GRID_RECT_START_Y+1; if (Curr.C >= GRID_RECT_END_Y) Curr.C = GRID_RECT_END_Y-1; DrawSample(PrevColor, CurrColor, i, Prev, Curr); Prev = Curr; } }