#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++)
status = TUMBLE_UP;
repeat_count = 0;
this->data = data;
+ this->orient = orient;
}
}
-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();
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;
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;
}
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;
}
int BC_Tumbler::cursor_leave_event()
{
hide_tooltip();
- if(status == TUMBLE_UPHI)
- {
+ if( status == TUMBLE_UPHI ) {
status = TUMBLE_UP;
draw_face(1);
}
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;
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);
}
}
-
-
BC_ITumbler::BC_ITumbler(BC_TextBox *textbox, int64_t min, int64_t max, int x, int y)
: BC_Tumbler(x, y)
{
}
-
-
-
-
-
-
-
-
BC_FTumbler::BC_FTumbler(BC_TextBox *textbox,
float min,
float max,