    class
    	EV_GRID_DRAWER_I

    General
    	cluster: implementation_mswin
    	description: "Objects that draw the EV_GRID widget as required."
    	create: make_with_grid

    Ancestors
    	REFACTORING_HELPER

    Queries
    	column_at_position (a_x: INTEGER_32): EV_GRID_COLUMN_I
    	column_at_virtual_position (a_x: INTEGER_32): EV_GRID_COLUMN_I
    	grid: EV_GRID_I
    	item_at_position (an_x, a_y: INTEGER_32): EV_GRID_ITEM_I
    	item_at_position_strict (an_x, a_y: INTEGER_32): EV_GRID_ITEM_I
    	item_at_virtual_position (an_x, a_y: INTEGER_32): EV_GRID_ITEM_I
    	item_coordinates_at_position (an_x, a_y: INTEGER_32): EV_COORDINATE
    	items_spanning_horizontal_span (an_x, a_width: INTEGER_32): ARRAYED_LIST [INTEGER_32]
    	items_spanning_vertical_span (a_y, a_height: INTEGER_32): ARRAYED_LIST [INTEGER_32]
    	locked_column_at_position (an_x: INTEGER_32): EV_GRID_COLUMN_I
    	locked_item_at_position (an_x, a_y: INTEGER_32): EV_GRID_ITEM_I
    	locked_row_at_position (a_y: INTEGER_32): EV_GRID_ROW_I
    	row_at_position (a_y: INTEGER_32; ignore_locked_rows: BOOLEAN): EV_GRID_ROW_I
    	row_at_virtual_position (a_y: INTEGER_32; ignore_locked_rows: BOOLEAN): EV_GRID_ROW_I
    	to_implement_assertion (comment: STRING_8): BOOLEAN

    Commands
    	fixme (comment: STRING_8)
    	redraw_area_in_drawable_coordinates (an_x, a_y, a_width, a_height: INTEGER_32; drawable: EV_DRAWABLE; viewport: EV_VIEWPORT; locked: EV_GRID_LOCKED_I)
    	redraw_area_in_drawable_coordinates_wrapper (an_x, a_y, a_width, a_height: INTEGER_32)
    	redraw_area_in_virtual_coordinates (an_x, a_y, a_width, a_height: INTEGER_32)
    	to_implement (comment: STRING_8)

    Constraints
    	grid not void
    	temp rectangle not void