X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fbctumble.C;h=a605630034e53f9286a03ea55bd64a6bcf264bb6;hb=40ec735d875c238f821b70d2a289b3b0adb6846a;hp=1a807d4d4be048eae5f1e6c4fe3bd0242c3ad2f3;hpb=0df48ad2d876409c5beeae2e21933a728ea76c33;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/guicast/bctumble.C b/cinelerra-5.1/guicast/bctumble.C index 1a807d4d..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,12 +98,10 @@ 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; } @@ -121,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; } @@ -168,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); } @@ -179,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; @@ -242,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); }