MCPcopy Create free account
hub / github.com/HertzDevil/0CC-FamiTracker / SetTargetSelection

Method SetTargetSelection

Source/PatternAction.cpp:68–176  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

66}
67
68bool CPatternAction::SetTargetSelection(const CMainFrame &MainFrm, CSelection &Sel) // // //
69{
70 CPatternEditor *pPatternEditor = GET_PATTERN_EDITOR();
71 CCursorPos Start;
72
73 if ((m_iPastePos == paste_pos_t::SELECTION || m_iPastePos == paste_pos_t::FILL) && !m_bSelecting)
74 m_iPastePos = paste_pos_t::CURSOR;
75
76 switch (m_iPastePos) { // Xpos.Column will be written later
77 case paste_pos_t::CURSOR:
78 Start = m_pUndoState->Cursor;
79 break;
80 case paste_pos_t::DRAG:
81 Start.Ypos.Frame = m_dragTarget.GetFrameStart();
82 Start.Ypos.Row = m_dragTarget.GetRowStart();
83 Start.Xpos.Track = m_dragTarget.GetChanStart();
84 break;
85 case paste_pos_t::SELECTION:
86 case paste_pos_t::FILL:
87 Start.Ypos.Frame = m_selection.GetFrameStart();
88 Start.Ypos.Row = m_selection.GetRowStart();
89 Start.Xpos.Track = m_selection.GetChanStart();
90 break;
91 }
92
93 auto pSongView = GET_SONG_VIEW();
94
95 CPatternIterator End(*pSongView, Start);
96
97 if (m_iPasteMode == paste_mode_t::INSERT) {
98 End.m_iFrame = Start.Ypos.Frame;
99 End.m_iRow = pPatternEditor->GetCurrentPatternLength(End.m_iFrame) - 1;
100 }
101 else
102 End += m_ClipData.ClipInfo.Rows - 1;
103
104 switch (m_iPastePos) {
105 case paste_pos_t::FILL:
106 End.m_iFrame = m_selection.GetFrameEnd();
107 End.m_iRow = m_selection.GetRowEnd();
108 End.m_iChannel = m_selection.GetChanEnd();
109 Start.Xpos.Column = GetCursorStartColumn(m_ClipData.ClipInfo.StartColumn);
110 End.m_iColumn = GetCursorEndColumn(
111 !((End.m_iChannel - Start.Xpos.Track + 1) % m_ClipData.ClipInfo.Channels) ?
112 m_ClipData.ClipInfo.EndColumn :
113 static_cast<column_t>(value_cast(column_t::Effect1) + pSongView->GetEffectColumnCount(End.m_iChannel)));
114 break;
115 case paste_pos_t::DRAG:
116 End.m_iChannel += m_ClipData.ClipInfo.Channels - 1;
117 Start.Xpos.Column = m_dragTarget.GetColStart();
118 End.m_iColumn = m_dragTarget.GetColEnd();
119 break;
120 default:
121 End.m_iChannel += m_ClipData.ClipInfo.Channels - 1;
122 Start.Xpos.Column = GetCursorStartColumn(m_ClipData.ClipInfo.StartColumn);
123 End.m_iColumn = GetCursorEndColumn(m_ClipData.ClipInfo.EndColumn);
124 }
125

Callers

nothing calls this directly

Calls 15

GetCursorStartColumnFunction · 0.85
GetCursorEndColumnFunction · 0.85
value_castFunction · 0.85
GetSelectColumnFunction · 0.85
GetRowStartMethod · 0.80
GetRowEndMethod · 0.80
GetColStartMethod · 0.80
GetColEndMethod · 0.80
GetSelectionConditionMethod · 0.80
GetFrameStartMethod · 0.45
GetChanStartMethod · 0.45

Tested by

no test coverage detected