indexing
	description: "Properties of a bitmap."
	status: "See notice at end of class."
	date: "$Date$"
	revision: "$Revision$"
class interface
	WEL_LOG_BITMAP
create 
	make (a_width, a_height, a_width_bytes, a_planes, a_bits_pixel: INTEGER; a_bits: POINTER)
		require
			positive_width: a_width >= 0
			positive_height: a_height >= 0
			positive_width_bytes: a_width_bytes >= 0
			positive_planes: a_planes >= 0
			positive_bits_pixel: a_bits_pixel >= 0
			count_width_bytes: (a_width_bytes \\ 2) = 0
		ensure
			type_set: type = 0
			width_set: width = a_width
			height_set: height = a_height
			width_bytes_set: width_bytes = a_width_bytes
			planes_set: planes = a_planes
			bits_pixel_set: bits_pixel = a_bits_pixel
			bits_set: bits = a_bits
	make_by_bitmap (bitmap: WEL_BITMAP)
			bitmap
		require
			bitmap_not_void: bitmap /= void
			bitmap_exists: bitmap.exists
feature 
	bits: POINTER
			
	bits_pixel: INTEGER
			
		ensure
			positive_result: Result >= 0
	height: INTEGER
			
		ensure
			positive_result: Result >= 0
	item: POINTER
			
			
			 WEL_ANY
	planes: INTEGER
			
		ensure
			positive_result: Result >= 0
	type: INTEGER
			
	width: INTEGER
			
		ensure
			positive_result: Result >= 0
	width_bytes: INTEGER
			
		ensure
			positive_result: Result >= 0
	
feature 
	structure_size: INTEGER
			
		ensure  WEL_STRUCTURE
			positive_result: Result > 0
	
feature 
	exists: BOOLEAN
			item
			 WEL_ANY
		ensure  WEL_ANY
			Result = (item /= default_pointer)
	shared: BOOLEAN
			item
			item
			destroy_item
			item
			 WEL_ANY
	
feature 
	set_shared
			shared
			 WEL_ANY
		ensure  WEL_ANY
			shared: shared
	set_unshared
			shared
			 WEL_ANY
		ensure  WEL_ANY
			unshared: not shared
	
feature 
	set_bits (a_bits: POINTER)
			bitsa_bits
		ensure
			set_bits: bits = a_bits
	set_bits_pixel (a_bits_pixel: INTEGER)
			bits_pixela_bits_pixel
		require
			positive_bits_pixel: a_bits_pixel >= 0
		ensure
			set_bits_pixel: bits_pixel = a_bits_pixel
	set_height (a_height: INTEGER)
			heighta_height
		require
			positive_height: a_height >= 0
		ensure
			set_height: height = a_height
	set_item (an_item: POINTER)
			iteman_item
			 WEL_ANY
		ensure  WEL_ANY
			item_set: item = an_item
	set_planes (a_planes: INTEGER)
			planesa_planes
		require
			positive_planes: a_planes >= 0
		ensure
			set_planes: planes = a_planes
	set_type (a_type: INTEGER)
			typea_type
		ensure
			set_type: type = a_type
	set_width (a_width: INTEGER)
			widtha_width
		require
			positive_width: a_width >= 0
		ensure
			set_width: width = a_width
	set_width_bytes (a_width_bytes: INTEGER)
			width_bytesa_width_bytes
		require
			positive_width_bytes: a_width_bytes >= 0
		ensure
			set_width_bytes: width_bytes = a_width_bytes
	
feature 
	dispose
			Current
			
			
			Current
			
			 WEL_ANY
	
feature 
	to_integer: INTEGER
			item
			 WEL_ANY
		ensure  WEL_ANY
			Result = cwel_pointer_to_integer (item)
	
feature 
	initialize
			
			 WEL_STRUCTURE
		require  WEL_STRUCTURE
			exists: exists
	initialize_with_character (a_character: CHARACTER)
			a_character
			 WEL_STRUCTURE
		require  WEL_STRUCTURE
			exists: exists
	memory_copy (source_pointer: POINTER; length: INTEGER)
			lengthsource_pointeritem
			 WEL_STRUCTURE
		require  WEL_STRUCTURE
			length_small_enough: length <= structure_size
			length_large_enough: length > 0
			exists: exists
	
invariant
		 ANY
	reflexive_equality: standard_is_equal (Current)
	reflexive_conformance: conforms_to (Current)
end -- WEL_LOG_BITMAP