indexing
	description: "Window's area device context."
	status: "See notice at end of class."
	date: "$Date$"
	revision: "$Revision$"
class interface
	WEL_WINDOW_DC
create 
	make (a_window: WEL_WINDOW)
			a_window
		require
			a_window_not_void: a_window /= void
			a_window_exists: a_window.exists
		ensure
			window_set: window = a_window
	make_by_pointer (a_pointer: POINTER)
			itema_pointer
			item
			
			a_pointer
			
			 WEL_ANY
		ensure  WEL_ANY
			item_set: item = a_pointer
			shared: shared
feature 
	bitmap: WEL_BITMAP
			
			 WEL_DC
	brush: WEL_BRUSH
			
			 WEL_DC
	font: WEL_FONT
			
			 WEL_DC
	item: POINTER
			
			
			 WEL_ANY
	palette: WEL_PALETTE
			
			 WEL_DC
	pen: WEL_PEN
			
			 WEL_DC
	region: WEL_REGION
			
			 WEL_DC
	window: WEL_WINDOW
			
	
feature 
	background_color: WEL_COLOR_REF
			
			 WEL_DC
		require  WEL_DC
			exists: exists
		ensure  WEL_DC
			result_not_void: Result /= void
	bitmap_selected: BOOLEAN
			
			 WEL_DC
	brush_selected: BOOLEAN
			
			 WEL_DC
	device_caps (capability: INTEGER): INTEGER
			
			
			WEL_CAPABILITIES_CONSTANTS
			capability
			 WEL_DC
		require  WEL_DC
			exists: exists
	exists: BOOLEAN
			item
			 WEL_ANY
		ensure  WEL_ANY
			Result = (item /= default_pointer)
	font_selected: BOOLEAN
			
			 WEL_DC
	height: INTEGER
			
			 WEL_DC
		require  WEL_DC
			exists: exists
	is_opaque: BOOLEAN
			
			 WEL_DC
		require  WEL_DC
			exists: exists
	is_transparent: BOOLEAN
			
			 WEL_DC
		require  WEL_DC
			exists: exists
	map_mode: INTEGER
			
			WEL_MM_CONSTANTS
			 WEL_DC
		require  WEL_DC
			exists: exists
		ensure  WEL_DC
			valid_map_mode: valid_map_mode_constant (Result)
	mask_blt_supported: BOOLEAN
			 WEL_DC
	palette_selected: BOOLEAN
			
			 WEL_DC
	pen_selected: BOOLEAN
			
			 WEL_DC
	pixel_color (x, y: INTEGER): WEL_COLOR_REF
			xy
			 WEL_DC
		require  WEL_DC
			exists: exists
		ensure  WEL_DC
			result_not_void: Result /= void
	polygon_fill_mode: INTEGER
			
			WEL_POLYGON_FILL_MODE_CONSTANTS
			 WEL_DC
		require  WEL_DC
			exists: exists
		ensure  WEL_DC
			valid_polygon_fill_mode: valid_polygon_fill_mode_constant (Result)
	position: WEL_POINT
			
			 WEL_DC
		require  WEL_DC
			exists: exists
		ensure  WEL_DC
			result_exists: Result /= void
	region_selected: BOOLEAN
			
			 WEL_DC
	rop2: INTEGER
			
			 WEL_DC
		require  WEL_DC
			exists: exists
		ensure  WEL_DC
			valid_result: valid_rop2_constant (Result)
	shared: BOOLEAN
			item
			item
			destroy_item
			item
			 WEL_ANY
	stretch_blt_mode: INTEGER
			
			
			
			stretch_blt
			 WEL_DC
		require  WEL_DC
			exists: exists
		ensure  WEL_DC
			valid_stretch_mode: valid_stretch_mode_constant (Result)
	string_height (s: STRING): INTEGER
			s
			 WEL_DC
		require  WEL_DC
			exists: exists
			s_exists: s /= void
		ensure  WEL_DC
			positive_result: Result >= 0
	string_size (s: STRING): WEL_SIZE
			s
			 WEL_DC
		require  WEL_DC
			exists: exists
			s_exists: s /= void
		ensure  WEL_DC
			result_exists: Result /= void
			positive_width: Result.width >= 0
			positive_height: Result.height >= 0
	string_width (s: STRING): INTEGER
			s
			 WEL_DC
		require  WEL_DC
			exists: exists
			s_exists: s /= void
		ensure  WEL_DC
			positive_result: Result >= 0
	tabbed_text_height (text: STRING): INTEGER
			text
			 WEL_DC
		require  WEL_DC
			exists: exists
			text_not_void: text /= void
		ensure  WEL_DC
			positive_height: Result >= 0
	tabbed_text_size (text: STRING): WEL_SIZE
			text
			 WEL_DC
		require  WEL_DC
			exists: exists
			text_not_void: text /= void
		ensure  WEL_DC
			result_not_void: Result /= void
			positive_width: Result.width >= 0
			positive_height: Result.height >= 0
	tabbed_text_size_with_tabulation (text: STRING; tabulations: ARRAY [INTEGER]): WEL_SIZE
			texttabulations
			
			 WEL_DC
		require  WEL_DC
			exists: exists
			text_not_void: text /= void
			tabulations_not_void: tabulations /= void
		ensure  WEL_DC
			result_not_void: Result /= void
			positive_width: Result.width >= 0
			positive_height: Result.height >= 0
	tabbed_text_width (text: STRING): INTEGER
			text
			 WEL_DC
		require  WEL_DC
			exists: exists
			text_not_void: text /= void
		ensure  WEL_DC
			positive_width: Result >= 0
	text_alignment: INTEGER
			
			 WEL_DC
		require  WEL_DC
			exists: exists
	text_color: WEL_COLOR_REF
			
			 WEL_DC
		require  WEL_DC
			exists: exists
		ensure  WEL_DC
			result_not_void: Result /= void
	text_face: STRING
			
			 WEL_DC
		require  WEL_DC
			exists: exists
		ensure  WEL_DC
			result_not_void: Result /= void
	valid_extent_map_mode (mode: INTEGER): BOOLEAN
			mode
			 WEL_DC
		require  WEL_DC
			valid_map_mode: valid_map_mode_constant (mode)
	viewport_extent: WEL_SIZE
			
			 WEL_DC
		require  WEL_DC
			exists: exists
		ensure  WEL_DC
			result_not_void: Result /= void
	viewport_origin: WEL_POINT
			
			 WEL_DC
		require  WEL_DC
			exists: exists
		ensure  WEL_DC
			result_not_void: Result /= void
	width: INTEGER
			
			 WEL_DC
		require  WEL_DC
			exists: exists
	window_extent: WEL_SIZE
			
			 WEL_DC
		require  WEL_DC
			exists: exists
		ensure  WEL_DC
			result_not_void: Result /= void
	window_origin: WEL_POINT
			
			 WEL_DC
		require  WEL_DC
			exists: exists
		ensure  WEL_DC
			result_not_void: Result /= void
	
feature  
	valid_dib_colors_constant (c: INTEGER): BOOLEAN
			c
			 WEL_DIB_COLORS_CONSTANTS
	valid_htext_alignment_constant (c: INTEGER): BOOLEAN
			c
			 WEL_TA_CONSTANTS
	valid_map_mode_constant (c: INTEGER): BOOLEAN
			c
			 WEL_MM_CONSTANTS
	valid_polygon_fill_mode_constant (c: INTEGER): BOOLEAN
			c
			 WEL_POLYGON_FILL_MODE_CONSTANTS
	valid_rop2_constant (c: INTEGER): BOOLEAN
			c
			 WEL_DRAWING_CONSTANTS
	valid_stretch_mode_constant (c: INTEGER): BOOLEAN
			c
			 WEL_STRETCH_MODE_CONSTANTS
	valid_text_alignment_constant (c: INTEGER): BOOLEAN
			c
			 WEL_TA_CONSTANTS
	valid_vtext_alignment_constant (c: INTEGER): BOOLEAN
			c
			 WEL_TA_CONSTANTS
	
feature 
	select_bitmap (a_bitmap: WEL_BITMAP)
			a_bitmap
			 WEL_DC
		require  WEL_DC
			exists: exists
			a_bitmap_not_void: a_bitmap /= void
			a_bitmap_exists: a_bitmap.exists
		ensure  WEL_DC
			bitmap_set: bitmap = a_bitmap
			bitmap_selected: bitmap_selected
	select_brush (a_brush: WEL_BRUSH)
			a_brush
			 WEL_DC
		require  WEL_DC
			exists: exists
			a_brush_not_void: a_brush /= void
			a_brush_exists: a_brush.exists
		ensure  WEL_DC
			brush_set: brush = a_brush
			brush_selected: brush_selected
	select_font (a_font: WEL_FONT)
			a_font
			 WEL_DC
		require  WEL_DC
			exists: exists
			a_font_not_void: a_font /= void
			a_font_exists: a_font.exists
		ensure  WEL_DC
			font_set: font = a_font
			font_selected: font_selected
	select_palette (a_palette: WEL_PALETTE)
			a_palette
			 WEL_DC
		require  WEL_DC
			exists: exists
			a_palette_not_void: a_palette /= void
			a_palette_exists: a_palette.exists
	select_pen (a_pen: WEL_PEN)
			a_pen
			 WEL_DC
		require  WEL_DC
			exists: exists
			a_pen_not_void: a_pen /= void
			a_pen_exists: a_pen.exists
		ensure  WEL_DC
			pen_set: pen = a_pen
			pen_selected: pen_selected
	select_region (a_region: WEL_REGION)
			a_region
			 WEL_DC
		require  WEL_DC
			exists: exists
			a_region_not_void: a_region /= void
			a_region_exists: a_region.exists
		ensure  WEL_DC
			region_set: region = a_region
			region_selected: region_selected
	set_background_color (color: WEL_COLOR_REF)
			background_colorcolor
			 WEL_DC
		require  WEL_DC
			exists: exists
			color_not_void: color /= void
		ensure  WEL_DC
			color_set: background_color.item = color.item
	set_background_opaque
			
			 WEL_DC
		require  WEL_DC
			exists: exists
		ensure  WEL_DC
			is_opaque: is_opaque
	set_background_transparent
			
			 WEL_DC
		require  WEL_DC
			exists: exists
		ensure  WEL_DC
			is_transparent: is_transparent
	set_hv_text_alignment (h, v: INTEGER)
			
			hv
			WEL_TA_CONSTANTS
			 WEL_DC
		require  WEL_DC
			exists: exists
			valid_horizontal_alignment: valid_htext_alignment_constant (h)
			valid_vertical_alignment: valid_vtext_alignment_constant (v)
		ensure  WEL_DC
			text_alignments_set: flag_set (text_alignment, h) and flag_set (text_alignment, v)
	set_map_mode (mode: INTEGER)
			mode
			WEL_MM_CONSTANTSmode
			 WEL_DC
		require  WEL_DC
			exists: exists
			valid_map_mode: valid_map_mode_constant (mode)
		ensure  WEL_DC
			map_mode_set: map_mode = mode
	set_polygon_fill_mode (mode: INTEGER)
			polygon_fill_mode
			mode
			WEL_POLYGON_FILL_MODE_CONSTANTS
			mode
			 WEL_DC
		require  WEL_DC
			exists: exists
			valid_polygon_fill_mode: valid_polygon_fill_mode_constant (mode)
		ensure  WEL_DC
			polygon_fill_mode_set: polygon_fill_mode = mode
	set_rop2 (a_rop2: INTEGER)
			
			
			
			
			
			
			a_rop2WEL_ROP2_CONSTANTS
			 WEL_DC
		require  WEL_DC
			exists: exists
			valid_rop2_constant: valid_rop2_constant (a_rop2)
		ensure  WEL_DC
			rop2_set: rop2 = a_rop2
	set_shared
			shared
			 WEL_ANY
		ensure  WEL_ANY
			shared: shared
	set_stretch_blt_mode (a_mode: INTEGER)
			a_mode
			WEL_STRETCH_MODE_CONSTANTSa_mode
			
			 WEL_DC
		require  WEL_DC
			exists: exists
			valid_stretch_mode_constant: valid_stretch_mode_constant (a_mode)
		ensure  WEL_DC
			stretch_blt_mode_set: stretch_blt_mode = a_mode
	set_text_alignment (an_alignment: INTEGER)
			an_alignment
			WEL_TA_CONSTANTSan_alignment
			 WEL_DC
		require  WEL_DC
			exists: exists
			valid_alignment: valid_text_alignment_constant (an_alignment)
		ensure  WEL_DC
			text_alignment_set: flag_set (text_alignment, an_alignment)
	set_text_color (color: WEL_COLOR_REF)
			text_colorcolor
			 WEL_DC
		require  WEL_DC
			exists: exists
			color_not_void: color /= void
		ensure  WEL_DC
			color_set: text_color.item = color.item
	set_unshared
			shared
			 WEL_ANY
		ensure  WEL_ANY
			unshared: not shared
	set_viewport_extent (x_extent, y_extent: INTEGER)
			x_extenty_extent
			
			 WEL_DC
		require  WEL_DC
			exists: exists
			valid_current_map_mode: valid_extent_map_mode (map_mode)
		ensure  WEL_DC
			x_viewport_extent_set: map_mode /= mm_isotropic implies viewport_extent.width = x_extent
			y_viewport_extent_set: map_mode /= mm_isotropic implies viewport_extent.height = y_extent
	set_viewport_origin (x_origin, y_origin: INTEGER)
			x_originy_origin
			
			 WEL_DC
		require  WEL_DC
			exists: exists
		ensure  WEL_DC
			x_viewport_origin_set: viewport_origin.x = x_origin
			y_viewport_origin_set: viewport_origin.y = y_origin
	set_window_extent (x_extent, y_extent: INTEGER)
			x_extenty_extent
			
			 WEL_DC
		require  WEL_DC
			exists: exists
			valid_current_map_mode: valid_extent_map_mode (map_mode)
		ensure  WEL_DC
			x_window_extent_set: map_mode /= mm_isotropic implies window_extent.width = x_extent
			y_window_extent_set: map_mode /= mm_isotropic implies window_extent.height = y_extent
	set_window_origin (x_origin, y_origin: INTEGER)
			x_originy_origin
			
			 WEL_DC
		require  WEL_DC
			exists: exists
		ensure  WEL_DC
			x_window_origin_set: window_origin.x = x_origin
			y_window_origin_set: window_origin.y = y_origin
	unselect_all
			
			 WEL_DC
		require  WEL_DC
			exists: exists
		ensure  WEL_DC
			pen_not_selected: not pen_selected
			brush_not_selected: not brush_selected
			region_not_selected: not region_selected
			palette_not_selected: not palette_selected
			font_not_selected: not font_selected
			bitmap_not_selected: not bitmap_selected
	unselect_bitmap
			
			 WEL_DC
		require  WEL_DC
			exists: exists
			bitmap_selected: bitmap_selected
		ensure  WEL_DC
			bitmap_not_selected: not bitmap_selected
	unselect_brush
			
			 WEL_DC
		require  WEL_DC
			exists: exists
			brush_selected: brush_selected
		ensure  WEL_DC
			brush_not_selected: not brush_selected
	unselect_font
			
			 WEL_DC
		require  WEL_DC
			exists: exists
			font_selected: font_selected
		ensure  WEL_DC
			font_not_selected: not font_selected
	unselect_palette
			
			 WEL_DC
		require  WEL_DC
			exists: exists
			palette_selected: palette_selected
		ensure  WEL_DC
			palette_not_selected: not palette_selected
	unselect_pen
			
			 WEL_DC
		require  WEL_DC
			exists: exists
			pen_selected: pen_selected
		ensure  WEL_DC
			pen_not_selected: not pen_selected
	unselect_region
			
			 WEL_DC
		require  WEL_DC
			exists: exists
			region_selected: region_selected
		ensure  WEL_DC
			region_not_selected: not region_selected
	
feature 
	set_item (an_item: POINTER)
			iteman_item
			 WEL_ANY
		ensure  WEL_ANY
			item_set: item = an_item
	
feature 
	delete
			Current
			
			
			 WEL_REFERENCE_TRACKABLE
		require  WEL_REFERENCE_TRACKABLE
			reference_not_tracked: not reference_tracked
		ensure  WEL_REFERENCE_TRACKABLE
			destroyed: not shared implies not exists
	dispose
			Current
			
			
			
			delete
			 WEL_REFERENCE_TRACKABLE
	
feature 
	to_integer: INTEGER
			item
			 WEL_ANY
		ensure  WEL_ANY
			Result = cwel_pointer_to_integer (item)
	
feature 
	arc (left, top, right, bottom, x_start_arc, y_start_arc, x_end_arc, y_end_arc: INTEGER)
			
			lefttoprightbottom
			x_start_arcy_start_arc
			x_end_arcy_end_arc
			 WEL_DC
		require  WEL_DC
			exists: exists
	bit_blt (x_destination, y_destination, a_width, a_height: INTEGER; dc_source: WEL_DC; x_source, y_source, raster_operation: INTEGER)
			dc_source
			x_source
			y_sourcex_destinationy_destination
			a_widtha_heightraster_operation
			WEL_RASTER_OPERATIONS_CONSTANTS
			raster_operation
			 WEL_DC
		require  WEL_DC
			exists: exists
			positive_width: a_width >= 0
			positive_height: a_height >= 0
			dc_source_not_void: dc_source /= void
			dc_source_exists: dc_source.exists
	chord (left, top, right, bottom, x_start_line, y_start_line, x_end_line, y_end_line: INTEGER)
			
			lefttoprightbottom
			x_start_liney_start_line
			x_end_liney_end_line
			 WEL_DC
		require  WEL_DC
			exists: exists
	copy_dc (dc_source: WEL_DC; rect: WEL_RECT)
			rectdc_source
			
			 WEL_DC
		require  WEL_DC
			exists: exists
			rect_not_void: rect /= void
			dc_source_not_void: dc_source /= void
			dc_source_exists: dc_source.exists
	di_bits (a_bitmap: WEL_BITMAP; start_scan, scan_lines: INTEGER; bitmap_info: WEL_BITMAP_INFO; usage: INTEGER): ARRAY [CHARACTER]
			a_bitmap
			start_scan
			scan_lines
			bitmap_info
			
			 WEL_DC
		require  WEL_DC
			exists: exists
			a_bitmap_not_void: a_bitmap /= void
			a_bitmap_exists: a_bitmap.exists
			positive_start_scan: start_scan >= 0
			positive_scan_lines: scan_lines >= 0
			bitmap_info_not_void: bitmap_info /= void
			valid_usage: valid_dib_colors_constant (usage)
		ensure  WEL_DC
			result_not_void: Result /= void
			consistent_count: Result.count = bitmap_info.header.size_image
	draw_bitmap (a_bitmap: WEL_BITMAP; x, y, a_width, a_height: INTEGER)
			bitmapxy
			a_widtha_height
			 WEL_DC
		require  WEL_DC
			exists: exists
			a_bitmap_not_void: a_bitmap /= void
			a_bitmap_exists: a_bitmap.exists
	draw_centered_text (string: STRING; rect: WEL_RECT)
			stringrect
			 WEL_DC
		require  WEL_DC
			exists: exists
			string_not_void: string /= void
			rect_not_void: rect /= void
	draw_cursor (cursor: WEL_CURSOR; x, y: INTEGER)
			cursorxy
			 WEL_DC
		require  WEL_DC
			exists: exists
			cursor_not_void: cursor /= void
			cursor_exists: cursor.exists
	draw_disabled_text (string: STRING; rect: WEL_RECT; format: INTEGER)
			string
			rectformat
			WEL_DT_CONSTANTSformat
			 WEL_DC
		require  WEL_DC
			exists: exists
			string_not_void: string /= void
			rect_not_void: rect /= void
	draw_edge (a_rect: WEL_RECT; edge_type: INTEGER; edge_border: INTEGER)
			edge_type
			edge_bordera_rect
			
			edge_type
			WEL_DRAWING_CONSTANTS
			
			edge_type
			WEL_DRAWING_CONSTANTS
			 WEL_DC
		require  WEL_DC
			exists: exists
			valid_rect: a_rect /= void and then a_rect.exists
	draw_frame_control (a_rect: WEL_RECT; control_type: INTEGER; control_state: INTEGER)
			control_type
			control_state
			
			control_type
			WEL_DRAWING_CONSTANTS
			
			control_state
			WEL_DRAWING_CONSTANTS
			 WEL_DC
		require  WEL_DC
			exists: exists
			valid_rect: a_rect /= void and then a_rect.exists
	draw_icon (icon: WEL_ICON; x, y: INTEGER)
			iconxy
			 WEL_DC
		require  WEL_DC
			exists: exists
			icon_not_void: icon /= void
			icon_exists: icon.exists
	draw_icon_ex (icon: WEL_ICON; x, y, icon_width, icon_height, frame_index: INTEGER; flicker_free_background: WEL_BRUSH; di_flags: INTEGER)
			iconxy
			 WEL_DC
		require  WEL_DC
			exists: exists
			icon_not_void: icon /= void
			icon_exists: icon.exists
	draw_state_bitmap (a_brush: WEL_BRUSH; a_bitmap: WEL_BITMAP; x, y: INTEGER; format: INTEGER)
			a_bitmapformat
			xya_brushformatDss_mono
			
			WEL_DRAWING_CONSTANTS
			format
			 WEL_DC
		require  WEL_DC
			exists: exists
			a_bitmap_not_void: a_bitmap /= void
	draw_state_icon (a_brush: WEL_BRUSH; an_icon: WEL_GRAPHICAL_RESOURCE; x, y: INTEGER; format: INTEGER)
			an_iconformat
			xya_brushformatDss_mono
			
			WEL_DRAWING_CONSTANTS
			format
			 WEL_DC
		require  WEL_DC
			exists: exists
			an_icon_not_void: an_icon /= void
	draw_state_text (a_brush: WEL_BRUSH; string: STRING; x, y: INTEGER; format: INTEGER)
			stringformat
			xya_brushformatDss_mono
			
			WEL_DRAWING_CONSTANTS
			format
			 WEL_DC
		require  WEL_DC
			exists: exists
			string_not_void: string /= void
	draw_text (string: STRING; rect: WEL_RECT; format: INTEGER)
			string
			rectformat
			WEL_DT_CONSTANTSformat
			 WEL_DC
		require  WEL_DC
			exists: exists
			string_not_void: string /= void
			rect_not_void: rect /= void
	draw_text_with_result (string: STRING; rect: WEL_RECT; format: INTEGER): INTEGER
			stringrectformat
			
			WEL_DT_CONSTANTSformat
			 WEL_DC
		require  WEL_DC
			exists: exists
			string_not_void: string /= void
			rect_not_void: rect /= void
	ellipse (left, top, right, bottom: INTEGER)
			
			lefttoprightbottom
			 WEL_DC
		require  WEL_DC
			exists: exists
	fill_rect (a_rect: WEL_RECT; a_brush: WEL_BRUSH)
			a_recta_brush
			 WEL_DC
		require  WEL_DC
			exists: exists
			a_rect_not_void: a_rect /= void
			a_brush_not_void: a_brush /= void
			a_brush_exists: a_brush.exists
	fill_region (a_region: WEL_REGION; a_brush: WEL_BRUSH)
			a_regiona_brush
			 WEL_DC
		require  WEL_DC
			exists: exists
			a_region_not_void: a_region /= void
			a_brush_not_void: a_brush /= void
			a_brush_exists: a_brush.exists
	flood_fill_border (x, y: INTEGER; color: WEL_COLOR_REF)
			color
			xy
			 WEL_DC
		require  WEL_DC
			exists: exists
			color_not_void: color /= void
	flood_fill_surface (x, y: INTEGER; color: WEL_COLOR_REF)
			color
			xy
			
			 WEL_DC
		require  WEL_DC
			exists: exists
			color_not_void: color /= void
	get
			
	invert_rect (a_rect: WEL_RECT)
			a_rect
			
			 WEL_DC
		require  WEL_DC
			exists: exists
			a_rect_not_void: a_rect /= void
	invert_region (a_region: WEL_REGION)
			a_region
			 WEL_DC
		require  WEL_DC
			exists: exists
			a_region_not_void: a_region /= void
			a_region_exists: a_region.exists
	line (x1, y1, x2, y2: INTEGER)
			x1y1x2y2
			 WEL_DC
		require  WEL_DC
			exists: exists
	line_to (x, y: INTEGER)
			
			xy
			 WEL_DC
		require  WEL_DC
			exists: exists
	mask_blt (x_destination, y_destination, a_width, a_height: INTEGER; dc_source: WEL_DC; x_source, y_source: INTEGER; mask_bitmap: WEL_BITMAP; x_mask, y_mask, raster_operation: INTEGER)
			
			WEL_RASTER_OPERATIONS_CONSTANTS
			raster_operation
			 WEL_DC
		require  WEL_DC
			exists: exists
			positive_width: a_width >= 0
			positive_height: a_height >= 0
			dc_source_not_void: dc_source /= void
			dc_source_exists: dc_source.exists
			mask_bitmap_not_void: mask_bitmap /= void
			function_is_supported: mask_blt_supported
	move_to (x, y: INTEGER)
			xy
			 WEL_DC
		require  WEL_DC
			exists: exists
	pat_blt (x_destination, y_destination, a_width, a_height: INTEGER; raster_operation: INTEGER)
			x_destination
			y_destinationa_widtha_height
			
			
			raster_operation
			WEL_RASTER_OPERATIONS_CONSTANTS
			raster_operation
			 WEL_DC
		require  WEL_DC
			exists: exists
			positive_width: a_width >= 0
			positive_height: a_height >= 0
	pie (left, top, right, bottom, x_start_point, y_start_point, x_end_point, y_end_point: INTEGER)
			
			
			
			lefttoprightbottom
			x_start_pointy_start_point
			x_end_pointy_end_point
			 WEL_DC
		require  WEL_DC
			exists: exists
	poly_bezier (points: ARRAY [INTEGER])
			
			points
			
			
			
			
			
			
			
			
			
			 WEL_DC
		require  WEL_DC
			points_not_void: points /= void
			points_count_ok: points.count \\ 2 = 0
	poly_bezier_to (points: ARRAY [INTEGER])
			
			points
			
			
			
			
			
			
			
			
			 WEL_DC
		require  WEL_DC
			points_not_void: points /= void
			points_count_ok: points.count \\ 2 = 0
	polygon (points: ARRAY [INTEGER])
			points
			
			 WEL_DC
		require  WEL_DC
			exists: exists
			points_not_void: points /= void
			points_count: points.count \\ 2 = 0
	polyline (points: ARRAY [INTEGER])
			
			points
			 WEL_DC
		require  WEL_DC
			exists: exists
			points_not_void: points /= void
			points_count: points.count \\ 2 = 0
	quick_release
			
			
			
			release
		require  WEL_DISPLAY_DC
			exists: exists
			no_selected_pen: not pen_selected
			no_selected_brush: not brush_selected
			no_selected_bitmap: not bitmap_selected
			no_selected_font: not font_selected
		ensure then  WEL_DISPLAY_DC
			not_exists: not exists
	realize_palette
			
			
			 WEL_DC
		require  WEL_DC
			exists: exists
			palette_selected: palette_selected
	rectangle (left, top, right, bottom: INTEGER)
			lefttop
			rightbottom
			 WEL_DC
		require  WEL_DC
			exists: exists
	release
			
	remove_clip_region
			
			 WEL_DC
		require  WEL_DC
			exists: exists
	round_rect (left, top, right, bottom, ellipse_width, ellipse_height: INTEGER)
			lefttop
			rightbottom
			
			ellipse_widthellipse_height
			 WEL_DC
		require  WEL_DC
			exists: exists
	save_bitmap (a_bitmap: WEL_BITMAP; file: FILE_NAME)
			a_bitmapfile
			 WEL_DC
		require  WEL_DC
			exists: exists
			a_bitmap_not_void: a_bitmap /= void
			a_bitmap_exists: a_bitmap.exists
			file_not_void: file /= void
			file_is_valid: file.is_valid
	select_clip_region (a_region: WEL_REGION)
			a_region
			 WEL_DC
		require  WEL_DC
			exists: exists
			a_region_not_void: a_region /= void
			a_region_exists: a_region.exists
	set_pixel (x, y: INTEGER; color: WEL_COLOR_REF)
			xy
			color
			 WEL_DC
		require  WEL_DC
			exists: exists
			color_not_void: color /= void
	stretch_blt (x_destination, y_destination, width_destination, height_destination: INTEGER; dc_source: WEL_DC; x_source, y_source, width_source, height_source, raster_operation: INTEGER)
			dc_source
			x_source
			y_sourcex_destinationy_destination
			widthheightraster_operation
			WEL_RASTER_OPERATIONS_CONSTANTS
			raster_operation
			 WEL_DC
		require  WEL_DC
			exists: exists
			positive_width_destination: width_destination >= 0
			positive_height_destination: height_destination >= 0
			positive_width_source: width_source >= 0
			positive_height_source: height_source >= 0
			dc_source_not_void: dc_source /= void
			dc_source_exists: dc_source.exists
	stretch_di_bits (x_destination, y_destination, a_width, a_height, x_source, y_source, dib_width, dib_height: INTEGER; dib: WEL_DIB; bitmap_info: WEL_BITMAP_INFO; rgb_mode, raster_operation: INTEGER)
			
			x_sourcey_sourcex_destination
			y_destinationa_widtha_height
			raster_operationrgb_mode
			WEL_RASTER_OPERATIONS_CONSTANTS
			raster_operation
			WEL_DIB_COLORS_CONSTANTS
			rgb_mode
			 WEL_DC
		require  WEL_DC
			exists: exists
			positive_width: a_width >= 0
			positive_height: a_height >= 0
			dib_not_void: dib /= void
			bitmap_not_void: bitmap_info /= void
			valid_rgb_mode: valid_dib_colors_constant (rgb_mode)
	tabbed_text_out (x, y: INTEGER; string: STRING; tabulations: ARRAY [INTEGER]; tabulations_origin: INTEGER)
			stringxy
			tabulations
			tabulations_origin
			
			 WEL_DC
		require  WEL_DC
			exists: exists
			string_not_void: string /= void
			tabulations_not_void: tabulations /= void
	text_out (x, y: INTEGER; string: STRING)
			stringxy
			 WEL_DC
		require  WEL_DC
			exists: exists
			string_not_void: string /= void
	
feature 
	reference_tracked: BOOLEAN
			Current
			 WEL_REFERENCE_TRACKABLE
	references_count: INTEGER
			
			 WEL_REFERENCE_TRACKABLE
	
feature 
	decrement_reference
			
			
			
			delete
			 WEL_REFERENCE_TRACKABLE
		require  WEL_REFERENCE_TRACKABLE
			exists: exists
			tracking_references_started: reference_tracked
	enable_reference_tracking
			references_tracked
			
			 WEL_REFERENCE_TRACKABLE
		require  WEL_REFERENCE_TRACKABLE
			exists: exists
			tracking_reference_not_started: not reference_tracked
	increment_reference
			
			 WEL_REFERENCE_TRACKABLE
		require  WEL_REFERENCE_TRACKABLE
			exists: exists
			tracking_references_started: reference_tracked
	object_id: INTEGER
			Current
			 WEL_REFERENCE_TRACKABLE
	
invariant
		 ANY
	reflexive_equality: standard_is_equal (Current)
	reflexive_conformance: conforms_to (Current)
		 WEL_DC
	valid_background_mode: exists implies is_opaque /= is_transparent
end -- WEL_WINDOW_DC