X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fmidi_scroomer.cc;h=cccc03c507f86a4e2c6d98f87ff739cc8c9f8f04;hb=9b17f35576a74d971b2c86558cf1cf1dec2750e0;hp=a38911d98c7579f0a4ef440eb12f0da2586c9ae3;hpb=2db91c126edc8fcaeda711d35369970576715719;p=ardour.git diff --git a/gtk2_ardour/midi_scroomer.cc b/gtk2_ardour/midi_scroomer.cc index a38911d98c..cccc03c507 100644 --- a/gtk2_ardour/midi_scroomer.cc +++ b/gtk2_ardour/midi_scroomer.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2008 Paul Davis + Copyright (C) 2008 Paul Davis 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 @@ -29,7 +29,8 @@ using namespace std; //std::map > MidiScroomer::piano_pixmaps; MidiScroomer::MidiScroomer(Adjustment& adj) - : Gtkmm2ext::Scroomer(adj) { + : Gtkmm2ext::Scroomer(adj) +{ adj.set_lower(0); adj.set_upper(127); @@ -38,11 +39,13 @@ MidiScroomer::MidiScroomer(Adjustment& adj) set_min_page_size(12); } -MidiScroomer::~MidiScroomer() { +MidiScroomer::~MidiScroomer() +{ } bool -MidiScroomer::on_expose_event(GdkEventExpose* ev) { +MidiScroomer::on_expose_event(GdkEventExpose* ev) +{ Cairo::RefPtr cc = get_window()->create_cairo_context(); GdkRectangle comp_rect, clip_rect; Component first_comp = point_in(ev->area.y); @@ -54,36 +57,36 @@ MidiScroomer::on_expose_event(GdkEventExpose* ev) { double note_width = 0.8 * get_width(); double note_height = 1.4 * note2y; double black_shift = 0.1 * note2y; - double colors[6]; + double colors[6] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}; //cerr << ev->area.y << " " << ev->area.height << endl; comp_rect.x = 0; comp_rect.width = get_width(); - for(int i = first_comp; i <= last_comp; ++i) { + for (int i = first_comp; i <= last_comp; ++i) { Component comp = (Component) i; set_comp_rect(comp_rect, comp); - if(gdk_rectangle_intersect(&comp_rect, &ev->area, &clip_rect)) { + if (gdk_rectangle_intersect(&comp_rect, &ev->area, &clip_rect)) { get_colors(colors, comp); cc->rectangle(clip_rect.x, clip_rect.y, clip_rect.width, clip_rect.height); cc->set_source_rgb (colors[3], colors[4], colors[5]); cc->fill_preserve(); - cc->clip(); + cc->set_source_rgb(colors[0], colors[1], colors[2]); cc->set_line_width(note_height); lnote = 127 - (int) floor((double) (clip_rect.y + clip_rect.height) * y2note) - 1; hnote = 127 - (int) floor((double) clip_rect.y * y2note) + 1; - for(int note = lnote; note < hnote + 1; ++note) { + for (int note = lnote; note < hnote + 1; ++note) { double y = height - note * note2y; bool draw = false; - - switch(note % 12) { + + switch (note % 12) { case 1: case 6: y -= black_shift; @@ -100,7 +103,7 @@ MidiScroomer::on_expose_event(GdkEventExpose* ev) { default: break; } - + if(draw) { cc->set_line_width(1.4 * note2y); cc->move_to(0, y); @@ -109,6 +112,13 @@ MidiScroomer::on_expose_event(GdkEventExpose* ev) { } } + if (i == Handle1 || i == Handle2) { + cc->rectangle(comp_rect.x + 0.5f, comp_rect.y + 0.5f, comp_rect.width - 1.0f, comp_rect.height - 1.0f); + cc->set_line_width(1.0f); + cc->set_source_rgb (1.0f, 1.0f, 1.0f); + cc->stroke(); + } + cc->reset_clip(); } } @@ -117,33 +127,34 @@ MidiScroomer::on_expose_event(GdkEventExpose* ev) { } void -MidiScroomer::get_colors(double color[], Component comp) { +MidiScroomer::get_colors(double color[], Component comp) +{ switch (comp) { case TopBase: case BottomBase: - color[0] = 0.24; - color[1] = 0.24; - color[2] = 0.24; - color[3] = 0.33; - color[4] = 0.33; - color[5] = 0.33; + color[0] = 0.24f; + color[1] = 0.24f; + color[2] = 0.24f; + color[3] = 0.33f; + color[4] = 0.33f; + color[5] = 0.33f; break; case Handle1: case Handle2: - color[0] = 0.38; - color[1] = 0.38; - color[2] = 0.38; - color[3] = 0.91; - color[4] = 0.91; - color[5] = 0.91; + color[0] = 0.91f; + color[1] = 0.91f; + color[2] = 0.91f; + color[3] = 0.0f; + color[4] = 0.0f; + color[5] = 0.0f; break; case Slider: - color[0] = 0.38; - color[1] = 0.38; - color[2] = 0.38; - color[3] = 0.77; - color[4] = 0.77; - color[5] = 0.77; + color[0] = 0.38f; + color[1] = 0.38f; + color[2] = 0.38f; + color[3] = 0.77f; + color[4] = 0.77f; + color[5] = 0.77f; break; default: break; @@ -151,14 +162,15 @@ MidiScroomer::get_colors(double color[], Component comp) { } void -MidiScroomer::on_size_request(Gtk::Requisition* r) { - r->width = 16; +MidiScroomer::on_size_request(Gtk::Requisition* r) +{ + r->width = 12; r->height = 100; - //r->width = 32; - //r->height = 512; } void -MidiScroomer::on_size_allocate(Gtk::Allocation& a) { +MidiScroomer::on_size_allocate(Gtk::Allocation& a) +{ Scroomer::on_size_allocate(a); } +