note description: "[ Widget onto which graphical primatives may be drawn. Primitives are drawn directly onto the screen without buffering. (When buffering is required use EV_PIXMAP.) ]" legal: "See notice at end of class." status: "See notice at end of class." keywords: "drawable, expose, primitive, figure, draw, paint, image" date: "$Date$" revision: "$Revision$" class EV_DRAWING_AREA inherit EV_DRAWABLE redefine implementation, is_in_default_state end EV_PRIMITIVE undefine set_background_color, background_color, set_foreground_color, foreground_color redefine implementation, is_in_default_state, is_in_default_state_for_tabs end EV_DRAWABLE_ACTION_SEQUENCES create default_create feature -- Basic operations redraw -- Call `expose_actions' for `Current' when next idle. require not_destroyed: not is_destroyed do implementation.redraw end clear_and_redraw -- Clear the window. -- Call `expose_actions' for `Current' when next idle. require not_destroyed: not is_destroyed do implementation.clear_and_redraw end redraw_rectangle (a_x, a_y, a_width, a_height: INTEGER) -- Call `expose_actions' for rectangle described with upper-left -- corner on (`a_x', `a_y') with size `a_width' and `a_height' when next idle. require not_destroyed: not is_destroyed do implementation.redraw_rectangle (a_x, a_y, a_width, a_height) end clear_and_redraw_rectangle (a_x, a_y, a_width, a_height: INTEGER) -- Clear rectangle described with upper-left corner on (`a_x', `a_y') -- with size `a_width' and `a_height'. -- Call `expose_actions' for rectangle when next idle. require not_destroyed: not is_destroyed do implementation.clear_and_redraw_rectangle (a_x, a_y, a_width, a_height) end flush -- Execute any delayed calls to `expose_actions' without waiting -- for next idle. Delayed calls to `expose_actions' happen as a -- result of calling on of `redraw', `clear_and_redraw', -- `redraw_rectangle' or `clear_and_redraw_rectngle'. -- Call this feature to make the effects of one or more previous -- calls to these features immediately visible. require not_destroyed: not is_destroyed do implementation.flush end enable_focus_on_press -- Enable focus on press handling. require not_destroyed: not is_destroyed do implementation.enable_focus_on_press end disable_focus_on_press -- Disable default focus handling when mouse button is pressed on drawing area. require not_destroyed: not is_destroyed do implementation.disable_focus_on_press end feature {EV_ANY} -- Contract support is_in_default_state: BOOLEAN -- Is `Current' in its default state? do Result := Precursor {EV_PRIMITIVE} and then Precursor {EV_DRAWABLE} end is_in_default_state_for_tabs: BOOLEAN -- Is `Current' in its default state with regards to tabs? do Result := not is_tabable_to and not is_tabable_from end feature {EV_ANY, EV_ANY_I, EV_ANY_HANDLER} -- Implementation implementation: EV_DRAWING_AREA_I -- Responsible for interaction with native graphics toolkit. feature {NONE} -- Implementation create_implementation -- See `{EV_ANY}.create_implementation'. do create {EV_DRAWING_AREA_IMP} implementation.make end note copyright: "Copyright (c) 1984-2014, Eiffel Software and others" license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" source: "[ Eiffel Software 5949 Hollister Ave., Goleta, CA 93117 USA Telephone 805-685-1006, Fax 805-685-6869 Website http://www.eiffel.com Customer support http://support.eiffel.com ]" end -- class EV_DRAWING_AREA