X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;ds=sidebyside;f=cinelerra-5.1%2Fguicast%2Fbctumble.C;h=a605630034e53f9286a03ea55bd64a6bcf264bb6;hb=d4b5d500524428be1553344a5416699a814fe898;hp=e95f8abbdc5fedff1c2d6503118b9ad703f03b5a;hpb=7fd85fb66168f6b518c5f2d73e04036e87faa0e1;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/guicast/bctumble.C b/cinelerra-5.1/guicast/bctumble.C index e95f8abb..a6056300 100644 --- a/cinelerra-5.1/guicast/bctumble.C +++ b/cinelerra-5.1/guicast/bctumble.C @@ -33,7 +33,7 @@ #define TUMBLETOP_DN 3 #define TOTAL_STATES 4 -BC_Tumbler::BC_Tumbler(int x, int y, VFrame **data) +BC_Tumbler::BC_Tumbler(int x, int y, VFrame **data, int orient) : BC_SubWindow(x, y, 0, 0, -1) { for(int i = 0; i < TOTAL_STATES; i++) @@ -41,6 +41,7 @@ BC_Tumbler::BC_Tumbler(int x, int y, VFrame **data) status = TUMBLE_UP; repeat_count = 0; this->data = data; + this->orient = orient; } @@ -51,24 +52,23 @@ BC_Tumbler::~BC_Tumbler() } -int BC_Tumbler::calculate_w() +int BC_Tumbler::calculate_w(VFrame **data) { - return BC_WindowBase::get_resources()->tumble_data[0]->get_w(); + VFrame **vfrms = data ? data : BC_WindowBase::get_resources()->tumble_data; + return vfrms[0]->get_w(); } -int BC_Tumbler::calculate_h() +int BC_Tumbler::calculate_h(VFrame **data) { - return BC_WindowBase::get_resources()->tumble_data[0]->get_h(); + VFrame **vfrms = data ? data : BC_WindowBase::get_resources()->tumble_data; + return vfrms[0]->get_h(); } int BC_Tumbler::initialize() { // Get the image - if(data) - set_images(data); - else - set_images(get_resources()->tumble_data); + set_images(data ? data : get_resources()->tumble_data); w = images[TUMBLE_UP]->get_w(); h = images[TUMBLE_UP]->get_h(); @@ -82,9 +82,6 @@ int BC_Tumbler::initialize() int BC_Tumbler::reposition_window(int x, int y, int w, int h) { - if (w > 0 || h > 0) - printf("BC_Tumbler::reposition_window - w & h haven't been implemented yet!! (probably never will be)"); - BC_WindowBase::reposition_window(x, y); draw_face(0); return 0; @@ -101,25 +98,17 @@ int BC_Tumbler::update_bitmaps(VFrame **data) int BC_Tumbler::set_images(VFrame **data) { - for(int i = 0; i < TOTAL_STATES; i++) - { - if(images[i]) delete images[i]; + for(int i = 0; i < TOTAL_STATES; ++i ) { + if( images[i] ) delete images[i]; images[i] = new BC_Pixmap(parent_window, data[i], PIXMAP_ALPHA); } - return 0; } int BC_Tumbler::draw_face(int flush) { draw_top_background(parent_window, 0, 0, w, h); - pixmap->draw_pixmap(images[status], - 0, - 0, - w, - h, - 0, - 0); + pixmap->draw_pixmap(images[status], 0, 0, w, h, 0, 0); flash(flush); return 0; } @@ -127,46 +116,28 @@ int BC_Tumbler::draw_face(int flush) int BC_Tumbler::repeat_event(int64_t duration) { //printf("BC_Tumbler::repeat_event 1 %d\n", duration); - if(duration == top_level->get_resources()->tooltip_delay) - { - if(tooltip_text && tooltip_text[0] != 0 && - status == TUMBLE_UPHI) - { + if( duration == top_level->get_resources()->tooltip_delay ) { + if( tooltip_text && tooltip_text[0] != 0 && status == TUMBLE_UPHI ) { show_tooltip(); return 1; } } - else - if(duration == top_level->get_resources()->tumble_duration) - { + else if( duration == top_level->get_resources()->tumble_duration ) { //printf("BC_Tumbler::repeat_event 2\n"); - repeat_count++; // delay the 1st repeat - if(repeat_count > 1 && repeat_count < 5) return 0; - if(status == TUMBLETOP_DN) - { - handle_up_event(); - return 1; - } - else - if(status == TUMBLEBOTTOM_DN) - { - handle_down_event(); - return 1; - } + if( ++repeat_count > 1 && repeat_count < 5 ) return 0; + if( status == TUMBLETOP_DN ) { handle_up_event(); return 1; } + if( status == TUMBLEBOTTOM_DN) { handle_down_event(); return 1; } } return 0; } int BC_Tumbler::cursor_enter_event() { - if(top_level->event_win == win) - { - if(! top_level->button_down && status == TUMBLE_UP) - { - status = TUMBLE_UPHI; - draw_face(1); - } + if( top_level->event_win != win ) return 0; + if( !top_level->button_down && status == TUMBLE_UP ) { + status = TUMBLE_UPHI; + draw_face(1); } return 0; } @@ -174,8 +145,7 @@ int BC_Tumbler::cursor_enter_event() int BC_Tumbler::cursor_leave_event() { hide_tooltip(); - if(status == TUMBLE_UPHI) - { + if( status == TUMBLE_UPHI ) { status = TUMBLE_UP; draw_face(1); } @@ -185,62 +155,39 @@ int BC_Tumbler::cursor_leave_event() int BC_Tumbler::button_press_event() { hide_tooltip(); - if(top_level->event_win == win) - { + if( top_level->event_win != win ) return 0; //printf("BC_Tumbler::button_press_event 1 %d\n", get_buttonpress()); - if(get_buttonpress() == 4) - { - status = TUMBLETOP_DN; - draw_face(1); - handle_up_event(); -// repeat_count = 0; -// repeat_event(top_level->get_resources()->tumble_duration); - } - else - if(get_buttonpress() == 5) - { + if( get_buttonpress() == WHEEL_UP ) { + status = TUMBLETOP_DN; + draw_face(1); + handle_up_event(); + } + else if( get_buttonpress() == WHEEL_DOWN ) { status = TUMBLEBOTTOM_DN; draw_face(1); handle_down_event(); -// repeat_count = 0; -// repeat_event(top_level->get_resources()->tumble_duration); } - else - { - if(top_level->cursor_y < get_h() / 2) - { - status = TUMBLETOP_DN; - } - else - { - status = TUMBLEBOTTOM_DN; - } - - draw_face(1); + else { + status = orient == TUMBLER_HORZ ? + top_level->cursor_x > get_w()/2 ? TUMBLETOP_DN : TUMBLEBOTTOM_DN : + top_level->cursor_y < get_h()/2 ? TUMBLETOP_DN : TUMBLEBOTTOM_DN ; + draw_face(1); - top_level->set_repeat(top_level->get_resources()->tumble_duration); - repeat_count = 0; - repeat_event(top_level->get_resources()->tumble_duration); + top_level->set_repeat(top_level->get_resources()->tumble_duration); + repeat_count = 0; + repeat_event(top_level->get_resources()->tumble_duration); //printf("BC_Tumbler::button_press_event 2 %d\n", get_buttonpress()); - } - return 1; } - return 0; + return 1; } int BC_Tumbler::button_release_event() { hide_tooltip(); - if(top_level->event_win == win) - { - if(status == TUMBLEBOTTOM_DN || status == TUMBLETOP_DN) - { - top_level->unset_repeat(top_level->get_resources()->tumble_duration); - if(cursor_inside()) - status = TUMBLE_UPHI; - else - status = TUMBLE_UP; - } + if( top_level->event_win != win ) return 0; + if( status == TUMBLEBOTTOM_DN || status == TUMBLETOP_DN ) { + top_level->unset_repeat(top_level->get_resources()->tumble_duration); + status = cursor_inside() ? TUMBLE_UPHI : TUMBLE_UP; draw_face(1); } return 0; @@ -248,10 +195,9 @@ int BC_Tumbler::button_release_event() int BC_Tumbler::cursor_motion_event() { - if(top_level->button_down && top_level->event_win == win && - !cursor_inside() && - !(status == TUMBLETOP_DN || status == TUMBLEBOTTOM_DN)) - { + if( top_level->event_win != win ) return 0; + if( top_level->button_down && !cursor_inside() && + !(status == TUMBLETOP_DN || status == TUMBLEBOTTOM_DN) ) { status = TUMBLE_UP; draw_face(1); } @@ -259,8 +205,6 @@ int BC_Tumbler::cursor_motion_event() } - - BC_ITumbler::BC_ITumbler(BC_TextBox *textbox, int64_t min, int64_t max, int x, int y) : BC_Tumbler(x, y) { @@ -307,14 +251,6 @@ void BC_ITumbler::set_boundaries(int64_t min, int64_t max) } - - - - - - - - BC_FTumbler::BC_FTumbler(BC_TextBox *textbox, float min, float max,