/** * Scroll score horizontally * */ static void h_scroll (gdouble value, DenemoProject * gui) { gint dest; if ((dest = (gint) (value + 0.5)) != gui->movement->leftmeasurenum) { set_viewport_transition (dest - gui->movement->leftmeasurenum); gui->movement->leftmeasurenum = dest; set_rightmeasurenum (gui->movement); if (gui->movement->currentmeasurenum > gui->movement->rightmeasurenum) { gui->movement->currentmeasurenum = gui->movement->rightmeasurenum; } else if (gui->movement->currentmeasurenum < gui->movement->leftmeasurenum) { gui->movement->currentmeasurenum = gui->movement->leftmeasurenum; } find_leftmost_allcontexts (gui->movement); setcurrents (gui->movement); draw_score_area(); } update_hscrollbar (gui); }
/** * Advance the leftmeasurenum until currentmeasurenum is before rightmeasurenum * then adjust rightmeasurenum to match. */ void isoffrightside (DenemoProject * gui) { if (gui->movement->currentmeasurenum <= gui->movement->rightmeasurenum) return; while (gui->movement->currentmeasurenum > gui->movement->rightmeasurenum) { gui->movement->leftmeasurenum += MAX ((gui->movement->rightmeasurenum - gui->movement->leftmeasurenum + 1) / 2, 1); set_rightmeasurenum (gui->movement); } find_leftmost_allcontexts (gui->movement); if(!Denemo.non_interactive) update_hscrollbar (gui); }
/** * Sets the si->currentmeasurenum to the given value * if exists, making it the leftmost measure visible, not extending selection * */ static gboolean goto_currentmeasurenum (gint dest, gint leftmeasurenum) { DenemoProject *gui = Denemo.project; if ((dest > 0) && (dest <= (gint) (g_list_length (gui->movement->measurewidths)))) { //gui->movement->leftmeasurenum = dest; gui->movement->currentmeasurenum = dest; if(leftmeasurenum) gui->movement->leftmeasurenum = leftmeasurenum; set_rightmeasurenum (gui->movement); if ((dest < gui->movement->leftmeasurenum) || (dest > gui->movement->rightmeasurenum)) center_viewport (); setcurrents (gui->movement); set_rightmeasurenum (gui->movement); find_leftmost_allcontexts (gui->movement); if(!Denemo.non_interactive) update_hscrollbar (gui); draw_score_area(); return TRUE; } return FALSE; }