Box lib scrollbar/ru

From KolibriOS wiki
Jump to: navigation, search

Введение

Скроллбар, используется при выводе информации, не помещающейся в окно. Может быть вертикальным и горизонтальным.

Функции

  • scrollbar_v_draw - Рисование вертикального скроллинга.
  • scrollbar_v_mouse - Эта функция должна вызыватся для вертикального скроллинга при движении мышей.
  • scrollbar_h_draw - Рисование горизонтального скроллинга.
  • scrollbar_h_mouse - Эта функция должна вызыватся для горизонтального скроллинга при движении мышей.
  • version_ch - Версия элемента

Структура scrollbar

Макроса для создания структуры скроллбара нет. Потому данные для нее задаются вручную. Есть макрос use_scroll_bar он дает возможность понять какие данные нужны для скроллинга.

macro use_scroll_bar
{
scroll_bar:
sb_size_x     equ [edi]
sb_start_x    equ [edi+ 2]
sb_size_y     equ [edi+ 4]
sb_start_y    equ [edi+ 6]
sb_btn_high   equ [edi+ 8]
sb_type       equ [edi+12]
sb_max_area   equ [edi+16]
sb_cur_area   equ [edi+20]
sb_position   equ [edi+24]
sb_bckg_col   equ [edi+28]
sb_frnt_col   equ [edi+32]
sb_line_col   equ [edi+36]
sb_redraw     equ [edi+40]
sb_delta      equ [edi+44]
sb_delta2     equ [edi+46]
sb_r_size_x   equ [edi+48]
sb_r_start_x  equ [edi+50]
sb_r_size_y   equ [edi+52]
sb_r_start_y  equ [edi+54]
sb_m_pos      equ [edi+56]
sb_m_pos_2    equ [edi+60]
sb_m_keys     equ [edi+64]
sb_run_size   equ [edi+68]
sb_position2  equ [edi+72]
sb_work_size  equ [edi+76]
sb_all_redraw equ [edi+80]
sb_ar_offset  equ [edi+84]
}
  • sb_btn_high - высота боковых кнопок (левая и правая для гориз. и верхняя и нижняя для верт.)
  • sb_type - зарезервировано для будущих типов, если скроллбар будет дорабатываться.
  • sb_max_area - область максимальная, актуально когда не влазит в отображаемую область, т.е. случай активности компонента (весь максимальный размер документа)
  • sb_cur_area - область отображаемая (какая часть документа влазит в экран)
  • sb_position - позиция бегунка изменяемая от 0 до значения (sb_max_area-sb_cur_area)
  • sb_bckg_col - цвет внутренний, применяется для областей между бегунком и кноками
  • sb_frnt_col - цвет наружный, применяется для областей отличных от применяемых в sb_bckg_col
  • sb_line_col - цвет линий и стрелок на кнопках
  • sb_redraw - индикатор необходимости перерисовки управляемой области учитывая изменение sb_position и sb_cur_area
  • sb_delta2 - индикатор захвата фокуса скроллбаром (удержание бегунка)
  • sb_all_redraw - флаг устанавливаемый в 1 для перерисовки всего компонента, если поставить 0, то перерисовка происходит только для области бегунка. Введено для ускорения отрисовки, поскольку не во всех случаях требуется принудитеьно отрисовывать все части компонента. Когда вызывается по событию мыши всегда отрисовывается самим компонентом со значением 0.
  • sb_ar_offset - величина смещения при однократном нажатии боковой кнопки.