Mercurial > hg > svgui
comparison layer/NoteLayer.cpp @ 197:6b023411087b
* Work on harmonising colour and scale ranges between types of layer
* Add normalize options to colour 3d plot layer
| author | Chris Cannam |
|---|---|
| date | Thu, 01 Feb 2007 14:31:28 +0000 |
| parents | 33929e0c3c6b |
| children | c2ed5014d4ff |
comparison
equal
deleted
inserted
replaced
| 196:22c99c8aa1e0 | 197:6b023411087b |
|---|---|
| 17 | 17 |
| 18 #include "data/model/Model.h" | 18 #include "data/model/Model.h" |
| 19 #include "base/RealTime.h" | 19 #include "base/RealTime.h" |
| 20 #include "base/Profiler.h" | 20 #include "base/Profiler.h" |
| 21 #include "base/Pitch.h" | 21 #include "base/Pitch.h" |
| 22 #include "base/LogRange.h" | |
| 22 #include "view/View.h" | 23 #include "view/View.h" |
| 23 | 24 |
| 24 #include "data/model/NoteModel.h" | 25 #include "data/model/NoteModel.h" |
| 25 | 26 |
| 26 #include "widgets/ItemEditDialog.h" | 27 #include "widgets/ItemEditDialog.h" |
| 483 | 484 |
| 484 std::cerr << "NoteLayer[" << this << "]::getScaleExtents: min = " << min << ", max = " << max << ", log = " << log << std::endl; | 485 std::cerr << "NoteLayer[" << this << "]::getScaleExtents: min = " << min << ", max = " << max << ", log = " << log << std::endl; |
| 485 | 486 |
| 486 } else if (log) { | 487 } else if (log) { |
| 487 | 488 |
| 488 min = (min < 0.0) ? -log10(-min) : (min == 0.0) ? 0.0 : log10(min); | 489 LogRange::mapRange(min, max); |
| 489 max = (max < 0.0) ? -log10(-max) : (max == 0.0) ? 0.0 : log10(max); | |
| 490 | 490 |
| 491 std::cerr << "NoteLayer[" << this << "]::getScaleExtents: min = " << min << ", max = " << max << ", log = " << log << std::endl; | 491 std::cerr << "NoteLayer[" << this << "]::getScaleExtents: min = " << min << ", max = " << max << ", log = " << log << std::endl; |
| 492 | 492 |
| 493 } | 493 } |
| 494 | 494 |
| 504 min = Pitch::getFrequencyForPitch(lrintf(min)); | 504 min = Pitch::getFrequencyForPitch(lrintf(min)); |
| 505 max = Pitch::getFrequencyForPitch(lrintf(max + 1)); | 505 max = Pitch::getFrequencyForPitch(lrintf(max + 1)); |
| 506 } | 506 } |
| 507 | 507 |
| 508 if (m_verticalScale == LogScale || m_verticalScale == MIDIRangeScale) { | 508 if (m_verticalScale == LogScale || m_verticalScale == MIDIRangeScale) { |
| 509 min = (min < 0.0) ? -log10(-min) : (min == 0.0) ? 0.0 : log10(min); | 509 LogRange::mapRange(min, max); |
| 510 max = (max < 0.0) ? -log10(-max) : (max == 0.0) ? 0.0 : log10(max); | |
| 511 log = true; | 510 log = true; |
| 512 } | 511 } |
| 513 } | 512 } |
| 514 | 513 |
| 515 if (max == min) max = min + 1.0; | 514 if (max == min) max = min + 1.0; |
| 531 lrintf((val - lrintf(val)) * 100)); | 530 lrintf((val - lrintf(val)) * 100)); |
| 532 // std::cerr << "shouldConvertMIDIToHz true, val now = " << val << std::endl; | 531 // std::cerr << "shouldConvertMIDIToHz true, val now = " << val << std::endl; |
| 533 } | 532 } |
| 534 | 533 |
| 535 if (logarithmic) { | 534 if (logarithmic) { |
| 536 val = (val < 0.0) ? -log10(-val) : (val == 0.0) ? 0.0 : log10(val); | 535 val = LogRange::map(val); |
| 537 // std::cerr << "logarithmic true, val now = " << val << std::endl; | 536 // std::cerr << "logarithmic true, val now = " << val << std::endl; |
| 538 } | 537 } |
| 539 | 538 |
| 540 int y = int(h - ((val - min) * h) / (max - min)) - 1; | 539 int y = int(h - ((val - min) * h) / (max - min)) - 1; |
| 541 // std::cerr << "y = " << y << std::endl; | 540 // std::cerr << "y = " << y << std::endl; |
| 552 getScaleExtents(v, min, max, logarithmic); | 551 getScaleExtents(v, min, max, logarithmic); |
| 553 | 552 |
| 554 float val = min + (float(h - y) * float(max - min)) / h; | 553 float val = min + (float(h - y) * float(max - min)) / h; |
| 555 | 554 |
| 556 if (logarithmic) { | 555 if (logarithmic) { |
| 557 val = pow(10, val); | 556 val = powf(10.f, val); |
| 558 } | 557 } |
| 559 | 558 |
| 560 if (shouldConvertMIDIToHz()) { | 559 if (shouldConvertMIDIToHz()) { |
| 561 val = Pitch::getPitchForFrequency(val); | 560 val = Pitch::getPitchForFrequency(val); |
| 562 } | 561 } |
