Домой Классы Статические функции Перечисления (ENUM) Записи (RECORD)

{Paintbox|_control}


(включая защищенные члены)

CLASS {Paintbox|_control} , UNTESTED, BITWISE :



Класс для отображения произвольного содержимого, занимающего прямоугольник заданных размеров (в поинтах), с возможностью прокрутки содержимого . Какие именно линейки прокрутки должны использоваться ("V" - вертикальная, "H" - горизонтальная), определяется только при создании компнента (функция New_paintbox). Содержимое должно быть отрисовано либо в методе формы paint, либо в методах наследников before_paint / after_paint.


IMPORT : {Control} , {AL4_drawing} , {Canvas} , {Bitmap} , {Form} , {AL4_form} .


BASE CLASS {Control} .



---------------------------------------------------------------- 'создание'

 

OVERRIDE create_control , REPLACE


BOOL Has_vertical_scroll , READ


BOOL Has_horizontal_scroll , READ


BOOL Can_focus , READ


STR options|_of_creation_local


BOOL Handle_tab|_when_in_focus


 

FUNCTION New_paintbox (
     
{Form} Parent|_form ,
     
STR Alias|_name ,
     
STR Scrollbars|_VH ) ==> {Paintbox} , NEW



-------------------------------------------------------------- 'обновление'

BOOL Invalidated|_flag_used_to_optimize_painting , READ


{rect} invalid_rect|angle


    

METHOD Invalid_rect|angle ==> {rect}



METHOD Invalidate_rect|angle (
     
{Geometry}.{rect} Rect|angle_invalidate_coords_in_points )



METHOD Invalidate_all



METHOD Update|_should_repaint_control



-------------------------------------------- 'содержимое и видимая область'

REAL Content_width|_in_points , READ


REAL Content_height|_in_points , READ


REAL Line_height|_points


   

METHOD Set_content_size ( REAL Area_w|idth , REAL Area_h|eight )



METHOD Visible_size|_in_points (
     
STR VH|orizontal_or_vertical ) ==> REAL



METHOD Visible_area|_coords_in_points ==> {rect}



--------------------------------------------------- 'программный скроллинг'

REAL h_scroll_set|_if_there_is_no_h_scroll


REAL v_scroll_set|_if_there_is_no_v_scroll


 

METHOD Move_top_left_to (
     
{Geometry}.{point} N|ew_top_left_position_in_points )



--------------------------------------------------------------- 'отрисовка'

{Bitmap} buffer|_used_to_draw_visible_content_LOCAL


{Canvas} Canvas|_available_only_in_paint_event , READ


{rect} clip_next


    

METHOD draw_indicators



FUN Is_dark|_color ( INT C|olor_to_check ) ==> BOOL



FUN Lighten_color ( INT C|olor_normal ) ==> INT



FUN Invert_back|ground_color ( INT C|olor_normal ) ==> INT



------------------------------------------------------------ 'cursor shape'

 

ENUMERATION {cursor|_shapes} :

        'ARROW|_DEFAULT_SHAPE' ,

        'IBEAM|_TEXT_POSITION' ,

        'NO|_DISALLOW' ,

        'CROSS|_GRAPHIC_SELECTION' ,

        'HAND|_SHAPE' ,

        'WAIT|_BUSY' ,

        'APP_START|ING_WITH_HOURGLASS' ,

        'UP_ARROW' ,

        'SIZE_ALL' ,

        'SIZE_WE|AST_TO_WEST' ,

        'SIZE_NS|OUTH_TO_NORD' ,

        'SIZE_NESW' ,

        'SIZE_NWSE' ,

        'HELP|_QUESTION' .


{cursor} Cursor|_shape , READ


  

METHOD Set_cursor|_shape ( {cursor} New_c|ursor ) , SETTER FOR Cursor



OVERRIDE Set_background ( INT C|olor_becomes_background )



----------------------------------------------------------------- 'panning'

BOOL Pan_content , READ


BOOL Indicate_pan|ning_avalible , READ


 

METHOD Set_pan_content (
     
BOOL P|an_content_when_too_large_to_fit ,
     
BOOL Ind|icate_panning_possible_in_given_directions )


{Geometry}.{point} pos_start|_mouse|_down


{point} start_loc|ation_of_visible_area


{Date_time}.{date_time} start|_time


BOOL is_mouse_down


BOOL is_panning


{point} Pan_position , READ


   

METHOD Set_pan_pos|ition ( {point} New|_pan_position )



OVERRIDE mouse_down



OVERRIDE mouse_move


REAL prev_period


{date_time} prev_time|_handled_for_inertia


{point} prev_pos|ition_to_calculate_inertia


{date_time} last_time|_handled_for_inertia


{point} last_pos|ition_to_calculate_inertia


INT event_count|_mouse_move


 

OVERRIDE mouse_up


{point} want_move|_per_second


INT frames_rest|_to_animate


    

OVERRIDE animation



METHOD Scroll|_content (
     
INT Delta_x|_pixels ,
     
INT Delta_y|_pixels ,
     
INT Invalid_w|idth_pixels ,
     
INT Invalid_h|eight_pixels )



OVERRIDE do_suspend



OVERRIDE do_resume


END