void LfpDisplayCanvas::renderOpenGL() { glClear(GL_COLOR_BUFFER_BIT); // clear buffers to preset values //drawTicks(); updateScreenBuffer(); for (int i = 0; i < nChans; i++) { bool isSelected = false; if (selectedChan == i) isSelected = true; if (checkBounds(i)) { setViewport(i); //drawBorder(isSelected); drawChannelInfo(i,isSelected); drawWaveform(i,isSelected); } } drawScrollBars(); //std::cout << "Render." << std::endl; }
void LfpDisplayCanvas::renderOpenGL() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); // clear buffers to preset values //glClear(GL_COLOR_BUFFER_BIT); // clear buffers to preset values if (animationIsActive) updateScreenBuffer(); for (int i = 0; i < nChans; i++) { bool isSelected = false; if (selectedChan == i) isSelected = true; if (checkBounds(i)) { //setViewport(i); //drawBorder(isSelected); drawWaveform(i,isSelected); drawChannelInfo(i,isSelected); } } drawScrollBars(); drawProgressBar(); drawTimeline(); // glFlush(); swapBuffers(); }
bool GdImageRenderer::create( const WaveformBuffer& buffer, const double start_time, const int image_width, const int image_height, const WaveformColors& colors, const bool render_axis_labels) { if (start_time < 0.0) { error_stream << "Invalid start time: minimum 0\n"; return false; } else if (start_time > MAX_START_TIME) { error_stream << "Invalid start time: maximum " << MAX_START_TIME << '\n'; return false; } if (image_width < 1) { error_stream << "Invalid image width: minimum 1\n"; return false; } if (image_height < 1) { error_stream << "Invalid image height: minimum 1\n"; return false; } const int sample_rate = buffer.getSampleRate(); if (sample_rate > MAX_SAMPLE_RATE) { error_stream << "Invalid sample rate: " << sample_rate << " Hz, maximum " << MAX_SAMPLE_RATE << " Hz\n"; return false; } const int samples_per_pixel = buffer.getSamplesPerPixel(); if (samples_per_pixel > MAX_ZOOM) { error_stream << "Invalid zoom: maximum " << MAX_ZOOM << '\n'; return false; } image_ = gdImageCreateTrueColor(image_width, image_height); if (image_ == nullptr) { error_stream << "Failed to create image\n"; return false; } assert(sample_rate != 0); assert(samples_per_pixel != 0); image_width_ = image_width; image_height_ = image_height; start_time_ = start_time; sample_rate_ = buffer.getSampleRate(); samples_per_pixel_ = samples_per_pixel; start_index_ = secondsToPixels(start_time); render_axis_labels_ = render_axis_labels; output_stream << "Image dimensions: " << image_width_ << "x" << image_height_ << " pixels" << "\nSample rate: " << sample_rate_ << " Hz" << "\nSamples per pixel: " << samples_per_pixel_ << "\nStart time: " << start_time_ << " seconds" << "\nStart index: " << start_index_ << "\nBuffer size: " << buffer.getSize() << "\nAxis labels: " << (render_axis_labels_ ? "yes" : "no") << std::endl; if (colors.hasAlpha()) { gdImageSaveAlpha(image_, 1); gdImageAlphaBlending(image_, 0); } initColors(colors); drawBackground(); if (render_axis_labels_) { drawBorder(); } drawWaveform(buffer); if (render_axis_labels_) { drawTimeAxisLabels(); } return true; }
void SpikeViewer::renderOpenGL() { if (eventBuffer->getNumEvents() > 0) { glRasterPos2f(0.1,0.1); //const char* str = "i"; // void* font = GLUT_BITMAP_8_BY_13; // glutBitmapCharacter(font,54); // drawBorder(); //std::cout << "Events received by Spike Viewer." << std::endl; MidiBuffer::Iterator i (*eventBuffer); MidiMessage message(0xf4); int samplePosition; i.setNextSamplePosition(samplePosition); //Array<int> peaks; clearWaveforms(); while (i.getNextEvent (message, samplePosition)) { int numbytes = message.getRawDataSize(); int numSamples = (numbytes-2)/2; uint8* dataptr = message.getRawData(); int chan = (*dataptr<<8) + *(dataptr+1); int electrode = config->getSource(0)->getElectrodeNumberForChannel(chan); //std::cout << chan << "::" << electrode << std::endl; dataptr += 2; //glViewport(0,0,getWidth()/2,getHeight()); if (electrode == 0) { //for (int n = 0; n < 4; n++) { setViewportForWaveN(chan); float peak = drawWaveform(dataptr, numSamples); peaks.set(chan,peak*1.25); //peaks.set(chan,peak); } if (peaks.size() == 4) { drawProjections(); peaks.clear(); } //std::cout << " Bytes received: " << numbytes << std::endl; //std::cout << " Message timestamp = " << message.getTimeStamp() << std::endl; //std::cout << " Message channel: " << chan << std::endl; //std::cout << " "; //AudioDataConverters::convertInt16BEToFloat ( dataptr, // source // spikeData, // dest // numSamples, // numSamples // 2 ); // destBytesPerSample = 2 //for (int n = 0; n < numSamples; n++) { // std::cout << String(spikeData[n]) << " "; //} //std::cout << std::endl << std::endl; } // for (int ch = 0; ch < 4; ch++) // { // } //eventBuffer->clear(); } //glOrtho(0, 0.5, 0.5, 0, 0, 1); glFlush(); }
//-------------------------------------------------------------- void GrainPlayer::draw(){ drawWaveform(); }