Automatic generation produced by ISE Eiffel
note description: "Rectangular figures with rounded corners that can be rotated. Hint: scaling will not change the radius." legal: "See notice at end of class." status: "See notice at end of class." keywords: "figure, rectangle, rounded, radius" date: "$Date: 2016-07-29 05:54:48 -0800 (Fri, 29 Jul 2016) $" revision: "$Revision: 99061 $" class interface EV_MODEL_ROUNDED_PARALLELOGRAM create default_create -- Create with `radius` 10. require -- from ANY True make_with_points (a_point_a, a_point_b: EV_COORDINATE) -- Create on a_point_a and a_point_b. -- (from EV_MODEL_DOUBLE_POINTED) require -- from EV_MODEL_DOUBLE_POINTED a_point_a_not_void: a_point_a /= Void a_point_b_not_void: a_point_b /= Void make_rectangle (a_x, a_y, a_width, a_height: INTEGER_32) -- Create a EV_FIGURE_PARALELLOGRAM with top left position at (a_x, a_y) -- and `width` a_width and `height` a_height require -- from EV_MODEL_PARALLELOGRAM a_width_positive: a_width >= 0 a_height_positive: a_height >= 0 ensure -- from EV_MODEL_PARALLELOGRAM x_is_center: x = a_x + a_width // 2 y_is_center: y = a_y + a_height // 2 width_equal_a_widht: width = a_width height_equal_a_height: height = a_height make_with_positions (a_point_a_x, a_point_a_y, a_point_b_x, a_point_b_y: INTEGER_32) -- Create on position (a_point_a_x a_point_a_y) and (a_point_b_x, a_point_b_y) -- (from EV_MODEL_DOUBLE_POINTED) feature -- Access angle: REAL_64 -- Upright position is: p1.y=p2.y>=p4.y -- (from EV_MODEL_PARALLELOGRAM) arc_cosine (v: REAL_64): REAL_64 -- Trigonometric arccosine of radian v -- in the range [0, pi]. -- (from DOUBLE_MATH) ensure -- from DOUBLE_MATH instance_free: class arc_sine (v: REAL_64): REAL_64 -- Trigonometric arcsine of radian v -- in the range [-pi/2, +pi/2]. -- (from DOUBLE_MATH) ensure -- from DOUBLE_MATH instance_free: class arc_tangent (v: REAL_64): REAL_64 -- Trigonometric arctangent of radian v -- in the range [-pi/2, +pi/2]. -- (from DOUBLE_MATH) ensure -- from DOUBLE_MATH instance_free: class background_color: detachable EV_COLOR -- Color used to fill Current. -- (from EV_MODEL_CLOSED) ceiling (v: REAL_64): REAL_64 -- Least integral greater than or equal to v. -- (from DOUBLE_MATH) ensure -- from DOUBLE_MATH instance_free: class cosine (v: REAL_64): REAL_64 -- Trigonometric cosine of radian v approximated -- in the range [-pi/4, +pi/4]. -- (from DOUBLE_MATH) ensure -- from DOUBLE_MATH instance_free: class dabs (v: REAL_64): REAL_64 -- Absolute of v. -- (from DOUBLE_MATH) ensure -- from DOUBLE_MATH instance_free: class dashed_line_style: BOOLEAN -- Are lines drawn dashed? -- (from EV_MODEL_ATOMIC) Euler: REAL_64 = 2.7182818284590452353602874713526625 -- Logarithm base -- (from MATH_CONST) exp (x: REAL_64): REAL_64 -- Exponential of v. -- (from DOUBLE_MATH) ensure -- from DOUBLE_MATH instance_free: class floor (v: REAL_64): REAL_64 -- Greatest integral less than or equal to v. -- (from DOUBLE_MATH) ensure -- from DOUBLE_MATH instance_free: class foreground_color: EV_COLOR -- Color of text, lines, etc. -- (from EV_MODEL_ATOMIC) generating_type: TYPE [detachable EV_MODEL_ROUNDED_PARALLELOGRAM] -- Type of current object -- (type of which it is a direct instance) -- (from ANY) ensure -- from ANY generating_type_not_void: Result /= Void generator: STRING_8 -- Name of current object's generating class -- (base class of the type of which it is a direct instance) -- (from ANY) ensure -- from ANY generator_not_void: Result /= Void generator_not_empty: not Result.is_empty group: detachable EV_MODEL_GROUP -- The group Current is part of. Void if Current is -- not part of a group. -- (from EV_MODEL) height: INTEGER_32 -- The `height` of the parallelogram. -- (from EV_MODEL_PARALLELOGRAM) ensure -- from EV_MODEL_PARALLELOGRAM height_positive: height >= 0 id: INTEGER_32 -- Unique id. -- (from EV_MODEL) ensure -- from HASHABLE good_hash_value: Result >= 0 frozen id_object (an_id: INTEGER_32): detachable IDENTIFIED -- Object associated with an_id (void if no such object) -- (from IDENTIFIED) ensure -- from IDENTIFIED consistent: Result = Void or else Result.object_id = an_id is_rotatable: BOOLEAN -- parallelogram is rotatable. -- (from EV_MODEL_PARALLELOGRAM) is_scalable: BOOLEAN -- parallelogram is scalable. -- (from EV_MODEL_PARALLELOGRAM) is_transformable: BOOLEAN -- parallelogram is transformable. -- (from EV_MODEL_PARALLELOGRAM) line_width: INTEGER_32 -- Thickness of lines. -- (from EV_MODEL_ATOMIC) log (v: REAL_64): REAL_64 -- Natural logarithm of v. -- (from DOUBLE_MATH) ensure -- from DOUBLE_MATH instance_free: class log10 (v: REAL_64): REAL_64 -- Base 10 logarithm of v. -- (from DOUBLE_MATH) ensure -- from DOUBLE_MATH instance_free: class log_2 (v: REAL_64): REAL_64 -- Base 2 logarithm of v. -- (from DOUBLE_MATH) ensure -- from DOUBLE_MATH instance_free: class frozen object_id: INTEGER_32 -- Unique for current object in any given session -- (from IDENTIFIED) ensure -- from IDENTIFIED valid_id: Result > 0 implies id_object (Result) = Current pebble: detachable ANY -- Data to be transported by pick and drop mechanism. -- (from EV_MODEL) pebble_function: detachable FUNCTION [detachable ANY] -- Returns data to be transported by pick and drop mechanism. -- When not Void, `pebble` is ignored. -- (from EV_MODEL) Pi: REAL_64 = 3.1415926535897932384626433832795029 -- (from MATH_CONST) Pi_2: REAL_64 = 1.5707963267948966192313216916397514 -- (from MATH_CONST) Pi_4: REAL_64 = 0.7853981633974483096156608458198757 -- (from MATH_CONST) point_a: EV_COORDINATE -- First point of Current. -- (from EV_MODEL_SINGLE_POINTED) ensure -- from EV_MODEL_SINGLE_POINTED result_exists: Result /= Void result_x_equal_point_x: Result.x = point_a_x result_y_eqyal_point_y: Result.y = point_a_y point_a_x: INTEGER_32 -- x position of `point_a`. -- (from EV_MODEL_PARALLELOGRAM) point_a_y: INTEGER_32 -- y position of `point_a`. -- (from EV_MODEL_PARALLELOGRAM) point_b: EV_COORDINATE -- Second point of Current. -- (from EV_MODEL_DOUBLE_POINTED) ensure -- from EV_MODEL_DOUBLE_POINTED result_exists: Result /= Void result_x_equal_point_b_x: Result.x = point_b_x result_y_equal_point_b_y: Result.y = point_b_y point_b_relative: EV_COORDINATE -- `point_b` relative to `group`.point. -- (from EV_MODEL_DOUBLE_POINTED) ensure -- from EV_MODEL_DOUBLE_POINTED result_exists: Result /= Void result_x_equal_point_b_x_relative: Result.x = point_b_x_relative result_y_eqyal_point_b_y_relative: Result.y = point_b_y_relative point_b_x: INTEGER_32 -- x position of `point_b`. -- (from EV_MODEL_PARALLELOGRAM) point_b_x_relative: INTEGER_32 -- horizontal distance between `point_b_x` and `group`.point_x. -- (from EV_MODEL_DOUBLE_POINTED) point_b_y: INTEGER_32 -- y position of `point_b`. -- (from EV_MODEL_PARALLELOGRAM) point_b_y_relative: INTEGER_32 -- vertical distance between `point_b_y` and `group`.point_y. -- (from EV_MODEL_DOUBLE_POINTED) point_count: INTEGER_32 -- Number of points needed to describe Current. -- Without center. -- (from EV_MODEL) require -- from EV_MODEL_SINGLE_POINTED True ensure -- from EV_MODEL correct: Result = point_array.count point_relative: EV_COORDINATE -- point relative to `group`.point. -- (from EV_MODEL_SINGLE_POINTED) ensure -- from EV_MODEL_SINGLE_POINTED result_exists: Result /= Void result_x_equal_point_x_relative: Result.x = point_a_x_relative result_y_eqyal_point_y_relative: Result.y = point_a_y_relative point_a_x_relative: INTEGER_32 -- horizontal distance between point_x and `group`.point_x. -- (from EV_MODEL_SINGLE_POINTED) point_a_y_relative: INTEGER_32 -- vertical distance between point_y and `group`.point_y. -- (from EV_MODEL_SINGLE_POINTED) pointer_style: detachable EV_POINTER_STYLE -- Cursor displayed when pointer is over this figure. -- (from EV_MODEL) radius: INTEGER_32 -- Size in pixels of rounded corners. sine (v: REAL_64): REAL_64 -- Trigonometric sine of radian v approximated -- in range [-pi/4, +pi/4]. -- (from DOUBLE_MATH) ensure -- from DOUBLE_MATH instance_free: class sqrt (v: REAL_64): REAL_64 -- Square root of v. -- (from DOUBLE_MATH) ensure -- from DOUBLE_MATH instance_free: class Sqrt2: REAL_64 = 1.4142135623730950488016887242096981 -- Square root of 2 -- (from MATH_CONST) tangent (v: REAL_64): REAL_64 -- Trigonometric tangent of radian v approximated -- in range [-pi/4, +pi/4]. -- (from DOUBLE_MATH) ensure -- from DOUBLE_MATH instance_free: class target_data_function: detachable FUNCTION [like pebble, EV_PND_TARGET_DATA] -- Function for computing target meta data based on source pebble. -- Primarily used for Pick and Drop target menu. -- (from EV_ABSTRACT_PICK_AND_DROPABLE) note option: stable target_name: detachable READABLE_STRING_GENERAL -- Optional textual name describing Current pick and drop hole. -- (from EV_ABSTRACT_PICK_AND_DROPABLE) note option: stable top_left: EV_COORDINATE -- position of the top left corner. -- (from EV_MODEL_PARALLELOGRAM) width: INTEGER_32 -- The `width` of the parallelogram. -- If you scale a parallelogram or a group that contains -- the parallelogram width may be differend from the width you set -- (from EV_MODEL_PARALLELOGRAM) ensure -- from EV_MODEL_PARALLELOGRAM width_positive: width >= 0 world: detachable EV_MODEL_WORLD -- The world Current is part of. Void if Current is -- not part of a world -- (from EV_MODEL) x: INTEGER_32 -- `x` position of the center on the screen. -- (from EV_MODEL) y: INTEGER_32 -- `y` position of the center on the screen . -- (from EV_MODEL) feature -- Comparison frozen deep_equal (a: detachable ANY; b: like arg #1): BOOLEAN -- Are a and b either both void -- or attached to isomorphic object structures? -- (from ANY) ensure -- from ANY instance_free: class shallow_implies_deep: standard_equal (a, b) implies Result both_or_none_void: (a = Void) implies (Result = (b = Void)) same_type: (Result and (a /= Void)) implies (b /= Void and then a.same_type (b)) symmetric: Result implies deep_equal (b, a) frozen equal (a: detachable ANY; b: like arg #1): BOOLEAN -- Are a and b either both void or attached -- to objects considered equal? -- (from ANY) ensure -- from ANY instance_free: class definition: Result = (a = Void and b = Void) or else ((a /= Void and b /= Void) and then a.is_equal (b)) frozen is_deep_equal alias "≡≡≡" (other: EV_MODEL_ROUNDED_PARALLELOGRAM): BOOLEAN -- Are Current and other attached to isomorphic object structures? -- (from ANY) require -- from ANY other_not_void: other /= Void ensure -- from ANY shallow_implies_deep: standard_is_equal (other) implies Result same_type: Result implies same_type (other) symmetric: Result implies other.is_deep_equal (Current) is_equal (other: EV_MODEL_ROUNDED_PARALLELOGRAM): 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 ~ Current consistent: standard_is_equal (other) implies Result frozen standard_equal (a: detachable ANY; b: like arg #1): BOOLEAN -- Are a and b 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 instance_free: class definition: Result = (a = Void and b = Void) or else ((a /= Void and b /= Void) and then a.standard_is_equal (b)) frozen standard_is_equal alias "≜" (other: EV_MODEL_ROUNDED_PARALLELOGRAM): 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 frozen id_freed: BOOLEAN -- Has Current been removed from the table? -- (from IDENTIFIED) is_filled: BOOLEAN -- Is this figure filled? -- (from EV_MODEL_CLOSED) is_hashable: BOOLEAN -- May current object be hashed? -- (True by default.) -- (from HASHABLE) position_on_figure (ax, ay: INTEGER_32): BOOLEAN -- Is (ax, ay) on this figure? require -- from EV_MODEL True 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 disable_dashed_line_style -- Draw lines solid. -- (from EV_MODEL_ATOMIC) ensure -- from EV_MODEL_ATOMIC dashed_line_style_disabled: not dashed_line_style enable_dashed_line_style -- Draw lines dashed. -- (from EV_MODEL_ATOMIC) ensure -- from EV_MODEL_ATOMIC dashed_line_style_enabled: dashed_line_style remove_background_color -- Do not fill this figure. -- (from EV_MODEL_CLOSED) ensure -- from EV_MODEL_CLOSED background_color_removed: background_color = Void set_background_color (a_color: EV_COLOR) -- Set `background_color` to a_color. -- (from EV_MODEL_CLOSED) require -- from EV_MODEL_CLOSED a_color_exists: a_color /= Void ensure -- from EV_MODEL_CLOSED background_color_set: background_color ~ a_color set_foreground_color (a_color: like foreground_color) -- Assign a_color to `foreground_color`. -- (from EV_MODEL_ATOMIC) require -- from EV_MODEL_ATOMIC a_color_not_void: a_color /= Void ensure -- from EV_MODEL_ATOMIC foreground_color_assigned: foreground_color = a_color set_line_width (a_width: INTEGER_32) -- Assign a_width to `line_width`. -- (from EV_MODEL_ATOMIC) require -- from EV_MODEL_ATOMIC a_width_non_negative: a_width >= 0 ensure -- from EV_MODEL_ATOMIC line_width_assigned: line_width = a_width set_point_b_position_relative (ax, ay: INTEGER_32) -- Set position of `point_b_relative` to (ax, ay). -- (from EV_MODEL_DOUBLE_POINTED) set_point_a_position_relative (ax, ay: INTEGER_32) -- Set position of `point_relative` to (ax, ay). -- (from EV_MODEL_SINGLE_POINTED) set_target_data_function (a_function: FUNCTION [like pebble, EV_PND_TARGET_DATA]) -- Set a_function to compute target meta data based on transport source. -- Overrides any `target_name` set with `set_target_name`. -- (from EV_ABSTRACT_PICK_AND_DROPABLE) require -- from EV_ABSTRACT_PICK_AND_DROPABLE a_function_not_void: a_function /= Void ensure -- from EV_ABSTRACT_PICK_AND_DROPABLE target_data_function_assigned: target_data_function /= Void and then target_data_function.is_equal (a_function) set_target_name (a_name: READABLE_STRING_GENERAL) -- Assign a_name to `target_name`. -- (from EV_ABSTRACT_PICK_AND_DROPABLE) require -- from EV_ABSTRACT_PICK_AND_DROPABLE a_name_not_void: a_name /= Void ensure -- from EV_ABSTRACT_PICK_AND_DROPABLE target_name_assigned: attached target_name as l_target_name and then a_name /= l_target_name and then a_name.same_string (l_target_name) feature -- Element change remove_pebble -- Make `pebble` Void and `pebble_function` `Void, -- Removing transport. -- (from EV_MODEL) ensure -- from EV_ABSTRACT_PICK_AND_DROPABLE pebble_removed: pebble = Void and pebble_function = Void rotate (an_angle: REAL_64) -- Rotate around the center for an_angle. -- (from EV_MODEL) require -- from EV_MODEL is_rotatable: is_rotatable ensure -- from EV_MODEL center_valid: is_center_valid rotate_around (an_angle: REAL_64; ax, ay: INTEGER_32) -- Rotate around (ax, ay) for an_angle. -- (from EV_MODEL) require -- from EV_MODEL is_rotatable: is_rotatable ensure -- from EV_MODEL center_valid: is_center_valid scale (a_scale: REAL_64) -- Scale to x and y direction for a_scale. -- (from EV_MODEL) require -- from EV_MODEL is_scalable: is_scalable a_scale_bigger_zero: a_scale > 0.0 scale_abs (a_scale: REAL_64) -- Scale to x and y direction for a_scale. -- Do not rotate around `angle` first. -- (from EV_MODEL) require -- from EV_MODEL is_scalable: is_scalable a_scale_bigger_zero: a_scale > 0.0 scale_x (a_scale_x: REAL_64) -- Scale to x direction for a_scale_x. -- (from EV_MODEL) require -- from EV_MODEL is_scalable: is_scalable a_scale_x_bigger_zero: a_scale_x > 0.0 scale_x_abs (a_scale_x: REAL_64) -- Scale absolute to x direction for a_scale_x. -- Do not rotate around `angle` first. -- (from EV_MODEL) require -- from EV_MODEL is_scalable: is_scalable a_scale_x_bigger_zero: a_scale_x > 0.0 scale_y (a_scale_y: REAL_64) -- Scale to y direction for a_scale_y. -- (from EV_MODEL) require -- from EV_MODEL is_scalable: is_scalable a_scale_y_bigger_zero: a_scale_y > 0.0 scale_y_abs (a_scale_y: REAL_64) -- Scale to y direction for a_scale_y. -- Do not rotate around `angle` first. -- (from EV_MODEL) require -- from EV_MODEL is_scalable: is_scalable a_scale_y_bigger_zero: a_scale_y > 0.0 set_accept_cursor (a_cursor: detachable like accept_cursor) -- Set a_cursor to be displayed when the screen pointer is over a -- target that accepts `pebble` during pick and drop. -- (from EV_MODEL) ensure -- from EV_ABSTRACT_PICK_AND_DROPABLE accept_cursor_assigned: attached a_cursor as l_accept_cursor implies l_accept_cursor ~ accept_cursor set_deny_cursor (a_cursor: detachable like deny_cursor) -- Set a_cursor to be displayed when the screen pointer is not -- over a valid target. -- (from EV_MODEL) ensure -- from EV_ABSTRACT_PICK_AND_DROPABLE deny_cursor_assigned: attached a_cursor as l_deny_cursor implies l_deny_cursor ~ deny_cursor set_height (a_height: INTEGER_32) -- Set the lenght of the line p1 <-> p2 to a_height require -- from EV_MODEL_PARALLELOGRAM a_height_positive: a_height >= 0 ensure -- from EV_MODEL_PARALLELOGRAM height_set: distance (point_array.item (0).x_precise, point_array.item (0).y_precise, point_array.item (3).x_precise, point_array.item (3).y_precise).rounded = a_height set_pebble (a_pebble: like pebble) -- Assign a_pebble to `pebble`. -- (from EV_MODEL) require -- from EV_ABSTRACT_PICK_AND_DROPABLE a_pebble_not_void: a_pebble /= Void ensure -- from EV_ABSTRACT_PICK_AND_DROPABLE pebble_assigned: pebble = a_pebble set_pebble_function (a_function: attached like pebble_function) -- Set a_function to compute `pebble`. -- (from EV_MODEL) require -- from EV_ABSTRACT_PICK_AND_DROPABLE a_function_not_void: a_function /= Void a_function_takes_two_integer_open_operands: a_function.valid_operands ([1, 1]) ensure -- from EV_ABSTRACT_PICK_AND_DROPABLE pebble_function_assigned: pebble_function = a_function set_point_a_position (ax, ay: INTEGER_32) -- Set position of `point_a` to position (ax, ay). require -- from EV_MODEL_SINGLE_POINTED True set_point_b_position (ax, ay: INTEGER_32) -- Set position of `point_b` to position (ax, ay). require -- from EV_MODEL_DOUBLE_POINTED True set_pointer_style (a_cursor: like pointer_style) -- Assign a_cursor to `pointer_style`. -- (from EV_MODEL) require -- from EV_MODEL a_cursor_not_void: a_cursor /= Void ensure -- from EV_MODEL pointer_style_assigned: pointer_style = a_cursor set_radius (a_radius: INTEGER_32) -- Assign a_radius to `radius`. require a_radius_non_negative: a_radius >= 0 ensure radius_assigned: radius = a_radius set_width (a_width: INTEGER_32) -- Set `width` to a_width. require -- from EV_MODEL_PARALLELOGRAM a_width_positive: a_width >= 0 ensure -- from EV_MODEL_PARALLELOGRAM width_set: distance (point_array.item (0).x_precise, point_array.item (0).y_precise, point_array.item (1).x_precise, point_array.item (1).y_precise).rounded = a_width set_x (a_x: INTEGER_32) -- Set `x` to an_x. -- (from EV_MODEL) ensure -- from EV_MODEL x_set: a_x = x center_valid: is_center_valid set_x_y (a_x, a_y: INTEGER_32) -- Set `x` to a_x and `y` to a_y. -- (from EV_MODEL) ensure -- from EV_MODEL set: a_x = x and a_y = y center_valid: is_center_valid set_y (a_y: INTEGER_32) -- Set `y` to an_y. -- (from EV_MODEL) ensure -- from EV_MODEL y_set: a_y = y center_valid: is_center_valid transform (a_transformation: EV_MODEL_TRANSFORMATION) -- Transform all points in `point_array` using a_transformation. -- You can do any transformation you want. You can -- for example rotate Current around an other point -- than the center. -- (from EV_MODEL) require -- from EV_MODEL a_transformation_not_void: a_transformation /= Void is_transformable: is_transformable feature -- Removal dispose -- Free the entry associated with `object_id` if any -- (from IDENTIFIED) require -- from DISPOSABLE True ensure then -- from IDENTIFIED object_freed: id_freed frozen free_id -- Free the entry associated with `object_id` if any. -- (from IDENTIFIED) ensure -- from IDENTIFIED object_freed: id_freed feature -- Duplication copy (other: EV_MODEL_ROUNDED_PARALLELOGRAM) -- 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: Current ~ other frozen deep_copy (other: EV_MODEL_ROUNDED_PARALLELOGRAM) -- 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: EV_MODEL_ROUNDED_PARALLELOGRAM -- New object structure recursively duplicated from Current. -- (from ANY) ensure -- from ANY deep_twin_not_void: Result /= Void deep_equal: deep_equal (Current, Result) frozen standard_copy (other: EV_MODEL_ROUNDED_PARALLELOGRAM) -- 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: EV_MODEL_ROUNDED_PARALLELOGRAM -- 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: EV_MODEL_ROUNDED_PARALLELOGRAM -- New object equal to Current -- `twin` calls `copy`; to change copying/twinning semantics, redefine `copy`. -- (from ANY) ensure -- from ANY twin_not_void: Result /= Void is_equal: Result ~ Current feature -- Basic operations frozen default: detachable EV_MODEL_ROUNDED_PARALLELOGRAM -- 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) ensure -- from ANY instance_free: class default_rescue -- Process exception for routines with no Rescue clause. -- (Default: do nothing.) -- (from ANY) frozen do_nothing -- Execute a null action. -- (from ANY) ensure -- from ANY instance_free: class feature -- Implementation between (n, a, b: REAL_64): BOOLEAN -- Is n a value between a and b? -- (from EV_MODEL_DOUBLE_MATH) ensure -- from EV_MODEL_DOUBLE_MATH instance_free: class delta_x (angle: REAL_64; length: REAL_64): REAL_64 -- Get dx component of line segment with length and `angle`. -- (from EV_MODEL_DOUBLE_MATH) ensure -- from EV_MODEL_DOUBLE_MATH instance_free: class delta_y (angle: REAL_64; length: REAL_64): REAL_64 -- Get dy component of line segment with length and `angle`. -- (from EV_MODEL_DOUBLE_MATH) ensure -- from EV_MODEL_DOUBLE_MATH instance_free: class distance (x1, y1, x2, y2: REAL_64): REAL_64 -- Calculate distance between (x1, y1) and (x2, y2). -- (from EV_MODEL_DOUBLE_MATH) ensure -- from EV_MODEL_DOUBLE_MATH instance_free: class distance_from_line (x, y, x1, y1, x2, y2: REAL_64): REAL_64 -- Calculate distance between (`x`, `y`) and (x1, y1)-(x2, y2). -- The line is considered to be infinite. -- (from EV_MODEL_DOUBLE_MATH) ensure -- from EV_MODEL_DOUBLE_MATH instance_free: class line_angle (x1, y1, x2, y2: REAL_64): REAL_64 -- Return angle of line from (x1, y1) to (x2, y2) relative to world. -- clockwise. 0.0 is 3 o'clock. -- (from EV_MODEL_DOUBLE_MATH) ensure -- from EV_MODEL_DOUBLE_MATH instance_free: class modulo (a, b: REAL_64): REAL_64 -- a modulo b. -- (from EV_MODEL_DOUBLE_MATH) require -- from EV_MODEL_DOUBLE_MATH divisible: b /= 0.0 ensure -- from EV_MODEL_DOUBLE_MATH in_interval: Result >= 0.0 and Result < b instance_free: class point_on_ellipse (x, y, xc, yc, r1, r2: REAL_64): BOOLEAN -- Is (`x`, `y`) inside specified ellipse? -- (from EV_MODEL_DOUBLE_MATH) ensure -- from EV_MODEL_DOUBLE_MATH equals_point_on_rotated: Result = point_on_rotated_ellipse (x, y, xc, yc, r1, r2, 0.0) instance_free: class point_on_ellipse_boundary (x, y, xc, yc, r1, r2, width: REAL_64): BOOLEAN -- Is (`x`, `y`) on specified ellipse border? -- (from EV_MODEL_DOUBLE_MATH) ensure -- from EV_MODEL_DOUBLE_MATH instance_free: class point_on_line (x, y, x1, y1, x2, y2, width: REAL_64): BOOLEAN -- Is (`x`, `y`) on line from (x2, y2) to (x1, y1) with `width`? -- (from EV_MODEL_DOUBLE_MATH) ensure -- from EV_MODEL_DOUBLE_MATH instance_free: class point_on_polygon (x, y: REAL_64; points: SPECIAL [EV_COORDINATE]): BOOLEAN -- Is (`x`, `y`) contained in polygon with points? -- Based on code by Hanpeter van Vliet. -- (from EV_MODEL_DOUBLE_MATH) ensure -- from EV_MODEL_DOUBLE_MATH instance_free: class point_on_rectangle (x, y, x1, y1, x2, y2: REAL_64): BOOLEAN -- Is (`x`, `y`) inside specified box? -- (from EV_MODEL_DOUBLE_MATH) ensure -- from EV_MODEL_DOUBLE_MATH instance_free: class point_on_rotated_ellipse (x, y, xc, yc, r1, r2, angle: REAL_64): BOOLEAN -- Is ('x', `y`) inside specified ellipse? -- (from EV_MODEL_DOUBLE_MATH) ensure -- from EV_MODEL_DOUBLE_MATH instance_free: class point_on_rotated_ellipse_boundary (x, y, xc, yc, r1, r2, angle, width: REAL_64): BOOLEAN -- Is (`x`, `y`) on specified ellipse border? -- (from EV_MODEL_DOUBLE_MATH) ensure -- from EV_MODEL_DOUBLE_MATH instance_free: class point_on_segment (x, y, x1, y1, x2, y2, width: REAL_64): BOOLEAN -- Is (`x`, `y`) on segment [(x2, y2), (x1, y1)] with `width`? -- (from EV_MODEL_DOUBLE_MATH) ensure -- from EV_MODEL_DOUBLE_MATH instance_free: class feature -- Action sequences conforming_pick_actions: EV_NOTIFY_ACTION_SEQUENCE -- Actions to be performed when a pebble that fits this hole is -- picked up from another source. -- (when drop_actions.accepts_pebble (pebble)) -- (from EV_MODEL) drop_actions: EV_PND_ACTION_SEQUENCE -- Actions to take when pick and drop transport drops on Current. -- (from EV_MODEL) pick_actions: EV_PND_START_ACTION_SEQUENCE -- Actions to be performed when `pebble` is picked up. -- (from EV_MODEL) pointer_button_press_actions: EV_POINTER_BUTTON_ACTION_SEQUENCE -- Actions to be performed when screen pointer button is pressed. -- (from EV_MODEL) pointer_button_release_actions: EV_POINTER_BUTTON_ACTION_SEQUENCE -- Actions to be performed when screen pointer button is released. -- (from EV_MODEL) pointer_double_press_actions: EV_POINTER_BUTTON_ACTION_SEQUENCE -- Actions to be performed when screen pointer is double clicked. -- (from EV_MODEL) pointer_enter_actions: EV_NOTIFY_ACTION_SEQUENCE -- Actions to be performed when screen pointer enters widget. -- (from EV_MODEL) pointer_leave_actions: EV_NOTIFY_ACTION_SEQUENCE -- Actions to be performed when screen pointer leaves widget. -- (from EV_MODEL) pointer_motion_actions: EV_POINTER_MOTION_ACTION_SEQUENCE -- Actions to be performed when screen pointer moves. -- (from EV_MODEL) feature -- Events bounding_box: EV_RECTANGLE -- Smallest orthogonal rectangular area Current fits in. -- (from EV_MODEL_ATOMIC) ensure -- from EV_MODEL result_not_void: Result /= Void internal_is_twin: internal_bounding_box /= Result update_rectangle_to_bounding_box (a_bbox: EV_RECTANGLE) -- Update a_bbox to match `bounding_box` of Current. -- (from EV_MODEL) feature -- Output Io: STD_FILES -- Handle to standard file setup -- (from ANY) ensure -- from ANY instance_free: class io_not_void: Result /= Void out: STRING_8 -- New string containing terse printable representation -- of current object -- (from ANY) ensure -- from ANY out_not_void: Result /= Void print (o: detachable ANY) -- Write terse external representation of o -- on standard output. -- (from ANY) ensure -- from ANY instance_free: class frozen tagged_out: STRING_8 -- New string containing terse printable representation -- of current object -- (from ANY) ensure -- from ANY tagged_out_not_void: Result /= Void feature -- Platform Operating_environment: OPERATING_ENVIRONMENT -- Objects available from the operating system -- (from ANY) ensure -- from ANY instance_free: class operating_environment_not_void: Result /= Void feature -- Status Report accept_cursor: EV_POINTER_STYLE -- Accept cursor set by user. -- To be displayed when the screen pointer is over a target that accepts -- `pebble` during pick and drop. -- (from EV_MODEL) are_events_sent_to_group: BOOLEAN -- Are events for `pointer_motion_actions`, `pointer_button_press_actions`, -- `pointer_double_press_actions`, `pointer_button_release_actions` -- `pointer_enter_actions` and `pointer_leave_actions` send to Currents -- group (if any) even if Current catch the event. (Default True). -- (from EV_MODEL) deny_cursor: EV_POINTER_STYLE -- Deny cursor set by user. -- To be displayed when the screen pointer is not over a valid target. -- (from EV_MODEL) has_capture: BOOLEAN -- Are all events sent to Current? -- (from EV_MODEL) is_center_valid: BOOLEAN -- Is the position of the center valid? -- (from EV_MODEL) is_in_group: BOOLEAN -- Is Current part of a group? -- (from EV_MODEL) ensure -- from EV_MODEL group_defines_is_in_group: Result = (group /= Void) is_in_world: BOOLEAN -- Is Current part of a world? -- (from EV_MODEL) ensure -- from EV_MODEL world_defines_is_in_world: Result = (world /= Void) is_sensitive: BOOLEAN -- Is object sensitive to user input? -- (from EV_MODEL) is_show_requested: BOOLEAN -- Will Current be displayed when its parent is? -- (from EV_MODEL) feature -- Status settings disable_capture -- Disable grab of all events on `world`. -- (from EV_MODEL) require -- from EV_MODEL in_world: world /= Void has_capture: has_capture ensure -- from EV_MODEL capture_released: not has_capture disable_events_sended_to_group -- Set `are_events_sent_to_group` to False. -- (from EV_MODEL) ensure -- from EV_MODEL events_blocked: not are_events_sent_to_group disable_sensitive -- Make object non-sensitive to user input. -- (from EV_MODEL) ensure -- from EV_MODEL insensitive_requested: not internal_is_sensitive enable_capture -- Grab all mouse events for `world`. -- (from EV_MODEL) require -- from EV_MODEL in_world: world /= Void ensure -- from EV_MODEL capture_set: has_capture enable_events_sended_to_group -- Set `are_events_sent_to_group` to True. -- (from EV_MODEL) ensure -- from EV_MODEL events_sended_to_group: are_events_sent_to_group enable_sensitive -- Make object sensitive to user input. -- (from EV_MODEL) ensure -- from EV_MODEL sensitive_requested: internal_is_sensitive hide -- Request that Current not be displayed even when its `group` is. -- (from EV_MODEL) ensure -- from EV_MODEL not_is_show_requested: not is_show_requested show -- Request that Current be displayed when its `group` is. -- True by default. -- (from EV_MODEL) ensure -- from EV_MODEL is_show_requested: is_show_requested feature -- Visitor project (a_projector: EV_MODEL_DRAWING_ROUTINES) -- Project Current onto a_projector. require -- from EV_MODEL True feature --{EV_FIGURE} -- Status settings center_invalidate -- The position of the center may have changed. -- (from EV_MODEL) invariant radius_non_negative: radius >= 0 -- from EV_MODEL_PARALLELOGRAM width_positive: width >= 0 height_positive: height >= 0 -- from EV_MODEL_ATOMIC foreground_color_exists: foreground_color /= Void line_width_non_negative: line_width >= 0 -- from EV_MODEL point_array_exists: point_array /= Void center_exists: center /= Void x_is_center_x: is_center_valid implies x = center.x y_is_center_y: is_center_valid implies y = center.y all_points_exist: all_points_exist (point_array) projection_matrix_not_void: projection_matrix /= Void is_transfomable_implies_rotatable_and_scalable: is_transformable implies (is_rotatable and is_scalable) -- from ANY reflexive_equality: standard_is_equal (Current) reflexive_conformance: conforms_to (Current) note copyright: "Copyright (c) 1984-2016, 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_MODEL_ROUNDED_PARALLELOGRAM -- Generated by Eiffel Studio --
For more details: eiffel.org