You can subscribe to this list here.
2008 |
Jan
|
Feb
|
Mar
(58) |
Apr
(100) |
May
(92) |
Jun
(12) |
Jul
|
Aug
|
Sep
(5) |
Oct
(1) |
Nov
(26) |
Dec
(29) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2009 |
Jan
(31) |
Feb
(20) |
Mar
(1) |
Apr
|
May
(5) |
Jun
(10) |
Jul
|
Aug
(2) |
Sep
|
Oct
(2) |
Nov
|
Dec
(1) |
2010 |
Jan
(1) |
Feb
(1) |
Mar
|
Apr
(36) |
May
(10) |
Jun
|
Jul
(38) |
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
(6) |
Mar
(8) |
Apr
|
May
|
Jun
|
Jul
(14) |
Aug
(56) |
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(13) |
Dec
(2) |
2013 |
Jan
(30) |
Feb
|
Mar
(43) |
Apr
(28) |
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
(10) |
Nov
(2) |
Dec
|
2014 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <pst...@us...> - 2008-03-21 05:58:23
|
Revision: 346 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=346&view=rev Author: pstieber Date: 2008-03-20 22:58:22 -0700 (Thu, 20 Mar 2008) Log Message: ----------- Updated some piano window related code. Modified Paths: -------------- trunk/jazz/src/Harmony.cpp Modified: trunk/jazz/src/Harmony.cpp =================================================================== --- trunk/jazz/src/Harmony.cpp 2008-03-21 05:57:34 UTC (rev 345) +++ trunk/jazz/src/Harmony.cpp 2008-03-21 05:58:22 UTC (rev 346) @@ -29,6 +29,7 @@ #include "TrackFrame.h" #include "TrackWindow.h" #include "PianoFrame.h" +#include "PianoWindow.h" #include "GuitarFrame.h" #include "Song.h" #include "Filter.h" @@ -835,7 +836,7 @@ if (cnvs->mark_piano) { - tEventArray &buf = gpTrackFrame->GetPianoWindow()->PasteBuffer; + tEventArray &buf = gpTrackFrame->GetPianoWindow()->mPasteBuffer; for (int i = 0; i < buf.nEvents; i++) { tKeyOn *on = buf.Events[i]->IsKeyOn(); @@ -1011,7 +1012,7 @@ player.StartPlay(context); } - if ((e.LeftDown() || e.MiddleDown()) ) // && context != mouse_context) + if (e.LeftDown() || e.MiddleDown()) // && context != mouse_context) { DrawMarkers(mouse_context, dc); mouse_context = context; @@ -1021,10 +1022,10 @@ // paste to PianoWin buffer if (!mark_piano) { - tEventArray &buf = gpTrackFrame->GetPianoWindow()->PasteBuffer; + tEventArray &buf = gpTrackFrame->GetPianoWindow()->mPasteBuffer; buf.Clear(); player.Paste(buf); - gpTrackFrame->GetPianoWindow()->Redraw(); + gpTrackFrame->GetPianoWindow()->Refresh(); } // Show in GuitarWin This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-21 05:57:35
|
Revision: 345 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=345&view=rev Author: pstieber Date: 2008-03-20 22:57:34 -0700 (Thu, 20 Mar 2008) Log Message: ----------- Massively refactored this code. Mainly moved functionality from the frame to the window. Modified Paths: -------------- trunk/jazz/src/PianoFrame.cpp trunk/jazz/src/PianoFrame.h trunk/jazz/src/PianoWindow.cpp trunk/jazz/src/PianoWindow.h Modified: trunk/jazz/src/PianoFrame.cpp =================================================================== --- trunk/jazz/src/PianoFrame.cpp 2008-03-21 05:56:35 UTC (rev 344) +++ trunk/jazz/src/PianoFrame.cpp 2008-03-21 05:57:34 UTC (rev 345) @@ -30,7 +30,6 @@ #include "Track.h" #include "Synth.h" #include "StandardFile.h" -#include "Filter.h" #include "Dialogs.h" #include "Harmony.h" #include "Command.h" @@ -38,10 +37,7 @@ #include "Player.h" #include "ControlEdit.h" #include "GuitarFrame.h" -#include "HarmonyP.h" -#include "HarmonyBrowserAnalyzer.h" #include "ToolBar.h" -#include "SelectControllerDialog.h" #include "ResourceDialog.h" #include "Help.h" #include "Rectangle.h" @@ -50,69 +46,6 @@ using namespace std; -// Mouse Actions Mapping -enum -{ - MA_PLAY = 1, // 0 represents no action. - MA_CYCLE, - MA_SELECT, - MA_CONTSEL, - MA_CUTPASTE, - MA_LENGTH, - MA_DIALOG, - MA_LISTEN, - MA_COPY, - MA_VELOCITY -}; - -const int play_actions[12] = -{ - // left middle right - MA_PLAY, MA_CYCLE, 0, // plain - MA_CYCLE, 0, 0, // shift - 0, 0, 0, // ctrl - 0, 0, 0 // shift+ctrl -}; - -const int evnt_actions[12] = -{ - // left middle right - MA_SELECT, MA_CUTPASTE, MA_LENGTH, // plain - MA_CONTSEL, MA_COPY, MA_LISTEN, // shift - MA_VELOCITY, MA_DIALOG, MA_VELOCITY, // ctrl - MA_CUTPASTE, 0, MA_COPY // shift+ctrl -}; - -const char mouse_help[] = - "On Top Line:\n" - " Left Click: Start/stop play\n" - " +Shift: Start/stop cycle play\n" - " Middle Click: Start/stop cycle play\n" - "On Event Area:\n" - " Left Click: Depends on mode\n" - " +Shift: Continue selection\n" - " +Ctrl: Increase velocity\n" - " +Ctrl+Shift: Cut/paste event\n" - " Middle Click: Cut/paste event\n" - " +Shift: Copy event\n" - " +Ctrl: Event dialog\n" - " Right Click: Edit note length / change track\n" - " +Shift: Play pitch\n" - " +Ctrl: Decrease velocity\n" - " +Ctrl+Shift: Copy event\n"; - - -static int PianoFontSizes[] = -{ - 6, // Tiny - 7, // Small - 8, // Medium - 10, // Large - 12, // Huge - -1, // End of list -}; - - // ************************************************************************ // Menubar // ************************************************************************ @@ -123,19 +56,15 @@ #define MEN_METERCH 8 #define ACT_HELP_MOUSE 9 -#define MEN_COPY 10 #define MEN_SHIFT 11 #define MEN_QUANTIZE 12 -#define MEN_UNDO 13 #define MEN_SETCHAN 14 #define MEN_TRANSP 15 #define MEN_VELOC 16 -#define MEN_CUT 17 #define MEN_LERI 18 #define MEN_UPDN 19 #define MEN_LENGTH 20 -#define MEN_ERASE 21 #define MEN_VISIBLE 22 #define MEN_CTRL_EDIT 23 @@ -146,13 +75,8 @@ #define MEN_CTRL_MODUL 28 #define MEN_GUITAR 29 -#define MEN_HELP_PWIN 30 #define MEN_CLEANUP 31 -#define MEN_SNAP_8 32 -#define MEN_SNAP_8D 33 -#define MEN_SNAP_16 34 -#define MEN_SNAP_16D 35 #define MEN_RESET 36 #define MEN_VIS_ALL_TRK 37 #define MEN_SEARCHREP 38 @@ -162,10 +86,6 @@ #define ACT_CLOSE 41 #define MEN_CTRL_TEMPO 42 -#define MEN_MSELECT 43 -#define MEN_MLENGTH 44 -#define MEN_MDIALOG 45 -#define MEN_MCUTPASTE 46 #define MEN_REDO 47 #define MEN_ZOOMIN 48 #define MEN_ZOOMOUT 49 @@ -180,18 +100,18 @@ /* static JZToolDef tdefs[] = { - { MEN_MSELECT, TRUE, select_xpm, "select events"}, - { MEN_MLENGTH, TRUE, length_xpm, "change length"}, - { MEN_MDIALOG, TRUE, dialog_xpm, "event dialog"}, - { MEN_MCUTPASTE, TRUE, cutpaste_xpm, "cut/paste events"}, + { ID_SELECT, TRUE, select_xpm, "select events"}, + { ID_CHANGE_LENGTH, TRUE, length_xpm, "change length"}, + { ID_EVENT_DIALOG, TRUE, dialog_xpm, "event dialog"}, + { ID_CUT_PASTE_EVENTS, TRUE, cutpaste_xpm, "cut/paste events"}, { JZToolBar::eToolBarSeparator }, - { MEN_SNAP_8, TRUE, note8_xpm, "snap 1/8"}, - { MEN_SNAP_8D, TRUE, note83_xpm, "snap 1/12"}, - { MEN_SNAP_16, TRUE, note16_xpm, "snap 1/16"}, - { MEN_SNAP_16D, TRUE, note163_xpm, "snap 1/24"}, + { ID_SNAP_8, TRUE, note8_xpm, "snap 1/8"}, + { ID_SNAP_8D, TRUE, note83_xpm, "snap 1/12"}, + { ID_SNAP_16, TRUE, note16_xpm, "snap 1/16"}, + { ID_SNAP_16D, TRUE, note163_xpm, "snap 1/24"}, { JZToolBar::eToolBarSeparator }, - { MEN_CUT, FALSE, cut_xpm, "cut selection"}, - { MEN_ERASE, FALSE, delete_xpm, "delete selection"}, + { wxID_CUT, FALSE, cut_xpm, "cut selection"}, + { wxID_DELETE, FALSE, delete_xpm, "delete selection"}, { MEN_QUANTIZE, FALSE, quantize_xpm, "quantize selection"}, { MEN_SHIFTL, FALSE, shiftl_xpm, "shift selection left"}, { MEN_SHIFTR, FALSE, shiftr_xpm, "shift selection right"}, @@ -199,10 +119,10 @@ { JZToolBar::eToolBarSeparator }, { MEN_ZOOMIN, FALSE, zoomin_xpm, "zoom in"}, { MEN_ZOOMOUT, FALSE, zoomout_xpm, "zoom out"}, - { MEN_UNDO, FALSE, undo_xpm, "undo"}, + { wxID_UNDO, FALSE, undo_xpm, "undo"}, { MEN_REDO, FALSE, redo_xpm, "redo"}, { MEN_RESET, FALSE, panic_xpm, "all notes off"}, - { MEN_HELP_PWIN, FALSE, help_xpm, "help"}, + { ID_HELP_PIANO_WINDOW, FALSE, help_xpm, "help"}, { JZToolBar::eToolBarEnd } }; */ @@ -230,63 +150,6 @@ #include "Bitmaps/dialog.xpm" #include "Bitmaps/cutpaste.xpm" -// positions for controller editor -#define CtrlH(h) ((h)/4) -#define CtrlY(h) (h - CtrlH(h)) - -// ------------------------------------------------------------------------- -// MousePiano -// ------------------------------------------------------------------------- - -class tListen : public wxTimer -{ - public: - - int Active; - int Pitch, Channel; - - tListen() - : Active(0) - { - } - void KeyOn( - JZTrack *t, - int Pitch, - int Channel, - int Veloc = 64, - int Millisec = 100); - - void Notify(); - - private: - - JZTrack *track; -}; - -void tListen::KeyOn(JZTrack *t, int pitch, int channel, int veloc, int milli) -{ - if (!Active) - { - Pitch = pitch; - Channel = channel; - tKeyOn k(0, Channel, pitch, veloc); - gpMidiPlayer->OutNow(t, &k); - Active = 1; - Start(milli); - track = t; - } -} - -void tListen::Notify() -{ - Stop(); - tKeyOff k(0, Channel, Pitch); - gpMidiPlayer->OutNow(track, &k); - Active = 0; -} - -static tListen Listen; - //***************************************************************************** // Description: // This is the track piano class definition. @@ -295,30 +158,30 @@ EVT_MENU(MEN_ZOOMIN, JZPianoFrame::OnZoomIn) EVT_MENU(MEN_ZOOMOUT, JZPianoFrame::OnZoomOut) - EVT_MENU(MEN_SNAP_8, JZPianoFrame::OnSnap8) - EVT_MENU(MEN_SNAP_8D, JZPianoFrame::OnSnap8D) - EVT_MENU(MEN_SNAP_16, JZPianoFrame::OnSnap16) - EVT_MENU(MEN_SNAP_16D, JZPianoFrame::OnSnap16D) + EVT_MENU(ID_SNAP_8, JZPianoFrame::OnSnap8) + EVT_MENU(ID_SNAP_8D, JZPianoFrame::OnSnap8D) + EVT_MENU(ID_SNAP_16, JZPianoFrame::OnSnap16) + EVT_MENU(ID_SNAP_16D, JZPianoFrame::OnSnap16D) - EVT_MENU(MEN_MSELECT, JZPianoFrame::OnMSelect) - EVT_MENU(MEN_MLENGTH, JZPianoFrame::OnMLength) - EVT_MENU(MEN_MDIALOG, JZPianoFrame::OnMDialog) - EVT_MENU(MEN_MCUTPASTE, JZPianoFrame::OnMCutPaste) + EVT_MENU(ID_SELECT, JZPianoFrame::OnMSelect) + EVT_MENU(ID_CHANGE_LENGTH, JZPianoFrame::OnMLength) + EVT_MENU(ID_EVENT_DIALOG, JZPianoFrame::OnMDialog) + EVT_MENU(ID_CUT_PASTE_EVENTS, JZPianoFrame::OnMCutPaste) EVT_MENU(MEN_GUITAR, JZPianoFrame::OnGuitar) EVT_MENU(MEN_RESET, JZPianoFrame::OnReset) EVT_MENU(MEN_VIS_ALL_TRK, JZPianoFrame::OnVisibleAllTracks) - EVT_MENU(MEN_ERASE, JZPianoFrame::OnErase) - EVT_MENU(MEN_CUT, JZPianoFrame::OnCut) - EVT_MENU(MEN_COPY, JZPianoFrame::OnCopy) + EVT_MENU(wxID_DELETE, JZPianoFrame::OnErase) + EVT_MENU(wxID_CUT, JZPianoFrame::OnCut) + EVT_MENU(wxID_COPY, JZPianoFrame::OnCopy) EVT_MENU(MEN_SHIFT, JZPianoFrame::OnShift) EVT_MENU(MEN_SHIFTL, JZPianoFrame::OnShiftLeft) EVT_MENU(MEN_SHIFTR, JZPianoFrame::OnShiftRight) EVT_MENU(MEN_LERI, JZPianoFrame::OnExchangeLeftRight) EVT_MENU(MEN_UPDN, JZPianoFrame::OnExchangeUpDown) EVT_MENU(MEN_QUANTIZE, JZPianoFrame::OnQuantize) - EVT_MENU(MEN_UNDO, JZPianoFrame::OnUndo) - EVT_MENU(MEN_REDO, JZPianoFrame::OnRedo) + EVT_MENU(wxID_UNDO, JZPianoFrame::OnUndo) + EVT_MENU(wxID_REDO, JZPianoFrame::OnRedo) EVT_MENU(MEN_CTRL_PITCH, JZPianoFrame::OnCtrlPitch) EVT_MENU(MEN_CTRL_MODUL, JZPianoFrame::OnCtrlModulation) EVT_MENU(MEN_CTRL_CONTR, JZPianoFrame::OnSelectController) @@ -333,15 +196,15 @@ // EVT_MENU(MEN_SEARCHREP, JZPianoFrame::MenSearchReplace) // EVT_MENU(MEN_TRANSP, JZPianoFrame::MenTranspose) // EVT_MENU(MEN_SETCHAN, JZPianoFrame::MenSetChannel) - EVT_MENU(MEN_VELOC, JZPianoFrame::ActVelocityDialog) + EVT_MENU(MEN_VELOC, JZPianoFrame::OnActivateVelocityDialog) // EVT_MENU(MEN_LENGTH, JZPianoFrame::MenLength) - EVT_MENU(MEN_SEQLENGTH, JZPianoFrame::ActSequenceLengthDialog) - EVT_MENU(MEN_MIDIDELAY, JZPianoFrame::ActMidiDelayDialog) + EVT_MENU(MEN_MIDIDELAY, JZPianoFrame::OnActivateMidiDelayDialog) + EVT_MENU(MEN_SEQLENGTH, JZPianoFrame::OnActivateSequenceLengthDialog) // EVT_MENU(MEN_CONVERT_TO_MODULATION, JZPianoFrame::MenConvertToModulation) - EVT_MENU(ACT_SETTINGS, JZPianoFrame::ActSettingsDialog) + EVT_MENU(ACT_SETTINGS, JZPianoFrame::OnActivateSettingsDialog) EVT_MENU(MEN_FILTER, JZPianoFrame::OnFilter) - EVT_MENU(MEN_SNAP, JZPianoFrame::SnapDlg) + EVT_MENU(MEN_SNAP, JZPianoFrame::OnSnapDlg) // These are all "Patrick Approved" EVT_CLOSE(JZPianoFrame::ActCloseEvent) @@ -371,114 +234,38 @@ Position, Size, wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE), - Canvas(0), - mpFilter(0), + mpPianoWindow(0), // mpFileMenu(0), // mpEditMenu(0) - Song(pSong), - mpFont(0), - mpFixedFont(0), - MousePlay(play_actions), - MouseEvnt(evnt_actions), - mpToolBar(0), - mpGuitarFrame(0) + mpSong(pSong), + mpToolBar(0) { CreateToolBar(); // CreateMenu(); - mpFilter = new tFilter(Song); - - MouseAction = 0; DialogBox = 0; MixerForm = 0; - mTopInfoHeight = 40; - mLeftInfoWidth = 100; - mEventsX = mLeftInfoWidth; - mEventsY = mTopInfoHeight; - mEventsWidth = mEventsHeight = 0; - mTrackHeight = 0; - LittleBit = 1; - - FontSize = PianoFontSizes[1]; // Must be an entry in the array. - UseColors = 1; - - PlayClock = -1; - - hFixedFont = 0; - CanvasX = CanvasY = CanvasW = CanvasH = 0; - FromClock = ToClock = 0; - FromLine = ToLine = 0; - - InitColors(); - CreateMenu(); - mpToolBar->ToggleTool(MEN_MSELECT, TRUE); - MouseEvnt.SetLeftAction(MA_SELECT); + mpToolBar->ToggleTool(ID_SELECT, TRUE); - ClocksPerPixel = 4; + mClockTicsPerPixel = 4; - TrackNr = 0; - Track = Song->GetTrack(TrackNr); - SnapDenomiator = 16; - mpToolBar->ToggleTool(MEN_SNAP_16, TRUE); - nSnaps = 0; + mTrackIndex = 0; + mpToolBar->ToggleTool(ID_SNAP_16, TRUE); - for (int i = 0; i < eMaxTrackCount; i++) - { - mFromLines[i] = 64; - } - - DrumFont = 0; - - VisibleKeyOn = 1; - VisiblePitch = 0; - VisibleController = 0; - VisibleProgram = 0; - VisibleTempo = 0; - VisibleSysex = 0; - VisiblePlayTrack = 0; - VisibleDrumNames = 1; - VisibleAllTracks = 0; - VisibleHBChord = 1; - VisibleMono = 0; - - MouseLine = -1; - - CtrlEdit = 0; - - Canvas = new JZPianoWindow(this); - - SnapSel = new tSnapSelection(Canvas); - - Setup(); -// Canvas->SetScrollRanges(); -// Canvas->SetScrollPosition(0, 0); //this wasnt here before wx2, why? + mpPianoWindow = new JZPianoWindow(this, pSong); } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- JZPianoFrame::~JZPianoFrame() { - delete mpFont; - delete mpFixedFont; + delete mpPianoWindow; - if (CtrlEdit) - delete CtrlEdit; - if (Canvas) - delete Canvas; - if (SnapSel) - delete SnapSel; - - delete mpFilter; - delete MixerForm; - if (mpGuitarFrame) - { - delete mpGuitarFrame; - } delete mpToolBar; } @@ -518,108 +305,25 @@ mpToolBar = new JZToolBar(this, ToolBarDefinitions); } -void JZPianoFrame::Setup() -{ - // This section is from JZEventFrame::Setup() - - int lx,ly; - - wxDC *dc = new wxClientDC(Canvas); - - dc->SetFont(wxNullFont); - delete mpFixedFont; - mpFixedFont = new wxFont(12, wxSWISS, wxNORMAL, wxNORMAL); - - dc->SetFont(*mpFixedFont); - dc->GetTextExtent("M", &lx, &ly); - hFixedFont = (int)ly; - - delete mpFont; - mpFont = new wxFont(FontSize, wxSWISS, wxNORMAL, wxNORMAL); - dc->SetFont(*mpFont); - - dc->GetTextExtent("M", &lx, &ly); - LittleBit = (int)(lx/2); - - dc->GetTextExtent("HXWjgi", &lx, &ly); - mTrackHeight = (int)ly + LittleBit; - delete dc; - - - // This section is from JZPianoFrame::Setup() - - int x, y; - - dc=new wxClientDC(Canvas); - dc->SetFont(*mpFixedFont); - dc->GetTextExtent("H", &x, &y); - mTopInfoHeight = hFixedFont + 2 * LittleBit; - - dc->SetFont(*mpFont); - dc->GetTextExtent("H", &x, &y); - LittleBit = (int)(x/2); - - delete DrumFont; - DrumFont = new wxFont(FontSize+3, wxSWISS, wxNORMAL, wxNORMAL); - dc->SetFont(*DrumFont); - dc->GetTextExtent("Low Conga mid 2 or so", &x, &y); - wPiano = (int)x + LittleBit; - - mLeftInfoWidth = wPiano; - delete dc; -} - // show the guitar edit window. void JZPianoFrame::OnGuitar(wxCommandEvent& Event) { - if (!mpGuitarFrame) - { - mpGuitarFrame = new JZGuitarFrame(this); - } - mpGuitarFrame->Show(TRUE); + mpPianoWindow->CreateGuitarWindow(); } -void JZPianoFrame::NewPosition(int track, int clock) -{ - mFromLines[TrackNr] = FromLine; - // change track - if (track >= 0) - { - TrackNr = track; - Track = Song->GetTrack(TrackNr); - SetTitle(Track->GetName()); - } - - // change position - if (clock >= 0) - { - int x = Clock2x(clock); - Canvas->SetScrollPosition(x - mLeftInfoWidth, Line2y(mFromLines[TrackNr])); - } - -// SN++ Ist geaendert. OnPaint zeichnet immer neu -> Bug Fix bei ZoomOut! -/* - // OnPaint() redraws only if clock has changed - if (CtrlEdit && track >= 0) - CtrlEdit->ReInit(Track, FromClock, ClocksPerPixel); -*/ - Redraw(); -} - - void JZPianoFrame::CreateMenu() { wxMenu *win_menu = new wxMenu; win_menu->Append(ACT_CLOSE, "&Close"); wxMenu *edit_menu = new wxMenu("",wxMENU_TEAROFF); - edit_menu->Append(MEN_ERASE, "&Delete"); - edit_menu->Append(MEN_COPY, "&Copy"); - edit_menu->Append(MEN_CUT, "&Cut"); + edit_menu->Append(wxID_DELETE, "&Delete"); + edit_menu->Append(wxID_COPY, "&Copy"); + edit_menu->Append(wxID_CUT, "&Cut"); edit_menu->Append(MEN_SHIFT, "&Shift ..."); edit_menu->Append(MEN_QUANTIZE, "&Quantize ..."); edit_menu->Append(MEN_SETCHAN, "&Set MIDI Channel ..."); @@ -644,8 +348,8 @@ setting_menu->Append(MEN_METERCH, "&Meterchange ..."); wxMenu *misc_menu = new wxMenu("",wxMENU_TEAROFF); - misc_menu->Append(MEN_UNDO, "&Undo"); - misc_menu->Append(MEN_REDO, "&Redo"); + misc_menu->Append(wxID_UNDO, "&Undo"); + misc_menu->Append(wxID_REDO, "&Redo"); misc_menu->Append(MEN_CTRL_PITCH, "Edit &Pitch"); misc_menu->Append(MEN_CTRL_VELOC, "Edit &Velocity"); misc_menu->Append(MEN_CTRL_MODUL, "Edit &Modulation"); @@ -659,7 +363,7 @@ misc_menu->Append(MEN_GUITAR, "&Guitar board"); wxMenu *help_menu = new wxMenu("",wxMENU_TEAROFF); - help_menu->Append(MEN_HELP_PWIN, "&Pianowin"); + help_menu->Append(ID_HELP_PIANO_WINDOW, "&Pianowin"); help_menu->Append(ACT_HELP_MOUSE, "&Mouse"); wxMenuBar *menu_bar = new wxMenuBar; @@ -674,251 +378,99 @@ -void JZPianoFrame::OnMenuCommand(int id) +JZGuitarFrame* JZPianoFrame::GetGuitarFrame() { - int cw, ch; - GetClientSize(&cw, &ch); - - switch (id) - { - case MEN_HELP_PWIN: - gpHelpInstance->ShowTopic("Piano Window"); - break; - } + return mpPianoWindow->GetGuitarFrame(); } - void JZPianoFrame::OnFilter(wxCommandEvent& Event) { - mpFilter->Dialog(0); + mpPianoWindow->EditFilter(); } -/**activate velocity edit*/ +// Activate velocity edit. void JZPianoFrame::OnCtrlVelocity(wxCommandEvent& Event) { - delete CtrlEdit; - int cw, ch; - GetClientSize(&cw, &ch); - - CtrlEdit = new tVelocEdit( - this, - "Velocity", - wPiano, - 0, - CtrlY(ch), - CanvasW, - CtrlH(ch)); - - CtrlEdit->ReInit(Track, FromClock, ClocksPerPixel); - Redraw(); + mpPianoWindow->CtrlVelocity(); } void JZPianoFrame::CtrlChannelAftertouchEdit(wxCommandEvent& Event) { - delete CtrlEdit; - int cw, ch; - GetClientSize(&cw, &ch); - CtrlEdit = new tChannelAfterEdit(this, "Channel Aftertouch", wPiano, 0, CtrlY(ch), CanvasW,CtrlH(ch)); - CtrlEdit->ReInit(Track, FromClock, ClocksPerPixel); - Redraw(); - + mpPianoWindow->CtrlChannelAftertouchEdit(); } void JZPianoFrame::OnCtrlPolyAftertouchEdit(wxCommandEvent& Event) { - int cw, ch; - GetClientSize(&cw, &ch); - delete CtrlEdit; - CtrlEdit = new tPolyAfterEdit(this, "Key Aftertouch", wPiano, 0, CtrlY(ch), CanvasW,CtrlH(ch)); - CtrlEdit->ReInit(Track, FromClock, ClocksPerPixel); - Redraw(); + mpPianoWindow->CtrlPolyAftertouchEdit(); } void JZPianoFrame::OnCtrlNone(wxCommandEvent& Event) { - delete CtrlEdit; - CtrlEdit = 0; - Redraw(); + mpPianoWindow->CtrlNone(); } void JZPianoFrame::OnCtrlTempo(wxCommandEvent& Event) { - tEventIterator Iterator(Track); - Track->Sort(); - JZEvent* pEvent = Iterator.Range(0, (unsigned) Track->GetLastClock() + 1); - tSetTempo *t; - int Min = 240; - int Max = 20; - while (pEvent) - { - if ((t = pEvent->IsSetTempo()) != 0) - { - if (t->GetBPM() < Min) - { - Min = t->GetBPM(); - } - if (t->GetBPM() > Max) - { - Max = t->GetBPM(); - } - } - pEvent = Iterator.Next(); - } - if (Min - 50 > 20) - { - Min -= 50; - } - else - { - Min = 20; - } - if (Max + 50 < 240) - { - Max += 50; - } - else - { - Max = 240; - } - delete CtrlEdit; - int cw, ch; - GetClientSize(&cw, &ch); - CtrlEdit = new tTempoEdit( - Min, - Max, - this, - "Tempo", - wPiano, - 0, - CtrlY(ch), - CanvasW, - CtrlH(ch)); - CtrlEdit->ReInit(Track, FromClock, ClocksPerPixel); - Redraw(); + mpPianoWindow->CtrlTempo(); } void JZPianoFrame::OnSelectController(wxCommandEvent& Event) { - int i = SelectControllerDlg(); - if (i > 0) - { - delete CtrlEdit; - int cw, ch; - GetClientSize(&cw, &ch); - CtrlEdit = new tCtrlEdit( - i - 1, - this, - gpConfig->CtrlName(i).first.c_str(), - wPiano, - 0, - CtrlY(ch), - CanvasW, - CtrlH(ch)); - CtrlEdit->ReInit(Track, FromClock, ClocksPerPixel); - Redraw(); - } + mpPianoWindow->SelectController(); } void JZPianoFrame::OnCtrlModulation(wxCommandEvent& Event) { - delete CtrlEdit; - int cw, ch; - GetClientSize(&cw, &ch); - CtrlEdit = new tCtrlEdit(1, this, "Modulation", wPiano, 0, CtrlY(ch), CanvasW, CtrlH(ch)); - CtrlEdit->ReInit(Track, FromClock, ClocksPerPixel); - Redraw(); + mpPianoWindow->CtrlModulation(); } void JZPianoFrame::OnCtrlPitch(wxCommandEvent& Event) { - int cw, ch; - GetClientSize(&cw, &ch); - delete CtrlEdit; - CtrlEdit = new tPitchEdit(this, "Pitch", wPiano, 0, CtrlY(ch), CanvasW, CtrlH(ch)); - - CtrlEdit->ReInit(Track, FromClock, ClocksPerPixel); - Redraw(); + mpPianoWindow->CtrlPitch(); } -/** - redo undone actions -*/ +// Redo undone actions void JZPianoFrame::OnRedo(wxCommandEvent& Event) { - Song->Redo(); - Redraw(); - if (CtrlEdit && Track >= 0) - CtrlEdit->ReInit(Track, FromClock, ClocksPerPixel); + mpPianoWindow->Redo(); } -/** - undo actions -*/ +// Undo actions void JZPianoFrame::OnUndo(wxCommandEvent& Event) { - Song->Undo(); - Redraw(); - if (CtrlEdit && Track >= 0) - CtrlEdit->ReInit(Track, FromClock, ClocksPerPixel); + mpPianoWindow->Undo(); } -/** quantize selected events*/ +// Quantize selected events void JZPianoFrame::OnQuantize(wxCommandEvent& Event) { - if (EventsSelected()) - { - tCmdQuantize cmd(mpFilter, SnapClocks(), 0, 0); - cmd.Execute(1); - Redraw(); - } + mpPianoWindow->Quantize(); } -/** flip events up and down*/ +// Flip events up and down. void JZPianoFrame::OnExchangeUpDown(wxCommandEvent& Event) { - if (EventsSelected()) - { - tCmdExchUpDown cmd(mpFilter); - cmd.Execute(1); - Redraw(); - } + mpPianoWindow->ExchangeUpDown(); } -/**flip events left to righ*/ +// Flip events left to right. void JZPianoFrame::OnExchangeLeftRight(wxCommandEvent& Event) { - if (EventsSelected()) - { - tCmdExchLeftRight cmd(mpFilter); - cmd.Execute(1); - Redraw(); - } + mpPianoWindow->ExchangeLeftRight(); } -/**shift events snapclock clocks to left*/ +// Shift events snapclock clocks to left. void JZPianoFrame::OnShiftLeft(wxCommandEvent& Event) { - if (EventsSelected()) - { - int steps = -SnapClocks(); - tCmdShift cmd(mpFilter, steps); - cmd.Execute(); - Redraw(); - } + mpPianoWindow->ShiftLeft(); } -/**shift events snapclock clocks to right*/ +// Shift events snapclock clocks to right. void JZPianoFrame::OnShiftRight(wxCommandEvent& Event) { - if (EventsSelected()) - { - int steps = SnapClocks(); - tCmdShift cmd(mpFilter, steps); - cmd.Execute(); - Redraw(); - } + mpPianoWindow->ShiftRight(); } void JZPianoFrame::OnShift(wxCommandEvent& Event) @@ -930,58 +482,26 @@ void JZPianoFrame::OnCut(wxCommandEvent& Event) { - CutOrCopy(MEN_CUT); + mpPianoWindow->CutOrCopy(wxID_CUT); } void JZPianoFrame::OnCopy(wxCommandEvent& Event) { - CutOrCopy(MEN_COPY); + mpPianoWindow->CutOrCopy(wxID_COPY); } -/**helper for cut and copy events*/ -void JZPianoFrame::CutOrCopy(int id) -{ - if (EventsSelected()) - { - PasteBuffer.Clear(); - tCmdCopyToBuffer cmd(mpFilter, &PasteBuffer); - mpFilter->OtherSelected = VisibleTempo; - cmd.Execute(0); // no UNDO - if (id == MEN_CUT) - { - tCmdErase cmd(mpFilter); - cmd.Execute(1); // with UNDO - Redraw(); - } - mpFilter->OtherSelected = 0; - if (mpGuitarFrame) - { - mpGuitarFrame->Update(); -// mpGuitarFrame->Redraw(); - } - } -} - - void JZPianoFrame::OnErase(wxCommandEvent& Event) { - if (EventsSelected()) - { - tCmdErase cmd(mpFilter); - cmd.Execute(1); // with UNDO - Redraw(); - } + mpPianoWindow->Erase(); } -/**togle display of events from all tracks, or just from the current track */ +// Toggle the display of events from all tracks, or just from the current track. void JZPianoFrame::OnVisibleAllTracks(wxCommandEvent& Event) { - VisibleAllTracks = !VisibleAllTracks; - //VisibleAllTracks = mpToolBar->GetToolState(MEN_VIS_ALL_TRK); - Redraw(); + mpPianoWindow->ToggleVisibleAllTracks(); } -/**send a midi reset*/ +// Send a midi reset. void JZPianoFrame::OnReset(wxCommandEvent& Event) { gpMidiPlayer->AllNotesOff(1); @@ -1001,59 +521,53 @@ void JZPianoFrame::OnMSelect(wxCommandEvent& Event) { - PressRadio(MEN_MSELECT); - MouseEvnt.SetLeftAction(MA_SELECT); + mpPianoWindow->MSelect(); } void JZPianoFrame::OnMLength(wxCommandEvent& Event) { - PressRadio(MEN_MLENGTH); - MouseEvnt.SetLeftAction(MA_LENGTH); + mpPianoWindow->MLength(); } void JZPianoFrame::OnMDialog(wxCommandEvent& Event) { - PressRadio(MEN_MDIALOG); - MouseEvnt.SetLeftAction(MA_DIALOG); + mpPianoWindow->MDialog(); } void JZPianoFrame::OnMCutPaste(wxCommandEvent& Event) { - PressRadio(MEN_MCUTPASTE); - MouseEvnt.SetLeftAction(MA_CUTPASTE); + mpPianoWindow->MCutPaste(); } - void JZPianoFrame::OnZoomIn(wxCommandEvent& Event){ - if (ClocksPerPixel > 1) { - ZoomIn(); - // TrackNr for Ctr-Editor - NewPosition(TrackNr,FromClock); - } +void JZPianoFrame::OnZoomIn(wxCommandEvent& Event) +{ + mpPianoWindow->ZoomIn(); } -void JZPianoFrame::OnZoomOut(wxCommandEvent& Event){ - if (ClocksPerPixel<32) { - ZoomOut(); - NewPosition(TrackNr, FromClock); - } +void JZPianoFrame::OnZoomOut(wxCommandEvent& Event) +{ + mpPianoWindow->ZoomOut(); } -void JZPianoFrame::OnSnap8(wxCommandEvent& Event){ - PasteBuffer.Clear(); SetSnapDenom(8); +void JZPianoFrame::OnSnap8(wxCommandEvent& Event) +{ + mpPianoWindow->Snap8(); } - -void JZPianoFrame::OnSnap8D(wxCommandEvent& Event){ - PasteBuffer.Clear(); SetSnapDenom(12); +void JZPianoFrame::OnSnap8D(wxCommandEvent& Event) +{ + mpPianoWindow->Snap8D(); } -void JZPianoFrame::OnSnap16(wxCommandEvent& Event){ - PasteBuffer.Clear(); SetSnapDenom(16); +void JZPianoFrame::OnSnap16(wxCommandEvent& Event) +{ + mpPianoWindow->Snap16(); } -void JZPianoFrame::OnSnap16D(wxCommandEvent& Event){ - PasteBuffer.Clear(); SetSnapDenom(24); +void JZPianoFrame::OnSnap16D(wxCommandEvent& Event) +{ + mpPianoWindow->Snap16D(); } @@ -1063,57 +577,15 @@ -// ******************************************************************** -// Visible -// ******************************************************************** -int JZPianoFrame::IsVisible(JZEvent* pEvent) -{ - switch (pEvent->Stat) - { - case StatKeyOn: - return VisibleKeyOn; - case StatPitch: - return VisiblePitch; - case StatControl: - return VisibleController; - case StatProgram: - return VisibleProgram; - case StatSetTempo: - return VisibleTempo; - case StatSysEx: - return VisibleSysex; - case StatPlayTrack: - return VisiblePlayTrack; - case StatEndOfTrack: - return true; - case StatText: - return true; - case StatChnPressure: - return VisibleMono; - } - return 0; -} - - -int JZPianoFrame::IsVisible(JZTrack *t) -{ - if (!VisibleAllTracks) - return t == Track; - - return ( - Track->Channel == gpConfig->GetValue(C_DrumChannel)) == - (t->Channel == gpConfig->GetValue(C_DrumChannel)); -} - #ifdef OBSOLETE class tVisibleDlg : public wxForm { - JZPianoFrame *win; + JZPianoFrame *pPianoWindow; public: - tVisibleDlg(JZPianoFrame *p) : wxForm( USED_WXFORM_BUTTONS ), win(p) {} + tVisibleDlg(JZPianoFrame *p) : wxForm( USED_WXFORM_BUTTONS ), pPianoWindow(p) {} void EditForm(wxPanel *panel); virtual void OnOk(); virtual void OnHelp(); @@ -1121,8 +593,8 @@ void tVisibleDlg::OnOk() { - win->SetVisibleAllTracks(win->VisibleAllTracks); - // win->Redraw(); + pPianoWindow->SetVisibleAllTracks(pPianoWindow->VisibleAllTracks); + // pPianoWindow->Redraw(); wxForm::OnOk(); } @@ -1136,19 +608,19 @@ { Add(wxMakeFormMessage("Select Events to be shown")); Add(wxMakeFormNewLine()); - Add(wxMakeFormBool("NoteOn", &win->VisibleKeyOn)); - //Add(wxMakeFormBool("Pitch", &win->VisiblePitch)); - Add(wxMakeFormBool("Controller", &win->VisibleController)); - Add(wxMakeFormBool("Program", &win->VisibleProgram)); - Add(wxMakeFormBool("Tempo", &win->VisibleTempo)); - Add(wxMakeFormBool("SysEx", &win->VisibleSysex)); - Add(wxMakeFormBool("PlayTrack", &win->VisiblePlayTrack)); + Add(wxMakeFormBool("NoteOn", &pPianoWindow->VisibleKeyOn)); + //Add(wxMakeFormBool("Pitch", &pPianoWindow->VisiblePitch)); + Add(wxMakeFormBool("Controller", &pPianoWindow->VisibleController)); + Add(wxMakeFormBool("Program", &pPianoWindow->VisibleProgram)); + Add(wxMakeFormBool("Tempo", &pPianoWindow->VisibleTempo)); + Add(wxMakeFormBool("SysEx", &pPianoWindow->VisibleSysex)); + Add(wxMakeFormBool("PlayTrack", &pPianoWindow->VisiblePlayTrack)); Add(wxMakeFormNewLine()); - Add(wxMakeFormBool("Show drumnames on drumtracks", &win->VisibleDrumNames)); + Add(wxMakeFormBool("Show drumnames on drumtracks", &pPianoWindow->VisibleDrumNames)); Add(wxMakeFormNewLine()); - Add(wxMakeFormBool("Show events from all Tracks", &win->VisibleAllTracks)); + Add(wxMakeFormBool("Show events from all Tracks", &pPianoWindow->VisibleAllTracks)); Add(wxMakeFormNewLine()); - Add(wxMakeFormBool("Show harmonies from Harmony Browser", &win->VisibleHBChord)); + Add(wxMakeFormBool("Show harmonies from Harmony Browser", &pPianoWindow->VisibleHBChord)); AssociatePanel(panel); } @@ -1163,814 +635,10 @@ } #endif // OBSOLETE -// ******************************************************************** -// Painting -// ******************************************************************** -const int isBlack[12] = {0,1,0,1,0,0,1,0,1,0,1,0}; -#define IsBlack(Key) isBlack[(Key) % 12] -void JZPianoFrame::OnPaintSub(wxDC* dc, int x, int y) -{ -// int OldFromClock = FromClock; - - OnEventWinPaintSub(x, y); - -// SN++ Da Jazz nun eine ReDo Funktion hat. Behebt gleichzeitig ein kleines -// Update Problem beim mehrfachen ZoomOut. -// Aktives Ctrl-Fenster neu zeichnen bzw. reinitialisieren. - -// if (CtrlEdit && OldFromClock != FromClock) -// CtrlEdit->ReInit(Track, FromClock, ClocksPerPixel); - - if (CtrlEdit) - CtrlEdit->ReInit(Track, FromClock, ClocksPerPixel); - -// - xPiano = CanvasX; - - int StopClk; - JZBarInfo BarInfo(Song); - char buf[20]; - -//OBSOLETE dc->BeginDrawing(); - dc->DestroyClippingRegion(); - dc->SetBackground(*wxWHITE_BRUSH); - DrawPlayPosition(dc); - SnapSel->Draw(*dc, mEventsX, mEventsY, mEventsWidth, mEventsHeight); - dc->Clear(); - - - /////////////////////////////////////////////////////////////// - // horizontal lines(ripped from drawpianoroll code) - -// for (y = Line2y(FromLine); y < mEventsY + mEventsHeight; y += mTrackHeight) -// if (y > mEventsY) // cheaper than clipping -// dc->DrawLine(mEventsX+1, y, mEventsX + mEventsWidth, y); - - dc->SetPen(*wxGREY_PEN); - wxBrush blackKeysBrush=wxBrush(wxColor(250,240,240),wxSOLID); - int Pitch = 127 - FromLine; - y = Line2y(FromLine); - while (Pitch >= 0 && y < mEventsY + mEventsHeight) - { - if (IsBlack(Pitch)) - { - dc->SetBrush(blackKeysBrush);//*wxLIGHT_GREY_PEN - dc->DrawRectangle(CanvasX, y, 2000, mTrackHeight); - } - else if ((Pitch % 12) == 0) - { - dc->SetPen(*wxCYAN_PEN); - dc->DrawLine(CanvasX, y + mTrackHeight, 2000, y + mTrackHeight); - - } - else if (!IsBlack(Pitch - 1)) - { - dc->SetPen(*wxGREEN_PEN); - dc->DrawLine(CanvasX, y + mTrackHeight, 2000, y + mTrackHeight); - } - - y += mTrackHeight; - --Pitch; - } - - - /////////////////////////////////////////////////////////////// - - - MouseLine = -1; - - #define VLine(x) DrawLine(x, CanvasY, x, mEventsY + mEventsHeight) - #define HLine(y) DrawLine(CanvasX, y, CanvasX + CanvasW, y) - - dc->SetPen(*wxBLACK_PEN); - - // vertical lines - - dc->VLine(xPiano); - dc->VLine(mEventsX); - dc->VLine(mEventsX-1); - dc->HLine(mEventsY); - dc->HLine(mEventsY-1); - dc->HLine(mEventsY + mEventsHeight); - - // draw vlines and bar numbers - - dc->SetFont(*mpFixedFont); - BarInfo.SetClock(FromClock); - StopClk = x2Clock(CanvasX + CanvasW); - int clk = BarInfo.Clock; - int intro = Song->GetIntroLength(); - while (clk < StopClk) - { - clk = BarInfo.Clock; - x = Clock2x(clk); - // vertical lines and bar numbers - int i; - dc->SetPen(*wxBLACK_PEN); - sprintf(buf, "%d", BarInfo.BarNr + 1 - intro); - if (x > mEventsX) - { - dc->DrawText(buf, x + LittleBit, mEventsY - hFixedFont - 2); - dc->SetPen(*wxGREY_PEN); - dc->DrawLine(x, mEventsY - hFixedFont, x, mEventsY + mEventsHeight); - } - - dc->SetPen(*wxLIGHT_GREY_PEN); - for (i = 0; i < BarInfo.CountsPerBar; i++) - { - clk += BarInfo.TicksPerBar / BarInfo.CountsPerBar; - x = Clock2x(clk); - if (x > mEventsX) - { - dc->DrawLine(x, mEventsY + 1, x, mEventsY + mEventsHeight); - } - } - BarInfo.Next(); - } - - LineText(dc, CanvasX, CanvasY, wPiano, mTopInfoHeight); - - dc->SetPen(*wxBLACK_PEN); - DrawPianoRoll(dc); - - // Draw chords from harmony-browser. - if (VisibleHBChord && gpHarmonyBrowser && !Track->IsDrumTrack()) - { - HBAnalyzer *an = gpHarmonyBrowser->getAnalyzer(); - if (an != 0) - { - wxBrush cbrush = *wxBLUE_BRUSH; - wxBrush sbrush = *wxBLUE_BRUSH; -#ifdef __WXMSW__ - cbrush.SetColour(191,191,255); - sbrush.SetColour(191,255,191); -#else - cbrush.SetColour(220,220,255); - sbrush.SetColour(230,255,230); -#endif - - //dc->SetClippingRegion(mEventsX, mEventsY, mEventsWidth, mEventsHeight); - dc->SetLogicalFunction(wxXOR); - dc->SetPen(*wxTRANSPARENT_PEN); - - int steps = an->Steps(); - for (int step = 0; step < steps; step ++) - { - int start = an->Step2Clock(step); - int stop = an->Step2Clock(step + 1); - if (stop > FromClock && start < ToClock) - { - // this chord is visible - HBContext *context = an->GetContext(step); - HBChord chord = context->Chord(); - HBChord scale = context->Scale(); - - int x = Clock2x(start); - if (x < mEventsX) // clip to left border - x = mEventsX; - int w = Clock2x(stop) - x; - if (w <= 0) - continue; - - int h = mTrackHeight; - for (int i = 0; i < 12; i++) - { - int pitch = i; - wxBrush *brush = 0; - if (chord.Contains(i)) - { - brush = &cbrush; - } - else if (scale.Contains(i)) - { - brush = &sbrush; - } - if (brush) - { - dc->SetBrush(*brush); - while (pitch < 127) - { - int y = Pitch2y(pitch); - if (y >= mEventsY && y <= mEventsY + mEventsHeight - h) // y-clipping - { - dc->DrawRectangle(x, y, w, h); - } - pitch += 12; - } - } - } - } - } - - - //dc->DestroyClippingRegion(); - dc->SetLogicalFunction(wxCOPY); - dc->SetPen(*wxBLACK_PEN); - dc->SetBrush(*wxBLACK_BRUSH); - - - //delete an; PORTING - - } - - } - /////////end draw choords - - if (VisibleAllTracks) - { - int i; - for (i = 0; i < Song->nTracks; i++) - { - JZTrack *t = Song->GetTrack(i); - if (t != Track && IsVisible(t)) - DrawEvents(dc, t, StatKeyOn, wxLIGHT_GREY_BRUSH, TRUE); - } - } - - if (VisibleKeyOn) - DrawEvents(dc,Track, StatKeyOn, wxRED_BRUSH, FALSE); - if (VisiblePitch) - DrawEvents(dc, Track, StatPitch, wxBLUE_BRUSH, FALSE); - if (VisibleController) - DrawEvents(dc, Track, StatControl, wxCYAN_BRUSH, FALSE); - if (VisibleProgram) - DrawEvents(dc, Track, StatProgram, wxGREEN_BRUSH, FALSE); - if (VisibleTempo) - DrawEvents(dc, Track, StatSetTempo, wxGREEN_BRUSH, FALSE); - if (VisibleSysex) - DrawEvents(dc, Track, StatSysEx, wxGREEN_BRUSH, FALSE); - if (VisiblePlayTrack) - DrawEvents(dc, Track, StatPlayTrack, wxLIGHT_GREY_BRUSH, FALSE); - - DrawEvents(dc, Track, StatEndOfTrack, wxRED_BRUSH, FALSE); - DrawEvents(dc, Track, StatText, wxBLACK_BRUSH, FALSE); - - dc->SetPen(*wxBLACK_PEN); - dc->SetBrush(*wxBLACK_BRUSH); - dc->SetBackground(*wxWHITE_BRUSH); // xor-bug - - SnapSel->Draw(*dc, mEventsX, mEventsY, mEventsWidth, mEventsHeight); - - DrawPlayPosition(dc); -//OBSOLETE dc->EndDrawing(); -} - - - - -void JZPianoFrame::DrawPianoRoll(wxDC* dc) -{ - char buf[20]; - - dc->SetBrush(*wxLIGHT_GREY_BRUSH); - dc->DrawRectangle(xPiano, mEventsY, wPiano, mEventsHeight); //draw grey bg for keyboard - dc->SetBrush(*wxBLACK_BRUSH); - -// dc->SetTextBackground(*wxLIGHT_GREY); - - int wBlack = wPiano * 2 / 3; - int Pitch = 127 - FromLine; - int y = Line2y(FromLine); - - if ( - VisibleKeyOn && - !Track->GetAudioMode() && - (!Track->IsDrumTrack() || !VisibleDrumNames)) - { - dc->SetFont(*mpFixedFont); - - while (Pitch >= 0 && y < mEventsY + mEventsHeight) - { - if (IsBlack(Pitch)) - { - dc->DrawRectangle(CanvasX, y, wBlack, mTrackHeight); - dc->DrawLine(CanvasX + wBlack, y + mTrackHeight/2, CanvasX + wPiano, y + mTrackHeight/2); - dc->SetPen(*wxWHITE_PEN); - dc->DrawLine(CanvasX + wBlack+1, y + mTrackHeight/2+1, CanvasX + wPiano, y + mTrackHeight/2+1); - dc->DrawLine(CanvasX, y, CanvasX + wBlack, y); - dc->SetPen(*wxBLACK_PEN); - } - else if ((Pitch % 12) == 0) - { - dc->DrawLine(CanvasX, y + mTrackHeight, CanvasX + wPiano, y + mTrackHeight); - dc->SetPen(*wxWHITE_PEN); - dc->DrawLine(CanvasX, y + mTrackHeight + 1, CanvasX + wPiano, y + mTrackHeight + 1); - dc->SetPen(*wxBLACK_PEN); - sprintf(buf, "%d", Pitch / 12); - dc->DrawText(buf, CanvasX + wBlack + LittleBit, y + mTrackHeight / 2); - } - else if (!IsBlack(Pitch - 1)) - { - dc->DrawLine(CanvasX, y + mTrackHeight, CanvasX + wPiano, y + mTrackHeight); - dc->SetPen(*wxWHITE_PEN); - dc->DrawLine(CanvasX, y + mTrackHeight + 1, CanvasX + wPiano, y + mTrackHeight + 1); - dc->SetPen(*wxBLACK_PEN); - } - - y += mTrackHeight; - --Pitch; - } - } - else if (Track->GetAudioMode()) - { - dc->SetFont(*DrumFont); - while (Pitch >= 0 && y < mEventsY + mEventsHeight) - { - dc->DrawText(gpMidiPlayer->GetSampleName(Pitch), CanvasX + LittleBit, y); - y += mTrackHeight; - --Pitch; - } - } - else - { - // Draw text? - if (VisibleKeyOn && VisibleDrumNames) - { - dc->SetFont(*DrumFont); - while (Pitch >= 0 && y < mEventsY + mEventsHeight) - { - dc->DrawText( - gpConfig->DrumName(Pitch + 1).first.c_str(), - CanvasX + LittleBit, - y); - - y += mTrackHeight; - - --Pitch; - } - } - else if (VisibleController) - { - dc->SetFont(*DrumFont); - while (Pitch >= 0 && y < mEventsY + mEventsHeight) - { - dc->DrawText( - gpConfig->CtrlName(Pitch + 1).first.c_str(), - CanvasX + LittleBit, - y); - - y += mTrackHeight; - --Pitch; - } - } - else if (VisibleProgram) - { - dc->SetFont(*DrumFont); - while (Pitch >= 0 && y < mEventsY + mEventsHeight) - { - dc->DrawText( - gpConfig->VoiceName(Pitch + 1).first.c_str(), - CanvasX + LittleBit, - y); - - y += mTrackHeight; - --Pitch; - } - } - else if (VisibleSysex) - { - dc->SetFont(*DrumFont); - while (Pitch >= 0 && y < mEventsY + mEventsHeight) - { - dc->DrawText( - tSynthSysex::GetSysexGroupName(Pitch + 1), - CanvasX + LittleBit, - y); - y += mTrackHeight; - --Pitch; - } - } - else if (VisiblePitch) - { - } - } - - //dc->DestroyClippingRegion(); - //dc->SetTextBackground(*wxWHITE); - dc->SetFont(*mpFont); -} - - -void JZPianoFrame::DrawEvent(wxDC* dc, JZEvent* pEvent, const wxBrush* Brush, int xoor, int force_color) -{ - if (pEvent->IsKeyPressure() || pEvent->IsChnPressure()) - { - return; - } - - int length = pEvent->GetLength() / ClocksPerPixel; - // Always draw at least two pixels to avoid invisible (behind a - // vertical line) or zero-length events: - if (length < 3) - length = 3; -//OBSOLETE dc->BeginDrawing(); - if (xoor) - dc->SetLogicalFunction(wxXOR); - int x = Clock2x(pEvent->GetClock()); - int y = Pitch2y(pEvent->GetPitch()); - if (!xoor) - { - dc->SetBrush(*wxWHITE_BRUSH); - dc->DrawRectangle(x, y + LittleBit, length, mTrackHeight - 2 * LittleBit); - } - - // show velocity as colors - if (force_color != 0 && UseColors && pEvent->IsKeyOn()) { - int vel = pEvent->IsKeyOn()->Veloc; - - // Next line is "Patrick Approved." - dc->SetBrush(color_brush[ vel * NUM_COLORS / 128 ]); - } - else - { - dc->SetBrush(*Brush); - } - // end velocity colors - - dc->DrawRectangle(x, y + LittleBit, length, mTrackHeight - 2 * LittleBit); - - if (xoor) - { - dc->SetLogicalFunction(wxCOPY); - } - dc->SetBrush(*wxBLACK_BRUSH); -//OBSOLETE dc->EndDrawing(); -} - - - - -void JZPianoFrame::DrawEvents(wxDC* dc, JZTrack *t, int Stat, const wxBrush* Brush, int force_color) -{ - //dc->SetClippingRegion(mEventsX, mEventsY, mEventsWidth, mEventsHeight); - dc->SetBrush(*Brush); - - tEventIterator Iterator(t); - JZEvent* pEvent = Iterator.First(); - int FromPitch = 127 - ToLine; - int ToPitch = 127 - FromLine; - - // Coordinate for Linien - - int x0 = Clock2x(0); - int y0 = Line2y(64); - char buf[20]; - - while (pEvent) - { - if (pEvent->Stat == Stat) - { - int Pitch = pEvent->GetPitch(); - int Length = pEvent->GetLength(); - int Clock = pEvent->GetClock(); - - int x1 = Clock2x(Clock); - int y1 = Line2y(127 - Pitch); -// if (pEvent->IsPlayTrack()) { -// y1=Line2y(127-pEvent->IsPlayTrack()->track); //JAVE so the y position of playtrack events tell which track they play (the drawing should rather be polymorpic in my opinion) - //use pitch instead - // } - // event partially visible? - if (Clock + Length >= FromClock && FromPitch < Pitch && Pitch <= ToPitch) - { - int DrawLength = Length/ClocksPerPixel; - // do clipping ourselves - if (x1 < mEventsX) - { - DrawLength -= mEventsX - x1; - x1 = mEventsX; - } - // Always draw at least two pixels to avoid invisible (behind a - // vertical line) or zero-length events: - if (DrawLength < 3) - { - DrawLength = 3; - } - - // show velocity as colors - if (!force_color && UseColors && pEvent->IsKeyOn()) - { - int vel = pEvent->IsKeyOn()->Veloc; - dc->SetBrush(color_brush[ vel * NUM_COLORS / 128 ]); - } - else - { - dc->SetBrush(*Brush); - } - // end velocity colors - - dc->DrawRectangle(x1, y1 + LittleBit, DrawLength, mTrackHeight - 2 * LittleBit); - //shouldnt it be in drawevent? odd. - - if (pEvent->IsPlayTrack()) - { - dc->SetPen(*wxBLACK_PEN); - ostringstream Oss; - Oss << "Track:" << pEvent->IsPlayTrack()->track; - dc->DrawText(Oss.str().c_str(), x1, y1 + LittleBit); - } - } - - if (Clock + Length >= FromClock) - { - //thesse events are always visible in vertical - if (pEvent->IsEndOfTrack()) - { - dc->SetPen(*wxRED_PEN); - dc->VLine(x1); //draw a vertical bar - dc->SetPen(*wxBLACK_PEN); - sprintf(buf, "EOT"); - dc->DrawText(buf, x1, y1 + LittleBit); - } - - if (pEvent->IsText()) - { - dc->SetPen(*wxGREEN_PEN); - dc->VLine(x1); //draw a vertical bar - dc->SetPen(*wxBLACK_PEN); - sprintf(buf, (const char*)pEvent->IsText()->GetText()); - int textX; - int textY; - - dc->GetTextExtent((const char*)pEvent->IsText()->GetText(), &textX, &textY); - dc->SetBrush(*wxWHITE_BRUSH); - int textlabely = CanvasY + mTopInfoHeight;//text labels drawn at top - dc->DrawRectangle(x1-textX, textlabely + LittleBit, textX, textY);//mTrackHeight - 2 * LittleBit); - dc->DrawText(buf, x1-textX, textlabely + LittleBit); - } - } - - x0 = x1; - y0 = y1; - - if (Clock > ToClock) - { - break; - } - } - pEvent = Iterator.Next(); - } - dc->SetBrush(*wxBLACK_BRUSH); - //dc->DestroyClippingRegion(); -} - - - // ******************************************************************** -// Utilities -// ******************************************************************** - -int JZPianoFrame::SnapClocks() -{ - int clk = Song->TicksPerQuarter * 4L / SnapDenomiator; - if (clk < 1) - return 1; - return clk; -} - -int JZPianoFrame::y2Pitch(int y) -{ - int pitch = 127 - y2Line(y); - if (pitch < 0) - return 0; - if (pitch > 127) - return 127; - return pitch; -} - - -int JZPianoFrame::Pitch2y(int Pitch) -{ - return Line2y(127 - Pitch); -} - - -JZEvent *JZPianoFrame::FindEvent(JZTrack *Track, int Clock, int Pitch) -// Pitch == -1: search for any pitches -{ - tEventIterator Iterator(Track); - JZEvent* pEvent = Iterator.First(); - while (pEvent) - { - if (pEvent->GetClock() <= Clock) - { - if ((pEvent->GetClock() + pEvent->GetLength() >= Clock) - && (pEvent->GetPitch() == Pitch || Pitch == -1) - && IsVisible(pEvent)) - { - return pEvent; - } - } - else - { - return 0; - } - pEvent = Iterator.Next(); - } - return 0; -} - - -void JZPianoFrame::kill_keys_aftertouch(JZTrack *t, JZEvent* pEvent) -{ - int key,channel; - tEventIterator iter(t); - tKeyPressure *a; - tKeyOn *k = pEvent->IsKeyOn(); - if (!k) - { - return; - } - if (k->Length < 2) - { - return; - } - key = k->Key; - channel = k->Channel; - pEvent = iter.Range(k->GetClock() + 1, k->GetClock() + k->Length); - while (pEvent) - { - a = pEvent->IsKeyPressure(); - if (a) - { - if (a->Key == key && a->Channel == channel) - { - t->Kill(pEvent); - } - } - pEvent = iter.Next(); - } -} - -void JZPianoFrame::paste_keys_aftertouch(JZTrack *t, JZEvent* pEvent) -{ - int key,channel; - tEventIterator iter(t); - tKeyPressure *a; - tKeyOn *k = pEvent->IsKeyOn(); - if (!k) return; - channel = k->Channel; - if (k->Length < 2) return; - key = k->Key; - pEvent = iter.Range(k->GetClock() + 1, k->GetClock() + k->Length); - while (pEvent) - { - a = pEvent->IsKeyPressure(); - if (a) - { - if (a->Key == key && a->Channel == channel) - { - PasteBuffer.Put(pEvent->Copy()); - } - } - pEvent = iter.Next(); - } -} - -int JZPianoFrame::nKeyOnEvents() -{ - int count = 0; - - tEventIterator Iterator(&PasteBuffer); - JZEvent* pEvent = Iterator.First(); - while (pEvent) - { - if (pEvent->IsKeyOn()) - { - count++; - } - pEvent = Iterator.Next(); - } - return count; -} - - - -void JZPianoFrame::Copy(JZTrack *t, JZEvent* pEvent, int Kill) -{ - if (!pEvent) - { - return; - } - - Song->NewUndoBuffer(); - PasteBuffer.Clear(); - PasteBuffer.Put(pEvent->Copy()); - - if (pEvent->IsKeyOn()) - { - paste_keys_aftertouch(t, pEvent); - } - - if (Kill) - { - tKeyOn *k = pEvent->IsKeyOn(); - if (k) - { - kill_keys_aftertouch(t,pEvent); - if (Track->GetAudioMode()) - { - gpMidiPlayer->ListenAudio(k->Key, 0); - } - else - { - Listen.KeyOn(Track, k->Key, k->Channel, k->Veloc, k->Length); - } - } - - wxClientDC dc(Canvas); - Canvas->PrepareDC(dc); - DrawEvent(&dc, pEvent, wxWHITE_BRUSH, 0); - t->Kill(pEvent); - t->Cleanup(); - } - - if (mpGuitarFrame) - { - mpGuitarFrame->Update(); -// mpGuitarFrame->Redraw(); - } - - // SN++ Veloc- oder Aftertouch-Editor updaten - if (CtrlEdit) - CtrlEdit->UpDate(); -} - - -void JZPianoFrame::Paste(JZTrack *t, int Clock, int Pitch) -{ - if (PasteBuffer.nEvents == 0) - { - int len = SnapClocks() - 4; - if (len < 2) - len = 2; - tKeyOn* pEvent = new tKeyOn(0, 0, 64, 64, len); - PasteBuffer.Put(pEvent); - } - // SN++ - if (nKeyOnEvents() > 1) - Pitch = -1; // don't change Pitch - - Song->NewUndoBuffer(); - tEventIterator Iterator(&PasteBuffer); - JZEvent* pEvent = Iterator.First(); - if (pEvent) - { - // SN++ - JZEvent *a = pEvent; - while (a) - { - if (pEvent->IsChnPressure()) - { - a = Iterator.Next(); - pEvent = a; - } - else - { - a = NULL; - } - } - - int DeltaClock = Clock - pEvent->GetClock(); - int DeltaPitch = 0; - if (Pitch >= 0) - DeltaPitch = Pitch - pEvent->GetPitch(); - while (pEvent) - { - JZEvent *c = pEvent->Copy(); - c->SetPitch(c->GetPitch() + DeltaPitch); - c->SetClock(c->GetClock() + DeltaClock); - if (t->ForceChannel && c->IsChannelEvent()) - c->IsChannelEvent()->Channel = t->Channel - 1; - tKeyOn *k = c->IsKeyOn(); - if (k) - { - if (Track->GetAudioMode()) - { - gpMidiPlayer->ListenAudio(k->Key, 0); - } - else - { - Listen.KeyOn(Track, k->Key, k->Channel, k->Veloc, k->Length); - } - } - wxClientDC dc(Canvas); - Canvas->PrepareDC(dc); - DrawEvent(&dc, c, c->GetBrush(), 0, 1); - t->Put(c); - pEvent = Iterator.Next(); - } - t->Cleanup(); - // SN++ Veloc- oder Aftertouch-Editor updaten - if (CtrlEdit) - CtrlEdit->UpDate(); - } -} - -// ******************************************************************** // Mouse // ******************************************************************** @@ -1992,836 +660,86 @@ * Left: midiout */ -// ------------------------------------------------------------ -// tMousePlay - Click in pianoroll -// ----------------------------------------------------------- -class tMousePlay : public tMouseAction -{ - int Pitch, Veloc, Channel; - JZPianoFrame *Win; - public: - tMousePlay(JZPianoFrame *win, wxMouseEvent& Event); - int ProcessEvent(wxMouseEvent& Event); -}; -tMousePlay::tMousePlay(JZPianoFrame *win, wxMouseEvent& Event) -{ - Win = win; - Pitch = 0; - Channel = Win->Track->Channel ? Win->Track->Channel - 1 : 0; - ProcessEvent(Event); -} - - -int tMousePlay::ProcessEvent(wxMouseEvent& Event) -{ - int x, y; - - int OldPitch = Pitch; - Win->LogicalMousePosition(Event, &x, &y); - - if (Event.LeftDown()) - { - Pitch = Win->y2Pitch(y); - Veloc = 64; - } - else if (Event.MiddleDown()) - { - Pitch = Win->y2Pitch(y); - Veloc = 80; - } - else if (Event.RightDown()) - { - Pitch = Win->y2Pitch(y); - Veloc = 110; - } - else if (Event.ButtonUp()) - { - Pitch = 0; - } - else if (Event.Dragging()) - { - Pitch = Win->y2Pitch(y); - } - else - { - return 0; - } - - if (Win->Track->GetAudioMode()) - { - if (Pitch && Pitch != OldPitch) - gpMidiPlayer->ListenAudio(Pitch, 0); - } - else - { - if (OldPitch && OldPitch != Pitch) - { - tKeyOff of(0, Channel, OldPitch); - gpMidiPlayer->OutNow(Win->Track, &of); - OldPitch = 0; - } - - if (Pitch && Pitch != OldPitch) - { - tKeyOn on(0, Channel, Pitch, Veloc); - gpMidiPlayer->OutNow(Win->Track, &on); - OldPitch = 0; - } - } - - if (!Pitch) - { - Win->MouseAction = 0; - delete this; - return 1; // done - } - return 0; -} - - -void JZPianoFrame::MousePiano(wxMouseEvent& Event) -{ - if (Event.ButtonDown()) - { - MouseAction = new tMousePlay(this, Event); - } -} - - -int JZPianoFrame::Channel() -{ - return Track->Channel ? Track->Channel - 1 : 0; -} - -// ------------------------------------------------------------------------- -// tKeyLengthDragger -// ------------------------------------------------------------------------- - -class tKeyLengthDragger : public tMouseAction -{ - tKeyOn *KeyOn; - tKeyOn *Copy; - JZPianoFrame *Win; - JZTrack *Track; - wxDC *dc; - - public: - tKeyLengthDragger(tKeyOn *k, JZPianoFrame *w); - int Dragging(wxMouseEvent& Event); - int ButtonUp(wxMouseEvent& Event); - int Event(wxMouseEvent& Event); -}; - - -tKeyLengthDragger::tKeyLengthDragger(tKeyOn *k, JZPianoFrame *w) -{ - KeyOn = k; - Copy = k->Copy() -> IsKeyOn(); - Win = w; - - // SN++ BUG FIX: undo/redo - Win->Song->NewUndoBuffer(); - // - wxClientDC dc(Win->Canvas); - Win->Canvas->PrepareDC(dc); //to translate scrolled coordinates - Win->DrawEvent(&dc, Copy, wxWHITE_BRUSH, 0); - Win->DrawEvent(&dc, Copy, Copy->GetBrush(), 1, 1); -} - -int tKeyLengthDragger::Event(wxMouseEvent& Event) -{ - if (Event.Dragging()) - { - return Dragging(Event); - } - else if (Event.ButtonUp()) - { - return ButtonUp(Event); - } - return 0; -} - -int tKeyLengthDragger::Dragging(wxMouseEvent& Event) -{ - int fx, fy; - - wxClientDC dc(Win->Canvas); - Win->Canvas->PrepareDC(dc); //to translate scrolled coordinates - Win->DrawEvent(&dc, Copy, Copy->GetBrush(), 1, 1); - Win->LogicalMousePosition(Event, &fx, &fy); - int Clock = Win->x2Clock(fx); - int Length = Clock - Copy->GetClock(); - if (Length <= 0) - { - Length = 1; - } - Copy->Length = Length; - - Win->DrawEvent(&dc, Copy, Copy->GetBrush(), 1, 1); - return 0; -} - -int tKeyLengthDragger::ButtonUp(wxMouseEvent& Event) -{ - // PAT - Since we repaint below, these calls are basically redundant. - //wxClientDC dc(Win->Canvas); - //Win->Canvas->PrepareDC(dc); - //Win->DrawEvent(&dc, Copy, Copy->GetBrush(), 1, 1); - //Win->DrawEvent(&dc, Copy, Copy->GetBrush(), 0, 1); - - // SN++ Key_Aftertouch - if (Copy->Length < KeyOn->Length) { - int key,channel; - tEventIterator iter(Win->Track); - tKeyPressure *a; - key = Copy->Key; - channel = Copy->Channel; - JZEvent* pEvent = iter.Range( - Copy->GetClock() + Copy->Length, - Copy->GetClock() + KeyOn->Length); - while (pEvent) - { - a = pEvent->IsKeyPressure(); - if (a) - { - if (a->Key == key && a->Channel == channel) - { - Win->Track->Kill(pEvent); - } - } - pEvent = iter.Next(); - } - } - // - - Win->Track->Kill(KeyOn); - Win->Track->Put(Copy); - Win->Track->Cleanup(); Win->MouseAction = 0; - - // SN++ Veloc- oder Aftertouch-Editor updaten - if (Win->CtrlEdit) - Win->CtrlEdit->UpDate(); - - - // allways repaint - Win->Redraw(); - - delete this; - return 0; -} - - -// ------------------------------------------------------------------------- -// tPlayTrackLengthDragger JAVE this is just copied from tKeyLengthDragger, -// the need to be inherited somehow -// ------------------------------------------------------------------------- - -class tPlayTrackLengthDragger : public tMouseAction -{ - tPlayTrack *KeyOn; - tPlayTrack *Copy; - JZPianoFrame *Win; - JZTrack *Track; - wxDC *dc; - - public: - tPlayTrackLengthDragger(tPlayTrack *k, JZPianoFrame *w); - int Dragging(wxMouseEvent& Event); - int ButtonUp(wxMouseEvent& Event); - int Event(wxMouseEvent& Event); -}; - - -tPlayTrackLengthDragger::tPlayTrackLengthDragger(tPlayTrack *k, JZPianoFrame *w) -{ - KeyOn = k; - Copy = k->Copy() -> IsPlayTrack(); - Win = w; - - // SN++ BUG FIX: undo/redo - Win->Song->NewUndoBuffer(); - // - wxClientDC dc(Win->Canvas); - Win->Canvas->PrepareDC(dc); - Win->DrawEvent(&dc, Copy, wxWHITE_BRUSH, 0); - Win->DrawEvent(&dc, Copy, Copy->GetBrush(), 1, 1); -} - -int tPlayTrackLengthDragger::Event(wxMouseEvent& Event) -{ - if (Event.Dragging()) - { - return Dragging(Event); - } - else if (Event.ButtonUp()) - { - return ButtonUp(Event); - } - return 0; -} - -int tPlayTrackLengthDragger::Dragging(wxMouseEvent& Event) -{ - int fx, fy; - wxClientDC dc(Win->Canvas); - Win->Canvas->PrepareDC(dc); - Win->DrawEvent(&dc, Copy, Copy->GetBrush(), 1, 1); - Win->LogicalMousePosition(Event, &fx, &fy); - int Clock = Win->x2Clock(fx); - int Length = Clock - Copy->GetClock(); - if (Length <= 0) - Length = 1; - Copy->eventlength = Length; - - Win->DrawEvent(&dc, Copy, Copy->GetBrush(), 1, 1); - return 0; -} - -int tPlayTrackLengthDragger::ButtonUp(wxMouseEvent& Event) -{ - wxClientDC dc(Win->Canvas); - Win->Canvas->PrepareDC(dc); - Win->DrawEvent(&dc, Copy, Copy->GetBrush(), 1, 1); - Win->DrawEvent(&dc, Copy, Copy->GetBrush(), 0, 1); - - Win->Track->Kill(KeyOn); - Win->Track->Put(Copy); - Win->Track->Cleanup(); Win->MouseAction = 0; - - // SN++ Veloc- oder Aftertouch-Editor updaten - if (Win->CtrlEdit) - Win->CtrlEdit->UpDate(); - - - // allways repaint - Win->Redraw(); - - delete this; - return 0; -} - - - // -------------------------------------------------------------------- -// VelocCounter -// -------------------------------------------------------------------- -class tVelocCounter : public tMouseCounter -{ - JZPianoFrame *Win; - tKeyOn *KeyOn; - public: - int Event(wxMouseEvent& Event); - tVelocCounter(JZPianoFrame *w, JZRectangle* r, tKeyOn* pEvent) - : tMouseCounter(w, r, pEvent->Veloc, 1, 127) - { - Win = w; - KeyOn = pEvent; - // SN++ BUG FIX: undo/redo - Win->Song->NewUndoBuffer(); - // - wxClientDC dc(Win->Canvas); - dc.SetFont(*(Win->mpFixedFont)); - } -}; - - -int tVelocCounter::Event(wxMouseEvent& Event) -{ - if (tMouseCounter::Event(Event)) - { - tKeyOn *Copy = (tKeyOn *)KeyOn->Copy(); - Copy->Veloc = Value; - Win->Track->Kill(KeyOn); - Win->Track->Put(Copy); - Win->Track->Cleanup(); - - wxClientDC dc(Win->Canvas); - Win->Canvas->PrepareDC(dc); - Win->DrawEvent(&dc, Copy, Copy->GetBrush(), 0, 1); - - if (Win->CtrlEdit) - Win->CtrlEdit->UpDate(); - - Win->MouseAction = 0; - - dc.SetFont(*(Win->mpFont)); - delete this; - } - return 0; -} - - - - -// -------------------------------------------------------------------- - - -void JZPianoFrame::MouseCutPaste(wxMouseEvent& Event, bool cut) -{ - - //converts physical coords to logical(scrolled) coords - wxClientDC dc(Canvas); - Canvas->PrepareDC(dc); - wxPoint point = Event.GetLogicalPosition(dc); - - int x = point.x; - int y = point.y; - - int Clock = x2Clock(x); - int Pitch = y2Pitch(y); - JZEvent *m = FindEvent(Track, Clock, Pitch); - if (m) - { - Copy(Track, m, cut); - } - else - { - Paste(Track, SnapClock(Clock), Pitch); - } - - // allways redraw - Redraw(); -} - - -void JZPianoFrame::MouseEvents(wxMouseEvent& Event) -{ - int action = MouseEvnt.Action(Event); - - if (action) - { - int x, y; - LogicalMousePosition(Event, &x, &y); - - int Clock = x2Clock(x); - int Pitch = y2Pitch(y); - JZEvent *m = FindEvent(Track, Clock, Pitch); - tKeyOn *k = 0; - tPlayTrack *p = 0; - if (m){ //both these events are drag length - k = m->IsKeyOn(); - p = m->IsPlayTrack(); - } - switch (action) - { - case MA_CUTPASTE: - MouseCutPaste(Event, 1); - break; - - case MA_COPY: - MouseCutPaste(Event, 0); - break; - - case MA_LENGTH : - if (k) - { - if (!Track->GetAudioMode()) - MouseAction = new tKeyLengthDragger(k, this); - } - else - { - if(p) - { - MouseAction = new tPlayTrackLengthDragger(p, this); - } - else if (VisibleAllTracks) - { - // event not found, maybe change to another Track - int i; - for (i = 0; i < Song->nTracks; i++) - { - JZTrack *t = Song->GetTrack(i); - if (IsVisible(t) && FindEvent(t, Clock, Pitch)) - ... [truncated message content] |
From: <pst...@us...> - 2008-03-21 05:56:36
|
Revision: 344 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=344&view=rev Author: pstieber Date: 2008-03-20 22:56:35 -0700 (Thu, 20 Mar 2008) Log Message: ----------- Started cleaning up the harmony browser analyzer. Modified Paths: -------------- trunk/jazz/src/HarmonyBrowserAnalyzer.cpp trunk/jazz/src/HarmonyBrowserAnalyzer.h Modified: trunk/jazz/src/HarmonyBrowserAnalyzer.cpp =================================================================== --- trunk/jazz/src/HarmonyBrowserAnalyzer.cpp 2008-03-21 05:54:35 UTC (rev 343) +++ trunk/jazz/src/HarmonyBrowserAnalyzer.cpp 2008-03-21 05:56:35 UTC (rev 344) @@ -31,13 +31,17 @@ #include <cmath> HBAnalyzer::HBAnalyzer(HBContext **s, int n) + : seq(s), + max_seq(n), + start_clock(0), + stop_clock(0), + eighths_per_chord(1), + mSteps(0), + mpFilter(0), + mpTrack(0), + count(0), + delta(0) { - seq = s; - max_seq = n; - - count = 0; - delta = 0; - steps = 0; } @@ -47,30 +51,32 @@ } -void HBAnalyzer::Init(tFilter *f, int epc) +void HBAnalyzer::Init(tFilter* pFilter, int epc) { Exit(); // cleanup from previous run - filter = f; - start_clock = f->FromClock; - stop_clock = f->ToClock; + mpFilter = pFilter; + start_clock = pFilter->FromClock; + stop_clock = pFilter->ToClock; eighths_per_chord = epc; if (eighths_per_chord == 0) - steps = max_seq; // map number of chords to selection + { + mSteps = max_seq; // map number of chords to selection + } else { - JZBarInfo BarInfo(filter->Song); + JZBarInfo BarInfo(mpFilter->mpSong); BarInfo.SetClock(start_clock); int start_bar = BarInfo.BarNr; BarInfo.SetClock(stop_clock); int stop_bar = BarInfo.BarNr; - steps = (stop_bar - start_bar) * 8L / eighths_per_chord; + mSteps = (stop_bar - start_bar) * 8L / eighths_per_chord; } - count = new int* [steps]; - delta = new int* [steps]; - for (int i = 0; i < steps; i++) + count = new int* [mSteps]; + delta = new int* [mSteps]; + for (int i = 0; i < mSteps; i++) { count[i] = new int[12]; delta[i] = new int[12]; @@ -85,7 +91,7 @@ void HBAnalyzer::Exit() { - for (int i = 0; i < steps; i++) + for (int i = 0; i < mSteps; i++) { delete [] count[i]; delete [] delta[i]; @@ -94,26 +100,26 @@ delete [] delta; count = 0; delta = 0; - steps = 0; + mSteps = 0; } -int HBAnalyzer::Analyze(tFilter *f, int qbc) +int HBAnalyzer::Analyze(tFilter* pFilter, int qbc) { - Init(f, qbc); - if (steps < max_seq) + Init(pFilter, qbc); + if (mSteps < max_seq) { IterateEvents(&HBAnalyzer::CountEvent); CreateChords(); - return steps; + return mSteps; } return 0; } -int HBAnalyzer::Transpose(tFilter * f, int qbc) +int HBAnalyzer::Transpose(tFilter* pFilter, int qbc) { - f->Song->NewUndoBuffer(); - Init(f, qbc); + pFilter->mpSong->NewUndoBuffer(); + Init(pFilter, qbc); IterateEvents(&HBAnalyzer::CountEvent); GenerateMapping(); IterateEvents(&HBAnalyzer::TransposeEvent); @@ -123,14 +129,14 @@ void HBAnalyzer::IterateEvents(void (HBAnalyzer::*Action)(tKeyOn *on, JZTrack *t)) { - tTrackIterator Tracks(filter); + tTrackIterator Tracks(mpFilter); JZTrack *t = Tracks.First(); while (t) { if (!t->IsDrumTrack()) { tEventIterator Events(t); - JZEvent *e = Events.Range(filter->FromClock, filter->ToClock); + JZEvent *e = Events.Range(mpFilter->FromClock, mpFilter->ToClock); while (e) { tKeyOn *on = e->IsKeyOn(); @@ -149,14 +155,14 @@ int HBAnalyzer::Step2Clock(int step) { - int fr = filter->FromClock; - int to = filter->ToClock; - return (step * (to - fr)) / steps + fr; + int fr = mpFilter->FromClock; + int to = mpFilter->ToClock; + return (step * (to - fr)) / mSteps + fr; } void HBAnalyzer::CountEvent(tKeyOn *on, JZTrack *t) { - for (int i = 0; i < steps; i++) + for (int i = 0; i < mSteps; i++) { int start = Step2Clock(i); int stop = Step2Clock(i+1); @@ -176,9 +182,9 @@ } -void HBAnalyzer::TransposeEvent(tKeyOn *on, JZTrack *track) +void HBAnalyzer::TransposeEvent(tKeyOn *on, JZTrack* pTrack) { - for (int i = 0; i < steps; i++) + for (int i = 0; i < mSteps; i++) { int start = Step2Clock(i); int stop = Step2Clock(i+1); @@ -202,8 +208,8 @@ { tKeyOn *cp = (tKeyOn *)on->Copy(); cp->Key += delta[i][on->Key % 12]; - track->Kill(on); - track->Put(cp); + pTrack->Kill(on); + pTrack->Put(cp); // do not transpose again break; @@ -247,7 +253,7 @@ void HBAnalyzer::GenerateMapping() { int step; - for (step = 0; step < steps; step++) + for (step = 0; step < mSteps; step++) { int j; @@ -325,7 +331,7 @@ void HBAnalyzer::GenerateMapping() { int step; - for (step = 0; step < steps; step++) + for (step = 0; step < mSteps; step++) { int i, j; @@ -381,8 +387,8 @@ void HBAnalyzer::CreateChords() { - int* pBest = new int[steps]; - for (int i = 0; i < steps; i++) + int* pBest = new int[mSteps]; + for (int i = 0; i < mSteps; i++) { pBest[i] = -1; } @@ -393,7 +399,7 @@ const HBContext &ct = iter.Context(); const HBChord chord = ct.Chord(); const HBChord scale = ct.Scale(); - for (int i = 0; i < steps; i++) + for (int i = 0; i < mSteps; i++) { int err = 0; for (int k = 0; k < 12; k++) Modified: trunk/jazz/src/HarmonyBrowserAnalyzer.h =================================================================== --- trunk/jazz/src/HarmonyBrowserAnalyzer.h 2008-03-21 05:54:35 UTC (rev 343) +++ trunk/jazz/src/HarmonyBrowserAnalyzer.h 2008-03-21 05:56:35 UTC (rev 344) @@ -32,27 +32,27 @@ class HBAnalyzer { public: + HBAnalyzer(HBContext **seq, int n_seq); + ~HBAnalyzer(); + int Analyze(tFilter *f, int eighth_per_chord = 8); + int Transpose(tFilter *f, int eighth_per_chord = 8); void Init(tFilter *f, int steps_per_bar); + void Exit(); - int Steps() const { return steps; } + + int Steps() const; + int Step2Clock(int step); - HBContext * GetContext(int step) const { return seq[step % max_seq]; } + HBContext* GetContext(int step) const; + private: - HBContext **seq; - int max_seq; - int start_clock, stop_clock; - int eighths_per_chord; - int steps; - tFilter* filter; - JZTrack* track; - void IterateEvents(void (HBAnalyzer::*Action)(tKeyOn *on, JZTrack *t)); void CountEvent(tKeyOn *on, JZTrack *t); void TransposeEvent(tKeyOn *on, JZTrack *t); @@ -61,8 +61,31 @@ int MaxCount(int i, const HBChord &done); void GenerateMapping(); - int **count; - int **delta; + private: + + HBContext** seq; + int max_seq; + + int start_clock, stop_clock; + int eighths_per_chord; + int mSteps; + tFilter* mpFilter; + JZTrack* mpTrack; + + int** count; + int** delta; }; +inline +int HBAnalyzer::Steps() const +{ + return mSteps; +} + +inline +HBContext* HBAnalyzer::GetContext(int step) const +{ + return seq[step % max_seq]; +} + #endif // !defined(JZ_HARMONYBROWSERANALYZER_H) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-21 05:54:36
|
Revision: 343 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=343&view=rev Author: pstieber Date: 2008-03-20 22:54:35 -0700 (Thu, 20 Mar 2008) Log Message: ----------- 1. Made cosmetic changes. 2. Prefixed some data members with m and mp. 3. Put a destructor in the source file. Modified Paths: -------------- trunk/jazz/src/Command.cpp trunk/jazz/src/Command.h Modified: trunk/jazz/src/Command.cpp =================================================================== --- trunk/jazz/src/Command.cpp 2008-03-21 05:51:45 UTC (rev 342) +++ trunk/jazz/src/Command.cpp 2008-03-21 05:54:35 UTC (rev 343) @@ -34,37 +34,119 @@ using namespace std; -// ************************************************************************ +//***************************************************************************** +// tCommand +//***************************************************************************** +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +tCommand::tCommand(tFilter* pFilter) + : mpFilter(pFilter), + mpSong(pFilter->mpSong), + mReverse(0) +{ +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +tCommand::~tCommand() +{ +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void tCommand::Execute(int NewUndo) +{ + wxBeginBusyCursor(); + if (NewUndo) + { + mpSong->NewUndoBuffer(); + } + tTrackIterator Tracks(mpFilter, mReverse); + JZTrack* pTrack = Tracks.First(); + while (pTrack) + { + ExecuteTrack(pTrack); + pTrack = Tracks.Next(); + } + wxEndBusyCursor(); +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void tCommand::ExecuteTrack(JZTrack* pTrack) +{ + tEventIterator Iterator(pTrack); + JZEvent* pEvent = Iterator.Range(mpFilter->FromClock, mpFilter->ToClock); + while (pEvent) + { + if (mpFilter->IsSelected(pEvent)) + { + ExecuteEvent(pTrack, pEvent); + } + pEvent = Iterator.Next(); + } + pTrack->Cleanup(); +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void tCommand::ExecuteEvent(JZTrack* pTrack, JZEvent* pEvent) +{ +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +int tCommand::Interpolate(int Clock, int vmin, int vmax) +{ + int ClockMin = mpFilter->FromClock; + int ClockMax = mpFilter->ToClock; + return (Clock - ClockMin) * (vmax - vmin) / (ClockMax - ClockMin) + vmin; +} + +//***************************************************************************** // tSelectedEvents -// ************************************************************************ - +//***************************************************************************** +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- class tSelectedKeys : public tCommand { public: + + tSelectedKeys(tFilter* pFilter); + + void ExecuteEvent(JZTrack* pTrack, JZEvent* pEvent); + + public: + long Keys[128]; - tSelectedKeys(tFilter *f); - void ExecuteEvent(JZTrack *t, JZEvent *e); }; -tSelectedKeys::tSelectedKeys(tFilter *f) - : tCommand(f) +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +tSelectedKeys::tSelectedKeys(tFilter* pFilter) + : tCommand(pFilter) { int i; - for (i = 0; i < 128; i++) + for (i = 0; i < 128; ++i) + { Keys[i] = 0; + } } -void tSelectedKeys::ExecuteEvent(JZTrack *t, JZEvent *e) +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void tSelectedKeys::ExecuteEvent(JZTrack* pTrack, JZEvent* pEvent) { - tKeyOn *k = e->IsKeyOn(); - if (k) - Keys[ k->Key ] += k->Length; + tKeyOn* pKey = pEvent->IsKeyOn(); + if (pKey) + { + Keys[pKey->Key] += pKey->Length; + } } -// ************************************************************************ +//***************************************************************************** // tScale -// ************************************************************************ - +//***************************************************************************** // c d e f g a b static const int CMajor[12] = { 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 }; @@ -203,58 +285,6 @@ return Key; } -// ************************************************************************ -// tCommand -// ************************************************************************ - -tCommand::tCommand(tFilter *f) -{ - Filter = f; - Song = f->Song; - Reverse = 0; -} - -void tCommand::Execute(int NewUndo) -{ - wxBeginBusyCursor(); - if (NewUndo) - Song->NewUndoBuffer(); - tTrackIterator Tracks(Filter, Reverse); - JZTrack *t = Tracks.First(); - while (t) - { - ExecuteTrack(t); - t = Tracks.Next(); - } - wxEndBusyCursor(); -} - - -void tCommand::ExecuteTrack(JZTrack *t) -{ - tEventIterator Iterator(t); - JZEvent *e = Iterator.Range(Filter->FromClock, Filter->ToClock); - while (e) - { - if (Filter->IsSelected(e)) - ExecuteEvent(t, e); - e = Iterator.Next(); - } - t->Cleanup(); -} - - -void tCommand::ExecuteEvent(JZTrack *t, JZEvent *e) -{ -} - -long tCommand::Interpolate(long clk, long vmin, long vmax) -{ - long cmin = Filter->FromClock; - long cmax = Filter->ToClock; - return (clk - cmin) * (vmax - vmin) / (cmax - cmin) + vmin; -} - // *********************************************************************** // tCmdShift // *********************************************************************** @@ -288,10 +318,10 @@ tCommand::Execute(NewUndo); if (!LeaveSpace) { - tFilter f(Filter); - f.FromClock = Filter->ToClock; - f.ToClock = Song->GetLastClock() + 1; - long DeltaClock = Filter->FromClock - Filter->ToClock; + tFilter f(mpFilter); + f.FromClock = mpFilter->ToClock; + f.ToClock = mpSong->GetLastClock() + 1; + long DeltaClock = mpFilter->FromClock - mpFilter->ToClock; tCmdShift shift(&f, DeltaClock); shift.Execute(0); } @@ -353,7 +383,7 @@ tCmdTranspose::tCmdTranspose(tFilter *f, int notes, int ScaleNr, int fit) : tCommand(f) { - Scale.Init(ScaleNr, Filter); + Scale.Init(ScaleNr, mpFilter); Notes = notes; FitIntoScale = fit; } @@ -542,7 +572,7 @@ //convert all note-on messages to a pitch bend/volume controller pair, velocity -> volume //make a volume off controller at the end of the current event tEventIterator Iterator(t); - JZEvent *e = Iterator.Range(Filter->FromClock, Filter->ToClock); + JZEvent *e = Iterator.Range(mpFilter->FromClock, mpFilter->ToClock); long startclock=-1; long endclock=-1; unsigned char channel=0; @@ -568,7 +598,7 @@ long startkey=0; while (e) { - if (Filter->IsSelected(e) && e->IsKeyOn()) + if (mpFilter->IsSelected(e) && e->IsKeyOn()) { if (startclock == -1) { @@ -707,15 +737,17 @@ // tCmdCopyToBuffer // ************************************************************************ -tCmdCopyToBuffer::tCmdCopyToBuffer(tFilter *f, tEventArray *buf) - : tCommand(f) +tCmdCopyToBuffer::tCmdCopyToBuffer( + tFilter* pFilter, + tEventArray* pBuffer) + : tCommand(pFilter) { - Buffer = buf; + mpBuffer = pBuffer; } -void tCmdCopyToBuffer::ExecuteEvent(JZTrack *t, JZEvent *e) +void tCmdCopyToBuffer::ExecuteEvent(JZTrack* pTrack, JZEvent* pEvent) { - Buffer->Put(e->Copy()); + mpBuffer->Put(pEvent->Copy()); } // ********************************************************************** @@ -735,9 +767,9 @@ InsertSpace = 0; // no RepeatClock = -1; // -1L - Reverse = DestTrack > Filter->FromTrack; - if (Reverse) - DestTrack += Filter->ToTrack - Filter->FromTrack; // ToTrack inclusive + mReverse = DestTrack > mpFilter->FromTrack; + if (mReverse) + DestTrack += mpFilter->ToTrack - mpFilter->FromTrack; // ToTrack inclusive } @@ -750,19 +782,23 @@ StartClock = DestClock; if (RepeatClock < 0) - StopClock = StartClock + Filter->ToClock - Filter->FromClock; + StopClock = StartClock + mpFilter->ToClock - mpFilter->FromClock; else StopClock = RepeatClock; - d = Song->GetTrack(DestTrack); + d = mpSong->GetTrack(DestTrack); - if (Reverse) + if (mReverse) { if (DestTrack) - -- DestTrack; + { + --DestTrack; + } } else - ++ DestTrack; + { + ++DestTrack; + } if (s && d) { @@ -771,15 +807,15 @@ tEventArray tmp; { tEventIterator Iterator(s); - long DeltaClock = StartClock - Filter->FromClock; - JZEvent *e = Iterator.Range(Filter->FromClock, Filter->ToClock); + long DeltaClock = StartClock - mpFilter->FromClock; + JZEvent *e = Iterator.Range(mpFilter->FromClock, mpFilter->ToClock); while (e) { long NewClock = e->GetClock() + DeltaClock; if (NewClock >= StopClock) break; - if (Filter->IsSelected(e)) + if (mpFilter->IsSelected(e)) { JZEvent* cpy = e->Copy(); cpy->SetClock(NewClock); @@ -790,7 +826,7 @@ if (!e) { e = Iterator.First(); - DeltaClock += Filter->ToClock - Filter->FromClock; + DeltaClock += mpFilter->ToClock - mpFilter->FromClock; } } } @@ -804,7 +840,7 @@ long DeltaClock = StopClock - StartClock; while (e) { - if (Filter->IsSelected(e)) + if (mpFilter->IsSelected(e)) { JZEvent *c = e->Copy(); c->SetClock(c->GetClock() + DeltaClock); @@ -821,10 +857,10 @@ if (EraseSource) { tEventIterator Iterator(s); - JZEvent *e = Iterator.Range(Filter->FromClock, Filter->ToClock); + JZEvent *e = Iterator.Range(mpFilter->FromClock, mpFilter->ToClock); while (e) { - if (Filter->IsSelected(e)) + if (mpFilter->IsSelected(e)) s->Kill(e); e = Iterator.Next(); } @@ -839,7 +875,7 @@ JZEvent *e = Iterator.Range(StartClock, StopClock); while (e) { - if (Filter->IsSelected(e)) + if (mpFilter->IsSelected(e)) d->Kill(e); e = Iterator.Next(); } @@ -867,7 +903,7 @@ if (e->IsKeyOn()) { tKeyOn *k = (tKeyOn *)e->Copy(); - k->SetClock(Filter->FromClock + Filter->ToClock - k->GetClock()); + k->SetClock(mpFilter->FromClock + mpFilter->ToClock - k->GetClock()); t->Kill(e); t->Put(k); } @@ -895,10 +931,10 @@ Keys[i] = 0; tEventIterator Iterator(t); - e = Iterator.Range(Filter->FromClock, Filter->ToClock); + e = Iterator.Range(mpFilter->FromClock, mpFilter->ToClock); while (e) { - if (Filter->IsSelected(e) && e->IsKeyOn()) + if (mpFilter->IsSelected(e) && e->IsKeyOn()) { tKeyOn *k = (tKeyOn *)e; Keys[k->Key] = 1; @@ -908,10 +944,10 @@ // reverse Key's - e = Iterator.Range(Filter->FromClock, Filter->ToClock); + e = Iterator.Range(mpFilter->FromClock, mpFilter->ToClock); while(e) { - if (Filter->IsSelected(e) && e->IsKeyOn()) + if (mpFilter->IsSelected(e) && e->IsKeyOn()) { tKeyOn *k = (tKeyOn *)e->Copy(); int n_th = 0; @@ -944,8 +980,8 @@ source = src; destin = dst; add = ad; - binfo = new JZBarInfo(Song); - binfo->SetClock(Filter->FromClock); + binfo = new JZBarInfo(mpSong); + binfo->SetClock(mpFilter->FromClock); start_bar = binfo->BarNr; } Modified: trunk/jazz/src/Command.h =================================================================== --- trunk/jazz/src/Command.h 2008-03-21 05:51:45 UTC (rev 342) +++ trunk/jazz/src/Command.h 2008-03-21 05:54:35 UTC (rev 343) @@ -54,16 +54,24 @@ class tCommand { public: - tFilter *Filter; - JZSong *Song; - int Reverse; - tCommand(tFilter *f); + tCommand(tFilter* pFilter); + + virtual ~tCommand(); + virtual void Execute(int NewUndo = 1); - virtual void ExecuteTrack(JZTrack *t); - virtual void ExecuteEvent(JZTrack *t, JZEvent *e); - long Interpolate(long clk, long vmin, long vmax); - virtual ~tCommand() {} + + virtual void ExecuteTrack(JZTrack* pTrack); + + virtual void ExecuteEvent(JZTrack* pTrack, JZEvent* pEvent); + + int Interpolate(int Clock, int vmin, int vmax); + + public: + + tFilter* mpFilter; + JZSong* mpSong; + int mReverse; }; @@ -194,10 +202,15 @@ class tCmdCopyToBuffer : public tCommand { - tEventArray *Buffer; public: - tCmdCopyToBuffer(tFilter *f, tEventArray *Buffer); + + tCmdCopyToBuffer(tFilter* pFilter, tEventArray *Buffer); + virtual void ExecuteEvent(JZTrack *t, JZEvent *e); + + private: + + tEventArray* mpBuffer; }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-21 05:51:46
|
Revision: 342 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=342&view=rev Author: pstieber Date: 2008-03-20 22:51:45 -0700 (Thu, 20 Mar 2008) Log Message: ----------- 1. Removed the EventWindow.h include. 2. Changed the piano frame forward declaration to piano window. 3. Changed GetPianoWindow to return a JZPianoWindow instead of a JZPianoFrame. Modified Paths: -------------- trunk/jazz/src/TrackFrame.h Modified: trunk/jazz/src/TrackFrame.h =================================================================== --- trunk/jazz/src/TrackFrame.h 2008-03-21 05:49:17 UTC (rev 341) +++ trunk/jazz/src/TrackFrame.h 2008-03-21 05:51:45 UTC (rev 342) @@ -23,14 +23,13 @@ #ifndef JZ_TRACKFRAME_H #define JZ_TRACKFRAME_H -#include "EventWindow.h" #include "MouseAction.h" #include "Metronome.h" class JZSong; class JZToolBar; class JZTrackWindow; -class JZPianoFrame; +class JZPianoWindow; //***************************************************************************** //***************************************************************************** @@ -47,7 +46,7 @@ virtual ~JZTrackFrame(); - JZPianoFrame* GetPianoWindow() + JZPianoWindow* GetPianoWindow() { return 0; } @@ -103,7 +102,7 @@ JZTrackWindow* mpTrackWindow; -// JZPianoFrame* mpPianoFrame; +// JZPianoWindow* mpPianoWindow; int mPreviousClock; bool mPreviouslyRecording; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-21 05:49:19
|
Revision: 341 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=341&view=rev Author: pstieber Date: 2008-03-20 22:49:17 -0700 (Thu, 20 Mar 2008) Log Message: ----------- Added a pointer validity check to prevent a crash. Modified Paths: -------------- trunk/jazz/src/ResourceDialog.cpp Modified: trunk/jazz/src/ResourceDialog.cpp =================================================================== --- trunk/jazz/src/ResourceDialog.cpp 2008-03-21 05:48:03 UTC (rev 340) +++ trunk/jazz/src/ResourceDialog.cpp 2008-03-21 05:49:17 UTC (rev 341) @@ -78,7 +78,10 @@ jppResourceDialog::~jppResourceDialog() { - dialog->Destroy(); + if (dialog) + { + dialog->Destroy(); + } for ( list<jppResourceElement*>::iterator iResourceElement = links.begin(); iResourceElement != links.end(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-21 05:48:05
|
Revision: 340 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=340&view=rev Author: pstieber Date: 2008-03-20 22:48:03 -0700 (Thu, 20 Mar 2008) Log Message: ----------- 1. Removed the unused ScPage macro. 2. Commented out the NextWin->DrawPlayPosition code. 3. Made a cosmetic change. Modified Paths: -------------- trunk/jazz/src/EventWindow.cpp Modified: trunk/jazz/src/EventWindow.cpp =================================================================== --- trunk/jazz/src/EventWindow.cpp 2008-03-21 05:46:13 UTC (rev 339) +++ trunk/jazz/src/EventWindow.cpp 2008-03-21 05:48:03 UTC (rev 340) @@ -39,7 +39,6 @@ // ************************************************************************ #define ScLine 50L -#define ScPage 8L //notice, there is a conflict between this and the subclass event tables that i dont know how to resolv @@ -629,9 +628,9 @@ } } if (NextWin) + { NextWin->NewPlayPosition(Clock); - - + } } /** draw the "play position", by placing a vertical line where the "play clock" is */ @@ -651,10 +650,10 @@ dc->DrawLine(x + 1, CanvasY, x + 1, mEventsY + mEventsHeight); dc->SetLogicalFunction(wxCOPY); } - if (NextWin) - { - NextWin->DrawPlayPosition(dc); - } +//OLD if (NextWin) +//OLD { +//OLD NextWin->DrawPlayPosition(dc); +//OLD } } // ************************************************************************** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-21 05:46:15
|
Revision: 339 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=339&view=rev Author: pstieber Date: 2008-03-20 22:46:13 -0700 (Thu, 20 Mar 2008) Log Message: ----------- Changed to use the piano window. Modified Paths: -------------- trunk/jazz/src/Rhythm.cpp Modified: trunk/jazz/src/Rhythm.cpp =================================================================== --- trunk/jazz/src/Rhythm.cpp 2008-03-21 05:45:24 UTC (rev 338) +++ trunk/jazz/src/Rhythm.cpp 2008-03-21 05:46:13 UTC (rev 339) @@ -29,7 +29,7 @@ #include "Globals.h" #include "Harmony.h" #include "TrackFrame.h" -#include "PianoFrame.h" +#include "PianoWindow.h" #include "ToolBar.h" #include "DeprecatedStringUtils.h" #include "FileSelector.h" @@ -908,7 +908,7 @@ r->n_keys = 0; r->mode = keys[i]; tEventArray events; - tCmdCopyToBuffer cmd(gpTrackFrame->GetPianoWindow()->mpFilter, &events); + tCmdCopyToBuffer cmd(gpTrackFrame->GetPianoWindow()->GetFilter(), &events); cmd.Execute(0); // no UNDO for (int ii = 0; ii < events.nEvents; ii++) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-21 05:45:25
|
Revision: 338 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=338&view=rev Author: pstieber Date: 2008-03-20 22:45:24 -0700 (Thu, 20 Mar 2008) Log Message: ----------- Added the ID_HELP_PIANO_WINDOW resource identifier. Modified Paths: -------------- trunk/jazz/src/Resources.h Modified: trunk/jazz/src/Resources.h =================================================================== --- trunk/jazz/src/Resources.h 2008-03-21 05:44:12 UTC (rev 337) +++ trunk/jazz/src/Resources.h 2008-03-21 05:45:24 UTC (rev 338) @@ -62,7 +62,9 @@ #define ID_TOOLS_HARMONY_BROWSER wxID_HIGHEST + 25 -#define MEN_CLEAR wxID_HIGHEST + 30 -#define MEN_SETTINGS wxID_HIGHEST + 41 +#define ID_HELP_PIANO_WINDOW wxID_HIGHEST + 40 +#define MEN_CLEAR wxID_HIGHEST + 50 +#define MEN_SETTINGS wxID_HIGHEST + 60 + #endif // !defined(JZ_RESOURCES_H) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-21 05:44:13
|
Revision: 337 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=337&view=rev Author: pstieber Date: 2008-03-20 22:44:12 -0700 (Thu, 20 Mar 2008) Log Message: ----------- 1. Prefixed the Song data member with mp. 2. Made some cosmetic changes. Modified Paths: -------------- trunk/jazz/src/Filter.cpp trunk/jazz/src/Filter.h Modified: trunk/jazz/src/Filter.cpp =================================================================== --- trunk/jazz/src/Filter.cpp 2008-03-21 05:42:08 UTC (rev 336) +++ trunk/jazz/src/Filter.cpp 2008-03-21 05:44:12 UTC (rev 337) @@ -35,21 +35,21 @@ const tFltEvent FltEvents[nFltEvents] = { - { StatKeyOn, "Note", 1, 0, 127}, - { StatKeyPressure, "Poly Aftertouch",1, 0, 127}, - { StatControl, "Controller", 1, 0, 127}, - { StatProgram, "Patch", 1, 0, 127}, - { StatPitch, "Pitch", 1, -8192, 8192}, - { StatTimeSignat, "Meter", 1, 0, 0}, - { StatChnPressure, "Channel Aftertouch",1, 0, 0}, - { StatSysEx, "SysEx", 1, 0, 0} + { StatKeyOn, "Note", 1, 0, 127}, + { StatKeyPressure, "Poly Aftertouch", 1, 0, 127}, + { StatControl, "Controller", 1, 0, 127}, + { StatProgram, "Patch", 1, 0, 127}, + { StatPitch, "Pitch", 1, -8192, 8192}, + { StatTimeSignat, "Meter", 1, 0, 0}, + { StatChnPressure, "Channel Aftertouch", 1, 0, 0}, + { StatSysEx, "SysEx", 1, 0, 0} }; tFilter::tFilter(JZSong *s) { - Song = s; + mpSong = s; FltEvents = new tFltEvent [nFltEvents]; memcpy(FltEvents, ::FltEvents, sizeof(::FltEvents)); @@ -84,8 +84,9 @@ return *this; } -void tFilter::copy(tFilter const &o) { - Song = o.Song; +void tFilter::copy(tFilter const &o) +{ + mpSong = o.mpSong; FromClock = o.FromClock; ToClock = o.ToClock; FromTrack = o.FromTrack; @@ -191,7 +192,7 @@ { tFilterDlg *dlg; // DialogBox = new wxDialogBox(parent, "Event Filter", FALSE ); - dlg = new tFilterDlg(this, Song, ShowEventStats); + dlg = new tFilterDlg(this, mpSong, ShowEventStats); dlg->Create(); // dlg->EditForm(DialogBox, ShowEventStats); // DialogBox->Fit(); @@ -210,7 +211,7 @@ tTrackIterator::tTrackIterator(tFilter *f, int rev) { Filter = f; - Song = Filter->Song; + Song = Filter->mpSong; Reverse = rev; } Modified: trunk/jazz/src/Filter.h =================================================================== --- trunk/jazz/src/Filter.h 2008-03-21 05:42:08 UTC (rev 336) +++ trunk/jazz/src/Filter.h 2008-03-21 05:44:12 UTC (rev 337) @@ -64,14 +64,16 @@ tFltEvent *FltEvents; bool OtherSelected; - JZSong *Song; + JZSong* mpSong; + int FromClock, ToClock; // einschl .. ausschl + int FromTrack, ToTrack; // 1..n einschl .. einschl void Dialog(wxFrame *parent, int ShowEventStats = 1); - tFilter(JZSong *); - tFilter(tFilter *o); + tFilter(JZSong* pSong); + tFilter(tFilter* pOtherFilter); tFilter(tFilter const &o); tFilter& operator=(tFilter const &o); virtual ~tFilter(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-21 05:42:10
|
Revision: 336 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=336&view=rev Author: pstieber Date: 2008-03-20 22:42:08 -0700 (Thu, 20 Mar 2008) Log Message: ----------- Changed some resource IDs to standard wxWidgets values. Modified Paths: -------------- trunk/jazz/src/SampleWindow.cpp Modified: trunk/jazz/src/SampleWindow.cpp =================================================================== --- trunk/jazz/src/SampleWindow.cpp 2008-03-21 05:40:29 UTC (rev 335) +++ trunk/jazz/src/SampleWindow.cpp 2008-03-21 05:42:08 UTC (rev 336) @@ -48,9 +48,6 @@ #define MEN_SAVEAS 6 #define MEN_REVERT 7 -#define MEN_CUT 10 -#define MEN_COPY 11 - #define MEN_PASTE 12 #define MEN_PASTE_MIX 15 @@ -69,8 +66,6 @@ #define MEN_TRANSP_PNT 28 #define MEN_TRANSP_SET 29 -#define MEN_ZOOM_IN 40 -#define MEN_ZOOM_OUT 41 #define MEN_ACCEPT 42 #define MEN_CANCEL 43 #define MEN_ECHO 44 @@ -643,8 +638,8 @@ { MEN_LOAD, FALSE, open_xpm, "open wave file" }, { MEN_SAVE, FALSE, save_xpm, "save wave file" }, { JZToolBar::eToolBarSeparator }, - { MEN_ZOOM_IN, FALSE, zoomin_xpm, "zoom to selection" }, - { MEN_ZOOM_OUT, FALSE, zoomout_xpm, "zoom out" }, + { wxID_ZOOM_IN, FALSE, zoomin_xpm, "zoom to selection" }, + { wxID_ZOOM_OUT, FALSE, zoomout_xpm, "zoom out" }, { MEN_ACCEPT, FALSE, accept_xpm, "accept painting" }, { MEN_CANCEL, FALSE, cancel_xpm, "cancel painting" }, { JZToolBar::eToolBarSeparator }, @@ -710,8 +705,8 @@ menu_bar->Append(menu, "&File"); menu = new wxMenu; - menu->Append(MEN_CUT, "&Cut"); - menu->Append(MEN_COPY, "Co&py"); + menu->Append(wxID_CUT, "&Cut"); + menu->Append(wxID_COPY, "Co&py"); menu->Append(MEN_PASTE, "&Paste"); menu->Append(MEN_PASTE_MIX, "Paste &Merge"); @@ -751,8 +746,8 @@ menu = new wxMenu; menu->Append(MEN_TRANSP_SET, "&Pitch Painter ..."); menu->Append(MEN_WAHSETTINGS, "&Filter Painter ..."); - //menu->Append(MEN_ZOOM_IN, "Zoom &In"); - //menu->Append(MEN_ZOOM_OUT, "Zoom &Out"); +// menu->Append(wxID_ZOOM_IN, "Zoom &In"); +// menu->Append(wxID_ZOOM_OUT, "Zoom &Out"); menu->Append(MEN_SETTINGS, "&View Settings..."); menu_bar->Append(menu, "&Settings"); @@ -1109,7 +1104,7 @@ } break; - case MEN_CUT: + case wxID_CUT: { int fr, to; if (HaveSelection(fr, to, SelWarn)) @@ -1122,7 +1117,7 @@ } break; - case MEN_COPY: + case wxID_COPY: { int fr, to; if (HaveSelection(fr, to, SelAll)) @@ -1130,7 +1125,7 @@ } break; - case MEN_ZOOM_IN: + case wxID_ZOOM_IN: { int fr, to; if (HaveSelection(fr, to, SelWarn)) @@ -1138,7 +1133,7 @@ } break; - case MEN_ZOOM_OUT: + case wxID_ZOOM_OUT: SetViewPos(0, spl.GetLength()); break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-21 05:40:30
|
Revision: 335 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=335&view=rev Author: pstieber Date: 2008-03-20 22:40:29 -0700 (Thu, 20 Mar 2008) Log Message: ----------- 1. Changed mScrollLine to mScrollSize. 2. Changed the JZTrackFrame constructor argument to a wxFrame. 3. Added the filter header due to other changes in the piano window. Modified Paths: -------------- trunk/jazz/src/Dialogs.cpp trunk/jazz/src/Dialogs.h trunk/jazz/src/TrackWindow.cpp trunk/jazz/src/TrackWindow.h Modified: trunk/jazz/src/Dialogs.cpp =================================================================== --- trunk/jazz/src/Dialogs.cpp 2008-03-18 14:25:17 UTC (rev 334) +++ trunk/jazz/src/Dialogs.cpp 2008-03-21 05:40:29 UTC (rev 335) @@ -31,6 +31,7 @@ #include "Events.h" #include "Player.h" #include "PianoFrame.h" +#include "PianoWindow.h" #include "ClockDialog.h" #include "KeyDialog.h" #include "PropertyListDialog.h" @@ -55,7 +56,7 @@ : tPropertyListDlg( "Shift events left/right" ) { Filter = f; - Song = f->Song; + Song = f->mpSong; Unit = unit; EventWin = w; Steps=0; @@ -70,7 +71,10 @@ cmd.Execute(); EventWin->Redraw(); if (EventWin->NextWin) - EventWin->NextWin->Redraw(); + { + EventWin->NextWin->Redraw(); + } + // wxForm::OnOk(); return false; } @@ -108,7 +112,7 @@ : tPropertyListDlg( "Clean up events" ) { Filter = f; - Song = f->Song; + Song = f->mpSong; EventWin = w; } @@ -192,7 +196,7 @@ : tPropertyListDlg("Search and replace controller types" ) { Filter = f; - Song = f->Song; + Song = f->mpSong; EventWin = w; } @@ -243,7 +247,7 @@ { EventWin = w; Filter = f; - Song = f->Song; + Song = f->mpSong; } @@ -298,7 +302,7 @@ : tPropertyListDlg("Set MIDI Channel") { Filter = f; - Song = f->Song; + Song = f->mpSong; } @@ -349,7 +353,7 @@ : tPropertyListDlg( "Velocity" ) { Filter = f; - Song = f->Song; + Song = f->mpSong; } @@ -400,7 +404,7 @@ : tPropertyListDlg("Length") { Filter = f; - Song = f->Song; + Song = f->mpSong; EventWin = w; } @@ -465,7 +469,7 @@ : tPropertyListDlg("stretch/contract by scale from start of selected sequence" ) { Filter = f; - Song = f->Song; + Song = f->mpSong; EventWin = w; } @@ -511,7 +515,7 @@ : tPropertyListDlg("MIDI delay line" ) { Filter = f; - Song = f->Song; + Song = f->mpSong; EventWin = w; } @@ -609,12 +613,12 @@ // Snap // ************************************************************************* -tSnapDlg::tSnapDlg(JZPianoFrame* w, int* snapptr) - : tPropertyListDlg("Snap:quantize cut/paste events") +tSnapDlg::tSnapDlg(JZPianoWindow* pPianoWindow, int* snapptr) + : tPropertyListDlg("Snap:quantize cut/paste events"), + mpPianoWindow(pPianoWindow) { //, Steps("Snap value", limitSteps, snapptr) //limitSteps lives in util.cpp - win = w; ptr = snapptr; } @@ -624,7 +628,7 @@ { //Steps.GetValue(); // toggle the tool buttons - win->SetSnapDenom(*ptr); + mpPianoWindow->SetSnapDenom(*ptr); //tPropertyListDlg::OnClose(); return false; } @@ -666,7 +670,7 @@ //, Steps("steps", gQntSteps, &gQntStep) { Filter = f; - Song = f->Song; + Song = f->mpSong; EventWin = w; } @@ -732,12 +736,12 @@ JZTrack *Track; tClockDlg ClockDlg; - JZPianoFrame* Win; + JZPianoWindow* Win; JZEvent *Event; JZEvent *Copy; - tEventDlg(JZEvent *e, JZPianoFrame* w, JZTrack *t); + tEventDlg(JZEvent *e, JZPianoWindow* w, JZTrack *t); virtual void AddProperties(); virtual bool OnClose(); virtual void OnHelp(); @@ -745,9 +749,9 @@ }; -tEventDlg::tEventDlg(JZEvent *e, JZPianoFrame* w, JZTrack *t) +tEventDlg::tEventDlg(JZEvent *e, JZPianoWindow* w, JZTrack *t) : tPropertyListDlg( "Event" ), - ClockDlg(w->Song, "Time ", e->GetClock()) + ClockDlg(w->mpSong, "Time ", e->GetClock()) { Win = w; Track = t; @@ -772,7 +776,7 @@ Track->Kill(Event); Track->Put(Copy); Track->Cleanup(); - Win->Redraw(); + Win->Refresh(); return tPropertyListDlg::OnClose(); } @@ -790,7 +794,7 @@ int Channel; - tChEventDlg(tChannelEvent *e, JZPianoFrame* w, JZTrack *t) + tChEventDlg(tChannelEvent *e, JZPianoWindow* w, JZTrack *t) : tEventDlg(e, w, t) { Channel = e->Channel + 1; // 1..16 @@ -830,14 +834,14 @@ // SN++ int OffVeloc; - tKeyOnDlg(tKeyOn *e, JZPianoFrame* w, JZTrack *t); + tKeyOnDlg(tKeyOn *e, JZPianoWindow* w, JZTrack *t); void AddProperties(); bool OnClose(); }; -tKeyOnDlg::tKeyOnDlg(tKeyOn *e, JZPianoFrame* w, JZTrack *t) +tKeyOnDlg::tKeyOnDlg(tKeyOn *e, JZPianoWindow* w, JZTrack *t) : tChEventDlg(e, w, t), PitchDlg("Pitch", e->Key) { @@ -901,14 +905,14 @@ int Value; - tPitchDlg(tPitch *e, JZPianoFrame* w, JZTrack *t); + tPitchDlg(tPitch *e, JZPianoWindow* w, JZTrack *t); void AddProperties(); bool OnClose(); }; -tPitchDlg::tPitchDlg(tPitch *e, JZPianoFrame* w, JZTrack *t) +tPitchDlg::tPitchDlg(tPitch *e, JZPianoWindow* w, JZTrack *t) : tChEventDlg(e, w, t) { Event = e; @@ -944,14 +948,14 @@ int Control; //tNamedChoice Choice; - tControlDlg(tControl *e, JZPianoFrame* w, JZTrack *t); + tControlDlg(tControl *e, JZPianoWindow* w, JZTrack *t); void AddProperties(); bool OnClose(); }; -tControlDlg::tControlDlg(tControl *e, JZPianoFrame* w, JZTrack *t) +tControlDlg::tControlDlg(tControl *e, JZPianoWindow* w, JZTrack *t) : tChEventDlg(e, w, t) //, Choice("Controller", &gpConfig->CtrlName(0), &Control) { @@ -1006,14 +1010,14 @@ tNamedChoice Choice; - tPlayTrackDlg(tPlayTrack *e, JZPianoFrame* w, JZTrack *t); + tPlayTrackDlg(tPlayTrack *e, JZPianoWindow* w, JZTrack *t); void AddProperties(); bool OnClose(); }; -tPlayTrackDlg::tPlayTrackDlg(tPlayTrack *e, JZPianoFrame* w, JZTrack *t) +tPlayTrackDlg::tPlayTrackDlg(tPlayTrack *e, JZPianoWindow* w, JZTrack *t) : tEventDlg(e, w, t), Choice("playtrack", gpConfig->GetControlNames(), &track) { @@ -1065,14 +1069,14 @@ int track; tNamedChoice Choice; - tTextDlg(tText *e, JZPianoFrame* w, JZTrack *t); + tTextDlg(tText *e, JZPianoWindow* w, JZTrack *t); void AddProperties(); bool OnClose(); }; -tTextDlg::tTextDlg(tText *e, JZPianoFrame* w, JZTrack *t) +tTextDlg::tTextDlg(tText *e, JZPianoWindow* w, JZTrack *t) : tEventDlg(e, w, t), Choice("text", gpConfig->GetControlNames(), &track) { @@ -1112,14 +1116,14 @@ tNamedChoice Choice; - tEndOfTrackDlg(tEndOfTrack *e, JZPianoFrame* w, JZTrack *t); + tEndOfTrackDlg(tEndOfTrack *e, JZPianoWindow* w, JZTrack *t); void AddProperties(); bool OnClose(); }; -tEndOfTrackDlg::tEndOfTrackDlg(tEndOfTrack *e, JZPianoFrame* w, JZTrack *t) +tEndOfTrackDlg::tEndOfTrackDlg(tEndOfTrack *e, JZPianoWindow* w, JZTrack *t) : tEventDlg(e, w, t), Choice("End Of Track", gpConfig->GetControlNames(), &track) { @@ -1149,14 +1153,14 @@ int Program; // tNamedChoice Choice; - tProgramDlg(tProgram *e, JZPianoFrame* w, JZTrack *t); + tProgramDlg(tProgram *e, JZPianoWindow* w, JZTrack *t); void AddProperties(); bool OnClose(); }; -tProgramDlg::tProgramDlg(tProgram *e, JZPianoFrame* w, JZTrack *t) +tProgramDlg::tProgramDlg(tProgram *e, JZPianoWindow* w, JZTrack *t) : tEventDlg(e, w, t), Program(e->Program + 1) //, Choice("Program", &gpConfig->VoiceName(0), &Program) @@ -1194,14 +1198,14 @@ int Value; - tSetTempoDlg(tSetTempo *e, JZPianoFrame* w, JZTrack *t); + tSetTempoDlg(tSetTempo *e, JZPianoWindow* w, JZTrack *t); void AddProperties(); bool OnClose(); }; -tSetTempoDlg::tSetTempoDlg(tSetTempo *e, JZPianoFrame* w, JZTrack *t) +tSetTempoDlg::tSetTempoDlg(tSetTempo *e, JZPianoWindow* w, JZTrack *t) : tEventDlg(e, w, t) { Event = e; @@ -1234,14 +1238,14 @@ char *str; - tSysexDlg(tSysEx *s, JZPianoFrame* w, JZTrack *t); + tSysexDlg(tSysEx *s, JZPianoWindow* w, JZTrack *t); void AddProperties(); bool OnClose(); }; -tSysexDlg::tSysexDlg(tSysEx *s, JZPianoFrame* w, JZTrack *t) +tSysexDlg::tSysexDlg(tSysEx *s, JZPianoWindow* w, JZTrack *t) : tEventDlg(s, w, t) { Event = s; @@ -1451,7 +1455,7 @@ void EventDialog( JZEvent* e, - JZPianoFrame* w, + JZPianoWindow* pPianoWindow, JZTrack* t, long Clock, int Channel, @@ -1473,47 +1477,47 @@ break; } str = "Key On"; - dlg = new tKeyOnDlg(e->IsKeyOn(), w, t); + dlg = new tKeyOnDlg(e->IsKeyOn(), pPianoWindow, t); break; case StatPitch: str = "Pitch Wheel"; - dlg = new tPitchDlg(e->IsPitch(), w, t); + dlg = new tPitchDlg(e->IsPitch(), pPianoWindow, t); break; case StatControl: str = "Controller"; - dlg = new tControlDlg(e->IsControl(), w, t); + dlg = new tControlDlg(e->IsControl(), pPianoWindow, t); break; case StatProgram: str = "Program Change"; - dlg = new tProgramDlg(e->IsProgram(), w, t); + dlg = new tProgramDlg(e->IsProgram(), pPianoWindow, t); break; case StatSetTempo: str = "Set Tempo (for track 0)"; - dlg = new tSetTempoDlg(e->IsSetTempo(), w, w->Song->GetTrack(0) ); + dlg = new tSetTempoDlg(e->IsSetTempo(), pPianoWindow, pPianoWindow->mpSong->GetTrack(0) ); break; case StatSysEx: str = "System Exclusive"; - dlg = new tSysexDlg(e->IsSysEx(), w, t ); + dlg = new tSysexDlg(e->IsSysEx(), pPianoWindow, t ); break; case StatPlayTrack: str = "Play Track"; - //dlg = new tPlayTrackDlg(e->IsPlayTrack(), w, t ); - dlg = new tPlayTrackDlg(e->IsPlayTrack(), w, t ); + //dlg = new tPlayTrackDlg(e->IsPlayTrack(), pPianoWindow, t ); + dlg = new tPlayTrackDlg(e->IsPlayTrack(), pPianoWindow, t ); break; case StatEndOfTrack: str = "End Of Track"; - dlg = new tEndOfTrackDlg(e->IsEndOfTrack(), w, t ); + dlg = new tEndOfTrackDlg(e->IsEndOfTrack(), pPianoWindow, t ); break; case StatText: str = "Text"; - dlg = new tTextDlg(e->IsText(), w, t ); + dlg = new tTextDlg(e->IsText(), pPianoWindow, t ); break; Modified: trunk/jazz/src/Dialogs.h =================================================================== --- trunk/jazz/src/Dialogs.h 2008-03-18 14:25:17 UTC (rev 334) +++ trunk/jazz/src/Dialogs.h 2008-03-21 05:40:29 UTC (rev 335) @@ -25,7 +25,7 @@ #include "PropertyListDialog.h" -class JZPianoFrame; +class JZPianoWindow; class tFilter; class JZSong; class JZEventFrame; @@ -212,15 +212,20 @@ { public: - tSnapDlg(JZPianoFrame *w, int* snapptr); + tSnapDlg(JZPianoWindow* pPianoWindow, int* snapptr); + void AddProperties(); + //tNamedChoice Steps; + bool OnClose(); + void OnHelp(); private: - JZPianoFrame* win; + JZPianoWindow* mpPianoWindow; + int* ptr; }; @@ -249,7 +254,7 @@ void EventDialog( JZEvent*, - JZPianoFrame*, + JZPianoWindow*, JZTrack*, long Clock, int Channel, Modified: trunk/jazz/src/TrackWindow.cpp =================================================================== --- trunk/jazz/src/TrackWindow.cpp 2008-03-18 14:25:17 UTC (rev 334) +++ trunk/jazz/src/TrackWindow.cpp 2008-03-21 05:40:29 UTC (rev 335) @@ -24,6 +24,7 @@ #include "TrackWindow.h" #include "TrackFrame.h" +#include "Filter.h" #include "Project.h" #include "Player.h" #include "RecordingInfo.h" @@ -48,12 +49,12 @@ //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- -const int JZTrackWindow::mScrollLine = 50; +const int JZTrackWindow::mScrollSize = 50; //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- JZTrackWindow::JZTrackWindow( - JZTrackFrame* pParent, + wxFrame* pParent, JZSong* pSong, const wxPoint& Position, const wxSize& Size) @@ -462,8 +463,8 @@ GetViewStart(&mScrolledX, &mScrolledY); // Convert scrolling units into pixels. - mScrolledX *= mScrollLine; - mScrolledY *= mScrollLine; + mScrolledX *= mScrollSize; + mScrolledY *= mScrollSize; GetClientSize(&mCanvasWidth, &mCanvasHeight); cout @@ -1171,10 +1172,10 @@ int Width, Height; GetVirtualEventSize(Width, Height); SetScrollbars( - mScrollLine, - mScrollLine, - (Width + mScrollLine) / mScrollLine, - (Height + mScrollLine) / mScrollLine, + mScrollSize, + mScrollSize, + (Width + mScrollSize) / mScrollSize, + (Height + mScrollSize) / mScrollSize, x, y); EnableScrolling(false, false); @@ -1184,8 +1185,8 @@ //----------------------------------------------------------------------------- void JZTrackWindow::SetScrollPosition(int x, int y) { - x /= mScrollLine; - y /= mScrollLine; + x /= mScrollSize; + y /= mScrollSize; Scroll(x, y); } Modified: trunk/jazz/src/TrackWindow.h =================================================================== --- trunk/jazz/src/TrackWindow.h 2008-03-18 14:25:17 UTC (rev 334) +++ trunk/jazz/src/TrackWindow.h 2008-03-21 05:40:29 UTC (rev 335) @@ -26,7 +26,6 @@ #include "MouseAction.h" #include "Rectangle.h" -class JZTrackFrame; class JZSong; class JZTrack; class tFilter; @@ -65,7 +64,7 @@ }; JZTrackWindow( - JZTrackFrame* pParent, + wxFrame* pParent, JZSong* pSong, const wxPoint& Position, const wxSize& Size); @@ -159,7 +158,7 @@ private: - static const int mScrollLine; + static const int mScrollSize; JZSong* mpSong; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-18 14:25:19
|
Revision: 334 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=334&view=rev Author: pstieber Date: 2008-03-18 07:25:17 -0700 (Tue, 18 Mar 2008) Log Message: ----------- 1. Renamed tTrack to JZTrack. 2. Added the ability to changed the state of an individual track between P = ? S = Solo M = Mute by clicking of the state column for the track. Modified Paths: -------------- trunk/jazz/src/Audio.cpp trunk/jazz/src/Audio.h trunk/jazz/src/Command.cpp trunk/jazz/src/Command.h trunk/jazz/src/ControlEdit.cpp trunk/jazz/src/ControlEdit.h trunk/jazz/src/Dialogs.cpp trunk/jazz/src/Dialogs.h trunk/jazz/src/Filter.cpp trunk/jazz/src/Filter.h trunk/jazz/src/HarmonyBrowserAnalyzer.cpp trunk/jazz/src/HarmonyBrowserAnalyzer.h trunk/jazz/src/PianoFrame.cpp trunk/jazz/src/PianoFrame.h trunk/jazz/src/Player.cpp trunk/jazz/src/Player.h trunk/jazz/src/RecordingInfo.h trunk/jazz/src/Rhythm.cpp trunk/jazz/src/Rhythm.h trunk/jazz/src/Song.cpp trunk/jazz/src/Song.h trunk/jazz/src/Track.cpp trunk/jazz/src/Track.h trunk/jazz/src/TrackFrame.cpp trunk/jazz/src/TrackWindow.cpp trunk/jazz/src/TrackWindow.h Modified: trunk/jazz/src/Audio.cpp =================================================================== --- trunk/jazz/src/Audio.cpp 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/Audio.cpp 2008-03-18 14:25:17 UTC (rev 334) @@ -523,7 +523,7 @@ -void tSampleSet::AdjustAudioLength(tTrack *t, long tpm) +void tSampleSet::AdjustAudioLength(JZTrack *t, long tpm) { if (!t->GetAudioMode() || !adjust_audio_length) return; @@ -829,7 +829,7 @@ JZSong *song = gpProject->Song; #endif const JZRecordingInfo* info = gpProject->GetRecInfo(); - tTrack* track = info->mpTrack; + JZTrack* track = info->mpTrack; #ifdef OBSOLETE song->NewUndoBuffer(); #endif Modified: trunk/jazz/src/Audio.h =================================================================== --- trunk/jazz/src/Audio.h 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/Audio.h 2008-03-18 14:25:17 UTC (rev 334) @@ -31,7 +31,7 @@ #include "Project.h" class tEventArray; -class tTrack; +class JZTrack; struct tAudioBuffer; class tAudioBufferQueue; class tAudioRecordBuffer; @@ -268,7 +268,7 @@ return buffers[i]; } - void AdjustAudioLength(tTrack *t, long ticks_per_minute); + void AdjustAudioLength(JZTrack *t, long ticks_per_minute); long Ticks2Samples(long ticks) const { Modified: trunk/jazz/src/Command.cpp =================================================================== --- trunk/jazz/src/Command.cpp 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/Command.cpp 2008-03-18 14:25:17 UTC (rev 334) @@ -43,7 +43,7 @@ public: long Keys[128]; tSelectedKeys(tFilter *f); - void ExecuteEvent(tTrack *t, JZEvent *e); + void ExecuteEvent(JZTrack *t, JZEvent *e); }; tSelectedKeys::tSelectedKeys(tFilter *f) @@ -54,7 +54,7 @@ Keys[i] = 0; } -void tSelectedKeys::ExecuteEvent(tTrack *t, JZEvent *e) +void tSelectedKeys::ExecuteEvent(JZTrack *t, JZEvent *e) { tKeyOn *k = e->IsKeyOn(); if (k) @@ -220,7 +220,7 @@ if (NewUndo) Song->NewUndoBuffer(); tTrackIterator Tracks(Filter, Reverse); - tTrack *t = Tracks.First(); + JZTrack *t = Tracks.First(); while (t) { ExecuteTrack(t); @@ -230,7 +230,7 @@ } -void tCommand::ExecuteTrack(tTrack *t) +void tCommand::ExecuteTrack(JZTrack *t) { tEventIterator Iterator(t); JZEvent *e = Iterator.Range(Filter->FromClock, Filter->ToClock); @@ -244,7 +244,7 @@ } -void tCommand::ExecuteEvent(tTrack *t, JZEvent *e) +void tCommand::ExecuteEvent(JZTrack *t, JZEvent *e) { } @@ -265,7 +265,7 @@ DeltaClock = dclk; } -void tCmdShift::ExecuteEvent(tTrack *t, JZEvent *e) +void tCmdShift::ExecuteEvent(JZTrack *t, JZEvent *e) { JZEvent *c = e->Copy(); t->Kill(e); @@ -297,7 +297,7 @@ } } -void tCmdErase::ExecuteEvent(tTrack *t, JZEvent *e) +void tCmdErase::ExecuteEvent(JZTrack *t, JZEvent *e) { t->Kill(e); } @@ -327,7 +327,7 @@ return Clock > minclk ? Clock : minclk; } -void tCmdQuantize::ExecuteEvent(tTrack *t, JZEvent *e) +void tCmdQuantize::ExecuteEvent(JZTrack *t, JZEvent *e) { tKeyOn *k; if ((k = e->IsKeyOn()) != 0) @@ -358,7 +358,7 @@ FitIntoScale = fit; } -void tCmdTranspose::ExecuteEvent(tTrack *t, JZEvent *e) +void tCmdTranspose::ExecuteEvent(JZTrack *t, JZEvent *e) { tKeyOn *k; if (e->IsKeyOn()) @@ -402,7 +402,7 @@ NewChannel = chan; } -void tCmdSetChannel::ExecuteEvent(tTrack *t, JZEvent *e) +void tCmdSetChannel::ExecuteEvent(JZTrack *t, JZEvent *e) { tChannelEvent *c; @@ -427,7 +427,7 @@ Mode = m; } -void tCmdVelocity::ExecuteEvent(tTrack *t, JZEvent *e) +void tCmdVelocity::ExecuteEvent(JZTrack *t, JZEvent *e) { tKeyOn *k; @@ -462,7 +462,7 @@ Mode = m; } -void tCmdLength::ExecuteEvent(tTrack *t, JZEvent *e) +void tCmdLength::ExecuteEvent(JZTrack *t, JZEvent *e) { tKeyOn *k; @@ -503,7 +503,7 @@ /** move an event according to startclock and scale */ -void tCmdSeqLength::ExecuteEvent(tTrack *t, JZEvent *e) +void tCmdSeqLength::ExecuteEvent(JZTrack *t, JZEvent *e) { //make a copy of the current event JZEvent *k; @@ -536,7 +536,7 @@ //need to override executetrack, since we have begin/end behaviour in this filter -void tCmdConvertToModulation::ExecuteTrack(tTrack *t) +void tCmdConvertToModulation::ExecuteTrack(JZTrack *t) { //JAVE:iterate over all events, make a long event from start until stop of the sequence, //convert all note-on messages to a pitch bend/volume controller pair, velocity -> volume @@ -617,7 +617,7 @@ this->repeat=repeat; } -void tCmdMidiDelay::ExecuteEvent(tTrack *t, JZEvent *e) +void tCmdMidiDelay::ExecuteEvent(JZTrack *t, JZEvent *e) { tKeyOn *k; @@ -646,13 +646,13 @@ shortenOverlaps = so; } -void tCmdCleanup::ExecuteTrack(tTrack *t) +void tCmdCleanup::ExecuteTrack(JZTrack *t) { memset(prev_note, 0, sizeof(prev_note)); tCommand::ExecuteTrack(t); } -void tCmdCleanup::ExecuteEvent(tTrack *t, JZEvent *e) +void tCmdCleanup::ExecuteEvent(JZTrack *t, JZEvent *e) { tKeyOn *k; if ((k = e->IsKeyOn()) != 0) @@ -688,7 +688,7 @@ to = st; } -void tCmdSearchReplace::ExecuteEvent(tTrack *t, JZEvent *e) +void tCmdSearchReplace::ExecuteEvent(JZTrack *t, JZEvent *e) { tControl *ctrl; if ((ctrl = e->IsControl()) != 0) @@ -713,7 +713,7 @@ Buffer = buf; } -void tCmdCopyToBuffer::ExecuteEvent(tTrack *t, JZEvent *e) +void tCmdCopyToBuffer::ExecuteEvent(JZTrack *t, JZEvent *e) { Buffer->Put(e->Copy()); } @@ -742,10 +742,10 @@ -void tCmdCopy::ExecuteTrack(tTrack *s) +void tCmdCopy::ExecuteTrack(JZTrack *s) { long StartClock, StopClock; - tTrack *d; + JZTrack *d; StartClock = DestClock; @@ -862,7 +862,7 @@ { } -void tCmdExchLeftRight::ExecuteEvent(tTrack *t, JZEvent *e) +void tCmdExchLeftRight::ExecuteEvent(JZTrack *t, JZEvent *e) { if (e->IsKeyOn()) { @@ -883,7 +883,7 @@ { } -void tCmdExchUpDown::ExecuteTrack(tTrack *t) +void tCmdExchUpDown::ExecuteTrack(JZTrack *t) { int i; int Keys[128]; @@ -954,7 +954,7 @@ delete binfo; } -void tCmdMapper::ExecuteEvent(tTrack *t, JZEvent *e) +void tCmdMapper::ExecuteEvent(JZTrack *t, JZEvent *e) { tKeyOn *k = e->IsKeyOn(); if (k) Modified: trunk/jazz/src/Command.h =================================================================== --- trunk/jazz/src/Command.h 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/Command.h 2008-03-18 14:25:17 UTC (rev 334) @@ -25,7 +25,7 @@ class tFilter; class JZEvent; -class tTrack; +class JZTrack; class JZSong; class tEventArray; class JZRndArray; @@ -60,8 +60,8 @@ tCommand(tFilter *f); virtual void Execute(int NewUndo = 1); - virtual void ExecuteTrack(tTrack *t); - virtual void ExecuteEvent(tTrack *t, JZEvent *e); + virtual void ExecuteTrack(JZTrack *t); + virtual void ExecuteEvent(JZTrack *t, JZEvent *e); long Interpolate(long clk, long vmin, long vmax); virtual ~tCommand() {} }; @@ -72,7 +72,7 @@ long DeltaClock; public: tCmdShift(tFilter *f, long DeltaClock); - virtual void ExecuteEvent(tTrack *t, JZEvent *e); + virtual void ExecuteEvent(JZTrack *t, JZEvent *e); }; @@ -82,7 +82,7 @@ int LeaveSpace; tCmdErase(tFilter *f, int LeaveSpace = 1); virtual void Execute(int NewUndo = 1); - virtual void ExecuteEvent(tTrack *t, JZEvent *e); + virtual void ExecuteEvent(JZTrack *t, JZEvent *e); }; class tCmdVelocity : public tCommand @@ -90,7 +90,7 @@ public: int FromValue, ToValue, Mode; tCmdVelocity(tFilter *f, int From, int To, int Mode); - virtual void ExecuteEvent(tTrack *t, JZEvent *e); + virtual void ExecuteEvent(JZTrack *t, JZEvent *e); }; @@ -99,7 +99,7 @@ public: int FromValue, ToValue, Mode; tCmdLength(tFilter *f, int From, int To, int Mode); - virtual void ExecuteEvent(tTrack *t, JZEvent *e); + virtual void ExecuteEvent(JZTrack *t, JZEvent *e); }; @@ -109,7 +109,7 @@ double scale; long startClock; tCmdSeqLength(tFilter *f, double scale); - virtual void ExecuteEvent(tTrack *t, JZEvent *e); + virtual void ExecuteEvent(JZTrack *t, JZEvent *e); }; @@ -122,7 +122,7 @@ int repeat; tCmdMidiDelay(tFilter *f, double scale, long clockDelay, int repeat); - virtual void ExecuteEvent(tTrack *t, JZEvent *e); + virtual void ExecuteEvent(JZTrack *t, JZEvent *e); }; class tCmdConvertToModulation : public tCommand @@ -130,7 +130,7 @@ public: tCmdConvertToModulation(tFilter *f); - virtual void ExecuteTrack(tTrack *t); + virtual void ExecuteTrack(JZTrack *t); }; @@ -144,8 +144,8 @@ tKeyOn *prev_note[16][128]; public: tCmdCleanup(tFilter *f, long limitClocks, int shortenOverlaps); - virtual void ExecuteTrack(tTrack *t); - virtual void ExecuteEvent(tTrack *t, JZEvent *e); + virtual void ExecuteTrack(JZTrack *t); + virtual void ExecuteEvent(JZTrack *t, JZEvent *e); }; @@ -154,7 +154,7 @@ short fr, to; public: tCmdSearchReplace(tFilter *f, short fr, short to); - virtual void ExecuteEvent(tTrack *t, JZEvent *e); + virtual void ExecuteEvent(JZTrack *t, JZEvent *e); }; @@ -168,7 +168,7 @@ int Delay; // zero int Groove; // zero tCmdQuantize(tFilter *f, long QntClocks, int groove, int delay); - virtual void ExecuteEvent(tTrack *t, JZEvent *e); + virtual void ExecuteEvent(JZTrack *t, JZEvent *e); }; @@ -179,7 +179,7 @@ int FitIntoScale; tScale Scale; tCmdTranspose(tFilter *f, int Notes, int ScaleNr = 0, int FitIntoScale = 0); - virtual void ExecuteEvent(tTrack *t, JZEvent *e); + virtual void ExecuteEvent(JZTrack *t, JZEvent *e); }; @@ -188,7 +188,7 @@ public: int NewChannel; // 0 tCmdSetChannel(tFilter *f, int NewChannel); - virtual void ExecuteEvent(tTrack *t, JZEvent *e); + virtual void ExecuteEvent(JZTrack *t, JZEvent *e); }; @@ -197,7 +197,7 @@ tEventArray *Buffer; public: tCmdCopyToBuffer(tFilter *f, tEventArray *Buffer); - virtual void ExecuteEvent(tTrack *t, JZEvent *e); + virtual void ExecuteEvent(JZTrack *t, JZEvent *e); }; @@ -214,7 +214,7 @@ long RepeatClock; // -1L tCmdCopy(tFilter *f, long DestTrack, long DestClock); - virtual void ExecuteTrack(tTrack *t); + virtual void ExecuteTrack(JZTrack *t); }; @@ -223,14 +223,14 @@ { public: tCmdExchLeftRight(tFilter *f); - virtual void ExecuteEvent(tTrack *t, JZEvent *e); + virtual void ExecuteEvent(JZTrack *t, JZEvent *e); }; class tCmdExchUpDown : public tCommand { public: tCmdExchUpDown(tFilter *f); - virtual void ExecuteTrack(tTrack *t); + virtual void ExecuteTrack(JZTrack *t); }; class tCmdMapper : public tCommand @@ -239,7 +239,7 @@ enum prop { veloc, length, key, rhythm, random, pan, modul, cc1, cc2, pitch, clock }; tCmdMapper(tFilter *f, prop src, prop dst, JZRndArray &array, int nbars, int add); ~tCmdMapper(); - virtual void ExecuteEvent(tTrack *t, JZEvent *e); + virtual void ExecuteEvent(JZTrack *t, JZEvent *e); private: int n_bars; int start_bar; Modified: trunk/jazz/src/ControlEdit.cpp =================================================================== --- trunk/jazz/src/ControlEdit.cpp 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/ControlEdit.cpp 2008-03-18 14:25:17 UTC (rev 334) @@ -131,7 +131,7 @@ } -void tCtrlEditBase::ReInit(tTrack *t, long fc, long cpp) +void tCtrlEditBase::ReInit(JZTrack *t, long fc, long cpp) { int w, h; edit->GetSize(&w, &h); Modified: trunk/jazz/src/ControlEdit.h =================================================================== --- trunk/jazz/src/ControlEdit.h 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/ControlEdit.h 2008-03-18 14:25:17 UTC (rev 334) @@ -26,7 +26,7 @@ #include "Random.h" class JZPianoFrame; -class tTrack; +class JZTrack; class JZEvent; class tCtrlEditBase; @@ -55,7 +55,7 @@ tCtrlEditBase(int min, int max, JZPianoFrame *parent, char const *label, int xoff, int x, int y, int w, int h, int mode=0); virtual ~tCtrlEditBase(); void SetSize(int xoff, int x, int y, int w, int h); - void ReInit(tTrack *track, long FromClock, long ClocksPerPixel); + void ReInit(JZTrack *track, long FromClock, long ClocksPerPixel); // SN++ Default = 0, 1 bedeutet der Editor arbeitet auch auf Selektionen. // Dieser Patch zusammen mit dem "selectable Patch" im PianoWin @@ -82,7 +82,7 @@ // SN++ int x_off; int ctrlmode; - tTrack *track; + JZTrack *track; long from_clock; long to_clock; long i_max; Modified: trunk/jazz/src/Dialogs.cpp =================================================================== --- trunk/jazz/src/Dialogs.cpp 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/Dialogs.cpp 2008-03-18 14:25:17 UTC (rev 334) @@ -730,14 +730,14 @@ { public: - tTrack *Track; + JZTrack *Track; tClockDlg ClockDlg; JZPianoFrame* Win; JZEvent *Event; JZEvent *Copy; - tEventDlg(JZEvent *e, JZPianoFrame* w, tTrack *t); + tEventDlg(JZEvent *e, JZPianoFrame* w, JZTrack *t); virtual void AddProperties(); virtual bool OnClose(); virtual void OnHelp(); @@ -745,7 +745,7 @@ }; -tEventDlg::tEventDlg(JZEvent *e, JZPianoFrame* w, tTrack *t) +tEventDlg::tEventDlg(JZEvent *e, JZPianoFrame* w, JZTrack *t) : tPropertyListDlg( "Event" ), ClockDlg(w->Song, "Time ", e->GetClock()) { @@ -790,7 +790,7 @@ int Channel; - tChEventDlg(tChannelEvent *e, JZPianoFrame* w, tTrack *t) + tChEventDlg(tChannelEvent *e, JZPianoFrame* w, JZTrack *t) : tEventDlg(e, w, t) { Channel = e->Channel + 1; // 1..16 @@ -830,14 +830,14 @@ // SN++ int OffVeloc; - tKeyOnDlg(tKeyOn *e, JZPianoFrame* w, tTrack *t); + tKeyOnDlg(tKeyOn *e, JZPianoFrame* w, JZTrack *t); void AddProperties(); bool OnClose(); }; -tKeyOnDlg::tKeyOnDlg(tKeyOn *e, JZPianoFrame* w, tTrack *t) +tKeyOnDlg::tKeyOnDlg(tKeyOn *e, JZPianoFrame* w, JZTrack *t) : tChEventDlg(e, w, t), PitchDlg("Pitch", e->Key) { @@ -901,14 +901,14 @@ int Value; - tPitchDlg(tPitch *e, JZPianoFrame* w, tTrack *t); + tPitchDlg(tPitch *e, JZPianoFrame* w, JZTrack *t); void AddProperties(); bool OnClose(); }; -tPitchDlg::tPitchDlg(tPitch *e, JZPianoFrame* w, tTrack *t) +tPitchDlg::tPitchDlg(tPitch *e, JZPianoFrame* w, JZTrack *t) : tChEventDlg(e, w, t) { Event = e; @@ -944,14 +944,14 @@ int Control; //tNamedChoice Choice; - tControlDlg(tControl *e, JZPianoFrame* w, tTrack *t); + tControlDlg(tControl *e, JZPianoFrame* w, JZTrack *t); void AddProperties(); bool OnClose(); }; -tControlDlg::tControlDlg(tControl *e, JZPianoFrame* w, tTrack *t) +tControlDlg::tControlDlg(tControl *e, JZPianoFrame* w, JZTrack *t) : tChEventDlg(e, w, t) //, Choice("Controller", &gpConfig->CtrlName(0), &Control) { @@ -1006,14 +1006,14 @@ tNamedChoice Choice; - tPlayTrackDlg(tPlayTrack *e, JZPianoFrame* w, tTrack *t); + tPlayTrackDlg(tPlayTrack *e, JZPianoFrame* w, JZTrack *t); void AddProperties(); bool OnClose(); }; -tPlayTrackDlg::tPlayTrackDlg(tPlayTrack *e, JZPianoFrame* w, tTrack *t) +tPlayTrackDlg::tPlayTrackDlg(tPlayTrack *e, JZPianoFrame* w, JZTrack *t) : tEventDlg(e, w, t), Choice("playtrack", gpConfig->GetControlNames(), &track) { @@ -1065,14 +1065,14 @@ int track; tNamedChoice Choice; - tTextDlg(tText *e, JZPianoFrame* w, tTrack *t); + tTextDlg(tText *e, JZPianoFrame* w, JZTrack *t); void AddProperties(); bool OnClose(); }; -tTextDlg::tTextDlg(tText *e, JZPianoFrame* w, tTrack *t) +tTextDlg::tTextDlg(tText *e, JZPianoFrame* w, JZTrack *t) : tEventDlg(e, w, t), Choice("text", gpConfig->GetControlNames(), &track) { @@ -1112,14 +1112,14 @@ tNamedChoice Choice; - tEndOfTrackDlg(tEndOfTrack *e, JZPianoFrame* w, tTrack *t); + tEndOfTrackDlg(tEndOfTrack *e, JZPianoFrame* w, JZTrack *t); void AddProperties(); bool OnClose(); }; -tEndOfTrackDlg::tEndOfTrackDlg(tEndOfTrack *e, JZPianoFrame* w, tTrack *t) +tEndOfTrackDlg::tEndOfTrackDlg(tEndOfTrack *e, JZPianoFrame* w, JZTrack *t) : tEventDlg(e, w, t), Choice("End Of Track", gpConfig->GetControlNames(), &track) { @@ -1149,14 +1149,14 @@ int Program; // tNamedChoice Choice; - tProgramDlg(tProgram *e, JZPianoFrame* w, tTrack *t); + tProgramDlg(tProgram *e, JZPianoFrame* w, JZTrack *t); void AddProperties(); bool OnClose(); }; -tProgramDlg::tProgramDlg(tProgram *e, JZPianoFrame* w, tTrack *t) +tProgramDlg::tProgramDlg(tProgram *e, JZPianoFrame* w, JZTrack *t) : tEventDlg(e, w, t), Program(e->Program + 1) //, Choice("Program", &gpConfig->VoiceName(0), &Program) @@ -1194,14 +1194,14 @@ int Value; - tSetTempoDlg(tSetTempo *e, JZPianoFrame* w, tTrack *t); + tSetTempoDlg(tSetTempo *e, JZPianoFrame* w, JZTrack *t); void AddProperties(); bool OnClose(); }; -tSetTempoDlg::tSetTempoDlg(tSetTempo *e, JZPianoFrame* w, tTrack *t) +tSetTempoDlg::tSetTempoDlg(tSetTempo *e, JZPianoFrame* w, JZTrack *t) : tEventDlg(e, w, t) { Event = e; @@ -1234,14 +1234,14 @@ char *str; - tSysexDlg(tSysEx *s, JZPianoFrame* w, tTrack *t); + tSysexDlg(tSysEx *s, JZPianoFrame* w, JZTrack *t); void AddProperties(); bool OnClose(); }; -tSysexDlg::tSysexDlg(tSysEx *s, JZPianoFrame* w, tTrack *t) +tSysexDlg::tSysexDlg(tSysEx *s, JZPianoFrame* w, JZTrack *t) : tEventDlg(s, w, t) { Event = s; @@ -1452,7 +1452,7 @@ void EventDialog( JZEvent* e, JZPianoFrame* w, - tTrack* t, + JZTrack* t, long Clock, int Channel, int Pitch) Modified: trunk/jazz/src/Dialogs.h =================================================================== --- trunk/jazz/src/Dialogs.h 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/Dialogs.h 2008-03-18 14:25:17 UTC (rev 334) @@ -29,7 +29,7 @@ class tFilter; class JZSong; class JZEventFrame; -class tTrack; +class JZTrack; class JZEvent; class tShiftDlg : public tPropertyListDlg @@ -250,7 +250,7 @@ void EventDialog( JZEvent*, JZPianoFrame*, - tTrack*, + JZTrack*, long Clock, int Channel, int Pitch); Modified: trunk/jazz/src/Filter.cpp =================================================================== --- trunk/jazz/src/Filter.cpp 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/Filter.cpp 2008-03-18 14:25:17 UTC (rev 334) @@ -215,7 +215,7 @@ } -tTrack *tTrackIterator::First() +JZTrack *tTrackIterator::First() { if (Reverse) TrackNr = Filter->ToTrack; @@ -225,7 +225,7 @@ } -tTrack *tTrackIterator::Next() +JZTrack *tTrackIterator::Next() { if (Reverse) { Modified: trunk/jazz/src/Filter.h =================================================================== --- trunk/jazz/src/Filter.h 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/Filter.h 2008-03-18 14:25:17 UTC (rev 334) @@ -26,7 +26,7 @@ #include "Events.h" class JZSong; -class tTrack; +class JZTrack; #define FltKeyOn 0 @@ -126,8 +126,8 @@ int Reverse; public: tTrackIterator(tFilter *f, int Reverse = 0); - tTrack *First(); - tTrack *Next(); + JZTrack *First(); + JZTrack *Next(); int Count() const; }; Modified: trunk/jazz/src/HarmonyBrowserAnalyzer.cpp =================================================================== --- trunk/jazz/src/HarmonyBrowserAnalyzer.cpp 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/HarmonyBrowserAnalyzer.cpp 2008-03-18 14:25:17 UTC (rev 334) @@ -121,10 +121,10 @@ } -void HBAnalyzer::IterateEvents(void (HBAnalyzer::*Action)(tKeyOn *on, tTrack *t)) +void HBAnalyzer::IterateEvents(void (HBAnalyzer::*Action)(tKeyOn *on, JZTrack *t)) { tTrackIterator Tracks(filter); - tTrack *t = Tracks.First(); + JZTrack *t = Tracks.First(); while (t) { if (!t->IsDrumTrack()) @@ -154,7 +154,7 @@ return (step * (to - fr)) / steps + fr; } -void HBAnalyzer::CountEvent(tKeyOn *on, tTrack *t) +void HBAnalyzer::CountEvent(tKeyOn *on, JZTrack *t) { for (int i = 0; i < steps; i++) { @@ -176,7 +176,7 @@ } -void HBAnalyzer::TransposeEvent(tKeyOn *on, tTrack *track) +void HBAnalyzer::TransposeEvent(tKeyOn *on, JZTrack *track) { for (int i = 0; i < steps; i++) { Modified: trunk/jazz/src/HarmonyBrowserAnalyzer.h =================================================================== --- trunk/jazz/src/HarmonyBrowserAnalyzer.h 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/HarmonyBrowserAnalyzer.h 2008-03-18 14:25:17 UTC (rev 334) @@ -24,7 +24,7 @@ #define JZ_HARMONYBROWSERANALYZER_H class tFilter; -class tTrack; +class JZTrack; class HBContext; class tKeyOn; class HBChord; @@ -51,11 +51,11 @@ int eighths_per_chord; int steps; tFilter* filter; - tTrack* track; + JZTrack* track; - void IterateEvents(void (HBAnalyzer::*Action)(tKeyOn *on, tTrack *t)); - void CountEvent(tKeyOn *on, tTrack *t); - void TransposeEvent(tKeyOn *on, tTrack *t); + void IterateEvents(void (HBAnalyzer::*Action)(tKeyOn *on, JZTrack *t)); + void CountEvent(tKeyOn *on, JZTrack *t); + void TransposeEvent(tKeyOn *on, JZTrack *t); void CreateChords(); int NumCount(int i); int MaxCount(int i, const HBChord &done); Modified: trunk/jazz/src/PianoFrame.cpp =================================================================== --- trunk/jazz/src/PianoFrame.cpp 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/PianoFrame.cpp 2008-03-18 14:25:17 UTC (rev 334) @@ -250,7 +250,7 @@ { } void KeyOn( - tTrack *t, + JZTrack *t, int Pitch, int Channel, int Veloc = 64, @@ -260,10 +260,10 @@ private: - tTrack *track; + JZTrack *track; }; -void tListen::KeyOn(tTrack *t, int pitch, int channel, int veloc, int milli) +void tListen::KeyOn(JZTrack *t, int pitch, int channel, int veloc, int milli) { if (!Active) { @@ -1096,7 +1096,7 @@ } -int JZPianoFrame::IsVisible(tTrack *t) +int JZPianoFrame::IsVisible(JZTrack *t) { if (!VisibleAllTracks) return t == Track; @@ -1384,7 +1384,7 @@ int i; for (i = 0; i < Song->nTracks; i++) { - tTrack *t = Song->GetTrack(i); + JZTrack *t = Song->GetTrack(i); if (t != Track && IsVisible(t)) DrawEvents(dc, t, StatKeyOn, wxLIGHT_GREY_BRUSH, TRUE); } @@ -1603,7 +1603,7 @@ -void JZPianoFrame::DrawEvents(wxDC* dc, tTrack *t, int Stat, const wxBrush* Brush, int force_color) +void JZPianoFrame::DrawEvents(wxDC* dc, JZTrack *t, int Stat, const wxBrush* Brush, int force_color) { //dc->SetClippingRegion(mEventsX, mEventsY, mEventsWidth, mEventsHeight); dc->SetBrush(*Brush); @@ -1748,7 +1748,7 @@ } -JZEvent *JZPianoFrame::FindEvent(tTrack *Track, int Clock, int Pitch) +JZEvent *JZPianoFrame::FindEvent(JZTrack *Track, int Clock, int Pitch) // Pitch == -1: search for any pitches { tEventIterator Iterator(Track); @@ -1774,7 +1774,7 @@ } -void JZPianoFrame::kill_keys_aftertouch(tTrack *t, JZEvent* pEvent) +void JZPianoFrame::kill_keys_aftertouch(JZTrack *t, JZEvent* pEvent) { int key,channel; tEventIterator iter(t); @@ -1805,7 +1805,7 @@ } } -void JZPianoFrame::paste_keys_aftertouch(tTrack *t, JZEvent* pEvent) +void JZPianoFrame::paste_keys_aftertouch(JZTrack *t, JZEvent* pEvent) { int key,channel; tEventIterator iter(t); @@ -1849,7 +1849,7 @@ -void JZPianoFrame::Copy(tTrack *t, JZEvent* pEvent, int Kill) +void JZPianoFrame::Copy(JZTrack *t, JZEvent* pEvent, int Kill) { if (!pEvent) { @@ -1900,7 +1900,7 @@ } -void JZPianoFrame::Paste(tTrack *t, int Clock, int Pitch) +void JZPianoFrame::Paste(JZTrack *t, int Clock, int Pitch) { if (PasteBuffer.nEvents == 0) { @@ -2105,7 +2105,7 @@ tKeyOn *KeyOn; tKeyOn *Copy; JZPianoFrame *Win; - tTrack *Track; + JZTrack *Track; wxDC *dc; public: @@ -2224,7 +2224,7 @@ tPlayTrack *KeyOn; tPlayTrack *Copy; JZPianoFrame *Win; - tTrack *Track; + JZTrack *Track; wxDC *dc; public: @@ -2436,7 +2436,7 @@ int i; for (i = 0; i < Song->nTracks; i++) { - tTrack *t = Song->GetTrack(i); + JZTrack *t = Song->GetTrack(i); if (IsVisible(t) && FindEvent(t, Clock, Pitch)) { NewPosition(i, -1L); Modified: trunk/jazz/src/PianoFrame.h =================================================================== --- trunk/jazz/src/PianoFrame.h 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/PianoFrame.h 2008-03-18 14:25:17 UTC (rev 334) @@ -31,7 +31,7 @@ class JZToolBar; class tFilter; class tCtrlEditBase; -class tTrack; +class JZTrack; class JZPianoWindow; //***************************************************************************** @@ -80,7 +80,7 @@ int mFromLines[eMaxTrackCount]; int IsVisible(JZEvent *e); - int IsVisible(tTrack *t); + int IsVisible(JZTrack *t); void VisibleDialog(); bool VisibleKeyOn; bool VisiblePitch; @@ -117,10 +117,10 @@ void SnapDlg(wxCommandEvent& Event); int TrackNr; // aktueller Track - tTrack *Track; + JZTrack *Track; tEventArray PasteBuffer; - void DrawEvents(wxDC* dc, tTrack *t, int Stat, const wxBrush* Brush, int force_colors); + void DrawEvents(wxDC* dc, JZTrack *t, int Stat, const wxBrush* Brush, int force_colors); void DrawEvent(wxDC* dc, JZEvent *, const wxBrush* Brush, int xoor, int force_color=0); void DrawPianoRoll(wxDC* dc); @@ -138,12 +138,12 @@ // Utils int y2Pitch(int y); int Pitch2y(int Pitch); - JZEvent *FindEvent(tTrack *t, int Clock, int Pitch); - void Copy(tTrack *t, JZEvent *e, int Kill); - void Paste(tTrack *t, int Clock, int Pitch); + JZEvent *FindEvent(JZTrack *t, int Clock, int Pitch); + void Copy(JZTrack *t, JZEvent *e, int Kill); + void Paste(JZTrack *t, int Clock, int Pitch); // SN++ Key_Aftertouch Utils - void paste_keys_aftertouch(tTrack *t, JZEvent *e); - void kill_keys_aftertouch(tTrack *t, JZEvent *e); + void paste_keys_aftertouch(JZTrack *t, JZEvent *e); + void kill_keys_aftertouch(JZTrack *t, JZEvent *e); int nKeyOnEvents(); void LogicalMousePosition(wxMouseEvent &e, int *x, int *y); Modified: trunk/jazz/src/Player.cpp =================================================================== --- trunk/jazz/src/Player.cpp 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/Player.cpp 2008-03-18 14:25:17 UTC (rev 334) @@ -237,7 +237,7 @@ AudioBuffer->Clear(); } - tTrack *t; + JZTrack *t; if ( !Continue ) { @@ -510,7 +510,7 @@ for (ii = 0; ii < Song->nTracks; ii++) { - tTrack *Track = Song->GetTrack(ii); + JZTrack *Track = Song->GetTrack(ii); if (Track) { tEventIterator Iterator(Track); @@ -635,7 +635,7 @@ -void tPlayer::OutNow(tTrack *t, tParam *r) { +void tPlayer::OutNow(JZTrack *t, tParam *r) { OutNow(t, &r->Msb); OutNow(t, &r->Lsb); OutNow(t, &r->DataMsb); Modified: trunk/jazz/src/Player.h =================================================================== --- trunk/jazz/src/Player.h 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/Player.h 2008-03-18 14:25:17 UTC (rev 334) @@ -207,7 +207,7 @@ virtual const char *GetSampleName(int i) { return samples.GetSampleName(i); } - virtual void AdjustAudioLength(tTrack *t) { + virtual void AdjustAudioLength(JZTrack *t) { long ticks_per_minute = Song->TicksPerQuarter * Song->Speed(); samples.AdjustAudioLength(t, ticks_per_minute); } @@ -242,7 +242,7 @@ virtual void OutBreak() = 0; // send event immediately ignoring clock - void OutNow(tTrack *t, JZEvent* pEvent) + void OutNow(JZTrack *t, JZEvent* pEvent) { pEvent->SetDevice(t->GetDevice()); OutNow(pEvent); @@ -254,7 +254,7 @@ OutNow(pEvent); } - void OutNow(tTrack *t, tParam *r); + void OutNow(JZTrack *t, tParam *r); // what's played right now? virtual long GetRealTimeClock() = 0; Modified: trunk/jazz/src/RecordingInfo.h =================================================================== --- trunk/jazz/src/RecordingInfo.h 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/RecordingInfo.h 2008-03-18 14:25:17 UTC (rev 334) @@ -23,7 +23,7 @@ #ifndef JZ_RECORDINGINFO_H #define JZ_RECORDINGINFO_H -class tTrack; +class JZTrack; //***************************************************************************** // Description: @@ -35,7 +35,7 @@ JZRecordingInfo(); // If the track pointer is not set, the code is not recording. - tTrack* mpTrack; + JZTrack* mpTrack; // This is the recording from clock. long mFromClock; Modified: trunk/jazz/src/Rhythm.cpp =================================================================== --- trunk/jazz/src/Rhythm.cpp 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/Rhythm.cpp 2008-03-18 14:25:17 UTC (rev 334) @@ -260,7 +260,7 @@ } -void tRhythm::GenerateEvent(tTrack *track, long clock, short vel, short len) +void tRhythm::GenerateEvent(JZTrack *track, long clock, short vel, short len) { int chan = track->Channel - 1; @@ -296,7 +296,7 @@ #if 0 -void tRhythm::Generate(tTrack *track, long fr_clock, long to_clock, long ticks_per_bar) +void tRhythm::Generate(JZTrack *track, long fr_clock, long to_clock, long ticks_per_bar) { int chan = track->Channel - 1; long clock = fr_clock; @@ -404,7 +404,7 @@ } -void tRhythm::Generate(tTrack *track, JZBarInfo &bi, tRhythm *rhy[], int n_rhy) +void tRhythm::Generate(JZTrack *track, JZBarInfo &bi, tRhythm *rhy[], int n_rhy) { JZRndArray rrg(rhythm); @@ -1035,7 +1035,7 @@ long fr_clock = pFilter->FromClock; long to_clock = pFilter->ToClock; - tTrack *track = song->GetTrack(pFilter->FromTrack); + JZTrack *track = song->GetTrack(pFilter->FromTrack); song->NewUndoBuffer(); // remove selection Modified: trunk/jazz/src/Rhythm.h =================================================================== --- trunk/jazz/src/Rhythm.h 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/Rhythm.h 2008-03-18 14:25:17 UTC (rev 334) @@ -29,7 +29,7 @@ #include <iostream> -class tTrack; +class JZTrack; class JZEventFrame; class JZSong; class JZBarInfo; @@ -101,10 +101,10 @@ char const * GetLabel() { return label; } void SetLabel(char const *); - void Generate(tTrack *track, long fr_clock, long to_clock, long ticks_per_bar); - void Generate(tTrack *track, JZBarInfo &bi, tRhythm *rhy[], int n_rhy); + void Generate(JZTrack *track, long fr_clock, long to_clock, long ticks_per_bar); + void Generate(JZTrack *track, JZBarInfo &bi, tRhythm *rhy[], int n_rhy); void GenInit(long start_clock); - void GenerateEvent(tTrack *track, long clock, short vel, short len); + void GenerateEvent(JZTrack *track, long clock, short vel, short len); void write(std::ostream& os); void read(std::istream& is, int version); Modified: trunk/jazz/src/Song.cpp =================================================================== --- trunk/jazz/src/Song.cpp 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/Song.cpp 2008-03-18 14:25:17 UTC (rev 334) @@ -121,7 +121,7 @@ } -tTrack *JZSong::GetTrack(int Nr) +JZTrack *JZSong::GetTrack(int Nr) { if (Nr >= 0 && Nr < nTracks) { @@ -204,7 +204,7 @@ for (i = 0; i < nTracks; ++i) { - tTrack* pTrack = &mTracks[i]; + JZTrack* pTrack = &mTracks[i]; if (pTrack->State == tsSolo || (!solo && pTrack->State == tsPlay)) { if (pTrack->GetAudioMode() != mode) @@ -245,7 +245,7 @@ if(recursionDepth>100) //yes yes, you should use symbolics... return; fprintf(stderr, "playtrack %d\n",c->track); - tTrack* pTrack = &mTracks[c->track];//the track we want to play + JZTrack* pTrack = &mTracks[c->track];//the track we want to play tEventIterator IteratorPL(pTrack); //get an iterator of all events the playtrack is pointing to JZEvent *f; @@ -469,7 +469,7 @@ double f = (double)NewTicks / (double)TicksPerQuarter; for (tt = 0; tt < nTracks; ++tt) { - tTrack* pTrack = &mTracks[tt]; + JZTrack* pTrack = &mTracks[tt]; for (ee = 0; ee < pTrack->nEvents; ee++) { JZEvent *e = pTrack->Events[ee]; @@ -503,7 +503,7 @@ // evtl vorhandene TimeSignatures loeschen - tTrack* pTrack = &mTracks[0]; + JZTrack* pTrack = &mTracks[0]; tEventIterator Iterator(pTrack); JZEvent *e = Iterator.Range(FrClock, ToClock); while (e) @@ -552,7 +552,7 @@ // SN++ void JZSong::moveTrack(int from, int to) { - tTrack* pTrack; + JZTrack* pTrack; int i; if (from == to) return; Modified: trunk/jazz/src/Song.h =================================================================== --- trunk/jazz/src/Song.h 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/Song.h 2008-03-18 14:25:17 UTC (rev 334) @@ -73,7 +73,7 @@ int nTracks; int TicksPerQuarter; - tTrack mTracks[eMaxTrackCount]; + JZTrack mTracks[eMaxTrackCount]; void NewUndoBuffer(); void Undo(); @@ -86,7 +86,7 @@ void Read(tReadBase &io, const char *fname = 0); void Write(tWriteBase &io, const char *fname = 0); - tTrack *GetTrack(int Nr); + JZTrack *GetTrack(int Nr); int GetLastClock(); int NumUsedTracks(); // number of used tracks int Speed(); Modified: trunk/jazz/src/Track.cpp =================================================================== --- trunk/jazz/src/Track.cpp 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/Track.cpp 2008-03-18 14:25:17 UTC (rev 334) @@ -1682,7 +1682,7 @@ class tTrackDlg : public wxForm { JZTrackWindow* TrackWin; - tTrack *trk; + JZTrack *trk; char *TrackName; tNamedChoice PatchChoice; tNamedChoice DeviceChoice; @@ -1693,7 +1693,7 @@ int AudioMode; public: - tTrackDlg::tTrackDlg(JZTrackWindow *w, tTrack *t); + tTrackDlg::tTrackDlg(JZTrackWindow *w, JZTrack *t); void EditForm(wxPanel *panel); virtual void OnOk(); virtual void OnCancel(); @@ -1701,7 +1701,7 @@ }; -tTrackDlg::tTrackDlg(JZTrackWindow *w, tTrack *t) +tTrackDlg::tTrackDlg(JZTrackWindow *w, JZTrack *t) : wxForm(USED_WXFORM_BUTTONS), PatchChoice( "Patch", @@ -1903,7 +1903,7 @@ #endif // OBSOLETE -void tTrack::Dialog(JZTrackWindow *parent) +void JZTrack::Dialog(JZTrackWindow *parent) { #ifdef OBSOLETE @@ -1929,13 +1929,13 @@ // *********************************************************************** -// tTrack +// JZTrack // *********************************************************************** -bool tTrack::changed = false; +bool JZTrack::changed = false; -tTrack::tTrack() +JZTrack::JZTrack() : tEventArray() { iUndo = 0; @@ -1946,12 +1946,12 @@ } -bool tTrack::IsDrumTrack() +bool JZTrack::IsDrumTrack() { return Channel == gpConfig->GetValue(C_DrumChannel); } -void tTrack::Merge(tEventArray *t) +void JZTrack::Merge(tEventArray *t) { for (int i = 0; i < t->nEvents; i++) { @@ -1961,7 +1961,7 @@ } -void tTrack::MergeRange(tEventArray *other, int FromClock, int ToClock, int Replace) +void JZTrack::MergeRange(tEventArray *other, int FromClock, int ToClock, int Replace) { // Erase destin if (Replace) @@ -1996,7 +1996,7 @@ } -void tTrack::Cleanup() +void JZTrack::Cleanup() { // on audio tracks, adjust length of keyon events to // actual sample length @@ -2007,7 +2007,7 @@ -void tTrack::Undo() +void JZTrack::Undo() { if (nUndo > 0) { @@ -2035,7 +2035,7 @@ } } -void tTrack::Redo() +void JZTrack::Redo() { if (nRedo > 0) { @@ -2065,7 +2065,7 @@ } -void tTrack::NewUndoBuffer() +void JZTrack::NewUndoBuffer() { nRedo = 0; nUndo++; @@ -2079,7 +2079,7 @@ }; -void tTrack::Clear() +void JZTrack::Clear() { for (int i = 0; i < MaxUndo; i++) { @@ -2091,7 +2091,7 @@ // ----------------------- Copyright ------------------------------------ -char* tTrack::GetCopyright() +char* JZTrack::GetCopyright() { if (Copyright) { @@ -2102,7 +2102,7 @@ -void tTrack::SetCopyright(char *str) +void JZTrack::SetCopyright(char *str) { if (Copyright) { @@ -2122,7 +2122,7 @@ // ----------------------- Name ------------------------------------ -char* tTrack::GetName() +char* JZTrack::GetName() { if (mName) { @@ -2133,7 +2133,7 @@ -void tTrack::SetName(char *str) +void JZTrack::SetName(char *str) { if (mName) { @@ -2148,7 +2148,7 @@ // ------------------------ Volume ------------------------------ -int tTrack::GetVolume() +int JZTrack::GetVolume() { if (Volume) { @@ -2157,7 +2157,7 @@ return 0; } -void tTrack::SetVolume(int Value) +void JZTrack::SetVolume(int Value) { if (Volume) { @@ -2174,7 +2174,7 @@ // ------------------------ Pan ------------------------------ -int tTrack::GetPan() +int JZTrack::GetPan() { if (Pan) { @@ -2183,7 +2183,7 @@ return 0; } -void tTrack::SetPan(int Value) +void JZTrack::SetPan(int Value) { if (Pan) { @@ -2200,7 +2200,7 @@ // ------------------------ Reverb ------------------------------ -int tTrack::GetReverb() +int JZTrack::GetReverb() { if (Reverb) { @@ -2209,7 +2209,7 @@ return 0; } -void tTrack::SetReverb(int Value) +void JZTrack::SetReverb(int Value) { if (Reverb) { @@ -2226,7 +2226,7 @@ // ------------------------ Chorus ------------------------------ -int tTrack::GetChorus() +int JZTrack::GetChorus() { if (Chorus) { @@ -2235,7 +2235,7 @@ return 0; } -void tTrack::SetChorus(int Value) +void JZTrack::SetChorus(int Value) { if (Chorus) { @@ -2252,7 +2252,7 @@ // ------------------------ Bank ------------------------------ -int tTrack::GetBank() +int JZTrack::GetBank() { if (!gpConfig->GetValue(C_UseTwoCommandBankSelect)) { @@ -2284,7 +2284,7 @@ return 0; } -void tTrack::SetBank(int Value) +void JZTrack::SetBank(int Value) { if (mpBank) { @@ -2350,7 +2350,7 @@ // ------------------------ Patch ------------------------------ -int tTrack::GetPatch() +int JZTrack::GetPatch() { if (mPatch) { @@ -2359,7 +2359,7 @@ return 0; } -void tTrack::SetPatch(int PatchNr) +void JZTrack::SetPatch(int PatchNr) { if (mPatch) { @@ -2376,7 +2376,7 @@ // ------------------------ VibRate ------------------------------ -int tTrack::GetVibRate() +int JZTrack::GetVibRate() { if (VibRate) { @@ -2385,7 +2385,7 @@ return 0; } -void tTrack::SetVibRate(int Value) +void JZTrack::SetVibRate(int Value) { if (VibRate) { @@ -2403,7 +2403,7 @@ // ------------------------ VibDepth ------------------------------ -int tTrack::GetVibDepth() +int JZTrack::GetVibDepth() { if (VibDepth) { @@ -2412,7 +2412,7 @@ return 0; } -void tTrack::SetVibDepth(int Value) +void JZTrack::SetVibDepth(int Value) { if (VibDepth) { @@ -2429,7 +2429,7 @@ // ------------------------ VibDelay ------------------------------ -int tTrack::GetVibDelay() +int JZTrack::GetVibDelay() { if (VibDelay) { @@ -2438,7 +2438,7 @@ return 0; } -void tTrack::SetVibDelay(int Value) +void JZTrack::SetVibDelay(int Value) { if (VibDelay) { @@ -2456,7 +2456,7 @@ // ------------------------ Cutoff ------------------------------ -int tTrack::GetCutoff() +int JZTrack::GetCutoff() { if (Cutoff) { @@ -2465,7 +2465,7 @@ return 0; } -void tTrack::SetCutoff(int Value) +void JZTrack::SetCutoff(int Value) { if (Cutoff) { @@ -2483,7 +2483,7 @@ // ------------------------ Resonance ------------------------------ -int tTrack::GetResonance() +int JZTrack::GetResonance() { if (Resonance) { @@ -2492,7 +2492,7 @@ return 0; } -void tTrack::SetResonance(int Value) +void JZTrack::SetResonance(int Value) { if (Resonance) { @@ -2510,7 +2510,7 @@ // ------------------------ EnvAttack ------------------------------ -int tTrack::GetEnvAttack() +int JZTrack::GetEnvAttack() { if (EnvAttack) { @@ -2519,7 +2519,7 @@ return 0; } -void tTrack::SetEnvAttack(int Value) +void JZTrack::SetEnvAttack(int Value) { if (EnvAttack) { @@ -2537,7 +2537,7 @@ // ------------------------ EnvDecay ------------------------------ -int tTrack::GetEnvDecay() +int JZTrack::GetEnvDecay() { if (EnvDecay) { @@ -2546,7 +2546,7 @@ return 0; } -void tTrack::SetEnvDecay(int Value) +void JZTrack::SetEnvDecay(int Value) { if (EnvDecay) { @@ -2564,7 +2564,7 @@ // ------------------------ EnvRelease ------------------------------ -int tTrack::GetEnvRelease() +int JZTrack::GetEnvRelease() { if (EnvRelease) { @@ -2573,7 +2573,7 @@ return 0; } -void tTrack::SetEnvRelease(int Value) +void JZTrack::SetEnvRelease(int Value) { if (EnvRelease) { @@ -2591,7 +2591,7 @@ // ------------------------ DrumParam ------------------------------ -int tTrack::GetDrumParam(int pitch, int index) +int JZTrack::GetDrumParam(int pitch, int index) { if (!DrumParams.IsEmpty()) { @@ -2604,7 +2604,7 @@ return 0; } -void tTrack::SetDrumParam(int pitch, int index, int Value) +void JZTrack::SetDrumParam(int pitch, int index, int Value) { DrumParams.DelParam(pitch, index); if (Value > 0) @@ -2618,7 +2618,7 @@ // ------------------------ BendPitchSens ------------------------------ -int tTrack::GetBendPitchSens() +int JZTrack::GetBendPitchSens() { if (BendPitchSens) { @@ -2627,7 +2627,7 @@ return 0; } -void tTrack::SetBendPitchSens(int Value) +void JZTrack::SetBendPitchSens(int Value) { if (BendPitchSens) { @@ -2645,7 +2645,7 @@ // ------------------------ Modulation Sysex ------------------------------ -int tTrack::GetModulationSysex(int msp) +int JZTrack::GetModulationSysex(int msp) { unsigned char *valp = gpSynth->GetSysexValPtr(ModulationSettings[msp]); @@ -2657,7 +2657,7 @@ return 0; } -void tTrack::SetModulationSysex(int msp, int Value) +void JZTrack::SetModulationSysex(int msp, int Value) { if (ModulationSettings[msp]) { @@ -2677,7 +2677,7 @@ // ------------------------ Bender Sysex ------------------------------ -int tTrack::GetBenderSysex(int bsp) +int JZTrack::GetBenderSysex(int bsp) { unsigned char *valp = gpSynth->GetSysexValPtr(BenderSettings[bsp]); @@ -2689,7 +2689,7 @@ return 0; } -void tTrack::SetBenderSysex(int bsp, int Value) +void JZTrack::SetBenderSysex(int bsp, int Value) { if (BenderSettings[bsp]) { @@ -2709,7 +2709,7 @@ // ------------------------ CAf Sysex ------------------------------ -int tTrack::GetCAfSysex(int csp) +int JZTrack::GetCAfSysex(int csp) { unsigned char *valp = gpSynth->GetSysexValPtr(CAfSettings[csp]); @@ -2721,7 +2721,7 @@ return 0; } -void tTrack::SetCAfSysex(int csp, int Value) +void JZTrack::SetCAfSysex(int csp, int Value) { if (CAfSettings[csp]) { @@ -2741,7 +2741,7 @@ // ------------------------ PAf Sysex ------------------------------ -int tTrack::GetPAfSysex(int psp) +int JZTrack::GetPAfSysex(int psp) { unsigned char *valp = gpSynth->GetSysexValPtr(PAfSettings[psp]); @@ -2753,7 +2753,7 @@ return 0; } -void tTrack::SetPAfSysex(int psp, int Value) +void JZTrack::SetPAfSysex(int psp, int Value) { if (PAfSettings[psp]) { @@ -2773,7 +2773,7 @@ // ------------------------ CC1 Sysex ------------------------------ -int tTrack::GetCC1Sysex(int csp) +int JZTrack::GetCC1Sysex(int csp) { unsigned char *valp = gpSynth->GetSysexValPtr(CC1Settings[csp]); @@ -2785,7 +2785,7 @@ return 0; } -void tTrack::SetCC1Sysex(int csp, int Value) +void JZTrack::SetCC1Sysex(int csp, int Value) { if (CC1Settings[csp]) { @@ -2805,7 +2805,7 @@ // ------------------------ CC2 Sysex ------------------------------ -int tTrack::GetCC2Sysex(int csp) +int JZTrack::GetCC2Sysex(int csp) { unsigned char *valp = gpSynth->GetSysexValPtr(CC2Settings[csp]); @@ -2817,7 +2817,7 @@ return 0; } -void tTrack::SetCC2Sysex(int csp, int Value) +void JZTrack::SetCC2Sysex(int csp, int Value) { if (CC2Settings[csp]) Kill(CC2Settings[csp]); @@ -2835,7 +2835,7 @@ // ------------------------ CC1ControllerNr Sysex ------------------------------ -int tTrack::GetCC1ControllerNr() +int JZTrack::GetCC1ControllerNr() { unsigned char *valp = gpSynth->GetSysexValPtr(CC1ControllerNr); @@ -2847,7 +2847,7 @@ return 0; } -void tTrack::SetCC1ControllerNr(int Value) +void JZTrack::SetCC1ControllerNr(int Value) { if (CC1ControllerNr) { @@ -2867,7 +2867,7 @@ // ------------------------ CC2ControllerNr Sysex ------------------------------ -int tTrack::GetCC2ControllerNr() +int JZTrack::GetCC2ControllerNr() { unsigned char *valp = gpSynth->GetSysexValPtr(CC2ControllerNr); @@ -2879,7 +2879,7 @@ return 0; } -void tTrack::SetCC2ControllerNr(int Value) +void JZTrack::SetCC2ControllerNr(int Value) { if (CC2ControllerNr) { @@ -2899,7 +2899,7 @@ // ------------------------ Reverb Type ------------------------------ -int tTrack::GetReverbType(int lsb) +int JZTrack::GetReverbType(int lsb) { unsigned char *valp = gpSynth->GetSysexValPtr(ReverbType); @@ -2915,7 +2915,7 @@ return 0; } -void tTrack::SetReverbType(int Value, int lsb) +void JZTrack::SetReverbType(int Value, int lsb) { if (ReverbType) { @@ -2939,7 +2939,7 @@ // ------------------------ Chorus Type ------------------------------ -int tTrack::GetChorusType(int lsb) +int JZTrack::GetChorusType(int lsb) { unsigned char *valp = gpSynth->GetSysexValPtr(ChorusType); @@ -2956,7 +2956,7 @@ return 0; } -void tTrack::SetChorusType(int Value, int lsb) +void JZTrack::SetChorusType(int Value, int lsb) { if (ChorusType) { @@ -2980,7 +2980,7 @@ // ----------------------- Equalizer Type ------------------------------ -int tTrack::GetEqualizerType() +int JZTrack::GetEqualizerType() { unsigned char *valp = gpSynth->GetSysexValPtr(EqualizerType); @@ -2992,7 +2992,7 @@ return 0; } -void tTrack::SetEqualizerType(int Value) +void JZTrack::SetEqualizerType(int Value) { if (EqualizerType) { @@ -3013,7 +3013,7 @@ // ------------------------ Reverb Parameters Sysex ------------------------------ -int tTrack::GetRevSysex(int rsp) +int JZTrack::GetRevSysex(int rsp) { unsigned char *valp = gpSynth->GetSysexValPtr(ReverbSettings[rsp]); @@ -3025,7 +3025,7 @@ return 0; } -void tTrack::SetRevSysex(int rsp, int Value) +void JZTrack::SetRevSysex(int rsp, int Value) { if (ReverbSettings[rsp]) { @@ -3049,7 +3049,7 @@ // ------------------------ Chorus Parameters Sysex ------------------------------ -int tTrack::GetChoSysex(int csp) +int JZTrack::GetChoSysex(int csp) { unsigned char *valp = gpSynth->GetSysexValPtr(ChorusSettings[csp]); @@ -3061,7 +3061,7 @@ return 0; } -void tTrack::SetChoSysex(int csp, int Value) +void JZTrack::SetChoSysex(int csp, int Value) { if (ChorusSettings[csp]) { @@ -3086,7 +3086,7 @@ // ------------------------ Partial Reserve ------------------------------ -int tTrack::GetPartRsrv(int chan) +int JZTrack::GetPartRsrv(int chan) { unsigned char *valp = gpSynth->GetSysexValPtr(PartialReserve); @@ -3098,7 +3098,7 @@ return 0; } -void tTrack::SetPartRsrv(unsigned char *rsrv) +void JZTrack::SetPartRsrv(unsigned char *rsrv) { if (PartialReserve) { @@ -3119,7 +3119,7 @@ // ------------------------ Master Volume ------------------------------ -int tTrack::GetMasterVol() +int JZTrack::GetMasterVol() { unsigned char *valp = gpSynth->GetSysexValPtr(MasterVol); @@ -3137,7 +3137,7 @@ return 0; } -void tTrack::SetMasterVol(int Value) +void JZTrack::SetMasterVol(int Value) { if (MasterVol) { @@ -3158,7 +3158,7 @@ // ------------------------ Master Pan ------------------------------ -int tTrack::GetMasterPan() +int JZTrack::GetMasterPan() { unsigned char *valp = gpSynth->GetSysexValPtr(MasterPan); @@ -3170,7 +3170,7 @@ return 0; } -void tTrack::SetMasterPan(int Value) +void JZTrack::SetMasterPan(int Value) { if (MasterPan) { @@ -3190,7 +3190,7 @@ // ------------------------ Mode Sysex ------------------------------ -int tTrack::GetModeSysex(int param) +int JZTrack::GetModeSysex(int param) { unsigned char *valp = 0; @@ -3213,7 +3213,7 @@ return 0; } -void tTrack::SetModeSysex(int param, int Value) +void JZTrack::SetModeSysex(int param, int Value) { switch (param) { @@ -3257,7 +3257,7 @@ // ------------------------ Mtc offset (Time Code Offset) ------------------------------ -tMtcTime* tTrack::GetMtcOffset() +tMtcTime* JZTrack::GetMtcOffset() { if (MtcOffset) { @@ -3266,7 +3266,7 @@ return(new tMtcTime(0, Mtc30Ndf)); } -void tTrack::SetMtcOffset(tMtcTime* mtc) +void JZTrack::SetMtcOffset(tMtcTime* mtc) { if (MtcOffset) { @@ -3282,7 +3282,7 @@ // ------------------------ Speed ------------------------------ -int tTrack::GetDefaultSpeed() +int JZTrack::GetDefaultSpeed() { if (Speed) { @@ -3292,7 +3292,7 @@ } -void tTrack::SetDefaultSpeed(int bpm) +void JZTrack::SetDefaultSpeed(int bpm) { JZEvent *e = new tSetTempo(0, bpm); if (Speed) @@ -3304,7 +3304,7 @@ Cleanup(); } -tSetTempo *tTrack::GetCurrentTempo(int clk) +tSetTempo *JZTrack::GetCurrentTempo(int clk) { tEventIterator Iterator(this); Sort(); @@ -3322,7 +3322,7 @@ return t; } -int tTrack::GetCurrentSpeed(int clk) +int JZTrack::GetCurrentSpeed(int clk) { tSetTempo *t = GetCurrentTempo(clk); if (t) @@ -3337,7 +3337,7 @@ // ------------------------- State ---------------------------------- -char *tTrack::GetStateChar() +char *JZTrack::GetStateChar() { switch (State) { @@ -3351,19 +3351,19 @@ return "?"; } -void tTrack::SetState(int NewState) +void JZTrack::SetState(int NewState) { State = NewState % 3; } -void tTrack::ToggleState(int Direction) +void JZTrack::ToggleState(int Direction) { State = (State + Direction + 3) % 3; } // ------------------------- Channel --------------------------- -void tTrack::SetChannel(int NewChannel) +void JZTrack::SetChannel(int NewChannel) { Channel = NewChannel; } Modified: trunk/jazz/src/Track.h =================================================================== --- trunk/jazz/src/Track.h 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/Track.h 2008-03-18 14:25:17 UTC (rev 334) @@ -284,7 +284,7 @@ class tUndoBuffer : public tSimpleEventArray { - friend class tTrack; + friend class JZTrack; public: @@ -305,7 +305,7 @@ { friend class tEventIterator; friend class tTrackDlg; - friend class tTrack; + friend class JZTrack; public: @@ -398,14 +398,14 @@ #define MaxUndo 20 -class tTrack : public tEventArray +class JZTrack : public tEventArray { public: static bool changed; - tTrack(); - ~tTrack() { Clear(); } + JZTrack(); + ~JZTrack() { Clear(); } bool IsDrumTrack(); Modified: trunk/jazz/src/TrackFrame.cpp =================================================================== --- trunk/jazz/src/TrackFrame.cpp 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/TrackFrame.cpp 2008-03-18 14:25:17 UTC (rev 334) @@ -396,7 +396,7 @@ //----------------------------------------------------------------------------- bool JZTrackFrame::OnClose() { -// if (tTrack::changed) +// if (JZTrack::changed) // { // if ( // ::wxMessageBox( @@ -444,7 +444,7 @@ // mpTrackWindow->SetScrollPosition(0, 0); // NextWin->Canvas->SetScrollRanges(); mpTrackWindow->Refresh(false); -// tTrack::changed = false; +// JZTrack::changed = false; } } Modified: trunk/jazz/src/TrackWindow.cpp =================================================================== --- trunk/jazz/src/TrackWindow.cpp 2008-03-18 04:25:04 UTC (rev 333) +++ trunk/jazz/src/TrackWindow.cpp 2008-03-18 14:25:17 UTC (rev 334) @@ -287,61 +287,70 @@ { wxPoint Point = Event.GetPosition(); - // Check to see if the mouse was clicked inside of the number mode - // indicator. - if (Point.x < mNumberWidth && Point.y < mTopInfoHeight) + // Check to see if the mouse was clicked in the top header. + if (Point.y < mTopInfoHeight) { - if (mNumberMode == eNmTrackNr) + // Check to see if the mouse was clicked inside of the number mode + // indicator. + if (Point.x < mNumberWidth && Point.y < mTopInfoHeight) { - mNumberMode = eNmMidiChannel; - Refresh(false); + if (mNumberMode == eNmTrackNr) + { + mNumberMode = eNmMidiChannel; + Refresh(false); + } + else + { + mNumberMode = eNmTrackNr; + Refresh(false); + } } - else + // Check to see if the mouse was clicked inside of the track name header. + else if ( + Point.x >= mTrackNameX && + Point.x < mTrackNameX + mTrackNameWidth) { - mNumberMode = eNmTrackNr; + // Bump up the speed value one tick. + int SpeedBpm = gpProject->GetTrack(0)->GetDefaultSpeed(); + ++SpeedBpm; + if (SpeedBpm > 0 && SpeedBpm < 300) + { + gpProject->GetTrack(0)->SetDefaultSpeed(SpeedBpm); + } Refresh(false); } - } - else if ( - Point.x >= mTrackNameX && Point.x < mTrackNameX + mTrackNameWidth && - Point.y < mTopInfoHeight) - { - // Bump up the speed value one tick. - int SpeedBpm = gpProject->GetTrack(0)->GetDefaultSpeed(); - ++SpeedBpm; - if (SpeedBpm > 0 && SpeedBpm < 300) + // Check to see if the mouse was clicked inside of the patch header. + else if (Point.x >= mPatchX && Point.x < mPatchX + mPatchWidth) { - gpProject->GetTrack(0)->SetDefaultSpeed(SpeedBpm); + // Toggle the patch type. + switch (mCounterMode) + { + case eCmProgram: + mCounterMode = eCmBank; + break; + case eCmBank: + mCounterMode = eCmVolume; + break; + case eCmVolume: + mCounterMode = eCmPan; + break; + case eCmPan: + mCounterMode = eCmReverb; + break; + case eCmReverb: + mCounterMode = eCmChorus; + break; + case eCmChorus: + default: + mCounterMode = eCmProgram; + break; + } + Refresh(false); } - Refresh(false); } - else if ( - Point.x >= mPatchX && Point.x < mPatchX + mPatchWidth && - Point.y < mTopInfoHeight) + else if (Point.x >= mStateX && Point.x < mStateX + mStateWidth) { - switch (mCounterMode) - { - case eCmProgram: - mCounterMode = eCmBank; - break; - case eCmBank: - mCounterMode = eCmVolume; - break; - case eCmVolume: - mCounterMode = eCmPan; - break; - case eCmPan: - mCounterMode = eCmReverb; - break; - case eCmReverb: - mCounterMode = eCmChorus; - break; - case eCmChorus: - default: - mCounterMode = eCmProgram; - break; - } - Refresh(false); + ToggleTrackState(Point); } } @@ -368,6 +377,18 @@ //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- +void JZTrackWindow::ToggleTrackState(const wxPoint& Point) +{ + JZTrack* pTrack = y2Track(Point.y); + if (pTrack) + { + pTrack->ToggleState(1); + Refresh(false); + } +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- void JZTrackWindow::ZoomIn() { if (mClocksPerPixel >= 2) @@ -550,7 +571,10 @@ // For each track show the MIDI channel, name, state, prg. int TrackNumber = mFromLine; - for (int y = Track2y(TrackNumber); y < mEventsY + mEventsHeight; y += mTrackHeight) + for ( + int y = TrackIndex2y(TrackNumber); + y < mEventsY + mEventsHeight; + y += mTrackHeight) { LocalDc.SetClippingRegion( 0, @@ -565,7 +589,7 @@ LocalDc.DestroyClippingRegion(); - tTrack* pTrack = gpProject->GetTrack(TrackNumber); + JZTrack* pTrack = gpProject->GetTrack(TrackNumber); if (pTrack) { LocalDc.SetClippingRegion( @@ -650,12 +674,12 @@ Dc.SetClippingRegion(0, mEventsY, mNumberWidth, mEventsHeight); for (int i = mFromLine; i < mToLine; ++i) { - tTrack* pTrack = gpProject->GetTrack(i); + JZTrack* pTrack = gpProject->GetTrack(i); if (pTrack != 0) { if (pTrack->GetAudioMode()) { - LineText(Dc, 0, Track2y(i), mNumberWidth, "Au"); + LineText(Dc, 0, TrackIndex2y(i), mNumberWidth, "Au"); } else { @@ -674,12 +698,12 @@ } ostringstream Oss; Oss << setw(2) << Value; - LineText(Dc, 0, Track2y(i), mNumberWidth, Oss.str().c_str()); + LineText(Dc, 0, TrackIndex2y(i), mNumberWidth, Oss.str().c_str()); } } else { - LineText(Dc, 0, Track2y(i), mNumberWidth, ""); + LineText(Dc, 0, TrackIndex2y(i), mNumberWidth, ""); } } Dc.DestroyClippingRegion(); @@ -785,17 +809,21 @@ x -= 2; y -= 2; } - wxColor bg = Dc.GetTextBackground(); - Dc.SetTextBackground(*mpGreyColor); - int TextWidth, TextHeight; - Dc.GetTextExtent(pString, &TextWidth, &TextHeight); - int Margin = (Width - TextWidth) / 2; - if (Margin < mLittleBit) + + if (pString && strlen(pString) > 0) { - Margin = mLittleBit; + wxColor TextBackgroundColor = Dc.GetTextBackground(); + Dc.SetTextBackground(*mpGreyColor); + int TextWidth, TextHeight; + Dc.GetTextExtent(pString, &TextWidth, &TextHeight); + int Margin = (Width - TextWidth) / 2; + if (Margin < mLittleBit) + { + Margin = mLittleBit; + } + Dc.DrawText(pString, x + Margin, y + mLittleBit); + Dc.SetTextBackground(TextBackgroundColor); } - Dc.DrawText(pString, x + Margin, y + mLittleBit); - Dc.SetTextBackground(*wxWHITE); } //----------------------------------------------------------------------------- @@ -809,7 +837,7 @@ Dc.SetClippingRegion(mPatchX, mEventsY, mPatchWidth, mEventsHeight); for (i = mFromLine; i < mToLine; i++) { - tTrack* pTrack = gpProject->GetTrack(i); + JZTrack* pTrack = gpProject->GetTrack(i); if (pTrack) { int Value; @@ -839,11 +867,11 @@ } ostringstream Oss; Oss << setw(3) << Value; - LineText(Dc, mPatchX, Track2y(i), mPatchWidth, Oss.str().c_str()); + LineText(Dc, mPatchX, TrackIndex2y(i), mPatchWidth, Oss.str().c_str()); } else { - LineText(Dc, mPatchX, Track2y(i), mPatchWidth, "?"); + LineText(Dc, mPatchX, TrackIndex2y(i), mPatchWidth, "?"); } } Dc.DestroyClippingRegion(); @@ -865,9 +893,12 @@ Dc.SetClippingRegion(mEventsX, mEventsY, mEventsWidth, mEventsHeight); int TrackNumber = mFromLine; - for (int y = Track2y(TrackNumber); y < mEventsY + mEventsHeight; y += mTrackHeight) + for ( + int y = TrackIndex2y(TrackNumber); + y < mEventsY + mEventsHeight; + y += mTrackHeight) { - tTrack *Track = gpProject->GetTrack(TrackNumber... [truncated message content] |
From: <pst...@us...> - 2008-03-18 04:25:06
|
Revision: 333 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=333&view=rev Author: pstieber Date: 2008-03-17 21:25:04 -0700 (Mon, 17 Mar 2008) Log Message: ----------- Added code to increment the default tempo 1 bpm with a left-click on the tempo header and decrement the default tempo 1 bpm with a right-click. Modified Paths: -------------- trunk/jazz/src/TrackWindow.cpp trunk/jazz/src/TrackWindow.h Modified: trunk/jazz/src/TrackWindow.cpp =================================================================== --- trunk/jazz/src/TrackWindow.cpp 2008-03-18 04:09:09 UTC (rev 332) +++ trunk/jazz/src/TrackWindow.cpp 2008-03-18 04:25:04 UTC (rev 333) @@ -43,6 +43,7 @@ EVT_SIZE(JZTrackWindow::OnSize) EVT_ERASE_BACKGROUND(JZTrackWindow::OnEraseBackground) EVT_LEFT_UP(JZTrackWindow::OnLeftButtonUp) + EVT_RIGHT_UP(JZTrackWindow::OnRightButtonUp) END_EVENT_TABLE() //----------------------------------------------------------------------------- @@ -302,6 +303,19 @@ } } else if ( + Point.x >= mTrackNameX && Point.x < mTrackNameX + mTrackNameWidth && + Point.y < mTopInfoHeight) + { + // Bump up the speed value one tick. + int SpeedBpm = gpProject->GetTrack(0)->GetDefaultSpeed(); + ++SpeedBpm; + if (SpeedBpm > 0 && SpeedBpm < 300) + { + gpProject->GetTrack(0)->SetDefaultSpeed(SpeedBpm); + } + Refresh(false); + } + else if ( Point.x >= mPatchX && Point.x < mPatchX + mPatchWidth && Point.y < mTopInfoHeight) { @@ -333,6 +347,27 @@ //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- +void JZTrackWindow::OnRightButtonUp(wxMouseEvent& Event) +{ + wxPoint Point = Event.GetPosition(); + + if ( + Point.x >= mTrackNameX && Point.x < mTrackNameX + mTrackNameWidth && + Point.y < mTopInfoHeight) + { + // Knock down the speed value one tick. + int SpeedBpm = gpProject->GetTrack(0)->GetDefaultSpeed(); + --SpeedBpm; + if (SpeedBpm > 0 && SpeedBpm < 300) + { + gpProject->GetTrack(0)->SetDefaultSpeed(SpeedBpm); + } + Refresh(false); + } +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- void JZTrackWindow::ZoomIn() { if (mClocksPerPixel >= 2) @@ -665,7 +700,14 @@ ostringstream Oss; Oss << "speed: " << setw(3) << Value; - LineText(Dc, mTrackNameX, -1, mTrackNameWidth, Oss.str().c_str(), mTopInfoHeight, Down); + LineText( + Dc, + mTrackNameX, + -1, + mTrackNameWidth, + Oss.str().c_str(), + mTopInfoHeight, + Down); } //----------------------------------------------------------------------------- Modified: trunk/jazz/src/TrackWindow.h =================================================================== --- trunk/jazz/src/TrackWindow.h 2008-03-18 04:09:09 UTC (rev 332) +++ trunk/jazz/src/TrackWindow.h 2008-03-18 04:25:04 UTC (rev 333) @@ -97,6 +97,8 @@ void OnLeftButtonUp(wxMouseEvent& Event); + void OnRightButtonUp(wxMouseEvent& Event); + virtual void OnDraw(wxDC& Dc); void Draw(wxDC& Dc); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-18 04:09:13
|
Revision: 332 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=332&view=rev Author: pstieber Date: 2008-03-17 21:09:09 -0700 (Mon, 17 Mar 2008) Log Message: ----------- Added code to toggle the counter mode by clicking on the header. Modified Paths: -------------- trunk/jazz/src/TrackWindow.cpp Modified: trunk/jazz/src/TrackWindow.cpp =================================================================== --- trunk/jazz/src/TrackWindow.cpp 2008-03-18 03:56:06 UTC (rev 331) +++ trunk/jazz/src/TrackWindow.cpp 2008-03-18 04:09:09 UTC (rev 332) @@ -301,6 +301,34 @@ Refresh(false); } } + else if ( + Point.x >= mPatchX && Point.x < mPatchX + mPatchWidth && + Point.y < mTopInfoHeight) + { + switch (mCounterMode) + { + case eCmProgram: + mCounterMode = eCmBank; + break; + case eCmBank: + mCounterMode = eCmVolume; + break; + case eCmVolume: + mCounterMode = eCmPan; + break; + case eCmPan: + mCounterMode = eCmReverb; + break; + case eCmReverb: + mCounterMode = eCmChorus; + break; + case eCmChorus: + default: + mCounterMode = eCmProgram; + break; + } + Refresh(false); + } } //----------------------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-18 03:56:09
|
Revision: 331 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=331&view=rev Author: pstieber Date: 2008-03-17 20:56:06 -0700 (Mon, 17 Mar 2008) Log Message: ----------- 1. Clicking the mouse on the number mode header toggles the mode between track number and MIDI channel. 2. Changed the way text is horizontally aligned in LineText. Modified Paths: -------------- trunk/jazz/src/TrackWindow.cpp trunk/jazz/src/TrackWindow.h Modified: trunk/jazz/src/TrackWindow.cpp =================================================================== --- trunk/jazz/src/TrackWindow.cpp 2008-03-17 23:05:36 UTC (rev 330) +++ trunk/jazz/src/TrackWindow.cpp 2008-03-18 03:56:06 UTC (rev 331) @@ -42,6 +42,7 @@ BEGIN_EVENT_TABLE(JZTrackWindow, wxScrolledWindow) EVT_SIZE(JZTrackWindow::OnSize) EVT_ERASE_BACKGROUND(JZTrackWindow::OnEraseBackground) + EVT_LEFT_UP(JZTrackWindow::OnLeftButtonUp) END_EVENT_TABLE() //----------------------------------------------------------------------------- @@ -94,8 +95,7 @@ mPatchWidth(0), mBarCount(0), mCounterMode(eCmProgram), -// mNumberMode(eNmMidiChannel), - mNumberMode(eNmTrackNr), + mNumberMode(eNmMidiChannel), mpFixedFont(0), mFixedFontHeight(0), mFontSize(12), @@ -282,6 +282,29 @@ //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- +void JZTrackWindow::OnLeftButtonUp(wxMouseEvent& Event) +{ + wxPoint Point = Event.GetPosition(); + + // Check to see if the mouse was clicked inside of the number mode + // indicator. + if (Point.x < mNumberWidth && Point.y < mTopInfoHeight) + { + if (mNumberMode == eNmTrackNr) + { + mNumberMode = eNmMidiChannel; + Refresh(false); + } + else + { + mNumberMode = eNmTrackNr; + Refresh(false); + } + } +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- void JZTrackWindow::ZoomIn() { if (mClocksPerPixel >= 2) @@ -694,7 +717,14 @@ } wxColor bg = Dc.GetTextBackground(); Dc.SetTextBackground(*mpGreyColor); - Dc.DrawText(pString, x + mLittleBit, y + mLittleBit); + int TextWidth, TextHeight; + Dc.GetTextExtent(pString, &TextWidth, &TextHeight); + int Margin = (Width - TextWidth) / 2; + if (Margin < mLittleBit) + { + Margin = mLittleBit; + } + Dc.DrawText(pString, x + Margin, y + mLittleBit); Dc.SetTextBackground(*wxWHITE); } Modified: trunk/jazz/src/TrackWindow.h =================================================================== --- trunk/jazz/src/TrackWindow.h 2008-03-17 23:05:36 UTC (rev 330) +++ trunk/jazz/src/TrackWindow.h 2008-03-18 03:56:06 UTC (rev 331) @@ -95,6 +95,8 @@ void OnEraseBackground(wxEraseEvent& Event); + void OnLeftButtonUp(wxMouseEvent& Event); + virtual void OnDraw(wxDC& Dc); void Draw(wxDC& Dc); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-17 23:05:38
|
Revision: 330 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=330&view=rev Author: pstieber Date: 2008-03-17 16:05:36 -0700 (Mon, 17 Mar 2008) Log Message: ----------- Fixed a typo. Modified Paths: -------------- trunk/jazz/dialogs.txt Modified: trunk/jazz/dialogs.txt =================================================================== --- trunk/jazz/dialogs.txt 2008-03-17 15:22:30 UTC (rev 329) +++ trunk/jazz/dialogs.txt 2008-03-17 23:05:36 UTC (rev 330) @@ -1,4 +1,4 @@ -The instructions in the file are obsolete. +The instructions in this file are obsolete. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-17 15:22:42
|
Revision: 329 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=329&view=rev Author: pstieber Date: 2008-03-17 08:22:30 -0700 (Mon, 17 Mar 2008) Log Message: ----------- Added the knob source. Modified Paths: -------------- trunk/jazz/vc9/JazzPlusPlus-VC9.vcproj Modified: trunk/jazz/vc9/JazzPlusPlus-VC9.vcproj =================================================================== --- trunk/jazz/vc9/JazzPlusPlus-VC9.vcproj 2008-03-17 06:42:44 UTC (rev 328) +++ trunk/jazz/vc9/JazzPlusPlus-VC9.vcproj 2008-03-17 15:22:30 UTC (rev 329) @@ -452,6 +452,14 @@ > </File> <File + RelativePath="..\src\Knob.cpp" + > + </File> + <File + RelativePath="..\src\Knob.h" + > + </File> + <File RelativePath="..\src\Mapper.cpp" > </File> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-17 06:42:46
|
Revision: 328 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=328&view=rev Author: pstieber Date: 2008-03-16 23:42:44 -0700 (Sun, 16 Mar 2008) Log Message: ----------- Fixed a scroll event constructor argument. Modified Paths: -------------- trunk/jazz/src/Knob.cpp Modified: trunk/jazz/src/Knob.cpp =================================================================== --- trunk/jazz/src/Knob.cpp 2008-03-17 06:25:43 UTC (rev 327) +++ trunk/jazz/src/Knob.cpp 2008-03-17 06:42:44 UTC (rev 328) @@ -292,7 +292,7 @@ ScrollEvent = wxEVT_SCROLL_THUMBTRACK; } - wxScrollEvent ScrollEvent(ScrollEvent, m_windowId); + wxScrollEvent ScrollEvent(wxEVT_SCROLL_CHANGED, m_windowId); ScrollEvent.SetPosition(NewValue); ScrollEvent.SetEventObject(this); GetEventHandler()->ProcessEvent(ScrollEvent); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-17 06:25:49
|
Revision: 327 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=327&view=rev Author: pstieber Date: 2008-03-16 23:25:43 -0700 (Sun, 16 Mar 2008) Log Message: ----------- 1. Added a bitmap to the track window to decrease flicker. This required a rework of the coordinates. Scrolling still isn't totally correct. This is a WIP. 2. Changed the way track storage was handled. 3. Changed some variable names to match my convention. Modified Paths: -------------- trunk/jazz/src/EventWindow.cpp trunk/jazz/src/EventWindow.h trunk/jazz/src/MouseAction.cpp trunk/jazz/src/PianoFrame.cpp trunk/jazz/src/PianoFrame.h trunk/jazz/src/PianoWindow.cpp trunk/jazz/src/Song.cpp trunk/jazz/src/Song.h trunk/jazz/src/SynthesizerSettingsDialog.cpp trunk/jazz/src/TrackFrame.cpp trunk/jazz/src/TrackWindow.cpp trunk/jazz/src/TrackWindow.h Modified: trunk/jazz/src/EventWindow.cpp =================================================================== --- trunk/jazz/src/EventWindow.cpp 2008-03-17 06:22:14 UTC (rev 326) +++ trunk/jazz/src/EventWindow.cpp 2008-03-17 06:25:43 UTC (rev 327) @@ -123,14 +123,10 @@ //void tCanvas::SetScrollRanges() //{ -// int w, h; -// EventWin->GetVirtSize(&w, &h); -// SetScrollbars(ScLine, ScLine, w/ScLine, h/ScLine, ScPage, ScPage); -//#ifdef wx_xt -// EnableScrolling(TRUE, TRUE); -//#else -// EnableScrolling(FALSE, FALSE); -//#endif +// int Width, Height; +// EventWin->GetVirtualEventSize(Width, Height); +// SetScrollbars(ScLine, ScLine, Width / ScLine, Height / ScLine); +// EnableScrolling(false, false); //} //void tCanvas::SetScrollPosition(int x, int y) @@ -161,16 +157,16 @@ mpFixedFont(0), hFixedFont(0), LittleBit(1), - hLine(0), - hTop(40), - wLeft(100), + mTrackHeight(0), + mTopInfoHeight(40), + mLeftInfoWidth(100), FontSize(12), ClocksPerPixel(36), UseColors(true), - xEvents(wLeft), - yEvents(hTop), - wEvents(0), - hEvents(0), + mEventsX(mLeftInfoWidth), + mEventsY(mTopInfoHeight), + mEventsWidth(0), + mEventsHeight(0), CanvasX(0), CanvasY(0), CanvasW(0), @@ -242,7 +238,7 @@ //void JZEventFrame::CreateCanvas() //{ // cout << "createcanvas\n"; -// int w, h; +// int w, h; // GetClientSize(&w, &h); // Canvas = new tCanvas(this, 0, 0, w, h); //} @@ -288,7 +284,7 @@ LittleBit = (int)(x/2); dc->GetTextExtent("HXWjgi", &x, &y); - hLine = (int)y + LittleBit; + mTrackHeight = (int)y + LittleBit; delete dc; */ } @@ -298,12 +294,10 @@ this onsize handler is supposed to take care of handling of the resizing the two subwindows sizes to they dont overlap */ - void JZEventFrame::OnSize(wxSizeEvent& event)//int w, int h) - { - // wxFrame::OnSize(event); +void JZEventFrame::OnSize(wxSizeEvent& Event) +{ + // wxFrame::OnSize(Event); - - //the below code is from the toolbar sample, the layoutchidlren function wxSize size = GetClientSize(); @@ -353,13 +347,13 @@ int JZEventFrame::x2Clock(int x) { - return (x - xEvents) * ClocksPerPixel + FromClock; + return (x - mEventsX) * ClocksPerPixel + FromClock; } int JZEventFrame::Clock2x(int clk) { - return xEvents + (clk - FromClock) / ClocksPerPixel; + return mEventsX + (clk - FromClock) / ClocksPerPixel; } int JZEventFrame::x2BarClock(int x, int next) @@ -378,32 +372,36 @@ int JZEventFrame::y2yLine(int y, int up) { if (up) - y += hLine; - y -= hTop; - y -= y % hLine; - y += hTop; + { + y += mTrackHeight; + } + y -= mTopInfoHeight; + y -= y % mTrackHeight; + y += mTopInfoHeight; return y; } int JZEventFrame::y2Line(int y, int up) { if (up) - y += hLine; - y -= hTop; - return y / hLine; + { + y += mTrackHeight; + } + y -= mTopInfoHeight; + return y / mTrackHeight; } int JZEventFrame::Line2y(int Line) { - return Line * hLine + hTop; + return Line * mTrackHeight + mTopInfoHeight; } void JZEventFrame::LineText(wxDC *dc, int x, int y, int w, const char *str, int h, bool down) { if (h <= 0) { - h = hLine; + h = mTrackHeight; y = y2yLine(y); } if (w && h) @@ -490,14 +488,13 @@ CanvasW = xc; CanvasH = yc; - xEvents = CanvasX + wLeft; - yEvents = CanvasY + hTop; - wEvents = CanvasW - wLeft; - hEvents = CanvasH - hTop; - //printf("EventWin::OnPaint: xe %ld, ye %ld, we %ld, he %ld\n", xEvents, yEvents, wEvents, hEvents); + mEventsX = CanvasX + mLeftInfoWidth; + mEventsY = CanvasY + mTopInfoHeight; + mEventsWidth = CanvasW - mLeftInfoWidth; + mEventsHeight = CanvasH - mTopInfoHeight; - FromLine = CanvasY / hLine; - ToLine = (CanvasY + CanvasH - hTop) / hLine; + FromLine = CanvasY / mTrackHeight; + ToLine = (CanvasY + CanvasH - mTopInfoHeight) / mTrackHeight; FromClock = CanvasX * ClocksPerPixel; ToClock = x2Clock(CanvasX + CanvasW); } @@ -522,7 +519,7 @@ int x; int y; e.GetPosition(&x, &y); - if (xEvents < x && x < xEvents + wEvents && yEvents < y && y < yEvents + hEvents) + if (mEventsX < x && x < mEventsX + mEventsWidth && mEventsY < y && y < mEventsY + mEventsHeight) { if (e.LeftDown()) { @@ -582,14 +579,13 @@ { } -void JZEventFrame::GetVirtSize(int *w, int *h) +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void JZEventFrame::GetVirtualEventSize(int& Width, int& Height) { - int clk = Song->MaxQuarters * Song->TicksPerQuarter; - *w = clk / ClocksPerPixel + wLeft; - *h = 127 * hLine + hTop; - - - *w = 5000L; + int TotalClockTics = Song->MaxQuarters * Song->TicksPerQuarter; + Width = TotalClockTics / ClocksPerPixel + mLeftInfoWidth; + Height = 127 * mTrackHeight + mTopInfoHeight; } //----------------------------------------------------------------------------- @@ -608,7 +604,7 @@ if (Clock > FromClock && ToClock >= Song->MaxQuarters * Song->TicksPerQuarter) return; // int x = Clock2x(Clock); -// Canvas->SetScrollPosition(x - wLeft, CanvasY); +// Canvas->SetScrollPosition(x - mLeftInfoWidth, CanvasY); } if (!SnapSel->Active) // sets clipping @@ -641,22 +637,24 @@ /** draw the "play position", by placing a vertical line where the "play clock" is */ void JZEventFrame::DrawPlayPosition(wxDC* dc) { - if (!SnapSel->Active && PlayClock >= FromClock && PlayClock < ToClock) - { - // wxDC* dc=new wxClientDC(this); - // dc->SetLogicalFunction(wxXOR); + if (!SnapSel->Active && PlayClock >= FromClock && PlayClock < ToClock) + { +// wxDC* dc = new wxClientDC(this); +// dc->SetLogicalFunction(wxXOR); dc->SetBrush(*wxBLACK_BRUSH); dc->SetPen(*wxBLACK_PEN); int x = Clock2x(PlayClock); //cout<<"JZEventFrame::DrawPlayPosition play pos x "<<x<<" "<<FromClock<<" "<<ToClock<<endl; - //dc->DrawRectangle(x, CanvasY, 2*LittleBit, hTop); - dc->DrawLine(x, CanvasY,x, yEvents+hEvents); //draw a line, 2 pixwels wide - dc->DrawLine(x+1,CanvasY,x+1,yEvents+hEvents); + //dc->DrawRectangle(x, CanvasY, 2*LittleBit, mTopInfoHeight); + dc->DrawLine(x, CanvasY, x, mEventsY + mEventsHeight); //draw a line, 2 pixwels wide + dc->DrawLine(x + 1, CanvasY, x + 1, mEventsY + mEventsHeight); dc->SetLogicalFunction(wxCOPY); - } + } if (NextWin) + { NextWin->DrawPlayPosition(dc); + } } // ************************************************************************** @@ -668,7 +666,9 @@ if (!SnapSel->Selected) { if (msg == 0) + { msg = "please select some events first"; + } wxMessageBox((char *)msg, "Error", wxOK); return 0; } Modified: trunk/jazz/src/EventWindow.h =================================================================== --- trunk/jazz/src/EventWindow.h 2008-03-17 06:22:14 UTC (rev 326) +++ trunk/jazz/src/EventWindow.h 2008-03-17 06:25:43 UTC (rev 327) @@ -103,21 +103,21 @@ wxFont* mpFixedFont; // remains with 12pt int hFixedFont; // Height of letters - int LittleBit; - int hLine; + int LittleBit; + int mTrackHeight; - int hTop; - int wLeft; - int FontSize; - int ClocksPerPixel; - bool UseColors; + int mTopInfoHeight; + int mLeftInfoWidth; + int FontSize; + int ClocksPerPixel; + bool UseColors; // Parameters changed, e.g. Song loaded virtual void Setup(); // filled by OnPaint() //wxDC *dc; - int xEvents, yEvents, wEvents, hEvents; + int mEventsX, mEventsY, mEventsWidth, mEventsHeight; int CanvasX, CanvasY, CanvasW, CanvasH; // canvas coords int FromClock, ToClock; int FromLine, ToLine; @@ -164,7 +164,7 @@ // Mixer-Dialog wxDialog* MixerForm; - virtual void GetVirtSize(int *w, int *h); + virtual void GetVirtualEventSize(int& Width, int& Height); // Edit-Menu Modified: trunk/jazz/src/MouseAction.cpp =================================================================== --- trunk/jazz/src/MouseAction.cpp 2008-03-17 06:22:14 UTC (rev 326) +++ trunk/jazz/src/MouseAction.cpp 2008-03-17 06:25:43 UTC (rev 327) @@ -230,9 +230,9 @@ // in the parent window. void tSelection::Draw(wxDC& Dc) { - cout - << "tSelection::Draw ---------------------------------------------------" - << endl; +// cout +// << "tSelection::Draw ---------------------------------------------------" +// << endl; // Dc.DrawRectangle(100,100,100,100); // if (Selected) //we cant check for "selected" here, because... // { Modified: trunk/jazz/src/PianoFrame.cpp =================================================================== --- trunk/jazz/src/PianoFrame.cpp 2008-03-17 06:22:14 UTC (rev 326) +++ trunk/jazz/src/PianoFrame.cpp 2008-03-17 06:25:43 UTC (rev 327) @@ -393,12 +393,12 @@ DialogBox = 0; MixerForm = 0; - hTop = 40; - wLeft = 100; - xEvents = wLeft; - yEvents = hTop; - wEvents = hEvents = 0; - hLine = 0; + mTopInfoHeight = 40; + mLeftInfoWidth = 100; + mEventsX = mLeftInfoWidth; + mEventsY = mTopInfoHeight; + mEventsWidth = mEventsHeight = 0; + mTrackHeight = 0; LittleBit = 1; FontSize = PianoFontSizes[1]; // Must be an entry in the array. @@ -426,9 +426,9 @@ mpToolBar->ToggleTool(MEN_SNAP_16, TRUE); nSnaps = 0; - for (int i = 0; i < MaxTracks; i++) + for (int i = 0; i < eMaxTrackCount; i++) { - FromLines[i] = 64; + mFromLines[i] = 64; } DrumFont = 0; @@ -479,6 +479,7 @@ { delete mpGuitarFrame; } + delete mpToolBar; } @@ -541,7 +542,7 @@ LittleBit = (int)(lx/2); dc->GetTextExtent("HXWjgi", &lx, &ly); - hLine = (int)ly + LittleBit; + mTrackHeight = (int)ly + LittleBit; delete dc; @@ -552,7 +553,7 @@ dc=new wxClientDC(Canvas); dc->SetFont(*mpFixedFont); dc->GetTextExtent("H", &x, &y); - hTop = hFixedFont + 2 * LittleBit; + mTopInfoHeight = hFixedFont + 2 * LittleBit; dc->SetFont(*mpFont); dc->GetTextExtent("H", &x, &y); @@ -564,7 +565,7 @@ dc->GetTextExtent("Low Conga mid 2 or so", &x, &y); wPiano = (int)x + LittleBit; - wLeft = wPiano; + mLeftInfoWidth = wPiano; delete dc; } @@ -583,7 +584,7 @@ void JZPianoFrame::NewPosition(int track, int clock) { - FromLines[TrackNr] = FromLine; + mFromLines[TrackNr] = FromLine; // change track if (track >= 0) @@ -597,7 +598,7 @@ if (clock >= 0) { int x = Clock2x(clock); - Canvas->SetScrollPosition(x - wLeft, Line2y(FromLines[TrackNr])); + Canvas->SetScrollPosition(x - mLeftInfoWidth, Line2y(mFromLines[TrackNr])); } // SN++ Ist geaendert. OnPaint zeichnet immer neu -> Bug Fix bei ZoomOut! @@ -1197,41 +1198,41 @@ dc->DestroyClippingRegion(); dc->SetBackground(*wxWHITE_BRUSH); DrawPlayPosition(dc); - SnapSel->Draw(*dc, xEvents, yEvents, wEvents, hEvents); + SnapSel->Draw(*dc, mEventsX, mEventsY, mEventsWidth, mEventsHeight); dc->Clear(); /////////////////////////////////////////////////////////////// // horizontal lines(ripped from drawpianoroll code) -// for (y = Line2y(FromLine); y < yEvents + hEvents; y += hLine) -// if (y > yEvents) // cheaper than clipping -// dc->DrawLine(xEvents+1, y, xEvents + wEvents, y); +// for (y = Line2y(FromLine); y < mEventsY + mEventsHeight; y += mTrackHeight) +// if (y > mEventsY) // cheaper than clipping +// dc->DrawLine(mEventsX+1, y, mEventsX + mEventsWidth, y); dc->SetPen(*wxGREY_PEN); wxBrush blackKeysBrush=wxBrush(wxColor(250,240,240),wxSOLID); int Pitch = 127 - FromLine; y = Line2y(FromLine); - while (Pitch >= 0 && y < yEvents + hEvents) + while (Pitch >= 0 && y < mEventsY + mEventsHeight) { if (IsBlack(Pitch)) { dc->SetBrush(blackKeysBrush);//*wxLIGHT_GREY_PEN - dc->DrawRectangle(CanvasX, y, 2000, hLine); + dc->DrawRectangle(CanvasX, y, 2000, mTrackHeight); } else if ((Pitch % 12) == 0) { dc->SetPen(*wxCYAN_PEN); - dc->DrawLine(CanvasX, y + hLine, 2000, y + hLine); + dc->DrawLine(CanvasX, y + mTrackHeight, 2000, y + mTrackHeight); } else if (!IsBlack(Pitch - 1)) { dc->SetPen(*wxGREEN_PEN); - dc->DrawLine(CanvasX, y + hLine, 2000, y + hLine); + dc->DrawLine(CanvasX, y + mTrackHeight, 2000, y + mTrackHeight); } - y += hLine; + y += mTrackHeight; --Pitch; } @@ -1241,7 +1242,7 @@ MouseLine = -1; - #define VLine(x) DrawLine(x, CanvasY, x, yEvents+hEvents) + #define VLine(x) DrawLine(x, CanvasY, x, mEventsY + mEventsHeight) #define HLine(y) DrawLine(CanvasX, y, CanvasX + CanvasW, y) dc->SetPen(*wxBLACK_PEN); @@ -1249,11 +1250,11 @@ // vertical lines dc->VLine(xPiano); - dc->VLine(xEvents); - dc->VLine(xEvents-1); - dc->HLine(yEvents); - dc->HLine(yEvents-1); - dc->HLine(yEvents + hEvents); + dc->VLine(mEventsX); + dc->VLine(mEventsX-1); + dc->HLine(mEventsY); + dc->HLine(mEventsY-1); + dc->HLine(mEventsY + mEventsHeight); // draw vlines and bar numbers @@ -1270,11 +1271,11 @@ int i; dc->SetPen(*wxBLACK_PEN); sprintf(buf, "%d", BarInfo.BarNr + 1 - intro); - if (x > xEvents) + if (x > mEventsX) { - dc->DrawText(buf, x + LittleBit, yEvents - hFixedFont - 2); + dc->DrawText(buf, x + LittleBit, mEventsY - hFixedFont - 2); dc->SetPen(*wxGREY_PEN); - dc->DrawLine(x, yEvents - hFixedFont, x, yEvents+hEvents); + dc->DrawLine(x, mEventsY - hFixedFont, x, mEventsY + mEventsHeight); } dc->SetPen(*wxLIGHT_GREY_PEN); @@ -1282,13 +1283,15 @@ { clk += BarInfo.TicksPerBar / BarInfo.CountsPerBar; x = Clock2x(clk); - if (x > xEvents) - dc->DrawLine(x, yEvents+1, x, yEvents+hEvents); + if (x > mEventsX) + { + dc->DrawLine(x, mEventsY + 1, x, mEventsY + mEventsHeight); + } } BarInfo.Next(); } - LineText(dc, CanvasX, CanvasY, wPiano, hTop); + LineText(dc, CanvasX, CanvasY, wPiano, mTopInfoHeight); dc->SetPen(*wxBLACK_PEN); DrawPianoRoll(dc); @@ -1309,7 +1312,7 @@ sbrush.SetColour(230,255,230); #endif - //dc->SetClippingRegion(xEvents, yEvents, wEvents, hEvents); + //dc->SetClippingRegion(mEventsX, mEventsY, mEventsWidth, mEventsHeight); dc->SetLogicalFunction(wxXOR); dc->SetPen(*wxTRANSPARENT_PEN); @@ -1326,13 +1329,13 @@ HBChord scale = context->Scale(); int x = Clock2x(start); - if (x < xEvents) // clip to left border - x = xEvents; + if (x < mEventsX) // clip to left border + x = mEventsX; int w = Clock2x(stop) - x; if (w <= 0) continue; - int h = hLine; + int h = mTrackHeight; for (int i = 0; i < 12; i++) { int pitch = i; @@ -1351,7 +1354,7 @@ while (pitch < 127) { int y = Pitch2y(pitch); - if (y >= yEvents && y <= yEvents + hEvents - h) // y-clipping + if (y >= mEventsY && y <= mEventsY + mEventsHeight - h) // y-clipping { dc->DrawRectangle(x, y, w, h); } @@ -1409,7 +1412,7 @@ dc->SetBrush(*wxBLACK_BRUSH); dc->SetBackground(*wxWHITE_BRUSH); // xor-bug - SnapSel->Draw(*dc, xEvents, yEvents, wEvents, hEvents); + SnapSel->Draw(*dc, mEventsX, mEventsY, mEventsWidth, mEventsHeight); DrawPlayPosition(dc); //OBSOLETE dc->EndDrawing(); @@ -1423,7 +1426,7 @@ char buf[20]; dc->SetBrush(*wxLIGHT_GREY_BRUSH); - dc->DrawRectangle(xPiano, yEvents, wPiano, hEvents); //draw grey bg for keyboard + dc->DrawRectangle(xPiano, mEventsY, wPiano, mEventsHeight); //draw grey bg for keyboard dc->SetBrush(*wxBLACK_BRUSH); // dc->SetTextBackground(*wxLIGHT_GREY); @@ -1439,45 +1442,45 @@ { dc->SetFont(*mpFixedFont); - while (Pitch >= 0 && y < yEvents + hEvents) + while (Pitch >= 0 && y < mEventsY + mEventsHeight) { if (IsBlack(Pitch)) { - dc->DrawRectangle(CanvasX, y, wBlack, hLine); - dc->DrawLine(CanvasX + wBlack, y + hLine/2, CanvasX + wPiano, y + hLine/2); + dc->DrawRectangle(CanvasX, y, wBlack, mTrackHeight); + dc->DrawLine(CanvasX + wBlack, y + mTrackHeight/2, CanvasX + wPiano, y + mTrackHeight/2); dc->SetPen(*wxWHITE_PEN); - dc->DrawLine(CanvasX + wBlack+1, y + hLine/2+1, CanvasX + wPiano, y + hLine/2+1); + dc->DrawLine(CanvasX + wBlack+1, y + mTrackHeight/2+1, CanvasX + wPiano, y + mTrackHeight/2+1); dc->DrawLine(CanvasX, y, CanvasX + wBlack, y); dc->SetPen(*wxBLACK_PEN); } else if ((Pitch % 12) == 0) { - dc->DrawLine(CanvasX, y + hLine, CanvasX + wPiano, y + hLine); + dc->DrawLine(CanvasX, y + mTrackHeight, CanvasX + wPiano, y + mTrackHeight); dc->SetPen(*wxWHITE_PEN); - dc->DrawLine(CanvasX, y + hLine+1, CanvasX + wPiano, y + hLine+1); + dc->DrawLine(CanvasX, y + mTrackHeight + 1, CanvasX + wPiano, y + mTrackHeight + 1); dc->SetPen(*wxBLACK_PEN); sprintf(buf, "%d", Pitch / 12); - dc->DrawText(buf, CanvasX + wBlack + LittleBit, y + hLine / 2); + dc->DrawText(buf, CanvasX + wBlack + LittleBit, y + mTrackHeight / 2); } else if (!IsBlack(Pitch - 1)) { - dc->DrawLine(CanvasX, y + hLine, CanvasX + wPiano, y + hLine); + dc->DrawLine(CanvasX, y + mTrackHeight, CanvasX + wPiano, y + mTrackHeight); dc->SetPen(*wxWHITE_PEN); - dc->DrawLine(CanvasX, y + hLine+1, CanvasX + wPiano, y + hLine+1); + dc->DrawLine(CanvasX, y + mTrackHeight + 1, CanvasX + wPiano, y + mTrackHeight + 1); dc->SetPen(*wxBLACK_PEN); } - y += hLine; + y += mTrackHeight; --Pitch; } } else if (Track->GetAudioMode()) { dc->SetFont(*DrumFont); - while (Pitch >= 0 && y < yEvents + hEvents) + while (Pitch >= 0 && y < mEventsY + mEventsHeight) { dc->DrawText(gpMidiPlayer->GetSampleName(Pitch), CanvasX + LittleBit, y); - y += hLine; + y += mTrackHeight; --Pitch; } } @@ -1487,14 +1490,14 @@ if (VisibleKeyOn && VisibleDrumNames) { dc->SetFont(*DrumFont); - while (Pitch >= 0 && y < yEvents + hEvents) + while (Pitch >= 0 && y < mEventsY + mEventsHeight) { dc->DrawText( gpConfig->DrumName(Pitch + 1).first.c_str(), CanvasX + LittleBit, y); - y += hLine; + y += mTrackHeight; --Pitch; } @@ -1502,41 +1505,41 @@ else if (VisibleController) { dc->SetFont(*DrumFont); - while (Pitch >= 0 && y < yEvents + hEvents) + while (Pitch >= 0 && y < mEventsY + mEventsHeight) { dc->DrawText( gpConfig->CtrlName(Pitch + 1).first.c_str(), CanvasX + LittleBit, y); - y += hLine; + y += mTrackHeight; --Pitch; } } else if (VisibleProgram) { dc->SetFont(*DrumFont); - while (Pitch >= 0 && y < yEvents + hEvents) + while (Pitch >= 0 && y < mEventsY + mEventsHeight) { dc->DrawText( gpConfig->VoiceName(Pitch + 1).first.c_str(), CanvasX + LittleBit, y); - y += hLine; + y += mTrackHeight; --Pitch; } } else if (VisibleSysex) { dc->SetFont(*DrumFont); - while (Pitch >= 0 && y < yEvents + hEvents) + while (Pitch >= 0 && y < mEventsY + mEventsHeight) { dc->DrawText( tSynthSysex::GetSysexGroupName(Pitch + 1), CanvasX + LittleBit, y); - y += hLine; + y += mTrackHeight; --Pitch; } } @@ -1571,7 +1574,7 @@ if (!xoor) { dc->SetBrush(*wxWHITE_BRUSH); - dc->DrawRectangle(x, y + LittleBit, length, hLine - 2 * LittleBit); + dc->DrawRectangle(x, y + LittleBit, length, mTrackHeight - 2 * LittleBit); } // show velocity as colors @@ -1587,7 +1590,7 @@ } // end velocity colors - dc->DrawRectangle(x, y + LittleBit, length, hLine - 2 * LittleBit); + dc->DrawRectangle(x, y + LittleBit, length, mTrackHeight - 2 * LittleBit); if (xoor) { @@ -1602,7 +1605,7 @@ void JZPianoFrame::DrawEvents(wxDC* dc, tTrack *t, int Stat, const wxBrush* Brush, int force_color) { - //dc->SetClippingRegion(xEvents, yEvents, wEvents, hEvents); + //dc->SetClippingRegion(mEventsX, mEventsY, mEventsWidth, mEventsHeight); dc->SetBrush(*Brush); tEventIterator Iterator(t); @@ -1635,10 +1638,10 @@ { int DrawLength = Length/ClocksPerPixel; // do clipping ourselves - if (x1 < xEvents) + if (x1 < mEventsX) { - DrawLength -= xEvents - x1; - x1 = xEvents; + DrawLength -= mEventsX - x1; + x1 = mEventsX; } // Always draw at least two pixels to avoid invisible (behind a // vertical line) or zero-length events: @@ -1659,7 +1662,7 @@ } // end velocity colors - dc->DrawRectangle(x1, y1 + LittleBit, DrawLength, hLine - 2 * LittleBit); + dc->DrawRectangle(x1, y1 + LittleBit, DrawLength, mTrackHeight - 2 * LittleBit); //shouldnt it be in drawevent? odd. if (pEvent->IsPlayTrack()) @@ -1694,8 +1697,8 @@ dc->GetTextExtent((const char*)pEvent->IsText()->GetText(), &textX, &textY); dc->SetBrush(*wxWHITE_BRUSH); - int textlabely=CanvasY+hTop;//text labels drawn at top - dc->DrawRectangle(x1-textX, textlabely + LittleBit, textX, textY);//hLine - 2 * LittleBit); + int textlabely = CanvasY + mTopInfoHeight;//text labels drawn at top + dc->DrawRectangle(x1-textX, textlabely + LittleBit, textX, textY);//mTrackHeight - 2 * LittleBit); dc->DrawText(buf, x1-textX, textlabely + LittleBit); } } @@ -2466,7 +2469,7 @@ r.x = CanvasX + LittleBit; r.y = CanvasY; r.SetWidth(wPiano - 2 * LittleBit); - r.SetHeight(hTop); + r.SetHeight(mTopInfoHeight); tVelocCounter *VelocCounter = new tVelocCounter(this, &r, k); VelocCounter->Event(Event); @@ -2502,12 +2505,12 @@ if (MouseLine >= 0) { // Erase the previous highlight. - dc.DrawRectangle(xPiano, Line2y(MouseLine) + LittleBit, wPiano, hLine - 2 * LittleBit); + dc.DrawRectangle(xPiano, Line2y(MouseLine) + LittleBit, wPiano, mTrackHeight - 2 * LittleBit); } MouseLine = line; // Draw the new position. - dc.DrawRectangle(xPiano, Line2y(MouseLine) + LittleBit, wPiano, hLine - 2*LittleBit); + dc.DrawRectangle(xPiano, Line2y(MouseLine) + LittleBit, wPiano, mTrackHeight - 2*LittleBit); dc.SetLogicalFunction(wxCOPY); } @@ -2533,13 +2536,13 @@ int x, y; LogicalMousePosition(Event, &x, &y); - if (y > yEvents) // click in event area? + if (y > mEventsY) // click in event area? { if (xPiano < x && x < xPiano + wPiano) { MousePiano(Event); } - else if (xEvents < x && x < xEvents + wEvents) + else if (mEventsX < x && x < mEventsX + mEventsWidth) { MouseEvents(Event); } @@ -2548,7 +2551,7 @@ OnEventWinMouseEvent(Event); } } - else if (x > xEvents) + else if (x > mEventsX) { // click in top line int action = MousePlay.Action(Event); @@ -2730,7 +2733,7 @@ { SnapSel->SetXSnap(0,0,0); } - SnapSel->SetYSnap(FromLine * hLine + hTop, yEvents + hEvents, hLine); + SnapSel->SetYSnap(FromLine * mTrackHeight + mTopInfoHeight, mEventsY + mEventsHeight, mTrackHeight); } @@ -2840,7 +2843,7 @@ } int x = Clock2x(Clock); - Canvas->SetScrollPosition(x - wLeft, CanvasY); + Canvas->SetScrollPosition(x - mLeftInfoWidth, CanvasY); } if (!SnapSel->Active) // sets clipping @@ -2878,9 +2881,9 @@ dc->SetBrush(*wxBLACK_BRUSH); dc->SetPen(*wxBLACK_PEN); int x = Clock2x(PlayClock); - //dc->DrawRectangle(x, CanvasY, 2*LittleBit, hTop); - dc->DrawLine(x, CanvasY,x, yEvents+hEvents); //draw a line, 2 pixwels wide - dc->DrawLine(x+1,CanvasY,x+1,yEvents+hEvents); + //dc->DrawRectangle(x, CanvasY, 2*LittleBit, mTopInfoHeight); + dc->DrawLine(x, CanvasY,x, mEventsY + mEventsHeight); //draw a line, 2 pixwels wide + dc->DrawLine(x+1,CanvasY,x+1,mEventsY + mEventsHeight); dc->SetLogicalFunction(wxCOPY); } } @@ -2892,12 +2895,12 @@ int JZPianoFrame::Clock2x(int clk) { - return xEvents + (clk - FromClock) / ClocksPerPixel; + return mEventsX + (clk - FromClock) / ClocksPerPixel; } int JZPianoFrame::Line2y(int Line) { - return Line * hLine + hTop; + return Line * mTrackHeight + mTopInfoHeight; } void JZPianoFrame::ActSettingsDialog(wxCommandEvent& Event) @@ -3048,15 +3051,17 @@ int JZPianoFrame::x2Clock(int x) { - return (x - xEvents) * ClocksPerPixel + FromClock; + return (x - mEventsX) * ClocksPerPixel + FromClock; } int JZPianoFrame::y2Line(int y, int up) { if (up) - y += hLine; - y -= hTop; - return y / hLine; + { + y += mTrackHeight; + } + y -= mTopInfoHeight; + return y / mTrackHeight; } int JZPianoFrame::x2BarClock(int x, int next) @@ -3078,7 +3083,7 @@ int x; int y; LogicalMousePosition(Event, &x, &y); - if (xEvents < x && x < xEvents + wEvents && yEvents < y && y < yEvents + hEvents) + if (mEventsX < x && x < mEventsX + mEventsWidth && mEventsY < y && y < mEventsY + mEventsHeight) { if (Event.LeftDown()) { @@ -3125,13 +3130,13 @@ CanvasW = xc; CanvasH = yc; - xEvents = CanvasX + wLeft; - yEvents = CanvasY + hTop; - wEvents = CanvasW - wLeft; - hEvents = CanvasH - hTop; + mEventsX = CanvasX + mLeftInfoWidth; + mEventsY = CanvasY + mTopInfoHeight; + mEventsWidth = CanvasW - mLeftInfoWidth; + mEventsHeight = CanvasH - mTopInfoHeight; - FromLine = CanvasY / hLine; - ToLine = (CanvasY + CanvasH - hTop) / hLine; + FromLine = CanvasY / mTrackHeight; + ToLine = (CanvasY + CanvasH - mTopInfoHeight) / mTrackHeight; FromClock = CanvasX * ClocksPerPixel; ToClock = x2Clock(CanvasX + CanvasW); } @@ -3139,18 +3144,22 @@ int JZPianoFrame::y2yLine(int y, int up) { if (up) - y += hLine; - y -= hTop; - y -= y % hLine; - y += hTop; + { + y += mTrackHeight; + } + y -= mTopInfoHeight; + y -= y % mTrackHeight; + y += mTopInfoHeight; return y; } -void JZPianoFrame::GetVirtSize(int *w, int *h) +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void JZPianoFrame::GetVirtualEventSize(int& Width, int& Height) { - int clk = Song->MaxQuarters * Song->TicksPerQuarter; - *w = clk / ClocksPerPixel + wLeft; - *h = 127 * hLine + hTop; + int TotalClockTics = Song->MaxQuarters * Song->TicksPerQuarter; + Width = TotalClockTics / ClocksPerPixel + mLeftInfoWidth; + Height = 127 * mTrackHeight + mTopInfoHeight; } bool JZPianoFrame::OnCharHook(wxKeyEvent& Event) @@ -3258,7 +3267,7 @@ void JZPianoFrame::ButtonLabelDisplay(const wxString& Text, bool IsButtonDown) { wxClientDC Dc(Canvas); - LineText(&Dc, 0, 0, wPiano, hTop, Text, IsButtonDown); + LineText(&Dc, 0, 0, wPiano, mTopInfoHeight, Text, IsButtonDown); } Modified: trunk/jazz/src/PianoFrame.h =================================================================== --- trunk/jazz/src/PianoFrame.h 2008-03-17 06:22:14 UTC (rev 326) +++ trunk/jazz/src/PianoFrame.h 2008-03-17 06:25:43 UTC (rev 327) @@ -77,7 +77,7 @@ int xSnaps[MaxSnaps]; - int FromLines[MaxTracks]; + int mFromLines[eMaxTrackCount]; int IsVisible(JZEvent *e); int IsVisible(tTrack *t); @@ -215,7 +215,7 @@ int OnEventWinMouseEvent(wxMouseEvent &e); void OnEventWinPaintSub(int x, int y); int y2yLine(int y, int up = 0); - void GetVirtSize(int *w, int *h); + void GetVirtualEventSize(int& Width, int& Height); bool OnCharHook(wxKeyEvent& e); JZPianoWindow *Canvas; @@ -227,12 +227,12 @@ wxFont* mpFont; wxFont* mpFixedFont; //remains with 12pt/ bleibt bei 12pt int hFixedFont; //Height letters/ Hoehe eines Buchstaben - int hTop; - int wLeft; + int mTopInfoHeight; + int mLeftInfoWidth; int LittleBit; int FromLine, ToLine; - int hLine; - int xEvents, yEvents, wEvents, hEvents; + int mTrackHeight; + int mEventsX, mEventsY, mEventsWidth, mEventsHeight; int CanvasX, CanvasY, CanvasW, CanvasH; // canvas coords int FromClock, ToClock; tSnapSelection* SnapSel; Modified: trunk/jazz/src/PianoWindow.cpp =================================================================== --- trunk/jazz/src/PianoWindow.cpp 2008-03-17 06:22:14 UTC (rev 326) +++ trunk/jazz/src/PianoWindow.cpp 2008-03-17 06:25:43 UTC (rev 327) @@ -94,10 +94,10 @@ void JZPianoWindow::SetScrollRanges() { - int w, h; - mpPianoFrame->GetVirtSize(&w, &h); - SetScrollbars(ScLine, ScLine, w/ScLine, h/ScLine, ScPage, ScPage); - EnableScrolling(FALSE, FALSE); + int Width, Height; + mpPianoFrame->GetVirtualEventSize(Width, Height); + SetScrollbars(ScLine, ScLine, Width / ScLine, Height / ScLine); + EnableScrolling(false, false); } void JZPianoWindow::SetScrollPosition(int x, int y) Modified: trunk/jazz/src/Song.cpp =================================================================== --- trunk/jazz/src/Song.cpp 2008-03-17 06:22:14 UTC (rev 326) +++ trunk/jazz/src/Song.cpp 2008-03-17 06:25:43 UTC (rev 327) @@ -31,50 +31,48 @@ #include "Metronome.h" -JZSong::~JZSong() -{ - int i; - Clear(); - for (i = 0; i < MaxTracks; i++) - { - delete Tracks[i]; - } -} - JZSong::JZSong() + : mTracks() { - int i; - nTracks = MaxTracks; + nTracks = eMaxTrackCount; TicksPerQuarter = 120; intro_length = 0; - for (i = 0; i < MaxTracks; i++) - Tracks[i] = new tTrack(); - MaxQuarters = 100 * 4; // start with 100 bars ... + + // Start with 100 measures of 4:4 time. + MaxQuarters = 100 * 4; } +JZSong::~JZSong() +{ + Clear(); +} + void JZSong::Clear() { for (int i = 0; i < nTracks; i++) - Tracks[i]->Clear(); - nTracks = MaxTracks; + { + mTracks[i].Clear(); + } + nTracks = eMaxTrackCount; } int JZSong::Speed() { - return Tracks[0]->GetDefaultSpeed(); + return mTracks[0].GetDefaultSpeed(); } void JZSong::Read(tReadBase &io, const char *fname) { int i; wxBeginBusyCursor(); - for (i = 0; i < MaxTracks; i++) { - // cout << Tracks<<"\n"; - Tracks[i]->Clear(); + for (i = 0; i < eMaxTrackCount; ++i) + { + mTracks[i].Clear(); } int n = io.Open(fname); - for (i = 0; i < n && i < MaxTracks; i++) { - Tracks[i]->Read(io); + for (i = 0; i < n && i < eMaxTrackCount; ++i) + { + mTracks[i].Read(io); } io.Close(); TicksPerQuarter = io.TicksPerQuarter; @@ -102,9 +100,9 @@ void JZSong::Write(tWriteBase &io, const char *fname) { // Make sure track 0 has a synth reset - if (!Tracks[0]->Reset) + if (!mTracks[0].Reset) { - Tracks[0]->Reset = gpSynth->Reset()->IsSysEx(); + mTracks[0].Reset = gpSynth->Reset()->IsSysEx(); } int n = NumUsedTracks(); @@ -114,8 +112,10 @@ } wxBeginBusyCursor(); - for (int i = 0; i < n; i++) - Tracks[i]->Write(io); + for (int i = 0; i < n; ++i) + { + mTracks[i].Write(io); + } io.Close(); wxEndBusyCursor(); } @@ -124,7 +124,9 @@ tTrack *JZSong::GetTrack(int Nr) { if (Nr >= 0 && Nr < nTracks) - return Tracks[Nr]; + { + return &mTracks[Nr]; + } return 0; } @@ -134,9 +136,11 @@ int max = 0; for (int i = 0; i < nTracks; i++) { - int clk = Tracks[i]->GetLastClock(); + int clk = mTracks[i].GetLastClock(); if (clk > max) + { max = clk; + } } return max; } @@ -191,28 +195,30 @@ int solo = 0; for (i = 0; i < nTracks; i++) { - if (Tracks[i]->State == tsSolo) + if (mTracks[i].State == tsSolo) { solo = 1; break; } } - for (i = 0; i < nTracks; i++) + for (i = 0; i < nTracks; ++i) { - tTrack *t = Tracks[i]; - if (t->State == tsSolo || (!solo && t->State == tsPlay)) + tTrack* pTrack = &mTracks[i]; + if (pTrack->State == tsSolo || (!solo && pTrack->State == tsPlay)) { - if (t->GetAudioMode() != mode) + if (pTrack->GetAudioMode() != mode) + { continue; + } - tEventIterator Iterator(Tracks[i]); + tEventIterator Iterator(&mTracks[i]); JZEvent *e = Iterator.Range(FrClock, ToClock); while (e) { JZEvent *c = e->Copy(); c->SetClock(c->GetClock() + delta); - c->SetDevice(t->GetDevice()); + c->SetDevice(pTrack->GetDevice()); Destin->Put(c); if(c->IsPlayTrack()) @@ -239,21 +245,21 @@ if(recursionDepth>100) //yes yes, you should use symbolics... return; fprintf(stderr, "playtrack %d\n",c->track); - tTrack *t=Tracks[c->track];//the track we want to play - tEventIterator IteratorPL(t); //get an iterator of all events the playtrack is pointing to + tTrack* pTrack = &mTracks[c->track];//the track we want to play + tEventIterator IteratorPL(pTrack); //get an iterator of all events the playtrack is pointing to JZEvent *f; //FIXME this is just to test the idea, it would be good to modify getlastclock instead i think //find an EOT event, otherwise default to the last clock(should be + length of the last event as well) int loopLength = 0; - tEventIterator IteratorEOT(t); //get an iterator of all events the playtrack is pointing to - f = IteratorEOT.Range(0, t->GetLastClock()); - loopLength=t->GetLastClock(); + tEventIterator IteratorEOT(pTrack); //get an iterator of all events the playtrack is pointing to + f = IteratorEOT.Range(0, pTrack->GetLastClock()); + loopLength = pTrack->GetLastClock(); while(f) { if (f->IsEndOfTrack()) { - loopLength = t->GetLastClock(); + loopLength = pTrack->GetLastClock(); } f = IteratorEOT.Next(); } @@ -286,7 +292,7 @@ { MergePlayTrackEvent(d->IsPlayTrack(), Destin, recursionDepth); } - d->SetDevice(t->GetDevice()); + d->SetDevice(pTrack->GetDevice()); Destin->Put(d); f = IteratorPL.Next(); } @@ -344,7 +350,7 @@ JZBarInfo::JZBarInfo(JZSong *Song) - : Iterator(Song->Tracks[0]) + : Iterator(&Song->mTracks[0]) { BarNr = 0; Clock = 0; @@ -426,23 +432,29 @@ void JZSong::NewUndoBuffer() { - for (int i = 0; i < nTracks; i++) - Tracks[i]->NewUndoBuffer(); + for (int i = 0; i < nTracks; ++i) + { + mTracks[i].NewUndoBuffer(); + } } void JZSong::Undo() { wxBeginBusyCursor(); - for (int i = 0; i < nTracks; i++) - Tracks[i]->Undo(); + for (int i = 0; i < nTracks; ++i) + { + mTracks[i].Undo(); + } wxEndBusyCursor(); } void JZSong::Redo() { wxBeginBusyCursor(); - for (int i = 0; i < nTracks; i++) - Tracks[i]->Redo(); + for (int i = 0; i < nTracks; ++i) + { + mTracks[i].Redo(); + } wxEndBusyCursor(); } @@ -455,12 +467,12 @@ int tt, ee; double f = (double)NewTicks / (double)TicksPerQuarter; - for (tt = 0; tt < nTracks; tt++) + for (tt = 0; tt < nTracks; ++tt) { - tTrack *t = Tracks[tt]; - for (ee = 0; ee < t->nEvents; ee++) + tTrack* pTrack = &mTracks[tt]; + for (ee = 0; ee < pTrack->nEvents; ee++) { - JZEvent *e = t->Events[ee]; + JZEvent *e = pTrack->Events[ee]; e->SetClock((int)(f * e->GetClock() + 0.5)); tKeyOn *k = e->IsKeyOn(); if (k) @@ -491,13 +503,15 @@ // evtl vorhandene TimeSignatures loeschen - tTrack *t = Tracks[0]; - tEventIterator Iterator(t); + tTrack* pTrack = &mTracks[0]; + tEventIterator Iterator(pTrack); JZEvent *e = Iterator.Range(FrClock, ToClock); while (e) { if (e->IsTimeSignat()) - t->Kill(e); + { + pTrack->Kill(e); + } e = Iterator.Next(); } @@ -515,8 +529,8 @@ } e = new tTimeSignat(FrClock, Numerator, Shift); - t->Put(e); - t->Cleanup(); + pTrack->Put(e); + pTrack->Cleanup(); return 0; } @@ -525,8 +539,12 @@ { int n; for (n = nTracks; n > 1; n--) - if (!Tracks[n-1]->IsEmpty()) + { + if (!mTracks[n - 1].IsEmpty()) + { break; + } + } return n; } @@ -534,20 +552,25 @@ // SN++ void JZSong::moveTrack(int from, int to) { - tTrack *Track; + tTrack* pTrack; int i; if (from == to) return; - Track = Tracks[from]; - if (from > to) { - for (i=from;i>=to;i--) - Tracks[i] = Tracks[i-1]; - } else { - for (i=from;i<=to;i++) - Tracks[i] = Tracks[i+1]; + pTrack = &mTracks[from]; + if (from > to) + { + for (i = from; i >= to; i--) + { + mTracks[i] = mTracks[i - 1]; + } } - Tracks[to] = Track; + else + { + for (i = from; i <= to; i++) + { + mTracks[i] = mTracks[i + 1]; + } + } + mTracks[to] = *pTrack; } - - Modified: trunk/jazz/src/Song.h =================================================================== --- trunk/jazz/src/Song.h 2008-03-17 06:22:14 UTC (rev 326) +++ trunk/jazz/src/Song.h 2008-03-17 06:25:43 UTC (rev 327) @@ -25,6 +25,7 @@ #include "Track.h" #include "Configuration.h" +#include "Globals.h" class tMetronomeInfo; class JZSong; @@ -55,9 +56,6 @@ int TicksPerQuarter; }; -// same as keys in pianowin -#define MaxTracks 127 - class JZSong { friend class JZBarInfo; @@ -75,7 +73,8 @@ int nTracks; int TicksPerQuarter; - tTrack *Tracks[MaxTracks]; + tTrack mTracks[eMaxTrackCount]; + void NewUndoBuffer(); void Undo(); void Redo(); Modified: trunk/jazz/src/SynthesizerSettingsDialog.cpp =================================================================== --- trunk/jazz/src/SynthesizerSettingsDialog.cpp 2008-03-17 06:22:14 UTC (rev 326) +++ trunk/jazz/src/SynthesizerSettingsDialog.cpp 2008-03-17 06:25:43 UTC (rev 327) @@ -1,7 +1,7 @@ //***************************************************************************** // The JAZZ++ Midi Sequencer // -// Modifications Copyright (C) 2008 Peter J. Stieber +// Copyright (C) 2008 Peter J. Stieber // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -23,6 +23,7 @@ #include "SynthesizerSettingsDialog.h" #include "Configuration.h" #include "Globals.h" +#include "Knob.h" using namespace std; @@ -35,6 +36,8 @@ mpSynthesizerListbox(0), mpStartListbox(0) { + JZKnob* pKnob = new JZKnob(this, wxID_ANY, 100, 0, 128); + mpSynthesizerListbox = new wxListBox(this, wxID_ANY); int Selection = 0; @@ -72,6 +75,8 @@ wxBoxSizer* pLeftSizer = new wxBoxSizer(wxVERTICAL); wxBoxSizer* pRightSizer = new wxBoxSizer(wxVERTICAL); + pLeftSizer->Add(pKnob, 0, wxALL, 2); + pLeftSizer->Add( new wxStaticText(this, wxID_ANY, "Synthesizer Type"), 0, Modified: trunk/jazz/src/TrackFrame.cpp =================================================================== --- trunk/jazz/src/TrackFrame.cpp 2008-03-17 06:22:14 UTC (rev 326) +++ trunk/jazz/src/TrackFrame.cpp 2008-03-17 06:25:43 UTC (rev 327) @@ -440,10 +440,10 @@ gpProject->OpenSong(FileName); SetTitle(FileName); // NextWin->NewPosition(1, 0); - mpTrackWindow->SetScrollRanges(); - mpTrackWindow->SetScrollPosition(0, 0); + mpTrackWindow->SetScrollRanges(0, 0); +// mpTrackWindow->SetScrollPosition(0, 0); // NextWin->Canvas->SetScrollRanges(); - Refresh(); + mpTrackWindow->Refresh(false); // tTrack::changed = false; } } Modified: trunk/jazz/src/TrackWindow.cpp =================================================================== --- trunk/jazz/src/TrackWindow.cpp 2008-03-17 06:22:14 UTC (rev 326) +++ trunk/jazz/src/TrackWindow.cpp 2008-03-17 06:25:43 UTC (rev 327) @@ -41,6 +41,7 @@ //----------------------------------------------------------------------------- BEGIN_EVENT_TABLE(JZTrackWindow, wxScrolledWindow) EVT_SIZE(JZTrackWindow::OnSize) + EVT_ERASE_BACKGROUND(JZTrackWindow::OnEraseBackground) END_EVENT_TABLE() //----------------------------------------------------------------------------- @@ -49,10 +50,6 @@ //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- -const int JZTrackWindow::mScrollPage = 8; - -//----------------------------------------------------------------------------- -//----------------------------------------------------------------------------- JZTrackWindow::JZTrackWindow( JZTrackFrame* pParent, JZSong* pSong, @@ -69,32 +66,44 @@ mpSong(pSong), mpGreyColor(0), mpGreyBrush(0), - hLine(0), - hTop(40), - wLeft(100), + mTrackHeight(10), + mTopInfoHeight(40), + mLeftInfoWidth(100), mClocksPerPixel(36), mPlayClock(-1), mUseColors(true), - mLittleBit(0), - mCanvasX(0), - mCanvasY(0), + mLittleBit(2), + mEventsX(), + mEventsY(), + mEventsWidth(), + mEventsHeight(), + mScrolledX(0), + mScrolledY(0), mCanvasWidth(0), mCanvasHeight(0), mFromClock(0), mToClock(0), mFromLine(0), mToLine(0), - xPatch(0), - wPatch(0), - nBars(0), + mNumberWidth(), + mTrackNameX(), + mTrackNameWidth(), + mStateX(), + mStateWidth(), + mPatchX(0), + mPatchWidth(0), + mBarCount(0), mCounterMode(eCmProgram), - mNumberMode(eNmMidiChannel), +// mNumberMode(eNmMidiChannel), + mNumberMode(eNmTrackNr), mpFixedFont(0), mFixedFontHeight(0), mFontSize(12), mpFont(0), mPreviouslyRecording(false), - mPreviousClock(0) + mPreviousClock(0), + mDrawing(false), + mpFrameBuffer(0) { #ifdef __WXMSW__ mpGreyColor = new wxColor(192, 192, 192); @@ -109,6 +118,8 @@ mpFilter = new tFilter(mpSong); SetBackgroundColour(*wxWHITE); + + mpFrameBuffer = new wxBitmap; } //----------------------------------------------------------------------------- @@ -121,63 +132,65 @@ delete mpFont; delete mpSnapSel; delete mpFilter; + delete mpFrameBuffer; } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- void JZTrackWindow::Create() { - int x, y; + wxClientDC Dc(this); - wxDC* pDc = new wxClientDC(this); + Dc.SetFont(wxNullFont); - pDc->SetFont(wxNullFont); - delete mpFixedFont; mpFixedFont = new wxFont(12, wxSWISS, wxNORMAL, wxNORMAL); - pDc->SetFont(*mpFixedFont); - pDc->GetTextExtent("M", &x, &mFixedFontHeight); + Dc.SetFont(*mpFixedFont); + int Width, Height; + Dc.GetTextExtent("M", &Width, &mFixedFontHeight); + delete mpFont; mpFont = new wxFont(mFontSize, wxSWISS, wxNORMAL, wxNORMAL); - pDc->SetFont(*mpFont); + Dc.SetFont(*mpFont); - pDc->GetTextExtent("M", &x, &y); - mLittleBit = (int)(x / 2); + Dc.GetTextExtent("M", &Width, &Height); + mLittleBit = Width / 2; - pDc->GetTextExtent("HXWjgi", &x, &y); - hLine = y + mLittleBit; + Dc.GetTextExtent("HXWjgi", &Width, &Height); + mTrackHeight = Height + 2 * mLittleBit; - hTop = mFixedFontHeight + 2 * mLittleBit; + mTopInfoHeight = mFixedFontHeight + 2 * mLittleBit; - pDc->GetTextExtent("99", &x, &y); - wNumber = x + mLittleBit; + Dc.GetTextExtent("999", &Width, &Height); + mNumberWidth = Width + 2 * mLittleBit; - pDc->GetTextExtent("Normal Trackname", &x, &y); - wName = x + mLittleBit; + Dc.GetTextExtent("Normal Track Name", &Width, &Height); + mTrackNameWidth = Width + 2 * mLittleBit; - pDc->GetTextExtent("m", &x, &y); - wState = x + mLittleBit; + Dc.GetTextExtent("m", &Width, &Height); + mStateWidth = Width + 2 * mLittleBit; - pDc->GetTextExtent("999", &x, &y); - wPatch = x + 2 * mLittleBit; + Dc.GetTextExtent("999", &Width, &Height); + mPatchWidth = Width + 2 * mLittleBit; - wLeft = wNumber + wName + wState + wPatch + 1; + mLeftInfoWidth = mNumberWidth + mTrackNameWidth + mStateWidth + mPatchWidth + 1; - cout - << ' ' << wNumber - << ' ' << wName - << ' ' << wState - << ' ' << wPatch - << ' ' << wLeft - << endl; +//DEBUG cout +//DEBUG << ' ' << mNumberWidth +//DEBUG << ' ' << mTrackNameWidth +//DEBUG << ' ' << mStateWidth +//DEBUG << ' ' << mPatchWidth +//DEBUG << ' ' << mLeftInfoWidth +//DEBUG << endl; UnMark(); - delete pDc; +// delete pDc; } //----------------------------------------------------------------------------- +// Description: // Update the play position to the clock argument, and trigger a redraw so // the play bar will be drawn. //----------------------------------------------------------------------------- @@ -197,7 +210,7 @@ return; } int x = Clock2x(Clock); - SetScrollPosition(x - wLeft, mCanvasY); + SetScrollPosition(x - mLeftInfoWidth, mScrolledY); } if (!mpSnapSel->Active) // sets clipping @@ -208,17 +221,19 @@ mPlayClock = Clock; wxRect invalidateRect; invalidateRect.x = Clock2x(OldPlayClock) - 1; - invalidateRect.y = mCanvasY; + invalidateRect.y = mScrolledY; invalidateRect.width = 3; invalidateRect.height= 100000000; //DrawPlayPosition(); + Refresh(true, &invalidateRect); invalidateRect.x = Clock2x(mPlayClock) - 1; + Refresh(true, &invalidateRect); //DrawPlayPosition(); - Refresh(); + Refresh(false); } } } @@ -230,7 +245,7 @@ Marked.SetX(x2xBar(x)); Marked.SetY(y2yLine(y)); Marked.SetWidth(x2wBar(x)); - Marked.SetHeight(hLine); + Marked.SetHeight(mTrackHeight); wxDC* pDc = new wxClientDC(this); LineText(*pDc, Marked.GetX(), Marked.GetY(), Marked.GetWidth(), ">"); @@ -249,27 +264,36 @@ void JZTrackWindow::OnSize(wxSizeEvent& Event) { GetClientSize(&mCanvasWidth, &mCanvasHeight); - if (mCanvasWidth && mCanvasHeight) + if (mCanvasWidth > 0 && mCanvasHeight > 0) { - SetScrollRanges(); - SetScrollPosition(0, 0); - Refresh(); + mpFrameBuffer->Create(mCanvasWidth, mCanvasHeight); + SetScrollRanges(mScrolledX, mScrolledY); +// SetScrollPosition(0, 0); } } //----------------------------------------------------------------------------- +// Description: +// Do nothing, to avoid flickering. //----------------------------------------------------------------------------- +void JZTrackWindow::OnEraseBackground(wxEraseEvent& Event) +{ +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- void JZTrackWindow::ZoomIn() { if (mClocksPerPixel >= 2) { mClocksPerPixel /= 2; - int x = mCanvasX * 2; - int y = mCanvasY; + int x = mScrolledX * 2; + int y = mScrolledY; - SetScrollRanges(); - SetScrollPosition(x, y); - Refresh(); + SetScrollRanges(x, y); +// SetScrollPosition(x, y); + + Refresh(false); } } @@ -280,12 +304,13 @@ if (mClocksPerPixel <= 120) { mClocksPerPixel *= 2; - int x = mCanvasX / 2; - int y = mCanvasY; + int x = mScrolledX / 2; + int y = mScrolledY; - SetScrollRanges(); - SetScrollPosition(x, y); - Refresh(); + SetScrollRanges(x, y); +// SetScrollPosition(x, y); + + Refresh(false); } } @@ -293,57 +318,113 @@ //----------------------------------------------------------------------------- void JZTrackWindow::OnDraw(wxDC& Dc) { - GetViewStart(&mCanvasX, &mCanvasY); - mCanvasX *= mScrollLine; - mCanvasY *= mScrollLine; + Draw(Dc); +} +//----------------------------------------------------------------------------- +// Description: +// Draw the static portion of the scenario in the static bitmap. +//----------------------------------------------------------------------------- +void JZTrackWindow::Draw(wxDC& Dc) +{ + if (!mpFrameBuffer->Ok() || mDrawing) + { + return; + } + + mDrawing = true; + + // Create a memory device context and select the frame bitmap into it. + wxMemoryDC LocalDc; + LocalDc.SelectObject(*mpFrameBuffer); + + LocalDc.SetFont(*mpFont); + + // Setup the brush that is used to clear the background. + LocalDc.SetBackground(*wxWHITE_BRUSH); + + // Clear the background using the brush that was just setup, + // in case the following drawing calls fail. + LocalDc.Clear(); + + // Get the location, in scrolling units, of the upper left hand corner of + // viewable portion of the virtual window that makes up the scrolled window. + // Note that the bitmap we are drawing to always has upper left coordinates + // of (0, 0). The y value is used to draw the proper tracks and the x + // value is used to draw the proper measures or bars. + GetViewStart(&mScrolledX, &mScrolledY); + + // Convert scrolling units into pixels. + mScrolledX *= mScrollLine; + mScrolledY *= mScrollLine; + GetClientSize(&mCanvasWidth, &mCanvasHeight); + cout + << "mCanvasWidth: " << mCanvasWidth + << " mCanvasHeight: " << mCanvasHeight + << endl; - xEvents = mCanvasX + wLeft; - yEvents = mCanvasY + hTop; - wEvents = mCanvasWidth - wLeft; - hEvents = mCanvasHeight - hTop; + mEventsX = mLeftInfoWidth; + mEventsY = mTopInfoHeight; - mFromLine = mCanvasY / hLine; - mToLine = 1 + (mCanvasY + mCanvasHeight - hTop) / hLine; - mFromClock = mCanvasX * mClocksPerPixel; - mToClock = x2Clock(mCanvasX + mCanvasWidth); + mEventsWidth = mCanvasWidth - mLeftInfoWidth; + mEventsHeight = mCanvasHeight - mTopInfoHeight; - xNumber = mCanvasX; - xName = xNumber + wNumber; - xState = xName + wName; - xPatch = xState + wState; + mFromLine = mScrolledY / mTrackHeight; - Dc.DestroyClippingRegion(); + mToLine = 1 + (mScrolledY + mCanvasHeight - mTopInfoHeight) / mTrackHeight; + mFromClock = mScrolledX * mClocksPerPixel; +//OLD mToClock = x2Clock(mScrolledX + mCanvasWidth); + mToClock = x2Clock(mScrolledX + mCanvasWidth - mLeftInfoWidth); + mTrackNameX = mNumberWidth; + mStateX = mTrackNameX + mTrackNameWidth; + mPatchX = mStateX + mStateWidth; - Dc.SetPen(*wxBLACK_PEN); + LocalDc.DestroyClippingRegion(); + LocalDc.SetPen(*wxBLACK_PEN); + // Draw the vertical lines. - DrawVerticalLine(Dc, xNumber); - DrawVerticalLine(Dc, xName); - DrawVerticalLine(Dc, xState); - DrawVerticalLine(Dc, xPatch); + DrawVerticalLine(LocalDc, 0); + DrawVerticalLine(LocalDc, mTrackNameX); + DrawVerticalLine(LocalDc, mStateX); + DrawVerticalLine(LocalDc, mPatchX); - DrawVerticalLine(Dc, xEvents - 1); - DrawHorizontalLine(Dc, yEvents); - DrawHorizontalLine(Dc, yEvents - 1); + DrawVerticalLine(LocalDc, mEventsX - 1); + DrawHorizontalLine(LocalDc, mEventsY); + DrawHorizontalLine(LocalDc, mEventsY - 1); if (mpSong) { JZBarInfo BarInfo(mpSong); + + cout + << "mCanvasWidth - mLeftInfoWidth: " << mCanvasWidth - mLeftInfoWidth << '\n' + << "BarInfo.TicksPerBar " << BarInfo.TicksPerBar << '\n' + << "From Clock: " << mFromClock << '\n' + << "To Clock: " << mToClock << '\n' + << "Clocks/Pixel: " << mClocksPerPixel << '\n' + << "From Measure: " << mFromClock / BarInfo.TicksPerBar << '\n' + << "To Measure: " << mToClock / BarInfo.TicksPerBar +// << "From X: " << mFromClock << '\n' +// << "To X: " << mToClock << '\n' + << endl; + + BarInfo.SetClock(mFromClock); - nBars = 0; - int intro = gpProject->GetIntroLength(); - Dc.SetPen(*wxGREY_PEN); + mBarCount = 0; + int Intro = gpProject->GetIntroLength(); + LocalDc.SetPen(*wxGREY_PEN); while (1) { int x = Clock2x(BarInfo.Clock); - if (x > mCanvasX + mCanvasWidth) + if (x > mScrolledX + mCanvasWidth) { break; } - if (x >= xEvents) // so ne Art clipping + + if (x >= mEventsX) { int c; if (mClocksPerPixel > 48) @@ -354,97 +435,120 @@ { c = 4; } - if (((BarInfo.BarNr - intro + 96) % c) == 0) + if (((BarInfo.BarNr - Intro + 96) % c) == 0) { - Dc.SetPen(*wxBLACK_PEN); + LocalDc.SetPen(*wxBLACK_PEN); ostringstream Oss; - Oss << BarInfo.BarNr + 1 - intro; - Dc.DrawText(Oss.str().c_str(), x + mLittleBit, yEvents - hLine); - Dc.SetPen(*wxGREY_PEN); - Dc.DrawLine(x, yEvents + 1 - hLine, x, yEvents + hEvents); + Oss << BarInfo.BarNr + 1 - Intro; + LocalDc.DrawText(Oss.str().c_str(), x + mLittleBit, mEventsY - mTrackHeight); + LocalDc.SetPen(*wxGREY_PEN); + LocalDc.DrawLine(x, mEventsY + 1 - mTrackHeight, x, mEventsY + mEventsHeight); } else { - Dc.SetPen(*wxLIGHT_GREY_PEN); - Dc.DrawLine(x, yEvents + 1, x, yEvents + hEvents); + LocalDc.SetPen(*wxLIGHT_GREY_PEN); + LocalDc.DrawLine(x, mEventsY + 1, x, mEventsY + mEventsHeight); } // x-coordinate for MouseAction->Snap() - if (nBars < eMaxBars) + if (mBarCount < eMaxBars) { - xBars[nBars++] = x; + mBarX[mBarCount++] = x; } } BarInfo.Next(); } - Dc.SetPen(*wxBLACK_PEN); + LocalDc.SetPen(*wxBLACK_PEN); } // For each track show the MIDI channel, name, state, prg. int TrackNumber = mFromLine; - for (int y = Line2y(TrackNumber); y < yEvents + hEvents; y += hLine) + for (int y = Track2y(TrackNumber); y < mEventsY + mEventsHeight; y += mTrackHeight) { - Dc.SetClippingRegion( - mCanvasX, - yEvents, + LocalDc.SetClippingRegion( + 0, + mEventsY, mCanvasWidth, - hEvents); + mEventsHeight); - Dc.SetPen(*wxGREY_PEN); - Dc.DrawLine(xEvents + 1, y, mCanvasX + mCanvasWidth, y); - Dc.SetPen(*wxBLACK_PEN); - Dc.DrawLine(mCanvasX, y, xEvents, y); + LocalDc.SetPen(*wxGREY_PEN); + LocalDc.DrawLine(mEventsX + 1, y, mCanvasWidth, y); + LocalDc.SetPen(*wxBLACK_PEN); + LocalDc.DrawLine(0, y, mEventsX, y); - Dc.DestroyClippingRegion(); + LocalDc.DestroyClippingRegion(); tTrack* pTrack = gpProject->GetTrack(TrackNumber); if (pTrack) { - Dc.SetClippingRegion( - xName, - yEvents, - wName + wState, - hEvents); + LocalDc.SetClippingRegion( + mTrackNameX, + mEventsY, + mTrackNameWidth + mStateWidth, + mEventsHeight); // Draw the track name. if (pTrack->DialogBox) { // Show the button pressed when the dialog box is open. - LineText(Dc, xName, y, wName, pTrack->GetName(), -1, true); + LineText(LocalDc, mTrackNameX, y, mTrackNameWidth, pTrack->GetName(), -1, true); } else { - LineText(Dc, xName, y, wName, pTrack->GetName(), -1, false); + LineText(LocalDc, mTrackNameX, y, mTrackNameWidth, pTrack->GetName(), -1, false); } // Draw the track status. - LineText(Dc, xState, y, wState, pTrack->GetStateChar()); + LineText(LocalDc, mStateX, y, mStateWidth, pTrack->GetStateChar()); - Dc.DestroyClippingRegion(); + LocalDc.DestroyClippingRegion(); } + else + { + LineText(LocalDc, mTrackNameX, y, mTrackNameWidth, "", -1, false); + LineText(LocalDc, mStateX, y, mStateWidth, ""); + } + ++TrackNumber; } - DrawNumbers(Dc); - DrawSpeed(Dc); - DrawCounters(Dc); + DrawNumbers(LocalDc); + DrawSpeed(LocalDc); + DrawCounters(LocalDc); - LineText(Dc, xState, mCanvasY - 1, wState, "", hTop); + LineText(LocalDc, mStateX, -1, mStateWidth, "", mTopInfoHeight); - DrawEvents(Dc); + DrawEvents(LocalDc); if (Marked.x > 0) { - LineText(Dc, Marked.x, Marked.y, Marked.width, ">"); + LineText(LocalDc, Marked.x, Marked.y, Marked.width, ">"); } - Dc.DestroyClippingRegion(); + LocalDc.DestroyClippingRegion(); - DrawPlayPosition(Dc); + DrawPlayPosition(LocalDc); // Draw the selection box. - mpSnapSel->Draw(Dc, xEvents, yEvents, wEvents, hEvents); + mpSnapSel->Draw(LocalDc, mEventsX, mEventsY, mEventsWidth, mEventsHeight); + +// LocalDc.SetClippingRegion(0, 0, mCanvasWidth, mCanvasHeight); + Dc.Blit( + mScrolledX, + mScrolledY, + mCanvasWidth, + mCanvasHeight, + &LocalDc, + 0, + 0, + wxCOPY); +// LocalDc.DestroyClippingRegion(); + + LocalDc.SetFont(wxNullFont); + LocalDc.SelectObject(wxNullBitmap); + + mDrawing = false; } //----------------------------------------------------------------------------- @@ -454,10 +558,10 @@ //----------------------------------------------------------------------------- void JZTrackWindow::DrawNumbers(wxDC& Dc) { - const char* pString = NumberStr(); - LineText(Dc, xNumber, mCanvasY - 1, wNumber, pString, hTop); + const char* pString = GetNumberString(); + LineText(Dc, 0, -1, mNumberWidth, pString, mTopInfoHeight); - Dc.SetClippingRegion(xNumber, yEvents, wNumber, hEvents); + Dc.SetClippingRegion(0, mEventsY, mNumberWidth, mEventsHeight); for (int i = mFromLine; i < mToLine; ++i) { tTrack* pTrack = gpProject->GetTrack(i); @@ -465,7 +569,7 @@ { if (pTrack->GetAudioMode()) { - LineText(Dc, xNumber, Line2y(i), wNumber, "Au"); + LineText(Dc, 0, Track2y(i), mNumberWidth, "Au"); } else { @@ -473,7 +577,7 @@ switch (mNumberMode) { case eNmTrackNr: - Value = i; + Value = i + 1; break; case eNmMidiChannel: Value = pTrack->Channel; @@ -484,9 +588,13 @@ } ostringstream Oss; Oss << setw(2) << Value; - LineText(Dc, xNumber, Line2y(i), wNumber, Oss.str().c_str()); + LineText(Dc, 0, Track2y(i), mNumberWidth, Oss.str().c_str()); } } + else + { + LineText(Dc, 0, Track2y(i), mNumberWidth, ""); + } } Dc.DestroyClippingRegion(); } @@ -506,7 +614,7 @@ ostringstream Oss; Oss << "speed: " << setw(3) << Value; - LineText(Dc, xName, mCanvasY - 1, wName, Oss.str().c_str(), hTop, Down); + LineText(Dc, mTrackNameX, -1, mTrackNameWidth, Oss.str().c_str(), mTopInfoHeight, Down); } //----------------------------------------------------------------------------- @@ -521,15 +629,11 @@ Dc.SetBrush(*wxBLACK_BRUSH); Dc.SetPen(*wxBLACK_PEN); -// Dc.SetLogicalFunction(wxXOR); - int x = Clock2x(mPlayClock); // Draw a line, 2 pixwels wide. - Dc.DrawLine(x, mCanvasY, x, yEvents + hEvents); - Dc.DrawLine(x + 1, mCanvasY, x + 1, yEvents + hEvents); - -// Dc.SetLogicalFunction(wxCOPY); + Dc.DrawLine(x, 0, x, mEventsY + mEventsHeight); + Dc.DrawLine(x + 1, 0, x + 1, mEventsY + mEventsHeight); } // if (mpNextWin) // { @@ -550,7 +654,7 @@ { if (Height <= 0) { - Height = hLine; + Height = mTrackHeight; y = y2yLine(y); } if (Width && Height) @@ -599,10 +703,10 @@ void JZTrackWindow::DrawCounters(wxDC& Dc) { int i; - const char... [truncated message content] |
From: <pst...@us...> - 2008-03-17 06:22:17
|
Revision: 326 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=326&view=rev Author: pstieber Date: 2008-03-16 23:22:14 -0700 (Sun, 16 Mar 2008) Log Message: ----------- Added a knob to the build. This will be used in dialogs. Modified Paths: -------------- trunk/jazz/src/Makefile.am trunk/jazz/vc8/JazzPlusPlus-VC8.vcproj Added Paths: ----------- trunk/jazz/src/Knob.cpp trunk/jazz/src/Knob.h Added: trunk/jazz/src/Knob.cpp =================================================================== --- trunk/jazz/src/Knob.cpp (rev 0) +++ trunk/jazz/src/Knob.cpp 2008-03-17 06:22:14 UTC (rev 326) @@ -0,0 +1,314 @@ +//***************************************************************************** +// The JAZZ++ Midi Sequencer +// +// Copyright (C) 2008 Peter J. Stieber +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +//***************************************************************************** + +#include "WxWidgets.h" + +#include <wx/dcbuffer.h> + +#include "Knob.h" +#include "Globals.h" + +#include <cmath> + +//***************************************************************************** +// Description: +// This is the knob class definition. +//***************************************************************************** +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +BEGIN_EVENT_TABLE(JZKnob,wxControl) + EVT_SIZE(JZKnob::OnSize) + EVT_ERASE_BACKGROUND(JZKnob::OnEraseBackground) + EVT_PAINT(JZKnob::OnPaint) + EVT_LEFT_DOWN(JZKnob::OnMouse) + EVT_LEFT_UP(JZKnob::OnMouse) + EVT_MOTION(JZKnob::OnMouse) + EVT_MOUSEWHEEL(JZKnob::OnMouse) +END_EVENT_TABLE() + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +JZKnob::JZKnob() + : wxControl() +{ +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +JZKnob::JZKnob( + wxWindow* pParent, + wxWindowID Id, + int Value, + int MinValue, + int MaxValue, + unsigned int MinAngle, + unsigned int Range, + const wxPoint& Position, + const wxSize& Size, + long WindowStyle, + const wxValidator& Validator, + const wxString& Name) + : wxControl() +{ + Create( + pParent, + Id, + Value, + MinValue, + MaxValue, + MinAngle, + Range, + Position, + Size, + WindowStyle, + Validator, + Name); +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void JZKnob::Create( + wxWindow* pParent, + wxWindowID Id, + int Value, + int MinValue, + int MaxValue, + unsigned int MinAngle, + unsigned int Range, + const wxPoint& Position, + const wxSize& Size, + long WindowStyle, + const wxValidator& Validator, + const wxString& Name) +{ + wxControl::Create( + pParent, + Id, + Position, + Size, + WindowStyle | wxNO_BORDER, + Validator, + Name); + + SetInitialSize(Size); + + mMin = MinValue; + mMax = MaxValue; + Range %= 360; + MinAngle %= 360; + mMaxAngle = (MinAngle + 360 - Range) % 360; + + mRange = Range; + SetValue(Value); +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void JZKnob::SetRange(int MinValue, int MaxValue) +{ + if (MinValue < MaxValue) + { + mMin = MinValue; + mMax = MaxValue; + SetValue(mSetting); + } +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +int JZKnob::SetValue(int Value) +{ + if (Value < mMin) + { + Value = mMin; + } + if (Value > mMax) + { + Value = mMax; + } + + if (Value != mSetting) + { + mSetting = Value; + Refresh(false); + Update(); + } + return mSetting; +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void JZKnob::OnSize(wxSizeEvent& Event) +{ + int Width, Height; + GetClientSize(&Width, &Height); + if (Width > 0 && Height > 0) + { + mBuffer.Create(Width, Height); + } +} + +//----------------------------------------------------------------------------- +// Description: +// This code always erasew when painting so we override this function to +// avoid flicker. +//----------------------------------------------------------------------------- +void JZKnob::OnEraseBackground(wxEraseEvent& Event) +{ +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void JZKnob::OnPaint(wxPaintEvent& Event) +{ + wxSize Size = GetSize(); + + double Theta = gDegreesToRadians * + (mMaxAngle + (((double)mMax - mSetting) / (mMax - mMin)) * mRange); + + double DeltaX = cos(Theta); + + // Negate because of the upside down coordinates + double DeltaY = -sin(Theta); + + wxPaintDC PaintDc(this); + + wxBufferedDC Dc(&PaintDc, mBuffer); + + Dc.SetBackground(wxBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE))); + + Dc.Clear(); + + int XCenter, YCenter; + GetCenter(XCenter, YCenter); + + int OuterRadius = static_cast<int>( + (((Size.x < Size.y) ? Size.x : Size.y) * .48) + 0.5); + int InnerRadius = static_cast<int>(OuterRadius * 0.6 + 0.5); + + wxColour Color(120, 100, 100); + wxBrush Brush(Color, wxSOLID); + wxPen Pen(Color); + int KnobRadius = OuterRadius; + for (unsigned char Red = 120; KnobRadius > 0 && Red < 250; Red += 5) + { + Color.Set(Red, 100, 100); + Brush.SetColour(Color); + Pen.SetColour(Color); + Dc.SetBrush(Brush); + Dc.SetPen(Pen); + Dc.DrawCircle(XCenter, YCenter, KnobRadius); + --KnobRadius; + } + + wxPen WhitePen(*wxWHITE, 3); + Dc.SetPen(WhitePen); + Dc.DrawLine( + XCenter + static_cast<int>(OuterRadius * DeltaX + 0.5), + YCenter + static_cast<int>(OuterRadius * DeltaY + 0.5), + XCenter + static_cast<int>(InnerRadius * DeltaX + 0.5), + YCenter + static_cast<int>(InnerRadius * DeltaY + 0.5)); +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void JZKnob::OnMouse(wxMouseEvent& Event) +{ + wxEventType ScrollEvent = wxEVT_NULL; + + if (Event.Moving()) + { + Event.Skip(); + return; + } + + if (Event.GetWheelRotation() < 0) + { + SetValue(GetValue() - 1); + Event.Skip(); + return; + } + + if (Event.GetWheelRotation() > 0) + { + SetValue(GetValue() + 1); + Event.Skip(); + return; + } + + int XCenter, YCenter; + GetCenter(XCenter, YCenter); + + double DeltaX = Event.m_x - XCenter; + double DeltaY = YCenter - Event.m_y; + if (DeltaX == 0.0 && DeltaY == 0.0) + { + return; + } + + double Theta = atan2(DeltaY, DeltaX) * gRadiansToDegrees; + if (Theta < 0.0) + { + Theta += 360.0; + } + + double DeltaTheta = Theta - mMaxAngle; + if (DeltaTheta < 0.0) + { + DeltaTheta += 360; + } + if (DeltaTheta > mRange) + { + return; + } + int NewValue = int(mMax - (DeltaTheta / mRange) * (mMax - mMin)); + + SetValue(NewValue); + if (Event.Dragging() || Event.ButtonUp()) + { + if (Event.ButtonUp()) + { + ScrollEvent = wxEVT_SCROLL_THUMBRELEASE; + } + else + { + ScrollEvent = wxEVT_SCROLL_THUMBTRACK; + } + + wxScrollEvent ScrollEvent(ScrollEvent, m_windowId); + ScrollEvent.SetPosition(NewValue); + ScrollEvent.SetEventObject(this); + GetEventHandler()->ProcessEvent(ScrollEvent); + + wxCommandEvent CommandEvent(wxEVT_COMMAND_SLIDER_UPDATED, m_windowId); + CommandEvent.SetInt(NewValue); + CommandEvent.SetEventObject(this); + GetEventHandler()->ProcessEvent(CommandEvent); + } +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void JZKnob::GetCenter(int& x, int& y) const +{ + wxSize Size = GetSize(); + x = Size.x / 2; + y = Size.y / 2; +} Property changes on: trunk/jazz/src/Knob.cpp ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/jazz/src/Knob.h =================================================================== --- trunk/jazz/src/Knob.h (rev 0) +++ trunk/jazz/src/Knob.h 2008-03-17 06:22:14 UTC (rev 326) @@ -0,0 +1,171 @@ +//***************************************************************************** +// The JAZZ++ Midi Sequencer +// +// Copyright (C) 2008 Peter J. Stieber +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +//***************************************************************************** + +#ifndef JZ_KNOB_H +#define JZ_KNOB_H + +//***************************************************************************** +// Description: +// This is the knob class declaration. This is a custom control that looks +// like a mixer knob. +//***************************************************************************** +class JZKnob : public wxControl +{ + public: + + JZKnob(); + + JZKnob( + wxWindow* pParent, + wxWindowID Id, + int Value, + int MinValue, + int MaxValue, + unsigned int MinAngle = 240, + unsigned int Range = 300, + const wxPoint& Position = wxDefaultPosition, + const wxSize& Size = wxSize(40, 40), + long WindowStyle = wxNO_BORDER, + const wxValidator& Validator = wxDefaultValidator, + const wxString& Name = wxT("knob")); + + void Create( + wxWindow* pParent, + wxWindowID Id, + int Value, + int MinValue, + int MaxValue, + unsigned int MinAngle = 240, + unsigned int Range = 300, + const wxPoint& Position = wxDefaultPosition, + const wxSize& Size = wxSize(40, 40), + long WindowStyle = wxNO_BORDER, + const wxValidator& Validator = wxDefaultValidator, + const wxString& Name = wxT("knob")); + + // Retrieve/change the range + void SetRange(int MinValue, int MaxValue); + + int GetMin() const; + + int GetMax() const; + + void SetMin(int MinValue); + + void SetMax(int MaxValue); + + unsigned int GetMinAngle() const; + + int GetMaxAngle() const; + + int GetValue() const; + + int SetValue(int Value); + + private: + + void GetCenter(int& x, int& y) const; + + void OnSize(wxSizeEvent& Event); + + void OnEraseBackground(wxEraseEvent& Event); + + void OnPaint(wxPaintEvent& Event); + + void OnMouse(wxMouseEvent& Event); + + private: + + int mMin; + + int mMax; + + int mSetting; + + unsigned int mMaxAngle; + + unsigned int mRange; + + wxBitmap mBuffer; + + DECLARE_EVENT_TABLE() +}; + +//***************************************************************************** +// Description: +// These are the knob inline member functions. +//***************************************************************************** +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +inline +int JZKnob::GetMin() const +{ + return mMin; +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +inline +int JZKnob::GetMax() const +{ + return mMax; +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +inline +void JZKnob::SetMin(int MinValue) +{ + SetRange(MinValue, GetMax()); +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +inline +void JZKnob::SetMax(int MaxValue) +{ + SetRange(GetMin(), MaxValue); +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +inline +unsigned int JZKnob::GetMinAngle() const +{ + return (mMaxAngle - mRange) % 360; +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +inline +int JZKnob::GetMaxAngle() const +{ + return mMaxAngle; +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +inline +int JZKnob::GetValue() const +{ + return mSetting; +} + +#endif // !defined(JZ_KNOB_H) Property changes on: trunk/jazz/src/Knob.h ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/jazz/src/Makefile.am =================================================================== --- trunk/jazz/src/Makefile.am 2008-03-17 05:16:19 UTC (rev 325) +++ trunk/jazz/src/Makefile.am 2008-03-17 06:22:14 UTC (rev 326) @@ -39,6 +39,7 @@ JazzPlusPlusApplication.cpp \ KeyDialog.cpp \ KeyStringConverters.cpp \ +Knob.cpp \ Mapper.cpp \ MeasureChoice.cpp \ MidiDeviceDialog.cpp \ Modified: trunk/jazz/vc8/JazzPlusPlus-VC8.vcproj =================================================================== --- trunk/jazz/vc8/JazzPlusPlus-VC8.vcproj 2008-03-17 05:16:19 UTC (rev 325) +++ trunk/jazz/vc8/JazzPlusPlus-VC8.vcproj 2008-03-17 06:22:14 UTC (rev 326) @@ -453,6 +453,14 @@ > </File> <File + RelativePath="..\src\Knob.cpp" + > + </File> + <File + RelativePath="..\src\Knob.h" + > + </File> + <File RelativePath="..\src\Mapper.cpp" > </File> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-17 05:16:25
|
Revision: 325 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=325&view=rev Author: pstieber Date: 2008-03-16 22:16:19 -0700 (Sun, 16 Mar 2008) Log Message: ----------- Added variables to convert between radians and degrees. Modified Paths: -------------- trunk/jazz/src/Globals.cpp trunk/jazz/src/Globals.h Modified: trunk/jazz/src/Globals.cpp =================================================================== --- trunk/jazz/src/Globals.cpp 2008-03-17 03:47:42 UTC (rev 324) +++ trunk/jazz/src/Globals.cpp 2008-03-17 05:16:19 UTC (rev 325) @@ -66,3 +66,6 @@ JZTrackWindow* gpTrackWindow = 0; tHBInterface* gpHarmonyBrowser = 0; + +const double gDegreesToRadians = 0.01745329251994330212; +const double gRadiansToDegrees = 57.2957795130823; Modified: trunk/jazz/src/Globals.h =================================================================== --- trunk/jazz/src/Globals.h 2008-03-17 03:47:42 UTC (rev 324) +++ trunk/jazz/src/Globals.h 2008-03-17 05:16:19 UTC (rev 325) @@ -63,5 +63,7 @@ extern JZTrackFrame* gpTrackFrame; extern JZTrackWindow* gpTrackWindow; extern tHBInterface* gpHarmonyBrowser; +extern const double gDegreesToRadians; +extern const double gRadiansToDegrees; #endif // !defined(JZ_GLOBALS_H) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-17 03:47:45
|
Revision: 324 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=324&view=rev Author: pstieber Date: 2008-03-16 20:47:42 -0700 (Sun, 16 Mar 2008) Log Message: ----------- Added an enumeration to indicate the maximum number of tracks. Modified Paths: -------------- trunk/jazz/src/Globals.h Modified: trunk/jazz/src/Globals.h =================================================================== --- trunk/jazz/src/Globals.h 2008-03-16 21:39:02 UTC (rev 323) +++ trunk/jazz/src/Globals.h 2008-03-17 03:47:42 UTC (rev 324) @@ -39,6 +39,12 @@ class JZTrackWindow; class tHBInterface; +enum TESizes +{ + // This is the same as the number of keys in the piano window. + eMaxTrackCount = 127 +}; + extern tConfig* gpConfig; extern std::string gpStartUpSong; extern JZSong* gpSong; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-16 21:39:06
|
Revision: 323 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=323&view=rev Author: pstieber Date: 2008-03-16 14:39:02 -0700 (Sun, 16 Mar 2008) Log Message: ----------- Warned the reader that this file is obsolete. Modified Paths: -------------- trunk/jazz/dialogs.txt Modified: trunk/jazz/dialogs.txt =================================================================== --- trunk/jazz/dialogs.txt 2008-03-16 21:22:31 UTC (rev 322) +++ trunk/jazz/dialogs.txt 2008-03-16 21:39:02 UTC (rev 323) @@ -1,3 +1,7 @@ +The instructions in the file are obsolete. + + + How To Work on Dialogs Feel free to add to this file as you learn things while porting dialogs. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pst...@us...> - 2008-03-16 21:22:33
|
Revision: 322 http://jazzplusplus.svn.sourceforge.net/jazzplusplus/?rev=322&view=rev Author: pstieber Date: 2008-03-16 14:22:31 -0700 (Sun, 16 Mar 2008) Log Message: ----------- Added wxWidgets build details for Linux. Modified Paths: -------------- trunk/jazz/LinuxInstall.txt Modified: trunk/jazz/LinuxInstall.txt =================================================================== --- trunk/jazz/LinuxInstall.txt 2008-03-16 21:14:57 UTC (rev 321) +++ trunk/jazz/LinuxInstall.txt 2008-03-16 21:22:31 UTC (rev 322) @@ -1,8 +1,28 @@ Quick and dirty installation instructions. Linux ------ +===== +wxWidgets +--------- + +wxWidgets 2.8.7 or greater is required for Jazz++. Use the following configure +options when building wxWidgets... + +--disable-no_exceptions +--disable-no_rtti +--disable-shared +--disable-compat26 +--disable-unicode +--with-regex=builtin +--enable-std_iostreams +--enable-std_string +--enable-stl +--with-gtk + +Jazz++ +------ + Run the following from this directory. $ ./bootstrap This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |