Add zoom 12.5%

This commit is contained in:
Oskar Wallgren
2016-01-26 07:04:28 +01:00
parent a42a3c5346
commit 36c181dbea
6 changed files with 50 additions and 30 deletions

View File

@@ -27,6 +27,7 @@
#define AUTOMATION_EDITOR_H
#include <QtCore/QMutex>
#include <QVector>
#include <QWidget>
#include "Editor.h"
@@ -186,6 +187,8 @@ private:
ComboBoxModel m_zoomingYModel;
ComboBoxModel m_quantizeModel;
static const QVector<double> m_zoomXLevels;
FloatModel * m_tensionModel;
QMutex m_patternMutex;
@@ -252,6 +255,7 @@ signals:
class AutomationEditorWindow : public Editor
{
Q_OBJECT

View File

@@ -27,6 +27,7 @@
#ifndef PIANO_ROLL_H
#define PIANO_ROLL_H
#include <QVector>
#include <QWidget>
#include <QInputDialog>
@@ -292,6 +293,7 @@ private:
ComboBoxModel m_scaleModel;
ComboBoxModel m_chordModel;
static const QVector<double> m_zoomLevels;
Pattern* m_pattern;
QScrollBar * m_leftRightScroll;
@@ -386,6 +388,8 @@ signals:
} ;
class PianoRollWindow : public Editor, SerializingObject
{
Q_OBJECT

View File

@@ -27,6 +27,8 @@
#ifndef SONG_EDITOR_H
#define SONG_EDITOR_H
#include <QVector>
#include "Editor.h"
#include "TrackContainerView.h"
@@ -124,6 +126,8 @@ private:
ComboBoxModel* m_zoomingModel;
static const QVector<double> m_zoomLevels;
bool m_scrollBack;
bool m_smoothScroll;
@@ -133,6 +137,9 @@ private:
} ;
class SongEditorWindow : public Editor
{
Q_OBJECT

View File

@@ -75,6 +75,8 @@ QPixmap * AutomationEditor::s_toolMove = NULL;
QPixmap * AutomationEditor::s_toolYFlip = NULL;
QPixmap * AutomationEditor::s_toolXFlip = NULL;
const QVector<double> AutomationEditor::m_zoomXLevels =
{ 0.125f, 0.25f, 0.5f, 1.0f, 2.0f, 4.0f, 8.0f };
@@ -1491,11 +1493,11 @@ void AutomationEditor::wheelEvent(QWheelEvent * we )
int x = m_zoomingXModel.value();
if( we->delta() > 0 )
{
x++;
x--;
}
if( we->delta() < 0 )
{
x--;
x++;
}
x = qBound( 0, x, m_zoomingXModel.size() - 1 );
m_zoomingXModel.setValue( x );
@@ -1917,8 +1919,7 @@ void AutomationEditor::updatePosition(const MidiTime & t )
void AutomationEditor::zoomingXChanged()
{
const QString & zfac = m_zoomingXModel.currentText();
m_ppt = zfac.left( zfac.length() - 1 ).toInt() * DEFAULT_PPT / 100;
m_ppt = m_zoomXLevels[m_zoomingXModel.value()] * DEFAULT_PPT;
assert( m_ppt > 0 );
@@ -2208,9 +2209,9 @@ AutomationEditorWindow::AutomationEditorWindow() :
m_zoomingXComboBox = new ComboBox( zoomToolBar );
m_zoomingXComboBox->setFixedSize( 80, 22 );
for( int i = 0; i < 6; ++i )
for( float const & zoomLevel : m_editor->m_zoomXLevels )
{
m_editor->m_zoomingXModel.addItem( QString::number( 25 << i ) + "%" );
m_editor->m_zoomingXModel.addItem( QString( "%1\%" ).arg( zoomLevel * 100 ) );
}
m_editor->m_zoomingXModel.setValue( m_editor->m_zoomingXModel.findText( "100%" ) );

View File

@@ -152,6 +152,9 @@ PianoRoll::PianoRollKeyTypes PianoRoll::prKeyOrder[] =
const int DEFAULT_PR_PPT = KEY_LINE_HEIGHT * DefaultStepsPerTact;
const QVector<double> PianoRoll::m_zoomLevels =
{ 0.125f, 0.25f, 0.5f, 1.0f, 2.0f, 4.0f, 8.0f };
PianoRoll::PianoRoll() :
m_nemStr( QVector<QString>() ),
@@ -350,9 +353,9 @@ PianoRoll::PianoRoll() :
SLOT( verScrolled( int ) ) );
// setup zooming-stuff
for( int i = 0; i < 6; ++i )
for( float const & zoomLevel : m_zoomLevels )
{
m_zoomingModel.addItem( QString::number( 25 << i ) + "%" );
m_zoomingModel.addItem( QString( "%1\%" ).arg( zoomLevel * 100 ) );
}
m_zoomingModel.setValue( m_zoomingModel.findText( "100%" ) );
connect( &m_zoomingModel, SIGNAL( dataChanged() ),
@@ -3255,11 +3258,11 @@ void PianoRoll::wheelEvent(QWheelEvent * we )
int z = m_zoomingModel.value();
if( we->delta() > 0 )
{
z++;
z--;
}
if( we->delta() < 0 )
{
z--;
z++;
}
z = qBound( 0, z, m_zoomingModel.size() - 1 );
// update combobox with zooming-factor
@@ -3853,8 +3856,7 @@ void PianoRoll::updatePositionAccompany( const MidiTime & t )
void PianoRoll::zoomingChanged()
{
const QString & zfac = m_zoomingModel.currentText();
m_ppt = zfac.left( zfac.length() - 1 ).toInt() * DEFAULT_PR_PPT / 100;
m_ppt = m_zoomLevels[m_zoomingModel.value()] * DEFAULT_PR_PPT;
assert( m_ppt > 0 );
@@ -3871,6 +3873,8 @@ void PianoRoll::quantizeChanged()
}
int PianoRoll::quantization() const
{
if( m_quantizeModel.value() == 0 )

View File

@@ -73,7 +73,8 @@ void positionLine::paintEvent( QPaintEvent * pe )
p.fillRect( rect(), QColor( 255, 255, 255, 153 ) );
}
const QVector<double> SongEditor::m_zoomLevels =
{ 0.125f, 0.25f, 0.5f, 1.0f, 2.0f, 4.0f, 8.0f, 16.0f };
SongEditor::SongEditor( Song * song ) :
@@ -242,10 +243,9 @@ SongEditor::SongEditor( Song * song ) :
this, SLOT( updateScrollBar( int ) ) );
// Set up zooming model
for( int i = 0; i < 7; ++i )
for( float const & zoomLevel : m_zoomLevels )
{
m_zoomingModel->addItem(
QString::number( 25 << i ) + "%" );
m_zoomingModel->addItem( QString( "%1\%" ).arg( zoomLevel * 100 ) );
}
m_zoomingModel->setInitValue(
m_zoomingModel->findText( "100%" ) );
@@ -360,22 +360,20 @@ void SongEditor::wheelEvent( QWheelEvent * we )
{
if( gui->mainWindow()->isCtrlPressed() == true )
{
int z = m_zoomingModel->value();
if( we->delta() > 0 )
{
setPixelsPerTact( (int) qMin( pixelsPerTact() * 2,
256.0f ) );
z--;
}
else if( pixelsPerTact() >= 8 )
if( we->delta() < 0 )
{
setPixelsPerTact( (int) pixelsPerTact() / 2 );
z++;
}
z = qBound( 0, z, m_zoomingModel->size() - 1 );
// update combobox with zooming-factor
m_zoomingModel->setValue(
m_zoomingModel->findText(
QString::number(
static_cast<int>( pixelsPerTact() *
100 / DEFAULT_PIXELS_PER_TACT ) ) +
"%" ) );
m_zoomingModel->setValue( z );
// update timeline
m_song->m_playPos[Song::Mode_PlaySong].m_timeLine->
setPixelsPerTact( pixelsPerTact() );
@@ -593,9 +591,8 @@ void SongEditor::updatePosition( const MidiTime & t )
void SongEditor::zoomingChanged()
{
const QString & zfac = m_zoomingModel->currentText();
setPixelsPerTact( zfac.left( zfac.length() - 1 ).toInt() *
DEFAULT_PIXELS_PER_TACT / 100 );
setPixelsPerTact( m_zoomLevels[m_zoomingModel->value()] * DEFAULT_PIXELS_PER_TACT );
m_song->m_playPos[Song::Mode_PlaySong].m_timeLine->
setPixelsPerTact( pixelsPerTact() );
realignTracks();
@@ -603,13 +600,16 @@ void SongEditor::zoomingChanged()
bool SongEditor::allowRubberband() const
{
return m_mode == SelectMode;
}
SongEditorWindow::SongEditorWindow( Song* song ) :
SongEditorWindow::SongEditorWindow(Song* song) :
Editor(Engine::mixer()->audioDev()->supportsCapture()),
m_editor(new SongEditor(song))
{