362 QPainter widget_painter(
this);
369 if (redraw_all || widget_resized || (dirty_lines>0)) {
373 if (is_drawing && (redraw_all || (dirty_lines>0))) {
375 QSize waterfall_size(m_cols,m_rows);
376 QImage new_waterfall(waterfall_size,QImage::Format_RGB32);
377 new_waterfall.fill(0);
378 QPainter waterfall_painter(&new_waterfall);
379 waterfall_painter.fillRect(new_waterfall.rect(),back_color);
381 if (!(data.empty())) {
383 list< vector<float> >::const_iterator it;
389 for(it = data.begin(); it != data.end(); it++) {
390 t_line = (QRgb*)(new_waterfall.scanLine(it_count));
391 drawLine(t_line, *it);
399 else if (dirty_lines>0) {
402 target.setTopLeft(QPoint(0,dirty_lines));
403 target.setWidth(new_waterfall.width());
404 target.setHeight((new_waterfall.height())-dirty_lines);
405 source.setTopLeft(QPoint(0,0));
406 source.setWidth(waterfall.width());
407 source.setHeight((waterfall.height())-dirty_lines);
409 waterfall_painter.drawImage(target,waterfall,source);
412 for(it = data.begin(); ((dirty_lines>0) && (it != data.end())); it++) {
413 t_line = (QRgb*)(new_waterfall.scanLine(it_count));
414 drawLine(t_line, *it);
423 waterfall_painter.end();
427 waterfall = new_waterfall;
434 widget_resized =
true;
439 if (widget_resized) {
440 QImage new_buffer(size(),QImage::Format_RGB32);
443 QPainter buffer_painter(&new_buffer);
444 buffer_painter.fillRect(new_buffer.rect(), back_color);
459 target = new_buffer.rect();
460 source = waterfall.rect();
461 buffer_painter.drawImage(target,waterfall,source);
467 source = waterfall.rect();
468 wf_aspect = (float)(waterfall.width())/(
float)(waterfall.height());
469 bf_aspect = (float)(new_buffer.width())/(
float)(new_buffer.height());
470 if (wf_aspect >= bf_aspect) {
472 m_width = new_buffer.width();
473 m_height = (int)((
float)((new_buffer.width())*(waterfall.height()))/(float)(waterfall.width()));
474 m_y = ((new_buffer.height()) - m_height) / 2;
478 m_height = new_buffer.height();
479 m_width = wf_aspect * (float)(new_buffer.height());
480 m_x = ((new_buffer.width()) - m_width) / 2;
482 target.setTopLeft(QPoint(m_x,m_y));
483 target.setHeight(m_height);
484 target.setWidth(m_width);
485 buffer_painter.drawImage(target,waterfall,source);
492 source = waterfall.rect();
493 qDebug()<<
"QWaterfallDisplay: Resize Type:"<<m_resizes<<
"not implemented ATM!";
498 target.setTopLeft(QPoint(0,0));
499 source.setTopLeft(QPoint(0,0));
500 if (new_buffer.width() > waterfall.width())
501 copy_size.setWidth(waterfall.width());
503 copy_size.setWidth(new_buffer.width());
504 if (new_buffer.height() > waterfall.height())
505 copy_size.setHeight(waterfall.height());
507 copy_size.setHeight(new_buffer.height());
508 target.setSize(copy_size);
509 source.setSize(copy_size);
512 buffer_painter.drawImage(target,waterfall,source);
516 qDebug()<<
"QWaterfallDisplay: Resize Type: "<<m_resizes<<
" not implemented ATM!";
520 qDebug()<<
"QWaterfallDisplay: Unkown Resize Type: "<<m_resizes;
525 buffer_painter.end();
528 m_buffer = new_buffer;
531 widget_resized =
false;
536 widget_painter.drawImage(event->rect(),m_buffer,
event->rect());
541 widget_painter.drawImage(event->rect(),m_buffer,
event->rect());
545 widget_painter.end();