track: store height in "units" rather than pixels

Fixes DPI scalability issue if a project ever moved from a display with
one DPI to another.
This commit is contained in:
itsmattkc
2020-08-22 00:23:46 +10:00
parent 48ac8ea509
commit f0928814fc
8 changed files with 63 additions and 42 deletions
+2 -2
View File
@@ -573,7 +573,7 @@ void TimelineWidget::IncreaseTrackHeight()
// Increase the height of each track by one "unit"
foreach (TrackOutput* t, all_tracks) {
t->SetTrackHeight(t->GetTrackHeight() + t->GetTrackHeightIncrement());
t->SetTrackHeight(t->GetTrackHeight() + TrackOutput::kTrackHeightInterval);
}
}
@@ -587,7 +587,7 @@ void TimelineWidget::DecreaseTrackHeight()
// Decrease the height of each track by one "unit"
foreach (TrackOutput* t, all_tracks) {
t->SetTrackHeight(qMax(t->GetTrackHeight() - t->GetTrackHeightIncrement(), t->GetTrackHeightMinimum()));
t->SetTrackHeight(qMax(t->GetTrackHeight() - TrackOutput::kTrackHeightInterval, TrackOutput::kTrackHeightMinimum));
}
}
@@ -84,7 +84,9 @@ void TrackView::ConnectTrackList(TrackList *list)
foreach (TrackOutput* track, list_->GetTracks()) {
TrackViewItem* item = new TrackViewItem(track);
items_.append(item);
splitter_->Insert(track->Index(), track->GetTrackHeight(), item);
splitter_->Insert(track->Index(),
track->GetTrackHeightInPixels(),
item);
}
connect(list_, &TrackList::TrackHeightChanged, splitter_, &TrackViewSplitter::SetTrackHeight);
@@ -120,12 +122,14 @@ void TrackView::ScrollbarRangeChanged(int, int max)
void TrackView::TrackHeightChanged(int index, int height)
{
list_->GetTrackAt(index)->SetTrackHeight(height);
list_->GetTrackAt(index)->SetTrackHeightInPixels(height);
}
void TrackView::InsertTrack(TrackOutput *track)
{
splitter_->Insert(track->Index(), track->GetTrackHeight(), new TrackViewItem(track));
splitter_->Insert(track->Index(),
track->GetTrackHeightInPixels(),
new TrackViewItem(track));
}
void TrackView::RemoveTrack(TrackOutput *track)
@@ -69,7 +69,7 @@ void TrackViewSplitter::HandleReceiver(TrackViewSplitterHandle *h, int diff)
int new_ele_sz = old_ele_sz + diff;
// Limit by track minimum height
new_ele_sz = qMax(new_ele_sz, TrackOutput::GetTrackHeightMinimum());
new_ele_sz = qMax(new_ele_sz, TrackOutput::GetMinimumTrackHeightInPixels());
if (alignment_ == Qt::AlignBottom) {
ele_id = count() - ele_id - 1;
@@ -207,7 +207,7 @@ void TimelineView::drawBackground(QPainter *painter, const QRectF &rect)
int line_y = 0;
foreach (TrackOutput* track, connected_track_list_->GetTracks()) {
line_y += track->GetTrackHeight();
line_y += track->GetTrackHeightInPixels();
// One px gap between tracks
line_y++;
@@ -375,10 +375,10 @@ int TimelineView::GetTrackY(int track_index) const
int TimelineView::GetTrackHeight(int track_index) const
{
if (!connected_track_list_ || track_index >= connected_track_list_->GetTrackCount()) {
return TrackOutput::GetDefaultTrackHeight();
return TrackOutput::GetDefaultTrackHeightInPixels();
}
return connected_track_list_->GetTrackAt(track_index)->GetTrackHeight();
return connected_track_list_->GetTrackAt(track_index)->GetTrackHeightInPixels();
}
QPoint TimelineView::GetScrollCoordinates() const
@@ -119,7 +119,7 @@ void TimelineViewBlockItem::paint(QPainter *painter, const QStyleOptionGraphicsI
painter->setPen(Qt::lightGray);
}
int text_top = TrackOutput::GetTrackHeightMinimum() / 2 - painter->fontMetrics().height() / 2;
int text_top = TrackOutput::GetMinimumTrackHeightInPixels() / 2 - painter->fontMetrics().height() / 2;
QRectF text_rect = rect();
text_rect.adjust(0, text_top, 0, 0);
painter->drawText(text_rect, Qt::AlignLeft | Qt::AlignTop, block_->GetLabel());