Beispiel #1
0
double ScrollBar::get_area_size() const {

    if (orientation==VERTICAL) {

        double area=get_size().height;
        area-=get_stylebox("scroll")->get_minimum_size().height;
        area-=get_icon("increment")->get_height();
        area-=get_icon("decrement")->get_height();
        area-=get_grabber_min_size();
        return area;

    } else if (orientation==HORIZONTAL) {

        double area=get_size().width;
        area-=get_stylebox("scroll")->get_minimum_size().width;
        area-=get_icon("increment")->get_width();
        area-=get_icon("decrement")->get_width();
        area-=get_grabber_min_size();
        return area;
    } else {

        return 0;
    }

}
Beispiel #2
0
Size2 ScrollBar::get_minimum_size() const {

	Ref<Texture> incr = get_icon("increment");
	Ref<Texture> decr = get_icon("decrement");
	Ref<StyleBox> bg = get_stylebox("scroll");
	Size2 minsize;

	if (orientation == VERTICAL) {

		minsize.width = MAX(incr->get_size().width, (bg->get_minimum_size() + bg->get_center_size()).width);
		minsize.height += incr->get_size().height;
		minsize.height += decr->get_size().height;
		minsize.height += bg->get_minimum_size().height;
		minsize.height += get_grabber_min_size();
	}

	if (orientation == HORIZONTAL) {

		minsize.height = MAX(incr->get_size().height, (bg->get_center_size() + bg->get_minimum_size()).height);
		minsize.width += incr->get_size().width;
		minsize.width += decr->get_size().width;
		minsize.width += bg->get_minimum_size().width;
		minsize.width += get_grabber_min_size();
	}

	return minsize;
}
Beispiel #3
0
double ScrollBar::get_grabber_size() const {

    float range = get_max()-get_min();
    if (range<=0)
        return 0;

    float page = (get_page()>0)? get_page() : 0;
//	if (grabber_range < get_step())
//		grabber_range=get_step();

    double area_size=get_area_size();
    double grabber_size = page / range * area_size;
    return grabber_size+get_grabber_min_size();

}