コード例 #1
0
ファイル: SequenceSpace.cpp プロジェクト: hh1985/multi_hs_seq
	void SequenceSpace::nextModificationSymbol(set<string>& mod_set, set<string>::iterator iter, SequenceList& seq_list, ModificationSequence mod_seq, Modifier mod_manager)
	{
		// Get currently available modification sites.
		ModificationSites current_sites = mod_manager.getModificationSitesBySymbol(*iter, 1);
		size_t mod_num = (size_t)gs->getModificationConstraint(*iter);

		//ModificationSites mod_sites; 
    size_t i = 0;

    // Non-const version of the container.
    std::vector<ModificationPosition> current_vec(current_sites.begin(), current_sites.end());
    std::vector<ModificationPosition> mod_vec;

		for(ModificationSites::iterator mod_iter = current_sites.begin(); mod_iter != current_sites.end(); mod_iter++)
		{
			mod_vec.push_back(*mod_iter);
			if(++i >= mod_num)
				break;
		}

    //ModificationSites::iterator CurIter(current_sites.begin());
    
		do 
		{
			// Set the status of mod_sites to "occupied".
			Modifier new_manager(mod_manager);
			for(auto mod_iter = mod_vec.begin(); mod_iter != mod_vec.end(); mod_iter++)
			{
				new_manager.modifyModificationStatus(*iter, *mod_iter, 0);
			}
			// Select the current combination, set the status and move to the next symbol.
			ModificationSequence current_seq(mod_seq);
      ModificationSites mod_sites(mod_vec.begin(), mod_vec.end());
			current_seq.insert(std::make_pair(*iter, mod_sites));
			
			set<std::string>::iterator it_copy = iter;
			it_copy++;
			if(it_copy == mod_set.end()) {
				seq_list.push_back(current_seq);
				continue;
			}
			this->nextModificationSymbol(mod_set, it_copy, seq_list, current_seq, new_manager);
		} while(stdcomb::next_combination(current_vec.begin(), current_vec.end(), mod_vec.begin(), mod_vec.end()));

	}
コード例 #2
0
ファイル: perfnames.cpp プロジェクト: 0rel/sequencer64
bool
perfnames::on_button_press_event (GdkEventButton * ev)
{
    int y = int(ev->y);
    int seqnum = convert_y(y);
    current_seq(seqnum);
    if (SEQ64_CLICK_LEFT(ev->button))
    {
        if (perf().is_active(seqnum))
        {
            guint modifiers;        /* for filtering out caps/num lock etc. */
            modifiers = gtk_accelerator_get_default_mod_mask();
            if ((ev->state & modifiers) == SEQ64_SHIFT_MASK)
            {
                /*
                 * \new ca 2016-03-15
                 *      If the Shift key is pressed, mute all other sequences.
                 *      Inactive sequences are skipped.
                 */

                for (int s = 0; s < m_sequence_max; ++s)
                {
                    if (s != seqnum)
                    {
                        sequence * seq = perf().get_sequence(s);
                        if (not_nullptr(seq))
                        {
                            bool muted = seq->get_song_mute();
                            seq->set_song_mute(! muted);
                        }
                    }
                }
            }
            else
            {
                sequence * seq = perf().get_sequence(seqnum);
                bool muted = seq->get_song_mute();
                seq->set_song_mute(! muted);
            }
            enqueue_draw();
        }
    }
    return true;
}
コード例 #3
0
ファイル: seqmenu.hpp プロジェクト: danielappelt/sequencer64
 void toggle_current_sequence()
 {
     m_mainperf.sequence_playing_toggle(current_seq());
 }
コード例 #4
0
ファイル: seqmenu.hpp プロジェクト: danielappelt/sequencer64
 void delete_current_sequence()
 {
     m_mainperf.delete_sequence(current_seq());
 }
コード例 #5
0
ファイル: seqmenu.hpp プロジェクト: danielappelt/sequencer64
 void new_current_sequence ()
 {
     m_mainperf.new_sequence(current_seq());
 }
コード例 #6
0
ファイル: seqmenu.hpp プロジェクト: danielappelt/sequencer64
 bool is_current_seq_in_edit () const
 {
     return m_mainperf.is_sequence_in_edit(current_seq());
 }
コード例 #7
0
ファイル: seqmenu.hpp プロジェクト: danielappelt/sequencer64
 bool is_current_seq_active () const
 {
     return m_mainperf.is_active(current_seq());
 }