19 #include <QApplication>
75 #if defined(Q_OS_LINUX)
117 #if defined(Q_OS_WIN)
159 #if defined(Q_OS_MAC)
202 class PianoKeybd::PianoKeybdPrivate {
204 PianoKeybdPrivate(): m_rotation(0), m_scene(nullptr), m_rawMap(nullptr)
206 ~PianoKeybdPrivate() =
default;
247 d->m_scene->setRawKeyboardMode(
false);
260 return d->m_scene->getPianoHandler();
273 d->m_scene->setPianoHandler(handler);
282 return d->m_scene->getHighlightPalette();
293 d->m_scene->setHighlightPalette(p);
302 return d->m_scene->getBackgroundPalette();
311 d->m_scene->setBackgroundPalette(p);
321 return d->m_scene->getForegroundPalette();
331 d->m_scene->setForegroundPalette(p);
340 return d->m_scene->showColorScale();
349 d->m_scene->setShowColorScale(show);
363 d->m_scene->useCustomNoteNames(names);
372 d->m_scene->useStandardNoteNames();
381 return d->m_scene->customNoteNames();
390 return d->m_scene->standardNoteNames();
400 d->m_scene->retranslate();
412 d->m_scene =
new PianoScene(base, num, strt, c,
this);
417 setScene(d->m_scene);
426 setAttribute(Qt::WA_AcceptTouchEvents);
427 setAttribute(Qt::WA_InputMethodEnabled,
false);
428 setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
429 setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
430 setCacheMode(CacheBackground);
431 setViewportUpdateMode(MinimalViewportUpdate);
432 setRenderHints(QPainter::Antialiasing|QPainter::TextAntialiasing|QPainter::SmoothPixmapTransform);
433 setOptimizationFlag(DontClipPainter,
true);
434 setOptimizationFlag(DontSavePainterState,
true);
435 setOptimizationFlag(DontAdjustForAntialiasing,
true);
436 setBackgroundBrush(QApplication::palette().window());
447 QGraphicsView::resizeEvent(event);
448 fitInView(d->m_scene->sceneRect(), Qt::KeepAspectRatio);
459 if ( numKeys != d->m_scene->numKeys() ||
startKey != d->m_scene->startKey() )
461 int baseOctave = d->m_scene->baseOctave();
462 QColor color = d->m_scene->getKeyPressedColor();
464 KeyboardMap* keyMap = d->m_scene->getKeyboardMap();
465 PianoPalette highlighPalette = d->m_scene->getHighlightPalette();
466 PianoPalette backgroundPalette = d->m_scene->getBackgroundPalette();
467 PianoPalette foregroundPalette = d->m_scene->getForegroundPalette();
468 bool keyboardEnabled = d->m_scene->isKeyboardEnabled();
469 bool mouseEnabled = d->m_scene->isMouseEnabled();
470 bool touchEnabled = d->m_scene->isTouchEnabled();
471 bool showScale = d->m_scene->showColorScale();
476 QStringList customNames = d->m_scene->customNoteNames();
479 d->m_scene->setPianoHandler(handler);
480 d->m_scene->setKeyboardMap(keyMap);
481 d->m_scene->setHighlightPalette(highlighPalette);
482 d->m_scene->setBackgroundPalette(backgroundPalette);
483 d->m_scene->setForegroundPalette(foregroundPalette);
484 d->m_scene->setKeyboardEnabled(keyboardEnabled);
485 d->m_scene->setMouseEnabled(mouseEnabled);
486 d->m_scene->setTouchEnabled(touchEnabled);
487 d->m_scene->setShowColorScale(showScale);
488 d->m_scene->setShowLabels(showLabels);
489 d->m_scene->setAlterations(alteration);
490 d->m_scene->setOctave(octave);
491 d->m_scene->setOrientation(orientation);
492 if (customNames.isEmpty()) {
493 d->m_scene->useStandardNoteNames();
495 d->m_scene->useCustomNoteNames(customNames);
497 fitInView(d->m_scene->sceneRect(), Qt::KeepAspectRatio);
507 if (r != d->m_rotation) {
510 rotate(d->m_rotation);
511 fitInView(d->m_scene->sceneRect(), Qt::KeepAspectRatio);
521 return mapFromScene(sceneRect()).boundingRect().size();
527 if (d->m_scene->isKeyboardEnabled() && d->m_rawMap !=
nullptr && d->m_rawMap->contains(keycode)) {
528 d->m_scene->keyOn(d->m_rawMap->value(keycode));
536 if (d->m_scene->isKeyboardEnabled() && d->m_rawMap !=
nullptr && d->m_rawMap->contains(keycode)) {
537 d->m_scene->keyOff(d->m_rawMap->value(keycode));
548 int PianoKeybd::baseOctave()
const
550 return d->m_scene->baseOctave();
559 d->m_scene->setBaseOctave(baseOctave);
567 int PianoKeybd::numKeys()
const
569 return d->m_scene->numKeys();
578 return d->m_scene->startKey();
587 return d->m_rotation;
596 return d->m_scene->getKeyPressedColor();
607 d->m_scene->setKeyPressedColor(c);
615 d->m_scene->resetKeyPressedColor();
625 return d->m_scene->showLabels();
635 d->m_scene->setShowLabels(show);
645 return d->m_scene->alterations();
655 d->m_scene->setAlterations(use);
665 return d->m_scene->getOrientation();
675 d->m_scene->setOrientation(orientation);
685 return d->m_scene->getOctave();
695 d->m_scene->setOctave(octave);
705 return d->m_scene->getTranspose();
715 d->m_scene->setTranspose(t);
724 return d->m_scene->getChannel();
733 d->m_scene->setChannel(c);
743 return d->m_scene->getVelocity();
753 d->m_scene->setVelocity(v);
762 return d->m_scene->isKeyboardEnabled();
771 d->m_scene->setKeyboardEnabled(enable);
780 return d->m_scene->isMouseEnabled();
789 d->m_scene->setMouseEnabled(enable);
798 return d->m_scene->isTouchEnabled();
807 d->m_scene->setTouchEnabled(enable);
816 return d->m_scene->velocityTint();
825 d->m_scene->setVelocityTint(enable);
833 d->m_scene->allKeysOff();
842 d->m_scene->setKeyboardMap(m);
851 return d->m_scene->getKeyboardMap();
868 return d->m_scene->getRawKeyboardMode();
877 d->m_scene->setRawKeyboardMode(b);
914 d->m_scene->showNoteOn(note, color, vel);
924 d->m_scene->showNoteOn(note, vel);
934 d->m_scene->showNoteOff(note, vel);
943 QWidget::setFont(font);
944 d->m_scene->setFont(font);
945 d->m_scene->refreshLabels();
The QGraphicsView class provides a widget for displaying the contents of a QGraphicsScene.
PianoScene class declaration.