Changeset 469
- Timestamp:
- 01/12/07 07:50:43 (2 years ago)
- Files:
-
- sweep/trunk/src/sample-display.c (modified) (8 diffs)
- sweep/trunk/src/sample-display.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
sweep/trunk/src/sample-display.c
r442 r469 112 112 #define MARCH_INTERVAL 300 113 113 #define PULSE_INTERVAL 450 114 #define HAND_SCROLL_INTERVAL 50 114 115 115 116 extern sw_view * last_tmp_view; … … 1626 1627 1627 1628 static gint 1629 sample_display_hand_scroll (SampleDisplay * s) 1630 { 1631 gint new_win_start, win_length; 1632 gfloat step; 1633 1634 win_length = s->view->end - s->view->start; 1635 1636 step = win_length * 1.0 / s->width; 1637 1638 new_win_start = s->view->start + s->hand_scroll_delta * step; 1639 1640 new_win_start = CLAMP(new_win_start, 0, 1641 s->view->sample->sounddata->nr_frames - 1642 (s->view->end - s->view->start)); 1643 1644 if(new_win_start != s->view->start) { 1645 sample_display_set_window (s, 1646 new_win_start, 1647 new_win_start + win_length); 1648 } else { 1649 s->hand_scroll_delta = 0; 1650 } 1651 /* 1652 g_print ("s->delta: %i new_win_start: %i\n", s->hand_scroll_delta, new_win_start); 1653 */ 1654 s->hand_scroll_delta *= 0.98; 1655 1656 return (s->hand_scroll_delta != 0); 1657 } 1658 1659 static gint 1628 1660 sample_display_scroll_left (gpointer data) 1629 1661 { … … 1890 1922 gdouble step = (gdouble)(s->view->end - s->view->start) / ((gdouble)s->width); 1891 1923 GtkAdjustment * adj = GTK_ADJUSTMENT(s->view->adj); 1892 1924 gint delta; 1925 1926 delta = s->view->hand_offset - x; 1927 1928 s->hand_scroll_delta *= 0.9; 1929 1930 if (abs (delta) > abs (s->hand_scroll_delta)) 1931 s->hand_scroll_delta = delta; 1932 1893 1933 if (s->view->hand_offset != x){ 1894 1934 move = s->view->hand_offset - x; … … 1906 1946 vend = s->view->sample->sounddata->nr_frames; 1907 1947 } 1908 /* 1909 g_print("X: %i OLD: %i MOVE: %f STEP: %f start: %i end: %i vstart: %f vend: %f fstart:%f fend: %f\n", 1910 x, s->view->hand_offset, move, step, 1911 s->view->start, s->view->end, vstart, vend, round(vstart), round(vend)); 1912 */ 1913 vstart = round(vstart + (move < 0 ? 0.5 : -0.5)); 1948 1949 vstart = round(vstart + (move < 0 ? 0.5 : -0.5)); 1914 1950 vend = round(vend + (move < 0 ? 0.5 : -0.5)); 1915 1951 … … 2210 2246 break; 2211 2247 case TOOL_HAND: 2212 s->selecting = SELECTING_HAND; 2213 s->view->hand_offset = x; 2214 SET_CURSOR(widget, HAND_CLOSE); 2215 sample_display_handle_hand_motion (s, x, y); 2248 s->selecting = SELECTING_HAND; 2249 s->view->hand_offset = x; 2250 s->hand_scroll_delta = 0; 2251 if (s->hand_scroll_tag){ 2252 g_source_remove (s->hand_scroll_tag); 2253 s->hand_scroll_tag = 0; 2254 } 2255 SET_CURSOR(widget, HAND_CLOSE); 2256 sample_display_handle_hand_motion (s, x, y); 2216 2257 break; 2217 2258 case TOOL_ZOOM: 2218 o = XPOS_TO_OFFSET(x);2219 view_center_on (s->view, o);2220 if (state & GDK_SHIFT_MASK) {2221 view_zoom_out (s->view, 2.0);2222 } else {2223 view_zoom_in (s->view, 2.0);2224 }2259 o = XPOS_TO_OFFSET(x); 2260 view_center_on (s->view, o); 2261 if (state & GDK_SHIFT_MASK) { 2262 view_zoom_out (s->view, 2.0); 2263 } else { 2264 view_zoom_in (s->view, 2.0); 2265 } 2225 2266 break; 2226 2267 case TOOL_PENCIL: … … 2353 2394 case TOOL_HAND: 2354 2395 s->view->hand_offset = -1; 2396 2397 s->hand_scroll_tag = g_timeout_add (HAND_SCROLL_INTERVAL, 2398 (GSourceFunc)sample_display_hand_scroll, 2399 s); 2400 2355 2401 break; 2356 2402 case TOOL_MOVE: … … 2411 2457 break; 2412 2458 case SELECTING_HAND: 2413 sample_display_handle_hand_motion (s, x, y);2414 break;2459 sample_display_handle_hand_motion (s, x, y); 2460 break; 2415 2461 case SELECTING_PENCIL: 2416 2462 sample_display_handle_pencil_motion (s, x, y); … … 2929 2975 s->pulsing_tag = 0; 2930 2976 s->pulse = FALSE; 2977 s->hand_scroll_tag = 0; 2931 2978 s->mouse_x = 0; 2932 2979 s->mouse_offset = 0; sweep/trunk/src/sample-display.h
r241 r469 90 90 gboolean pulse; 91 91 92 gint hand_scroll_tag; /* gtk_timeout tag for natural hand scrolling */ 93 gint hand_scroll_delta; /* natural hand scrolling */ 94 92 95 /* Window panning */ 93 96 int selecting_x0; /* the coordinate where the mouse was clicked */
