indexing
	description: "Projection to Postscript files."
	legal: "See notice at end of class."
	status: "See notice at end of class."
	keywords: "projector, events, postscript"
	date: "$Date: 2006-01-22 18:25:44 -0800 (Sun, 22 Jan 2006) $"
	revision: "$Revision: 56675 $"

class interface
	EV_MODEL_POSTSCRIPT_PROJECTOR

create 
	make_with_filename (a_world: EV_MODEL_WORLD; a_filename: FILE_NAME)
			-- Create with `a_world' and `a_filename'.
		require
			a_world_not_void: a_world /= Void
			a_filename_not_void: a_filename /= Void

feature -- Access

	generating_type: STRING_8
			-- Name of current object's generating type
			-- (type of which it is a direct instance)
			-- (from ANY)

	generator: STRING_8
			-- Name of current object's generating class
			-- (base class of the type of which it is a direct instance)
			-- (from ANY)

	offset_x: INTEGER_32

	offset_y: INTEGER_32

	world: EV_MODEL_WORLD
			-- Figure-world that will be projected.
			-- (from EV_MODEL_PROJECTOR)
	
feature -- Comparison

	frozen deep_equal (some: ANY; other: like arg #1): BOOLEAN
			-- Are `some' and `other' either both void
			-- or attached to isomorphic object structures?
			-- (from ANY)
		ensure -- from ANY
			shallow_implies_deep: standard_equal (some, other) implies Result
			both_or_none_void: (some = Void) implies (Result = (other = Void))
			same_type: (Result and (some /= Void)) implies some.same_type (other)
			symmetric: Result implies deep_equal (other, some)

	frozen equal (some: ANY; other: like arg #1): BOOLEAN
			-- Are `some' and `other' either both void or attached
			-- to objects considered equal?
			-- (from ANY)
		ensure -- from ANY
			definition: Result = (some = Void and other = Void) or else ((some /= Void and other /= Void) and then some.is_equal (other))

	is_equal (other: like Current): BOOLEAN
			-- Is `other' attached to an object considered
			-- equal to current object?
			-- (from ANY)
		require -- from ANY
			other_not_void: other /= Void
		ensure -- from ANY
			symmetric: Result implies other.is_equal (Current)
			consistent: standard_is_equal (other) implies Result

	frozen standard_equal (some: ANY; other: like arg #1): BOOLEAN
			-- Are `some' and `other' either both void or attached to
			-- field-by-field identical objects of the same type?
			-- Always uses default object comparison criterion.
			-- (from ANY)
		ensure -- from ANY
			definition: Result = (some = Void and other = Void) or else ((some /= Void and other /= Void) and then some.standard_is_equal (other))

	frozen standard_is_equal (other: like Current): BOOLEAN
			-- Is `other' attached to an object of the same type
			-- as current object, and field-by-field identical to it?
			-- (from ANY)
		require -- from ANY
			other_not_void: other /= Void
		ensure -- from ANY
			same_type: Result implies same_type (other)
			symmetric: Result implies other.standard_is_equal (Current)
	
feature -- Status report

	conforms_to (other: ANY): BOOLEAN
			-- Does type of current object conform to type
			-- of `other' (as per Eiffel: The Language, chapter 13)?
			-- (from ANY)
		require -- from ANY
			other_not_void: other /= Void

	default_bottom_margin: INTEGER_32 is 20
			-- Default size in pixels of the right side page margin.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	default_left_margin: INTEGER_32 is 20
			-- Default size in pixels of the left side page margin.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	page_height (a_size: INTEGER_32; landscape: BOOLEAN): INTEGER_32
			-- Return the page height in points (1 inch/72)
			-- for the specified page size and orientation.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)
		require -- from EV_POSTSCRIPT_PAGE_CONSTANTS
			valid_size: valid_page_size (a_size)

	page_width (a_size: INTEGER_32; landscape: BOOLEAN): INTEGER_32
			-- Return the page width in points (1 inch/72)
			-- for the specified page size and orientation.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)
		require -- from EV_POSTSCRIPT_PAGE_CONSTANTS
			valid_size: valid_page_size (a_size)

	same_type (other: ANY): BOOLEAN
			-- Is type of current object identical to type of `other'?
			-- (from ANY)
		require -- from ANY
			other_not_void: other /= Void
		ensure -- from ANY
			definition: Result = (conforms_to (other) and other.conforms_to (Current))
	
feature -- Status setting

	set_world (a_world: like world)
			-- Set world to `a_world'.
			-- (from EV_MODEL_PROJECTOR)
		require -- from EV_MODEL_PROJECTOR
			a_world_exists: a_world /= Void
		ensure -- from EV_MODEL_PROJECTOR
			world_assigned: world = a_world
	
feature -- Duplication

	copy (other: like Current)
			-- Update current object using fields of object attached
			-- to `other', so as to yield equal objects.
			-- (from ANY)
		require -- from ANY
			other_not_void: other /= Void
			type_identity: same_type (other)
		ensure -- from ANY
			is_equal: is_equal (other)

	frozen deep_copy (other: like Current)
			-- Effect equivalent to that of:
			--		copy (`other' . deep_twin)
			-- (from ANY)
		require -- from ANY
			other_not_void: other /= Void
		ensure -- from ANY
			deep_equal: deep_equal (Current, other)

	frozen deep_twin: like Current
			-- New object structure recursively duplicated from Current.
			-- (from ANY)
		ensure -- from ANY
			deep_equal: deep_equal (Current, Result)

	frozen standard_copy (other: like Current)
			-- Copy every field of `other' onto corresponding field
			-- of current object.
			-- (from ANY)
		require -- from ANY
			other_not_void: other /= Void
			type_identity: same_type (other)
		ensure -- from ANY
			is_standard_equal: standard_is_equal (other)

	frozen standard_twin: like Current
			-- New object field-by-field identical to `other'.
			-- Always uses default copying semantics.
			-- (from ANY)
		ensure -- from ANY
			standard_twin_not_void: Result /= Void
			equal: standard_equal (Result, Current)

	frozen twin: like Current
			-- New object equal to `Current'
			-- twin calls copy; to change copying/twining semantics, redefine copy.
			-- (from ANY)
		ensure -- from ANY
			twin_not_void: Result /= Void
			is_equal: Result.is_equal (Current)
	
feature -- Basic operations

	frozen default: like Current
			-- Default value of object's type
			-- (from ANY)

	frozen default_pointer: POINTER
			-- Default value of type `POINTER'
			-- (Avoid the need to write `p'.default for
			-- some `p' of type `POINTER'.)
			-- (from ANY)

	default_rescue
			-- Process exception for routines with no Rescue clause.
			-- (Default: do nothing.)
			-- (from ANY)

	frozen do_nothing
			-- Execute a null action.
			-- (from ANY)

	is_projecting: BOOLEAN
			-- Is a project currently being performed?
			-- Then, do not start a new one.
			-- (from EV_MODEL_PROJECTION_ROUTINES)

	project
			-- Make standard projection of world on device.

	register_figure (a_figure: EV_MODEL; a_routine: PROCEDURE [ANY, TUPLE [EV_MODEL]])
			-- Assign `a_routine' for drawing of `a_figure'.
			-- (from EV_MODEL_PROJECTION_ROUTINES)
		require -- from EV_MODEL_PROJECTION_ROUTINES
			a_figure_exists: a_figure /= Void
			a_routine_exists: a_routine /= Void
		ensure -- from EV_MODEL_PROJECTION_ROUTINES
			draw_routines.item (a_figure.draw_id) = a_routine
	
feature -- Implementation

	default_colors: EV_STOCK_COLORS
			-- Once access to `EV_STOCK_COLORS'.
			-- (from EV_MODEL_PROJECTION_ROUTINES)
		require -- from  EV_MODEL_DRAWER
			True
	
feature -- Constants

	a0: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	a1: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	a2: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	a3: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	a4: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	a5: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	a6: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	a7: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	a8: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	a9: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	b0: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	b1: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	b10: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8 and B9.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	b2: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	b3: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	b4: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	b5: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	b6: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	b7: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	b8: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	b9: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	c5envelope: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	comm10envelope: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	dlenvelope: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Folio, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	executive: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	folio: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Executive, Letter, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	ledger: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	legal: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	letter: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Legal, Ledger, Tabloid, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)

	tabloid: INTEGER_32 is unique
			-- Valid page constants.
			-- Was declared in EV_POSTSCRIPT_PAGE_CONSTANTS with other unique constants Comm10envelope, C5envelope, Dlenvelope, Folio, Executive, Letter, Legal, Ledger, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9 and B10.
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)
	
feature -- Contract support

	valid_page_size (a_size: INTEGER_32): BOOLEAN
			-- Is `a_size' a valid page value?
			-- (from EV_POSTSCRIPT_PAGE_CONSTANTS)
	
feature -- Element Change

	set_drawable (a_drawable: like drawable)
			-- Set drawable to `a_drawable'.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWER
			a_drawable_not_void: a_drawable /= Void
		ensure -- from EV_MODEL_DRAWER
			assigned: drawable = a_drawable
	
feature -- Figure drawing

	draw_figure_arc (arc: EV_MODEL_ARC)
			-- Draw standard representation of `arc' to canvas.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWING_ROUTINES
			arc_not_void: arc /= Void

	draw_figure_dot (dot: EV_MODEL_DOT)
			-- Draw standard representation of `dot' to canvas.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWING_ROUTINES
			dot_not_void: dot /= Void

	draw_figure_ellipse (ellipse: EV_MODEL_ELLIPSE)
			-- Draw standard representation of `ellipse' to canvas.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWING_ROUTINES
			ellipse_not_void: ellipse /= Void

	draw_figure_equilateral (eql: EV_MODEL_EQUILATERAL)
			-- Draw standard representation of `eql' to canvas.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWING_ROUTINES
			eql_not_void: eql /= Void

	draw_figure_line (line: EV_MODEL_LINE)
			-- Draw standard representation of `line' to canvas.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWING_ROUTINES
			line_not_void: line /= Void

	draw_figure_parallelogram (parallelogram: EV_MODEL_PARALLELOGRAM)
			-- Draw standad representation of `parallelogram' to canvas.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWING_ROUTINES
			parallelogram_not_void: parallelogram /= Void

	draw_figure_picture (picture: EV_MODEL_PICTURE)
			-- Draw standard representation of `picture' to canvas.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWING_ROUTINES
			picture_not_void: picture /= Void

	draw_figure_pie_slice (slice: EV_MODEL_PIE_SLICE)
			-- Draw standard representation of `slice' to canvas.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWING_ROUTINES
			slice_not_void: slice /= Void

	draw_figure_polygon (polygon: EV_MODEL_POLYGON)
			-- Draw standard representation of `polygon' to canvas.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWING_ROUTINES
			polygon_not_void: polygon /= Void

	draw_figure_polyline (line: EV_MODEL_POLYLINE)
			-- Draw standard representation of `polyline' to canvas.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWING_ROUTINES
			line_not_void: line /= Void

	draw_figure_rectangle (rectangle: EV_MODEL_RECTANGLE)
			-- Draw standard representation of `rectangle' to canvas.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWING_ROUTINES
			rectangle_not_void: rectangle /= Void

	draw_figure_rotated_arc (arc: EV_MODEL_ROTATED_ARC)
			-- Draw standard representation of `arc' to canvas.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWING_ROUTINES
			arc_not_void: arc /= Void

	draw_figure_rotated_ellipse (ellipse: EV_MODEL_ROTATED_ELLIPSE)
			-- Draw standard representation of `ellipse' to canvas.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWING_ROUTINES
			ellipse_not_void: ellipse /= Void

	draw_figure_rotated_pie_slice (slice: EV_MODEL_ROTATED_PIE_SLICE)
			-- Draw standard representation of `slice' to canvas.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWING_ROUTINES
			slice_not_void: slice /= Void

	draw_figure_rounded_parallelogram (f: EV_MODEL_ROUNDED_PARALLELOGRAM)
			-- Draw standart representation of `f' to canvas.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWING_ROUTINES
			parallelogram_not_void: f /= Void

	draw_figure_rounded_rectangle (f: EV_MODEL_ROUNDED_RECTANGLE)
			-- Draw standard representation of `f' to canvas.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWING_ROUTINES
			f_not_void: f /= Void

	draw_figure_star (star: EV_MODEL_STAR)
			-- Draw standard representation of `star' to canvas.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWING_ROUTINES
			star_not_void: star /= Void

	draw_figure_text (text_figure: EV_MODEL_TEXT)
			-- Draw standard representation of `text_figure' to canvas.
			-- (from EV_MODEL_DRAWER)
		require -- from EV_MODEL_DRAWING_ROUTINES
			text_figure_not_void: text_figure /= Void
	
feature -- Output

	io: STD_FILES
			-- Handle to standard file setup
			-- (from ANY)

	out: STRING_8
			-- New string containing terse printable representation
			-- of current object
			-- Was declared in ANY as synonym of tagged_out.
			-- (from ANY)

	print (some: ANY)
			-- Write terse external representation of `some'
			-- on standard output.
			-- (from ANY)

	frozen tagged_out: STRING_8
			-- New string containing terse printable representation
			-- of current object
			-- Was declared in ANY as synonym of out.
			-- (from ANY)
	
feature -- Platform

	operating_environment: OPERATING_ENVIRONMENT
			-- Objects available from the operating system
			-- (from ANY)
	
invariant
		-- from EV_MODEL_PROJECTOR
	world_exists: world /= Void

		-- from ANY
	reflexive_equality: standard_is_equal (Current)
	reflexive_conformance: conforms_to (Current)

		-- from EV_MODEL_DRAWER
	drawable_not_void: drawable /= Void

indexing
	copyright: "Copyright (c) 1984-2006, Eiffel Software and others"
	license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
	source: "[
		Eiffel Software
		356 Storke Road, 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_MODEL_POSTSCRIPT_PROJECTOR