This commit is contained in:
Jocelyn Fiat
2024-06-17 09:09:33 +02:00
commit 6dde6425c2
560 changed files with 81728 additions and 0 deletions

View File

@@ -0,0 +1,204 @@
note
description: "[
A command to cause a {ATTACK_UNIT} to join another as a task force,
If Current `is_task_force' already and make is called with `a_transfer'
set to true it will first leave its current task force before joining
the other; if `a_transfer' is false, all the units in Current's force
will join the other.
]"
author: "Jimmy J. Johnson"
class
JOIN_TASK_FORCE_COMMAND
inherit
VITP_COMMAND
redefine
-- default_create,
text,
execute,
undo
end
-- LOCATION_CONSTANTS
-- undefine
-- default_create
-- end
-- ATTACK_UNIT_CONSTANTS -- needed for `Default_ship' in `default_create'
-- undefine
-- default_create
-- end
create
-- default_create,
make
feature {NONE} -- Initialization
-- default_create
-- -- Create an instance
-- do
-- Precursor {VITP_COMMAND}
-- create saved_units.make
-- unit := Default_ship
-- other_unit := Default_ship
-- end
make (a_unit: like unit; a_other_unit: like unit; a_transfer: BOOLEAN)
-- Initialize a command that causes `a_unit' to join `a_other_unit' as a task_force
-- If `a_transfer' then `a_unit' leaves its task force before joining `a_other_unit'.
require
unit_exists: a_unit /= Void
other_exists: a_other_unit /= Void
unit_not_submarine: not attached {SUBMARINE} a_unit
other_not_submarine: not attached {SUBMARINE} a_other_unit
not_same_task_force: (a_unit.is_task_force and a_other_unit.is_task_force) implies
a_unit.task_force /= a_other_unit.task_force
local
tf: TASK_FORCE
i: INTEGER
do
default_create
create saved_units.make
is_transferring := a_transfer
unit := a_unit
other_unit := a_other_unit
-- If both units comprise a task force, then must mark so the units
-- comprising the task force of `unit' are saved for undo purposes.
if a_other_unit.is_task_force then
if a_unit.is_task_force then
if is_transferring then
saved_other_unit_imp := some_other_unit_in_task_force
else
is_two_task_forces := true
tf := a_unit.task_force
from i := 1
until i > tf.count
loop
-- Save units to be removed from `other_unit' on `undo'
saved_units.extend (tf.i_th (i))
i := i + 1
end
end
end
end
affected_objects.extend (unit.game)
end
feature -- Access
text: STRING
-- Description of the command
do
Result := "COMMAND: Join Task Force -- "+ unit.name + " joins "
if other_unit.is_task_force then
Result := Result + other_unit.task_force.first.name
else
Result := Result + other_unit.name
end
end
unit: ATTACK_UNIT
-- The unit to be moved
other_unit: ATTACK_UNIT
-- The other unit to which `unit' is to be joined as a task force
feature -- Basic operations
execute
-- Perform the action
do
Precursor {VITP_COMMAND}
if is_transferring then
unit.leave_force
end
unit.join_force (other_unit)
end
undo
-- Reverse the effects of executing the command
local
m1, m2: detachable ATTACK_UNIT
do
Precursor {VITP_COMMAND}
-- Removed the saved_units from the task force
from saved_units.start
until saved_units.exhausted
loop
saved_units.item.leave_force
saved_units.forth
end
unit.leave_force
-- Restore the saved units to their own task force
if is_transferring then
unit.join_force (saved_other_unit)
else
-- Must restore all the units to their own task force
check
multiple_units: saved_units.count >= 2
-- because it would not have been a task force during creation,
-- leading to creation and saving of the list of units
end
from
saved_units.start
m1 := saved_units.first
saved_units.forth
until saved_units.exhausted
loop
m2 := saved_units.item
m2.join_force (m1)
saved_units.forth
end
check
unit.task_force /= other_unit.task_force
-- because original task force was restored
end
end
end
feature -- Status report
is_transferring: BOOLEAN
-- Is `unit' being transferred out of its task force?
is_two_task_forces: BOOLEAN
-- Will the command, at creation, join two task forces?
feature {NONE} -- Implementation
some_other_unit_in_task_force: ATTACK_UNIT
-- A unit other than `unit' that is in the `task_force' of `unit'
require
is_task_force: unit.is_task_force
local
tf: TASK_FORCE
i: INTEGER
do
tf := unit.task_force
Result := tf.i_th (1)
from i := 1
until Result /= unit
loop
Result := tf.i_th (i)
i := i + 1
end
end
saved_other_unit: ATTACK_UNIT
-- In case we need to restore during an undo
do
check attached saved_other_unit_imp as ou then
Result := ou
end
end
saved_other_unit_imp: detachable ATTACK_UNIT
-- In case we need to restore during an undo
saved_units: LINKED_LIST [ATTACK_UNIT]
-- Used during undo when `unit' was a task force
end

View File

@@ -0,0 +1,120 @@
note
description: "[
A {VITP_COMMAND} that removes a unit from its current task
force and changes the unit's position and location.
]"
author: "Jimmy J. Johnson"
class
LEAVE_TASK_FORCE_AND_MOVE_COMMAND
inherit
VITP_COMMAND
redefine
-- default_create,
text,
execute,
undo
end
create
-- default_create,
make
feature {NONE} -- Initialization
-- default_create
-- -- Create an instance
-- do
-- Precursor {VITP_COMMAND}
-- create leave_command
-- create reposition_command
-- create move_command
-- end
make (a_unit: like unit; a_position: like position; a_location: LOCATION)
-- Initialize a command that can reposition `a_unit' to `a_position'
-- and move it to `a_location'.
require
unit_exists: a_unit /= Void
position_exists: a_position /= Void
location_exists: a_location /= Void
do
default_create
create leave_command.make (a_unit)
create reposition_command.make (a_unit, a_position)
create move_command.make (a_unit, a_location)
end
feature -- Access
text: STRING
-- Description of the command
do
Result := "COMMAND: Leave Task Force & Move -- "+ unit.name + " from " + old_location.name
Result := Result + " to " + location.name
end
unit: ATTACK_UNIT
-- The unit that this command operates on
do
Result := leave_command.unit
end
position: VITP_POSITION
-- The position to which `unit' is to be moved
do
Result := reposition_command.position
end
location: LOCATION
-- The location to which `unit' is to be moved
do
Result := move_command.location
end
old_position: VITP_POSITION
-- The position from which `unit' was moved
do
Result := reposition_command.old_position
end
old_location: LOCATION
-- The locatiopn from which `unit' was moved
do
Result := move_command.old_location
end
feature -- Basic operations
execute
-- Perform the action
do
Precursor {VITP_COMMAND}
leave_command.execute
move_command.execute
reposition_command.execute
end
undo
-- Reverse the effects of executing the command
do
Precursor {VITP_COMMAND}
reposition_command.undo
move_command.undo
leave_command.undo
end
feature {NONE} -- Implementation
leave_command: LEAVE_TASK_FORCE_COMMAND
-- Command whose execution removes the unit from its task force
reposition_command: REPOSITION_COMMAND
-- Command whose execution changes the unit's `position'
move_command: MOVE_COMMAND
-- Command whose execution changes the unit's `location'.
end

View File

@@ -0,0 +1,99 @@
note
description: "[
A {VITP_COMMAND} that removes a unit from its current task force
and changes the unit's `position'.
]"
author: "Jimmy J. Johnson"
class
LEAVE_TASK_FORCE_AND_REPOSITION_COMMAND
inherit
VITP_COMMAND
redefine
-- default_create,
text,
execute,
undo
end
create
-- default_create,
make
feature {NONE} -- Initialization
-- default_create
-- -- Create an instance
-- do
-- Precursor {VITP_COMMAND}
-- create leave_command
-- create reposition_command
-- end
make (a_unit: like unit; a_position: like position)
-- Initialize a command that can reposition `a_unit' to `a_position'
require
unit_exists: a_unit /= Void
location_exists: a_position /= Void
do
default_create
create leave_command.make (a_unit)
create reposition_command.make (a_unit, a_position)
end
feature -- Access
text: STRING
-- Description of the command
do
Result := "COMMAND: Leave Task Force & Reposition -- "+ unit.name + " from " + old_position.out
Result := Result + " to " + position.out
end
unit: ATTACK_UNIT
-- The unit that this command operates on
do
Result := leave_command.unit
end
position: VITP_POSITION
-- The position to which `unit' is to be moved
do
Result := reposition_command.position
end
old_position: VITP_POSITION
-- The position from which `unit' was moved
do
Result := reposition_command.old_position
end
feature -- Basic operations
execute
-- Perform the action
do
Precursor {VITP_COMMAND}
leave_command.execute
reposition_command.execute
end
undo
-- Reverse the effects of executing the command
do
Precursor {VITP_COMMAND}
reposition_command.undo
leave_command.undo
end
feature {NONE} -- Implementation
leave_command: LEAVE_TASK_FORCE_COMMAND
-- Command whose execution removes the unit from its task force
reposition_command: REPOSITION_COMMAND
-- Command whose execution changes the units `position'
end

View File

@@ -0,0 +1,101 @@
note
description: "[
A command to cause a {ATTACK_UNIT} to join another as a task force,
If Current `is_task_force' already and make is called with `a_transfer'
set to true it will first leave its current task force before joining
the other; if `a_transfer' is false, all the units in Current's force
will join the other.
]"
author: "Jimmy J. Johnson"
class
LEAVE_TASK_FORCE_COMMAND
inherit
VITP_COMMAND
redefine
-- default_create,
text,
execute,
undo
end
-- LOCATION_CONSTANTS
-- undefine
-- default_create
-- end
-- ATTACK_UNIT_CONSTANTS -- needed for `Default_ship' in `default_create'
-- undefine
-- default_create
-- end
create
-- default_create,
make
feature {NONE} -- Initialization
-- default_create
-- -- Create an instance
-- do
-- Precursor {VITP_COMMAND}
-- unit := Default_ship
-- saved_unit := Default_ship
-- task_force_name := "No name: (from {LEAVE_TASK_FORCE_COMMAND}.default_create"
-- end
make (a_unit: like unit)
-- Initialize a command that causes `a_unit' to leave its current task force.
require
unit_exists: a_unit /= Void
unit_not_submarine: not attached {SUBMARINE} a_unit
is_task_force: a_unit.is_task_force
do
default_create
unit := a_unit
task_force_name := unit.task_force.name
saved_unit := unit.task_force.i_th(1)
if saved_unit = unit then
saved_unit := unit.task_force.i_th (2)
end
affected_objects.extend (unit.game)
end
feature -- Access
text: STRING
-- Description of the command
do
Result := "COMMAND: Leave Task Force -- "+ unit.name + " leaves " + task_force_name
end
unit: ATTACK_UNIT
-- The unit to be moved
task_force_name: STRING
-- The name of the task force that `unit' leaves
feature -- Basic operations
execute
-- Perform the action
do
Precursor {VITP_COMMAND}
unit.leave_force
end
undo
-- Reverse the effects of executing the command
do
Precursor {VITP_COMMAND}
unit.join_force (saved_unit)
end
feature {NONE} -- Implementation
saved_unit: ATTACK_UNIT
-- Must save a unit from the Current task force in case of `undo'
end

View File

@@ -0,0 +1,94 @@
note
description: "[
Command used to move widgets in VITP
]"
author: "Jimmy J. Johnson"
class
MOVE_COMMAND
inherit
VITP_COMMAND
redefine
-- default_create,
text,
execute,
undo
end
-- LOCATION_CONSTANTS
-- undefine
-- default_create
-- end
-- ATTACK_UNIT_CONSTANTS
-- undefine
-- default_create
-- end
create
-- default_create,
make
feature {NONE} -- Initialization
-- default_create
-- -- Create an instance
-- do
-- Precursor {VITP_COMMAND}
-- unit := Default_ship
-- location := Still_in_box
-- old_location := Still_in_box
-- end
make (a_unit: like unit; a_location: like location)
-- Initialize a command that can move `a_unit' to `a_to_location'
require
unit_exists: a_unit /= Void
location_exists: a_location /= Void
do
default_create
unit := a_unit
location := a_location
old_location := a_unit.game.still_in_box
affected_objects.extend (unit)
end
feature -- Access
text: STRING
-- Description of the command
do
Result := "COMMAND: Move -- "+ unit.name + " from " + old_location.name + " to " + location.name
end
unit: ATTACK_UNIT
-- The unit to be moved
location: LOCATION
-- The location to which `unit' is to be moved
old_location: LOCATION
-- The location from which `unit' was moved
feature -- Basic operations
execute
-- Perform the action
do
Precursor {VITP_COMMAND}
old_location := unit.location
unit.set_location (location)
end
undo
-- Reverse the effects of executing the command
do
Precursor {VITP_COMMAND}
unit.set_location (old_location)
end
feature -- Status report
end

View File

@@ -0,0 +1,95 @@
note
description: "[
Command for changing the `home_base' of units.
]"
author: "Jimmy J. Johnson"
class
REBASE_COMMAND
inherit
VITP_COMMAND
redefine
-- default_create,
text,
execute,
undo
end
-- LOCATION_CONSTANTS
-- undefine
-- default_create
-- end
-- ATTACK_UNIT_CONSTANTS
-- undefine
-- default_create
-- end
create
-- default_create,
make
feature {NONE} -- Initialization
-- default_create
-- -- Create an instance
-- do
-- Precursor {VITP_COMMAND}
-- unit := Default_ship
-- -- Just pick a port
-- port := Attu
-- old_port := Attu
-- end
make (a_unit: like unit; a_port: like port)
-- Initialize a command that can change the `home_port of `a_unit'
-- to `a_port'
require
unit_exists: a_unit /= Void
port_exists: a_port /= Void
do
default_create
unit := a_unit
port := a_port
old_port := a_port
affected_objects.extend (unit)
end
feature -- Access
text: STRING
-- Description of the command
do
Result := "COMMAND: Rebase -- "+ unit.name + " from " + old_port.name + " to " + port.name
end
unit: ATTACK_UNIT
-- The unit to be moved
port: PORT
-- The port to which `unit' is to be rebased
old_port: PORT
-- The port from which `unit' was rebased
feature -- Basic operations
execute
-- Perform the action
do
Precursor {VITP_COMMAND}
old_port := unit.home_port
unit.set_home_port (port)
end
undo
-- Reverse the effects of executing the command
do
Precursor {VITP_COMMAND}
unit.set_home_port (old_port)
end
end

View File

@@ -0,0 +1,171 @@
note
description: "[
Command for moving groups of ships from the turn card to the board.
]"
author: "Jimmy J. Johnson"
class
REINFORCE_COMMAND
inherit
VITP_COMMAND
redefine
text,
execute,
undo,
is_executable
end
create
make
feature {NONE} -- Initialization
make (a_game: VITP_GAME)
-- Create an instance
do
default_create
create moves.make
create repositions.make
create joins.make
create rebasings.make
vitp_game := a_game
affected_objects.extend (a_game)
end
feature -- Access
vitp_game: VITP_GAME
-- The game in which this command executes.
text: STRING
-- Description of the command
do
Result := "Reinforce"
end
feature -- Basic operations
execute
-- Perform the action
-- Multiple ships come on as a task force, multiple LBA come
-- on together, as do multiple amphibious units.
local
sop: VITP_SEQUENCE_OF_PLAY
do
Precursor {VITP_COMMAND}
-- Get the ships
sop := vitp_game.sequence_of_play
if sop.player = {NATIONALITY_CONSTANTS}.japanese then
place_units (vitp_game.arriving_japanese_ships (sop.turn))
place_units (vitp_game.arriving_japanese_air_units (sop.turn))
place_units (vitp_game.arriving_japanese_amphibious_units (sop.turn))
place_units (vitp_game.arriving_japanese_submarines (sop.turn))
else
place_units (vitp_game.arriving_allied_ships (sop.turn))
place_units (vitp_game.arriving_allied_air_units (sop.turn))
place_units (vitp_game.arriving_allied_amphibious_units (sop.turn))
place_units (vitp_game.arriving_allied_submarines (sop.turn))
end
end
undo
-- Reverse the effects of executing the command
do
Precursor {VITP_COMMAND}
from joins.start
until joins.after
loop
joins.item.undo
joins.forth
end
from repositions.start
until repositions.after
loop
repositions.item.undo
repositions.forth
end
from moves.start
until moves.after
loop
moves.item.undo
moves.forth
end
end
feature -- Status report
is_executable: BOOLEAN
-- Can the command be executed?
local
sop: VITP_SEQUENCE_OF_PLAY
do
sop := vitp_game.sequence_of_play
Result := Precursor {VITP_COMMAND} and
sop.is_reinforcement_step
end
moves: LINKED_LIST [MOVE_COMMAND]
-- List of commands that move all the reinforcements
repositions: LINKED_LIST [REPOSITION_COMMAND]
-- List of commands that change the position of the reinforcements
rebasings: LINKED_LIST [REBASE_COMMAND]
-- List of commands that change the `home_port' of the reinforcement
joins: LINKED_LIST [JOIN_TASK_FORCE_COMMAND]
-- List of commands that cause units to form a task force
feature {NONE} -- Implementation
place_units (a_group: VITP_TABLE [ATTACK_UNIT])
-- Get `a_group' [i.e. a unit type] and place in game
require
group_exists: a_group /= Void
local
sop: VITP_SEQUENCE_OF_PLAY
u, u2: ATTACK_UNIT
tab: VITP_TABLE [ATTACK_UNIT]
move_com: MOVE_COMMAND
pos_com: REPOSITION_COMMAND
rebase_com: REBASE_COMMAND
join_com: JOIN_TASK_FORCE_COMMAND
ht: HASH_TABLE [LINKED_LIST [ATTACK_UNIT], LOCATION] -- units entering given location
u_list: LINKED_LIST [ATTACK_UNIT]
do
sop := vitp_game.sequence_of_play
create ht.make (100)
tab := vitp_game.turn_x_units (sop.turn, a_group)
from tab.start
until tab.after
loop
u := tab.item_for_iteration
create move_com.make (u, u.arrival_location)
create pos_com.make (u, u.arrival_position)
create rebase_com.make (u, u.arrival_port)
moves.extend (move_com)
repositions.extend (pos_com)
rebasings.extend (rebase_com)
move_com.execute
pos_com.execute
rebase_com.execute
if ht.has (u.arrival_location) then
check attached {LINKED_LIST [ATTACK_UNIT]} ht.item (u.arrival_location) as otl_list then
u2 := otl_list.first
create join_com.make (u, u2, false)
joins.extend (join_com)
join_com.execute
end
else
create u_list.make
u_list.extend (u)
ht.extend (u_list, u.arrival_location)
end
tab.forth
end
end
end

View File

@@ -0,0 +1,96 @@
note
description: "[
A {VITP_COMMAND} that changes the `position' of a unit.
]"
author: "Jimmy J. Johnson"
class
REPOSITION_COMMAND
inherit
VITP_COMMAND
redefine
-- default_create,
text,
execute,
undo
end
create
-- default_create,
make
feature {NONE} -- Initialization
-- default_create
-- -- Create an instance
-- do
-- Precursor {VITP_COMMAND}
-- unit := Default_ship
-- create old_position.set_xy (0, 0)
-- create position.set_xy (0, 0)
-- end
make (a_unit: like unit; a_position: like position)
-- Initialize a command that can reposition `a_unit' to `a_position'
require
unit_exists: a_unit /= Void
location_exists: a_position /= Void
do
default_create
unit := a_unit
-- unit.set_position (a_position)
create old_position.set_xy (0, 0)
create position.set_xy (a_position.longitude, a_position.latitude)
end
feature -- Access
text: STRING
-- Description of the command
do
Result := "COMMAND: Reposition -- "+ unit.name + " from " + old_position.out
Result := Result + " to " + position.out
end
unit: ATTACK_UNIT
-- The unit to be moved
position: VITP_POSITION
-- The position to which `unit' is to be moved
old_position: VITP_POSITION
-- The position from which `unit' was moved
feature -- Basic operations
execute
-- Perform the action
local
i: INTEGER
do
Precursor {VITP_COMMAND}
old_position := unit.position
if unit.is_task_force then
from i := 1
until i > unit.task_force.count
loop
unit.task_force.i_th (i).set_position (position)
i := i + 1
end
else
unit.set_position (position)
end
end
undo
-- Reverse the effects of executing the command
do
Precursor {VITP_COMMAND}
unit.set_position (old_position)
end
feature -- Status report
end

View File

@@ -0,0 +1,59 @@
note
description: "[
A {JJ_COMMAND} applicable to the VITP game
See {GAME_SEQUENCE} for explanation of "phase" and "stage".
]"
author: "Jimmy J. Johnson"
deferred class
VITP_COMMAND
inherit
JJ_COMMAND
redefine
is_executable,
execute,
undo
end
feature -- Access
feature -- Status report
is_executable: BOOLEAN
-- Can the command be executed?
do
Result := Precursor {JJ_COMMAND} and is_allowed_by_sop
end
is_allowed_by_sop: BOOLEAN
-- Can the command of this type be executed at this phase
-- in the game play? The command may not be completely
-- ready for execution, but if it were, execution would
-- not be vetoed by the sequence of play.
do
Result := True
end
feature -- Basic operations
execute
-- Perform the actions
do
Precursor {JJ_COMMAND}
io.put_string ("{VITP_COMMAND}.execute: ")
io.put_string (text)
io.new_line
end
undo
-- Perform the actions
do
Precursor {JJ_COMMAND}
io.put_string ("{VITP_COMMAND}.undo: ")
io.put_string (text)
io.new_line
end
end

View File

@@ -0,0 +1,189 @@
note
description: "[
Shared widget constants for the VITP game.
Values are in millimeters as measured on the actual game board.
]"
author: "Jimmy J. Johnson"
class
FONT_AND_COLOR_CONSTANTS
feature -- Access
-- Default_line_width: INTEGER = 1
Land_boundary_width: INTEGER = 1
Port_boundary_width: INTEGER = 2
Sea_boundary_width: INTEGER = 4
-- Set this big for creation and then scale down
unit_widget_size: INTEGER = 200
air_unit_widget_size: INTEGER = 160
unit_name_font_size: INTEGER = 40
unit_speed_font_size: INTEGER = 60
unit_air_font_size: INTEGER = 50
air_unit_font_size: INTEGER = 50
feature -- fonts
Big_test_font: EV_FONT
once
create Result
Result.set_height (150)
end
Default_font: EV_FONT
once
create Result
Result.set_height (12)
end
Port_font: EV_FONT
-- The font to use for port names
once
create Result
Result.set_height (4)
end
Major_port_font: EV_FONT
-- The font to use for the name of major ports
once
create Result
Result.set_height (6)
Result.set_weight ({EV_FONT_CONSTANTS}.Weight_bold)
end
Sea_area_font: EV_FONT
-- The base font to use for text in sea areas
once
create Result
Result.set_family ({EV_FONT_CONSTANTS}.family_sans)
Result.set_height (7)
Result.set_weight ({EV_FONT_CONSTANTS}.Weight_bold)
Result.set_shape ({EV_FONT_CONSTANTS}.Shape_italic)
end
Subtext_font: EV_FONT
-- Text to use for line of text under the sea area names
once
create Result
Result.set_height (3)
end
POC_font: EV_FONT
-- Font for the POC numbers in the sea areas
once
create Result
Result.set_height (3)
Result.set_weight ({EV_FONT_CONSTANTS}.Weight_bold)
end
unit_name_font: EV_FONT
-- Font for the ship name that is on the tiles
once
create Result
Result.set_height (unit_name_font_size)
end
unit_speed_font: EV_FONT
-- Font for the ship's gunnery, armor, and speed factors
-- when placed on a ship widget
once
create Result
Result.set_height (unit_speed_font_size)
end
unit_air_font: EV_FONT
-- Font for the ship's air attack factor
once
create Result
Result.set_height (unit_air_font_size)
Result.set_weight ({EV_FONT_CONSTANTS}.Weight_bold)
end
air_unit_font: EV_FONT
-- Font for the air unit's attack factors
once
create Result
Result.set_height (air_unit_font_size)
-- Result.set_weight ({EV_FONT_CONSTANTS}.Weight_bold)
end
feature -- Colors
lightened (a_color: EV_COLOR; a_value: REAL): EV_COLOR
-- A new color produced by multiplying by `a_value', that "redestributes
-- excess [rbg] values to keep the hue intact."
-- See https://stackoverflow.com/questions/141855/programmatically-lighten-a-color
local
r, g, b: REAL
m: REAL
thres: REAL
tot, x, gray: REAL
do
create Result
thres := 1.0
r := a_color.red * a_value
g := a_color.green * a_value
b := a_color.blue * a_value
m := r.max (g.max (b))
if m <= thres then
Result.set_rgb (r, g, b)
else
tot := r + g + b
if tot >= 3 * thres then
Result.set_rgb (thres, thres, thres)
else
x := (3 * thres - tot) / (3 * m - tot)
gray := thres - x * m
Result.set_rgb (gray + x * r, gray + x * g, gray + x * b)
end
end
end
White: EV_COLOR once create Result.make_with_rgb (1.0, 1.0, 1.0) end
Black: EV_COLOR once create Result.make_with_rgb (0.0, 0.0, 0.0) end
Dark_grey: EV_COLOR once create Result.make_with_rgb (0.3, 0.3, 0.3) end
Medium_grey: EV_COLOR once create Result.make_with_rgb (0.4, 0.4, 0.4) end
Light_grey: EV_COLOR once create Result.make_with_rgb (0.95, 0.95, 0.95) end
Silver: EV_COLOR once create Result.make_with_rgb (0.620 , 0.627 , 0.631) end
Yellow: EV_COLOR once create Result.make_with_rgb (0.93 , 0.93, 0.0) end
Steel: EV_COLOR once create Result.make_with_rgb (0.137 , 0.418 , 0.555) end
Cyan: EV_COLOR once create Result.make_with_rgb (0.0 , 0.9 , 0.9) end
Chrome: EV_COLOR once create Result.make_with_rgb (0.890, 0.871, 0.859) end
Bronze: EV_COLOR once create Result.make_with_rgb (0.588, 0.455, 0.267) end
Green: EV_COLOR once create Result.make_with_rgb (0.0, 1.0, 0.0) end
Default_color: EV_COLOR once create Result.make_with_rgb (1.0, 1.0, 1.0) end
Japanese_unit_boarder_color: EV_COLOR once create Result.make_with_rgb (1.0, 0.0, 0.0) end
Japanese_unit_color: EV_COLOR once create Result.make_with_rgb (1.0, 0.3, 0.3) end
Japanese_unit_color_dim: EV_COLOR once create Result.make_with_rgb (1.0, 0.8, 0.8) end
Allied_unit_boarder_color: EV_COLOR once create Result.make_with_rgb (0.0, 0.0, 1.0) end
US_unit_color: EV_COLOR once create Result.make_with_rgb (0.1, 0.4, 0.8) end
US_unit_color_dim: EV_COLOR once create Result.make_with_rgb (0.8, 0.8, 1.0) end
British_unit_color: EV_COLOR once create Result.make_with_rgb (0.4, 0.7, 0.8) end
Dutch_unit_color: EV_COLOR once create Result.make_with_rgb (0.4, 0.9, 0.5) end
Japanese_air_unit_color: EV_COLOR once create Result.make_with_rgb (1.0, 1.0, 0.0) end
US_air_unit_color: EV_COLOR once create Result.make_with_rgb (0.5, 0.8, 0.8) end
Japanese_submarine_color: EV_COLOR once create Result.make_with_rgb (0.95, 0.95, 0.95) end
US_submarine_color: EV_COLOR once create Result.make_with_rgb (0.9, 0.9, 0.9) end
Land_boundary_color: EV_COLOR once create Result.make_with_rgb (0.418, 0.258, 0.148) end
Default_land_color: EV_COLOR once create Result.make_with_rgb (0.9, 0.7, 0.5) end
Sea_area_color: EV_COLOR once create Result.make_with_rgb (0.0, 0.5, 0.7) end
Red_port_color: EV_COLOR once create Result.make_with_rgb (1.0, 0.1, 0.35) end
Green_port_color: EV_COLOR once create Result.make_with_rgb (0.6, 0.9, 0.2) end
US_flag_red_color: EV_COLOR once create Result.make_with_rgb (1.0, 0.0, 0.0) end
US_flag_white_color: EV_COLOR once create Result.make_with_rgb (1.0, 1.0, 1.0) end
US_flag_blue_color: EV_COLOR once create Result.make_with_rgb (0.0, 0.0, 1.0) end
arrow_color: EV_COLOR once create Result.make_with_rgb (0.4, 0.8, 0.3) end
US_retical_color: EV_COLOR once create Result.make_with_rgb (0.0, 0.0, 0.7) end
Japanese_retical_color: EV_COLOR once create Result.make_with_rgb (0.7, 0.2, 0.2) end
end

View File

@@ -0,0 +1,965 @@
note
description: "[
Provided access to all the silhouettes to be placed on the
VITP widgets referenced by the {ATTACK_UNIT}.
]"
author: "Jimmy J. Johnson"
deferred class
SILHOUETTE_CONSTANTS
feature -- Access
game: VITP_GAME
-- The game in which this object resides.
-- Deferred here but defined in {VITP_WIDGET} to which this
-- class will untimately be combined through inheritance.
deferred
end
-- silhouette (a_unit: ATTACK_UNIT): SILHOUETTE
-- -- The silhouette for `a_unit'
-- -- This returns a copy of the picture as produced below, because a picture
-- -- will be placed into many widgets (there is a "Shokaku" widget for each
-- -- view in which the `Shokaku' is to be displayed.
-- do
-- if attached silhouette_table.item (a_unit) as func then
-- Result := func.item
-- else
-- check attached silhouette_table.item (game.Mutsu) as func_2 then
-- -- Run the function obtained from the table
-- Result := func_2.item
-- end
-- end
-- end
silhouette_coordinates (a_unit: ATTACK_UNIT): ARRAYED_LIST [EV_COORDINATE]
-- The points that outline the picture of `a_unit' to be
-- placed on an {ATTACK_UNIT_WIDGET}
local
list: ARRAYED_LIST [EV_COORDINATE]
do
if attached silhouette_table.item (a_unit) as func then
list := func.item
elseif a_unit = game.nagato then
list := Mutsu_sil
elseif a_unit = game.fuso then
list := Mutsu_sil
elseif a_unit = game.akagi then
list := Mutsu_sil
else
list := default_sil
end
Result := list --.to_array
end
feature {NONE} -- Implementation
silhouette_table: HASH_TABLE [FUNCTION [TUPLE, ARRAYED_LIST [EV_COORDINATE]], ATTACK_UNIT]
-- Holds silhouettes for each attack unit, index by
-- the name of that unit.
once
create Result.make (100)
Result.extend (agent Shokaku_sil, game.shokaku)
Result.extend (agent Zuikaku_sil, game.zuikaku)
Result.extend (agent Mutsu_sil, game.mutsu)
Result.extend (agent Amphibious_symbol_sil, game.yokosuka)
Result.extend (agent Amphibious_symbol_sil, game.sasebo)
Result.extend (agent Amphibious_symbol_sil, game.kure)
Result.extend (agent Mitsubishi_a6m_zero_sil, game.airflot_21)
Result.extend (agent Mitsubishi_a6m_zero_sil, game.airflot_22)
Result.extend (agent Mitsubishi_a6m_zero_sil, game.airflot_23)
Result.extend (agent Mitsubishi_a6m_zero_sil, game.airflot_24)
Result.extend (agent Mitsubishi_a6m_zero_sil, game.airflot_25)
Result.extend (agent Mitsubishi_a6m_zero_sil, game.airflot_26)
Result.extend (agent Amphibious_symbol_sil, game.marines_1)
Result.extend (agent Amphibious_symbol_sil, game.marines_2)
Result.extend (agent Amphibious_symbol_sil, game.marines_3)
Result.extend (agent Amphibious_symbol_sil, game.marines_4)
Result.extend (agent Amphibious_symbol_sil, game.marines_5)
Result.extend (agent Grummen_f4f_wildcat_sil, game.seventh_af)
Result.extend (agent Grummen_f4f_wildcat_sil, game.fifth_af)
Result.extend (agent Grummen_f4f_wildcat_sil, game.tenth_af)
Result.extend (agent Grummen_f4f_wildcat_sil, game.eleventh_af)
Result.extend (agent Grummen_f4f_wildcat_sil, game.raaf)
Result.extend (agent Grummen_f4f_wildcat_sil, game.rnzaf)
Result.extend (agent Grummen_f4f_wildcat_sil, game.marine)
Result.extend (agent Grummen_f4f_wildcat_sil, game.thirteenth_af)
Result.extend (agent Grummen_f4f_wildcat_sil, game.fourteenth_af)
Result.extend (agent Grummen_f4f_wildcat_sil, game.naval)
end
feature -- Japanese units (turn 1, row 1)
default_sil: ARRAYED_LIST [EV_COORDINATE]
-- Points decribing a default (i.e. rectangle) silhouette
once
-- Can use "once", because the points are copied in
-- {EV_MODEL_POLYGON}.`make_from_coordintes'
create Result.make (0)
-- Points generated by Grabber application
Result.extend (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend (create {EV_COORDINATE}.make_precise (1000, 0))
Result.extend (create {EV_COORDINATE}.make_precise (1000, 400))
Result.extend (create {EV_COORDINATE}.make_precise (0, 400))
end
shokaku_sil: ARRAYED_LIST [EV_COORDINATE]
-- Points decribing the Shokaku silhouette
once
-- Can use "once", because the points are copied in
-- {EV_MODEL_POLYGON}.`make_from_coordintes'
create Result.make (0)
-- Points generated by Grabber application
Result.extend (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend (create {EV_COORDINATE}.make_precise (15, 18))
Result.extend (create {EV_COORDINATE}.make_precise (21, 57))
Result.extend (create {EV_COORDINATE}.make_precise (1663, 85))
Result.extend (create {EV_COORDINATE}.make_precise (1665, 65))
Result.extend (create {EV_COORDINATE}.make_precise (1675, 58))
Result.extend (create {EV_COORDINATE}.make_precise (1662, 52))
Result.extend (create {EV_COORDINATE}.make_precise (1647, 48))
Result.extend (create {EV_COORDINATE}.make_precise (1647, 29))
Result.extend (create {EV_COORDINATE}.make_precise (1582, 29))
Result.extend (create {EV_COORDINATE}.make_precise (1582, 20))
Result.extend (create {EV_COORDINATE}.make_precise (1512, 18))
Result.extend (create {EV_COORDINATE}.make_precise (1512, 27))
Result.extend (create {EV_COORDINATE}.make_precise (1493, 27))
Result.extend (create {EV_COORDINATE}.make_precise (1493, 17))
Result.extend (create {EV_COORDINATE}.make_precise (1507, 7))
Result.extend (create {EV_COORDINATE}.make_precise (1515, 5))
Result.extend (create {EV_COORDINATE}.make_precise (1521, 6))
Result.extend (create {EV_COORDINATE}.make_precise (1527, 12))
Result.extend (create {EV_COORDINATE}.make_precise (1528, 18))
Result.extend (create {EV_COORDINATE}.make_precise (1553, 19))
Result.extend (create {EV_COORDINATE}.make_precise (1556, 11))
Result.extend (create {EV_COORDINATE}.make_precise (1568, 5))
Result.extend (create {EV_COORDINATE}.make_precise (1578, 5))
Result.extend (create {EV_COORDINATE}.make_precise (1595, 13))
Result.extend (create {EV_COORDINATE}.make_precise (1598, 27))
Result.extend (create {EV_COORDINATE}.make_precise (1608, 29))
Result.extend (create {EV_COORDINATE}.make_precise (1610, 14))
Result.extend (create {EV_COORDINATE}.make_precise (1627, 3))
Result.extend (create {EV_COORDINATE}.make_precise (1455, 0))
Result.extend (create {EV_COORDINATE}.make_precise (1455, -18))
Result.extend (create {EV_COORDINATE}.make_precise (1437, -18))
Result.extend (create {EV_COORDINATE}.make_precise (1437, -26))
Result.extend (create {EV_COORDINATE}.make_precise (1431, -26))
Result.extend (create {EV_COORDINATE}.make_precise (1430, -19))
Result.extend (create {EV_COORDINATE}.make_precise (1368, -20))
Result.extend (create {EV_COORDINATE}.make_precise (1369, -32))
Result.extend (create {EV_COORDINATE}.make_precise (1348, -33))
Result.extend (create {EV_COORDINATE}.make_precise (1349, 1))
Result.extend (create {EV_COORDINATE}.make_precise (1285, 0))
Result.extend (create {EV_COORDINATE}.make_precise (1280, -14))
Result.extend (create {EV_COORDINATE}.make_precise (1277, -18))
Result.extend (create {EV_COORDINATE}.make_precise (1269, -19))
Result.extend (create {EV_COORDINATE}.make_precise (1270, -31))
Result.extend (create {EV_COORDINATE}.make_precise (1262, -35))
Result.extend (create {EV_COORDINATE}.make_precise (1256, -32))
Result.extend (create {EV_COORDINATE}.make_precise (1257, -4))
Result.extend (create {EV_COORDINATE}.make_precise (1207, -1))
Result.extend (create {EV_COORDINATE}.make_precise (1200, 2))
Result.extend (create {EV_COORDINATE}.make_precise (1183, 0))
Result.extend (create {EV_COORDINATE}.make_precise (1181, -13))
Result.extend (create {EV_COORDINATE}.make_precise (1172, -13))
Result.extend (create {EV_COORDINATE}.make_precise (1166, -3))
Result.extend (create {EV_COORDINATE}.make_precise (1148, -5))
Result.extend (create {EV_COORDINATE}.make_precise (1148, -16))
Result.extend (create {EV_COORDINATE}.make_precise (1137, -17))
Result.extend (create {EV_COORDINATE}.make_precise (1128, -4))
Result.extend (create {EV_COORDINATE}.make_precise (1088, -4))
Result.extend (create {EV_COORDINATE}.make_precise (1064, -12))
Result.extend (create {EV_COORDINATE}.make_precise (1060, -18))
Result.extend (create {EV_COORDINATE}.make_precise (1060, -31))
Result.extend (create {EV_COORDINATE}.make_precise (1061, -36))
Result.extend (create {EV_COORDINATE}.make_precise (1054, -36))
Result.extend (create {EV_COORDINATE}.make_precise (1053, -17))
Result.extend (create {EV_COORDINATE}.make_precise (641, -20))
Result.extend (create {EV_COORDINATE}.make_precise (639, -35))
Result.extend (create {EV_COORDINATE}.make_precise (636, -40))
Result.extend (create {EV_COORDINATE}.make_precise (636, -60))
Result.extend (create {EV_COORDINATE}.make_precise (632, -62))
Result.extend (create {EV_COORDINATE}.make_precise (626, -64))
Result.extend (create {EV_COORDINATE}.make_precise (625, -29))
Result.extend (create {EV_COORDINATE}.make_precise (618, -29))
Result.extend (create {EV_COORDINATE}.make_precise (617, -34))
Result.extend (create {EV_COORDINATE}.make_precise (612, -35))
Result.extend (create {EV_COORDINATE}.make_precise (612, -57))
Result.extend (create {EV_COORDINATE}.make_precise (606, -65))
Result.extend (create {EV_COORDINATE}.make_precise (601, -71))
Result.extend (create {EV_COORDINATE}.make_precise (601, -83))
Result.extend (create {EV_COORDINATE}.make_precise (596, -87))
Result.extend (create {EV_COORDINATE}.make_precise (590, -93))
Result.extend (create {EV_COORDINATE}.make_precise (584, -93))
Result.extend (create {EV_COORDINATE}.make_precise (584, -81))
Result.extend (create {EV_COORDINATE}.make_precise (576, -82))
Result.extend (create {EV_COORDINATE}.make_precise (578, -67))
Result.extend (create {EV_COORDINATE}.make_precise (541, -66))
Result.extend (create {EV_COORDINATE}.make_precise (542, -52))
Result.extend (create {EV_COORDINATE}.make_precise (531, -52))
Result.extend (create {EV_COORDINATE}.make_precise (531, -36))
Result.extend (create {EV_COORDINATE}.make_precise (512, -35))
Result.extend (create {EV_COORDINATE}.make_precise (512, -17))
Result.extend (create {EV_COORDINATE}.make_precise (428, -21))
Result.extend (create {EV_COORDINATE}.make_precise (428, -28))
Result.extend (create {EV_COORDINATE}.make_precise (421, -33))
Result.extend (create {EV_COORDINATE}.make_precise (418, -28))
Result.extend (create {EV_COORDINATE}.make_precise (418, -20))
Result.extend (create {EV_COORDINATE}.make_precise (318, -20))
Result.extend (create {EV_COORDINATE}.make_precise (315, -32))
Result.extend (create {EV_COORDINATE}.make_precise (306, -33))
Result.extend (create {EV_COORDINATE}.make_precise (302, -22))
Result.extend (create {EV_COORDINATE}.make_precise (270, -18))
Result.extend (create {EV_COORDINATE}.make_precise (267, -24))
Result.extend (create {EV_COORDINATE}.make_precise (183, -27))
Result.extend (create {EV_COORDINATE}.make_precise (179, -32))
Result.extend (create {EV_COORDINATE}.make_precise (68, -32))
Result.extend (create {EV_COORDINATE}.make_precise (66, -23))
Result.extend (create {EV_COORDINATE}.make_precise (162, -18))
Result.extend (create {EV_COORDINATE}.make_precise (171, -12))
Result.extend (create {EV_COORDINATE}.make_precise (168, 0))
Result.extend (create {EV_COORDINATE}.make_precise (131, -3))
Result.extend (create {EV_COORDINATE}.make_precise (131, -17))
Result.extend (create {EV_COORDINATE}.make_precise (112, -19))
Result.extend (create {EV_COORDINATE}.make_precise (112, 0))
Result.extend (create {EV_COORDINATE}.make_precise (82, -2))
Result.extend (create {EV_COORDINATE}.make_precise (82, -18))
Result.extend (create {EV_COORDINATE}.make_precise (70, -19))
Result.extend (create {EV_COORDINATE}.make_precise (69, 0))
Result.extend (create {EV_COORDINATE}.make_precise (17, 3))
end
Zuikaku_sil: ARRAYED_LIST [EV_COORDINATE]
-- Points decribing the Zuikaku silhouette
once
create Result.make (0)
-- Points generated by Grabber application
Result.extend (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend (create {EV_COORDINATE}.make_precise (12, 10))
Result.extend (create {EV_COORDINATE}.make_precise (17, 48))
Result.extend (create {EV_COORDINATE}.make_precise (1443, 110))
Result.extend (create {EV_COORDINATE}.make_precise (1458, 82))
Result.extend (create {EV_COORDINATE}.make_precise (1444, 82))
Result.extend (create {EV_COORDINATE}.make_precise (1437, 74))
Result.extend (create {EV_COORDINATE}.make_precise (1437, 61))
Result.extend (create {EV_COORDINATE}.make_precise (1440, 57))
Result.extend (create {EV_COORDINATE}.make_precise (1436, 53))
Result.extend (create {EV_COORDINATE}.make_precise (1432, 61))
Result.extend (create {EV_COORDINATE}.make_precise (1403, 63))
Result.extend (create {EV_COORDINATE}.make_precise (1395, 59))
Result.extend (create {EV_COORDINATE}.make_precise (1383, 59))
Result.extend (create {EV_COORDINATE}.make_precise (1381, 53))
Result.extend (create {EV_COORDINATE}.make_precise (1370, 46))
Result.extend (create {EV_COORDINATE}.make_precise (1328, 45))
Result.extend (create {EV_COORDINATE}.make_precise (1317, 58))
Result.extend (create {EV_COORDINATE}.make_precise (1304, 57))
Result.extend (create {EV_COORDINATE}.make_precise (1306, 42))
Result.extend (create {EV_COORDINATE}.make_precise (1312, 35))
Result.extend (create {EV_COORDINATE}.make_precise (1327, 35))
Result.extend (create {EV_COORDINATE}.make_precise (1337, 42))
Result.extend (create {EV_COORDINATE}.make_precise (1337, 51))
Result.extend (create {EV_COORDINATE}.make_precise (1350, 50))
Result.extend (create {EV_COORDINATE}.make_precise (1352, 40))
Result.extend (create {EV_COORDINATE}.make_precise (1385, 40))
Result.extend (create {EV_COORDINATE}.make_precise (1395, 47))
Result.extend (create {EV_COORDINATE}.make_precise (1396, 67))
Result.extend (create {EV_COORDINATE}.make_precise (1403, 70))
Result.extend (create {EV_COORDINATE}.make_precise (1404, 46))
Result.extend (create {EV_COORDINATE}.make_precise (1408, 42))
Result.extend (create {EV_COORDINATE}.make_precise (1423, 41))
Result.extend (create {EV_COORDINATE}.make_precise (1424, 36))
Result.extend (create {EV_COORDINATE}.make_precise (1272, 31))
Result.extend (create {EV_COORDINATE}.make_precise (1264, 22))
Result.extend (create {EV_COORDINATE}.make_precise (1265, 15))
Result.extend (create {EV_COORDINATE}.make_precise (1254, 15))
Result.extend (create {EV_COORDINATE}.make_precise (1255, 7))
Result.extend (create {EV_COORDINATE}.make_precise (1250, 2))
Result.extend (create {EV_COORDINATE}.make_precise (1242, -2))
Result.extend (create {EV_COORDINATE}.make_precise (1237, -2))
Result.extend (create {EV_COORDINATE}.make_precise (1233, 1))
Result.extend (create {EV_COORDINATE}.make_precise (1240, 4))
Result.extend (create {EV_COORDINATE}.make_precise (1249, 15))
Result.extend (create {EV_COORDINATE}.make_precise (1194, 16))
Result.extend (create {EV_COORDINATE}.make_precise (1193, 4))
Result.extend (create {EV_COORDINATE}.make_precise (1183, 5))
Result.extend (create {EV_COORDINATE}.make_precise (1183, -1))
Result.extend (create {EV_COORDINATE}.make_precise (1174, -1))
Result.extend (create {EV_COORDINATE}.make_precise (1178, 23))
Result.extend (create {EV_COORDINATE}.make_precise (1170, 32))
Result.extend (create {EV_COORDINATE}.make_precise (1140, 33))
Result.extend (create {EV_COORDINATE}.make_precise (1139, 26))
Result.extend (create {EV_COORDINATE}.make_precise (1115, 25))
Result.extend (create {EV_COORDINATE}.make_precise (1114, 14))
Result.extend (create {EV_COORDINATE}.make_precise (1107, 14))
Result.extend (create {EV_COORDINATE}.make_precise (1109, 4))
Result.extend (create {EV_COORDINATE}.make_precise (1106, -1))
Result.extend (create {EV_COORDINATE}.make_precise (1090, -1))
Result.extend (create {EV_COORDINATE}.make_precise (1098, 2))
Result.extend (create {EV_COORDINATE}.make_precise (1102, 11))
Result.extend (create {EV_COORDINATE}.make_precise (1096, 18))
Result.extend (create {EV_COORDINATE}.make_precise (1087, 25))
Result.extend (create {EV_COORDINATE}.make_precise (1032, 24))
Result.extend (create {EV_COORDINATE}.make_precise (1032, 16))
Result.extend (create {EV_COORDINATE}.make_precise (932, 14))
Result.extend (create {EV_COORDINATE}.make_precise (930, -11))
Result.extend (create {EV_COORDINATE}.make_precise (921, -12))
Result.extend (create {EV_COORDINATE}.make_precise (917, -10))
Result.extend (create {EV_COORDINATE}.make_precise (916, -5))
Result.extend (create {EV_COORDINATE}.make_precise (921, 0))
Result.extend (create {EV_COORDINATE}.make_precise (922, 14))
Result.extend (create {EV_COORDINATE}.make_precise (863, 17))
Result.extend (create {EV_COORDINATE}.make_precise (861, 9))
Result.extend (create {EV_COORDINATE}.make_precise (562, 2))
Result.extend (create {EV_COORDINATE}.make_precise (560, -16))
Result.extend (create {EV_COORDINATE}.make_precise (555, -17))
Result.extend (create {EV_COORDINATE}.make_precise (555, -22))
Result.extend (create {EV_COORDINATE}.make_precise (561, -22))
Result.extend (create {EV_COORDINATE}.make_precise (560, -30))
Result.extend (create {EV_COORDINATE}.make_precise (554, -30))
Result.extend (create {EV_COORDINATE}.make_precise (553, -36))
Result.extend (create {EV_COORDINATE}.make_precise (548, -30))
Result.extend (create {EV_COORDINATE}.make_precise (549, -13))
Result.extend (create {EV_COORDINATE}.make_precise (540, -13))
Result.extend (create {EV_COORDINATE}.make_precise (539, -19))
Result.extend (create {EV_COORDINATE}.make_precise (532, -19))
Result.extend (create {EV_COORDINATE}.make_precise (534, -39))
Result.extend (create {EV_COORDINATE}.make_precise (525, -41))
Result.extend (create {EV_COORDINATE}.make_precise (526, -53))
Result.extend (create {EV_COORDINATE}.make_precise (531, -49))
Result.extend (create {EV_COORDINATE}.make_precise (526, -65))
Result.extend (create {EV_COORDINATE}.make_precise (511, -66))
Result.extend (create {EV_COORDINATE}.make_precise (511, -51))
Result.extend (create {EV_COORDINATE}.make_precise (471, -51))
Result.extend (create {EV_COORDINATE}.make_precise (471, -31))
Result.extend (create {EV_COORDINATE}.make_precise (466, -30))
Result.extend (create {EV_COORDINATE}.make_precise (466, -23))
Result.extend (create {EV_COORDINATE}.make_precise (459, -24))
Result.extend (create {EV_COORDINATE}.make_precise (454, -19))
Result.extend (create {EV_COORDINATE}.make_precise (451, -14))
Result.extend (create {EV_COORDINATE}.make_precise (450, -3))
Result.extend (create {EV_COORDINATE}.make_precise (388, -5))
Result.extend (create {EV_COORDINATE}.make_precise (381, -10))
Result.extend (create {EV_COORDINATE}.make_precise (380, -15))
Result.extend (create {EV_COORDINATE}.make_precise (361, -15))
Result.extend (create {EV_COORDINATE}.make_precise (358, -9))
Result.extend (create {EV_COORDINATE}.make_precise (309, -10))
Result.extend (create {EV_COORDINATE}.make_precise (304, -14))
Result.extend (create {EV_COORDINATE}.make_precise (278, -16))
Result.extend (create {EV_COORDINATE}.make_precise (275, -20))
Result.extend (create {EV_COORDINATE}.make_precise (272, -13))
Result.extend (create {EV_COORDINATE}.make_precise (173, -14))
Result.extend (create {EV_COORDINATE}.make_precise (155, -20))
Result.extend (create {EV_COORDINATE}.make_precise (153, -24))
Result.extend (create {EV_COORDINATE}.make_precise (60, -25))
Result.extend (create {EV_COORDINATE}.make_precise (59, -19))
Result.extend (create {EV_COORDINATE}.make_precise (81, -16))
Result.extend (create {EV_COORDINATE}.make_precise (87, -21))
Result.extend (create {EV_COORDINATE}.make_precise (104, -15))
Result.extend (create {EV_COORDINATE}.make_precise (115, -14))
Result.extend (create {EV_COORDINATE}.make_precise (128, -19))
Result.extend (create {EV_COORDINATE}.make_precise (148, -16))
Result.extend (create {EV_COORDINATE}.make_precise (149, 0))
Result.extend (create {EV_COORDINATE}.make_precise (116, -1))
Result.extend (create {EV_COORDINATE}.make_precise (116, -20))
Result.extend (create {EV_COORDINATE}.make_precise (107, -19))
Result.extend (create {EV_COORDINATE}.make_precise (107, 0))
Result.extend (create {EV_COORDINATE}.make_precise (101, 4))
Result.extend (create {EV_COORDINATE}.make_precise (85, 4))
Result.extend (create {EV_COORDINATE}.make_precise (82, 0))
Result.extend (create {EV_COORDINATE}.make_precise (74, 0))
Result.extend (create {EV_COORDINATE}.make_precise (76, -19))
Result.extend (create {EV_COORDINATE}.make_precise (66, -19))
Result.extend (create {EV_COORDINATE}.make_precise (66, 1))
end
Mutsu_sil: ARRAYED_LIST [EV_COORDINATE]
-- Points decribing the Mutsu silhouette
once
create Result.make (0)
-- Points generated by Grabber application
Result.extend (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend (create {EV_COORDINATE}.make_precise (22, 39))
Result.extend (create {EV_COORDINATE}.make_precise (36, 64))
Result.extend (create {EV_COORDINATE}.make_precise (46, 79))
Result.extend (create {EV_COORDINATE}.make_precise (1951, 77))
Result.extend (create {EV_COORDINATE}.make_precise (1950, 64))
Result.extend (create {EV_COORDINATE}.make_precise (1946, 28))
Result.extend (create {EV_COORDINATE}.make_precise (1943, 24))
Result.extend (create {EV_COORDINATE}.make_precise (1943, 18))
Result.extend (create {EV_COORDINATE}.make_precise (1930, 18))
Result.extend (create {EV_COORDINATE}.make_precise (1935, -28))
Result.extend (create {EV_COORDINATE}.make_precise (1978, -26))
Result.extend (create {EV_COORDINATE}.make_precise (1981, -52))
Result.extend (create {EV_COORDINATE}.make_precise (1938, -59))
Result.extend (create {EV_COORDINATE}.make_precise (1924, 15))
Result.extend (create {EV_COORDINATE}.make_precise (1593, 25))
Result.extend (create {EV_COORDINATE}.make_precise (1594, 10))
Result.extend (create {EV_COORDINATE}.make_precise (1689, -2))
Result.extend (create {EV_COORDINATE}.make_precise (1689, -8))
Result.extend (create {EV_COORDINATE}.make_precise (1587, -1))
Result.extend (create {EV_COORDINATE}.make_precise (1581, -6))
Result.extend (create {EV_COORDINATE}.make_precise (1570, -9))
Result.extend (create {EV_COORDINATE}.make_precise (1556, -10))
Result.extend (create {EV_COORDINATE}.make_precise (1501, -12))
Result.extend (create {EV_COORDINATE}.make_precise (1502, -17))
Result.extend (create {EV_COORDINATE}.make_precise (1487, -16))
Result.extend (create {EV_COORDINATE}.make_precise (1485, -10))
Result.extend (create {EV_COORDINATE}.make_precise (1477, -10))
Result.extend (create {EV_COORDINATE}.make_precise (1476, 15))
Result.extend (create {EV_COORDINATE}.make_precise (1498, 15))
Result.extend (create {EV_COORDINATE}.make_precise (1495, 26))
Result.extend (create {EV_COORDINATE}.make_precise (1463, 22))
Result.extend (create {EV_COORDINATE}.make_precise (1465, -18))
Result.extend (create {EV_COORDINATE}.make_precise (1559, -31))
Result.extend (create {EV_COORDINATE}.make_precise (1558, -39))
Result.extend (create {EV_COORDINATE}.make_precise (1465, -32))
Result.extend (create {EV_COORDINATE}.make_precise (1466, -53))
Result.extend (create {EV_COORDINATE}.make_precise (1462, -87))
Result.extend (create {EV_COORDINATE}.make_precise (1458, -55))
Result.extend (create {EV_COORDINATE}.make_precise (1354, -107))
Result.extend (create {EV_COORDINATE}.make_precise (1456, -49))
Result.extend (create {EV_COORDINATE}.make_precise (1455, -31))
Result.extend (create {EV_COORDINATE}.make_precise (1448, -35))
Result.extend (create {EV_COORDINATE}.make_precise (1428, -40))
Result.extend (create {EV_COORDINATE}.make_precise (1391, -37))
Result.extend (create {EV_COORDINATE}.make_precise (1391, -51))
Result.extend (create {EV_COORDINATE}.make_precise (1381, -51))
Result.extend (create {EV_COORDINATE}.make_precise (1381, -43))
Result.extend (create {EV_COORDINATE}.make_precise (1358, -42))
Result.extend (create {EV_COORDINATE}.make_precise (1359, -36))
Result.extend (create {EV_COORDINATE}.make_precise (1349, -42))
Result.extend (create {EV_COORDINATE}.make_precise (1345, -16))
Result.extend (create {EV_COORDINATE}.make_precise (1366, -13))
Result.extend (create {EV_COORDINATE}.make_precise (1366, -7))
Result.extend (create {EV_COORDINATE}.make_precise (1343, -8))
Result.extend (create {EV_COORDINATE}.make_precise (1340, -2))
Result.extend (create {EV_COORDINATE}.make_precise (1216, 2))
Result.extend (create {EV_COORDINATE}.make_precise (1216, -7))
Result.extend (create {EV_COORDINATE}.make_precise (1198, -7))
Result.extend (create {EV_COORDINATE}.make_precise (1190, 1))
Result.extend (create {EV_COORDINATE}.make_precise (1189, -68))
Result.extend (create {EV_COORDINATE}.make_precise (1184, -72))
Result.extend (create {EV_COORDINATE}.make_precise (1188, -83))
Result.extend (create {EV_COORDINATE}.make_precise (1201, -83))
Result.extend (create {EV_COORDINATE}.make_precise (1202, -92))
Result.extend (create {EV_COORDINATE}.make_precise (1208, -104))
Result.extend (create {EV_COORDINATE}.make_precise (1212, -113))
Result.extend (create {EV_COORDINATE}.make_precise (1200, -113))
Result.extend (create {EV_COORDINATE}.make_precise (1204, -139))
Result.extend (create {EV_COORDINATE}.make_precise (1180, -140))
Result.extend (create {EV_COORDINATE}.make_precise (1179, -117))
Result.extend (create {EV_COORDINATE}.make_precise (1172, -116))
Result.extend (create {EV_COORDINATE}.make_precise (1163, -120))
Result.extend (create {EV_COORDINATE}.make_precise (1152, -157))
Result.extend (create {EV_COORDINATE}.make_precise (1151, -191))
Result.extend (create {EV_COORDINATE}.make_precise (1189, -191))
Result.extend (create {EV_COORDINATE}.make_precise (1190, -197))
Result.extend (create {EV_COORDINATE}.make_precise (1152, -200))
Result.extend (create {EV_COORDINATE}.make_precise (1152, -284))
Result.extend (create {EV_COORDINATE}.make_precise (1152, -346))
Result.extend (create {EV_COORDINATE}.make_precise (1145, -346))
Result.extend (create {EV_COORDINATE}.make_precise (1142, -218))
Result.extend (create {EV_COORDINATE}.make_precise (1126, -219))
Result.extend (create {EV_COORDINATE}.make_precise (1126, -211))
Result.extend (create {EV_COORDINATE}.make_precise (1131, -208))
Result.extend (create {EV_COORDINATE}.make_precise (1132, -197))
Result.extend (create {EV_COORDINATE}.make_precise (1125, -197))
Result.extend (create {EV_COORDINATE}.make_precise (1124, -191))
Result.extend (create {EV_COORDINATE}.make_precise (1130, -187))
Result.extend (create {EV_COORDINATE}.make_precise (1129, -47))
Result.extend (create {EV_COORDINATE}.make_precise (1110, -48))
Result.extend (create {EV_COORDINATE}.make_precise (1110, -57))
Result.extend (create {EV_COORDINATE}.make_precise (1070, -59))
Result.extend (create {EV_COORDINATE}.make_precise (1071, -50))
Result.extend (create {EV_COORDINATE}.make_precise (1065, -50))
Result.extend (create {EV_COORDINATE}.make_precise (1062, -54))
Result.extend (create {EV_COORDINATE}.make_precise (1056, -54))
Result.extend (create {EV_COORDINATE}.make_precise (1054, -50))
Result.extend (create {EV_COORDINATE}.make_precise (1028, -51))
Result.extend (create {EV_COORDINATE}.make_precise (1036, -36))
Result.extend (create {EV_COORDINATE}.make_precise (1020, -37))
Result.extend (create {EV_COORDINATE}.make_precise (1020, -83))
Result.extend (create {EV_COORDINATE}.make_precise (1027, -85))
Result.extend (create {EV_COORDINATE}.make_precise (1029, -99))
Result.extend (create {EV_COORDINATE}.make_precise (1022, -99))
Result.extend (create {EV_COORDINATE}.make_precise (1021, -94))
Result.extend (create {EV_COORDINATE}.make_precise (1016, -94))
Result.extend (create {EV_COORDINATE}.make_precise (1019, -103))
Result.extend (create {EV_COORDINATE}.make_precise (1003, -103))
Result.extend (create {EV_COORDINATE}.make_precise (1003, -150))
Result.extend (create {EV_COORDINATE}.make_precise (994, -157))
Result.extend (create {EV_COORDINATE}.make_precise (961, -158))
Result.extend (create {EV_COORDINATE}.make_precise (944, -148))
Result.extend (create {EV_COORDINATE}.make_precise (948, -136))
Result.extend (create {EV_COORDINATE}.make_precise (942, -131))
Result.extend (create {EV_COORDINATE}.make_precise (942, -109))
Result.extend (create {EV_COORDINATE}.make_precise (935, -114))
Result.extend (create {EV_COORDINATE}.make_precise (927, -108))
Result.extend (create {EV_COORDINATE}.make_precise (929, -100))
Result.extend (create {EV_COORDINATE}.make_precise (919, -98))
Result.extend (create {EV_COORDINATE}.make_precise (925, -88))
Result.extend (create {EV_COORDINATE}.make_precise (924, -81))
Result.extend (create {EV_COORDINATE}.make_precise (912, -82))
Result.extend (create {EV_COORDINATE}.make_precise (913, -90))
Result.extend (create {EV_COORDINATE}.make_precise (904, -97))
Result.extend (create {EV_COORDINATE}.make_precise (895, -91))
Result.extend (create {EV_COORDINATE}.make_precise (899, -82))
Result.extend (create {EV_COORDINATE}.make_precise (895, -73))
Result.extend (create {EV_COORDINATE}.make_precise (905, -68))
Result.extend (create {EV_COORDINATE}.make_precise (904, -43))
Result.extend (create {EV_COORDINATE}.make_precise (893, -42))
Result.extend (create {EV_COORDINATE}.make_precise (892, -35))
Result.extend (create {EV_COORDINATE}.make_precise (867, -34))
Result.extend (create {EV_COORDINATE}.make_precise (858, -45))
Result.extend (create {EV_COORDINATE}.make_precise (856, -64))
Result.extend (create {EV_COORDINATE}.make_precise (839, -64))
Result.extend (create {EV_COORDINATE}.make_precise (839, -54))
Result.extend (create {EV_COORDINATE}.make_precise (808, -54))
Result.extend (create {EV_COORDINATE}.make_precise (809, -69))
Result.extend (create {EV_COORDINATE}.make_precise (803, -68))
Result.extend (create {EV_COORDINATE}.make_precise (805, -86))
Result.extend (create {EV_COORDINATE}.make_precise (810, -88))
Result.extend (create {EV_COORDINATE}.make_precise (805, -95))
Result.extend (create {EV_COORDINATE}.make_precise (789, -95))
Result.extend (create {EV_COORDINATE}.make_precise (785, -93))
Result.extend (create {EV_COORDINATE}.make_precise (780, -94))
Result.extend (create {EV_COORDINATE}.make_precise (782, -100))
Result.extend (create {EV_COORDINATE}.make_precise (771, -101))
Result.extend (create {EV_COORDINATE}.make_precise (772, -107))
Result.extend (create {EV_COORDINATE}.make_precise (754, -107))
Result.extend (create {EV_COORDINATE}.make_precise (748, -126))
Result.extend (create {EV_COORDINATE}.make_precise (761, -126))
Result.extend (create {EV_COORDINATE}.make_precise (758, -134))
Result.extend (create {EV_COORDINATE}.make_precise (758, -183))
Result.extend (create {EV_COORDINATE}.make_precise (752, -191))
Result.extend (create {EV_COORDINATE}.make_precise (745, -192))
Result.extend (create {EV_COORDINATE}.make_precise (744, -198))
Result.extend (create {EV_COORDINATE}.make_precise (757, -200))
Result.extend (create {EV_COORDINATE}.make_precise (788, -203))
Result.extend (create {EV_COORDINATE}.make_precise (799, -206))
Result.extend (create {EV_COORDINATE}.make_precise (801, -212))
Result.extend (create {EV_COORDINATE}.make_precise (758, -214))
Result.extend (create {EV_COORDINATE}.make_precise (753, -219))
Result.extend (create {EV_COORDINATE}.make_precise (736, -219))
Result.extend (create {EV_COORDINATE}.make_precise (735, -228))
Result.extend (create {EV_COORDINATE}.make_precise (757, -236))
Result.extend (create {EV_COORDINATE}.make_precise (758, -247))
Result.extend (create {EV_COORDINATE}.make_precise (751, -247))
Result.extend (create {EV_COORDINATE}.make_precise (753, -253))
Result.extend (create {EV_COORDINATE}.make_precise (754, -267))
Result.extend (create {EV_COORDINATE}.make_precise (742, -268))
Result.extend (create {EV_COORDINATE}.make_precise (740, -261))
Result.extend (create {EV_COORDINATE}.make_precise (733, -261))
Result.extend (create {EV_COORDINATE}.make_precise (735, -281))
Result.extend (create {EV_COORDINATE}.make_precise (705, -282))
Result.extend (create {EV_COORDINATE}.make_precise (705, -271))
Result.extend (create {EV_COORDINATE}.make_precise (688, -270))
Result.extend (create {EV_COORDINATE}.make_precise (688, -260))
Result.extend (create {EV_COORDINATE}.make_precise (676, -260))
Result.extend (create {EV_COORDINATE}.make_precise (676, -255))
Result.extend (create {EV_COORDINATE}.make_precise (684, -253))
Result.extend (create {EV_COORDINATE}.make_precise (682, -249))
Result.extend (create {EV_COORDINATE}.make_precise (674, -251))
Result.extend (create {EV_COORDINATE}.make_precise (672, -245))
Result.extend (create {EV_COORDINATE}.make_precise (680, -235))
Result.extend (create {EV_COORDINATE}.make_precise (683, -222))
Result.extend (create {EV_COORDINATE}.make_precise (656, -220))
Result.extend (create {EV_COORDINATE}.make_precise (655, -211))
Result.extend (create {EV_COORDINATE}.make_precise (660, -192))
Result.extend (create {EV_COORDINATE}.make_precise (659, -149))
Result.extend (create {EV_COORDINATE}.make_precise (653, -142))
Result.extend (create {EV_COORDINATE}.make_precise (646, -138))
Result.extend (create {EV_COORDINATE}.make_precise (647, -118))
Result.extend (create {EV_COORDINATE}.make_precise (632, -119))
Result.extend (create {EV_COORDINATE}.make_precise (630, -75))
Result.extend (create {EV_COORDINATE}.make_precise (645, -71))
Result.extend (create {EV_COORDINATE}.make_precise (645, -52))
Result.extend (create {EV_COORDINATE}.make_precise (643, -20))
Result.extend (create {EV_COORDINATE}.make_precise (614, -20))
Result.extend (create {EV_COORDINATE}.make_precise (617, -34))
Result.extend (create {EV_COORDINATE}.make_precise (636, -36))
Result.extend (create {EV_COORDINATE}.make_precise (635, -59))
Result.extend (create {EV_COORDINATE}.make_precise (624, -58))
Result.extend (create {EV_COORDINATE}.make_precise (624, -68))
Result.extend (create {EV_COORDINATE}.make_precise (622, -75))
Result.extend (create {EV_COORDINATE}.make_precise (615, -76))
Result.extend (create {EV_COORDINATE}.make_precise (615, -70))
Result.extend (create {EV_COORDINATE}.make_precise (602, -72))
Result.extend (create {EV_COORDINATE}.make_precise (593, -75))
Result.extend (create {EV_COORDINATE}.make_precise (593, -63))
Result.extend (create {EV_COORDINATE}.make_precise (568, -60))
Result.extend (create {EV_COORDINATE}.make_precise (552, -63))
Result.extend (create {EV_COORDINATE}.make_precise (536, -55))
Result.extend (create {EV_COORDINATE}.make_precise (503, -56))
Result.extend (create {EV_COORDINATE}.make_precise (501, -53))
Result.extend (create {EV_COORDINATE}.make_precise (424, -61))
Result.extend (create {EV_COORDINATE}.make_precise (424, -55))
Result.extend (create {EV_COORDINATE}.make_precise (499, -43))
Result.extend (create {EV_COORDINATE}.make_precise (508, -42))
Result.extend (create {EV_COORDINATE}.make_precise (516, -40))
Result.extend (create {EV_COORDINATE}.make_precise (520, -31))
Result.extend (create {EV_COORDINATE}.make_precise (519, 4))
Result.extend (create {EV_COORDINATE}.make_precise (490, 3))
Result.extend (create {EV_COORDINATE}.make_precise (490, -3))
Result.extend (create {EV_COORDINATE}.make_precise (507, -5))
Result.extend (create {EV_COORDINATE}.make_precise (509, -27))
Result.extend (create {EV_COORDINATE}.make_precise (499, -28))
Result.extend (create {EV_COORDINATE}.make_precise (499, -35))
Result.extend (create {EV_COORDINATE}.make_precise (495, -40))
Result.extend (create {EV_COORDINATE}.make_precise (486, -40))
Result.extend (create {EV_COORDINATE}.make_precise (484, -28))
Result.extend (create {EV_COORDINATE}.make_precise (419, -28))
Result.extend (create {EV_COORDINATE}.make_precise (404, -21))
Result.extend (create {EV_COORDINATE}.make_precise (297, -35))
Result.extend (create {EV_COORDINATE}.make_precise (297, -27))
Result.extend (create {EV_COORDINATE}.make_precise (391, -8))
Result.extend (create {EV_COORDINATE}.make_precise (391, 3))
Result.extend (create {EV_COORDINATE}.make_precise (331, 1))
Result.extend (create {EV_COORDINATE}.make_precise (327, -7))
Result.extend (create {EV_COORDINATE}.make_precise (317, -8))
Result.extend (create {EV_COORDINATE}.make_precise (310, 0))
Result.extend (create {EV_COORDINATE}.make_precise (273, 0))
Result.extend (create {EV_COORDINATE}.make_precise (272, -12))
Result.extend (create {EV_COORDINATE}.make_precise (257, -13))
Result.extend (create {EV_COORDINATE}.make_precise (254, -9))
Result.extend (create {EV_COORDINATE}.make_precise (244, -11))
Result.extend (create {EV_COORDINATE}.make_precise (243, -3))
Result.extend (create {EV_COORDINATE}.make_precise (105, -5))
Result.extend (create {EV_COORDINATE}.make_precise (99, -8))
Result.extend (create {EV_COORDINATE}.make_precise (56, -8))
Result.extend (create {EV_COORDINATE}.make_precise (49, -13))
Result.extend (create {EV_COORDINATE}.make_precise (40, -14))
Result.extend (create {EV_COORDINATE}.make_precise (36, -10))
Result.extend (create {EV_COORDINATE}.make_precise (12, -8))
Result.extend (create {EV_COORDINATE}.make_precise (10, -73))
Result.extend (create {EV_COORDINATE}.make_precise (3, -75))
Result.extend (create {EV_COORDINATE}.make_precise (5, -13))
Result.extend (create {EV_COORDINATE}.make_precise (1, -12))
end
Mitsubishi_a6m_zero_sil: ARRAYED_LIST [EV_COORDINATE]
-- Points decribing one of the three plane silhouettes
-- on the Japanese {AIR_UNIT_WIDGETS}
once
create Result.make (0)
-- Points generated by Grabber application
Result.extend (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend (create {EV_COORDINATE}.make_precise (-17, 0))
Result.extend (create {EV_COORDINATE}.make_precise (-27, -3))
Result.extend (create {EV_COORDINATE}.make_precise (-39, -11))
Result.extend (create {EV_COORDINATE}.make_precise (-41, -22))
Result.extend (create {EV_COORDINATE}.make_precise (-37, -31))
Result.extend (create {EV_COORDINATE}.make_precise (-27, -36))
Result.extend (create {EV_COORDINATE}.make_precise (-19, -39))
Result.extend (create {EV_COORDINATE}.make_precise (-1, -41))
Result.extend (create {EV_COORDINATE}.make_precise (1, -57))
Result.extend (create {EV_COORDINATE}.make_precise (4, -64))
Result.extend (create {EV_COORDINATE}.make_precise (10, -67))
Result.extend (create {EV_COORDINATE}.make_precise (18, -68))
Result.extend (create {EV_COORDINATE}.make_precise (30, -69))
Result.extend (create {EV_COORDINATE}.make_precise (43, -69))
Result.extend (create {EV_COORDINATE}.make_precise (58, -67))
Result.extend (create {EV_COORDINATE}.make_precise (76, -66))
Result.extend (create {EV_COORDINATE}.make_precise (99, -66))
Result.extend (create {EV_COORDINATE}.make_precise (129, -453))
Result.extend (create {EV_COORDINATE}.make_precise (132, -465))
Result.extend (create {EV_COORDINATE}.make_precise (137, -480))
Result.extend (create {EV_COORDINATE}.make_precise (144, -492))
Result.extend (create {EV_COORDINATE}.make_precise (152, -503))
Result.extend (create {EV_COORDINATE}.make_precise (163, -510))
Result.extend (create {EV_COORDINATE}.make_precise (175, -514))
Result.extend (create {EV_COORDINATE}.make_precise (187, -514))
Result.extend (create {EV_COORDINATE}.make_precise (199, -512))
Result.extend (create {EV_COORDINATE}.make_precise (211, -505))
Result.extend (create {EV_COORDINATE}.make_precise (221, -494))
Result.extend (create {EV_COORDINATE}.make_precise (229, -482))
Result.extend (create {EV_COORDINATE}.make_precise (237, -467))
Result.extend (create {EV_COORDINATE}.make_precise (243, -450))
Result.extend (create {EV_COORDINATE}.make_precise (309, -76))
Result.extend (create {EV_COORDINATE}.make_precise (315, -69))
Result.extend (create {EV_COORDINATE}.make_precise (323, -66))
Result.extend (create {EV_COORDINATE}.make_precise (332, -63))
Result.extend (create {EV_COORDINATE}.make_precise (363, -61))
Result.extend (create {EV_COORDINATE}.make_precise (390, -58))
Result.extend (create {EV_COORDINATE}.make_precise (411, -57))
Result.extend (create {EV_COORDINATE}.make_precise (437, -55))
Result.extend (create {EV_COORDINATE}.make_precise (463, -54))
Result.extend (create {EV_COORDINATE}.make_precise (483, -51))
Result.extend (create {EV_COORDINATE}.make_precise (513, -48))
Result.extend (create {EV_COORDINATE}.make_precise (564, -189))
Result.extend (create {EV_COORDINATE}.make_precise (567, -197))
Result.extend (create {EV_COORDINATE}.make_precise (575, -205))
Result.extend (create {EV_COORDINATE}.make_precise (581, -209))
Result.extend (create {EV_COORDINATE}.make_precise (587, -212))
Result.extend (create {EV_COORDINATE}.make_precise (596, -212))
Result.extend (create {EV_COORDINATE}.make_precise (604, -207))
Result.extend (create {EV_COORDINATE}.make_precise (613, -199))
Result.extend (create {EV_COORDINATE}.make_precise (616, -188))
Result.extend (create {EV_COORDINATE}.make_precise (619, -173))
Result.extend (create {EV_COORDINATE}.make_precise (634, -47))
Result.extend (create {EV_COORDINATE}.make_precise (637, -39))
Result.extend (create {EV_COORDINATE}.make_precise (643, -33))
Result.extend (create {EV_COORDINATE}.make_precise (655, -30))
Result.extend (create {EV_COORDINATE}.make_precise (708, -23))
Result.extend (create {EV_COORDINATE}.make_precise (706, -17))
Result.extend (create {EV_COORDINATE}.make_precise (645, -9))
Result.extend (create {EV_COORDINATE}.make_precise (639, -4))
Result.extend (create {EV_COORDINATE}.make_precise (634, 4))
Result.extend (create {EV_COORDINATE}.make_precise (618, 144))
Result.extend (create {EV_COORDINATE}.make_precise (615, 153))
Result.extend (create {EV_COORDINATE}.make_precise (608, 161))
Result.extend (create {EV_COORDINATE}.make_precise (599, 169))
Result.extend (create {EV_COORDINATE}.make_precise (587, 174))
Result.extend (create {EV_COORDINATE}.make_precise (576, 168))
Result.extend (create {EV_COORDINATE}.make_precise (566, 157))
Result.extend (create {EV_COORDINATE}.make_precise (518, 14))
Result.extend (create {EV_COORDINATE}.make_precise (515, 9))
Result.extend (create {EV_COORDINATE}.make_precise (506, 9))
Result.extend (create {EV_COORDINATE}.make_precise (478, 11))
Result.extend (create {EV_COORDINATE}.make_precise (448, 12))
Result.extend (create {EV_COORDINATE}.make_precise (408, 16))
Result.extend (create {EV_COORDINATE}.make_precise (380, 17))
Result.extend (create {EV_COORDINATE}.make_precise (351, 20))
Result.extend (create {EV_COORDINATE}.make_precise (333, 21))
Result.extend (create {EV_COORDINATE}.make_precise (322, 26))
Result.extend (create {EV_COORDINATE}.make_precise (313, 32))
Result.extend (create {EV_COORDINATE}.make_precise (309, 38))
Result.extend (create {EV_COORDINATE}.make_precise (246, 402))
Result.extend (create {EV_COORDINATE}.make_precise (240, 418))
Result.extend (create {EV_COORDINATE}.make_precise (235, 431))
Result.extend (create {EV_COORDINATE}.make_precise (228, 443))
Result.extend (create {EV_COORDINATE}.make_precise (218, 456))
Result.extend (create {EV_COORDINATE}.make_precise (205, 468))
Result.extend (create {EV_COORDINATE}.make_precise (188, 472))
Result.extend (create {EV_COORDINATE}.make_precise (174, 472))
Result.extend (create {EV_COORDINATE}.make_precise (161, 467))
Result.extend (create {EV_COORDINATE}.make_precise (147, 457))
Result.extend (create {EV_COORDINATE}.make_precise (140, 446))
Result.extend (create {EV_COORDINATE}.make_precise (133, 433))
Result.extend (create {EV_COORDINATE}.make_precise (129, 417))
Result.extend (create {EV_COORDINATE}.make_precise (126, 402))
Result.extend (create {EV_COORDINATE}.make_precise (123, 381))
Result.extend (create {EV_COORDINATE}.make_precise (104, 381))
Result.extend (create {EV_COORDINATE}.make_precise (77, 379))
Result.extend (create {EV_COORDINATE}.make_precise (103, 377))
Result.extend (create {EV_COORDINATE}.make_precise (125, 377))
Result.extend (create {EV_COORDINATE}.make_precise (101, 27))
Result.extend (create {EV_COORDINATE}.make_precise (78, 25))
Result.extend (create {EV_COORDINATE}.make_precise (61, 27))
Result.extend (create {EV_COORDINATE}.make_precise (44, 29))
Result.extend (create {EV_COORDINATE}.make_precise (30, 29))
Result.extend (create {EV_COORDINATE}.make_precise (19, 28))
Result.extend (create {EV_COORDINATE}.make_precise (6, 24))
Result.extend (create {EV_COORDINATE}.make_precise (1, 14))
end
Grummen_f4f_wildcat_sil: ARRAYED_LIST [EV_COORDINATE]
-- Points decribing one of the two plane silhouettes
-- on the Allied {AIR_UNIT_WIDGETS}
once
create Result.make (0)
-- Points generated by Grabber application
Result.extend (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend (create {EV_COORDINATE}.make_precise (4, -5))
Result.extend (create {EV_COORDINATE}.make_precise (13, -5))
Result.extend (create {EV_COORDINATE}.make_precise (23, -7))
Result.extend (create {EV_COORDINATE}.make_precise (26, -35))
Result.extend (create {EV_COORDINATE}.make_precise (27, -57))
Result.extend (create {EV_COORDINATE}.make_precise (28, -76))
Result.extend (create {EV_COORDINATE}.make_precise (30, -92))
Result.extend (create {EV_COORDINATE}.make_precise (33, -100))
Result.extend (create {EV_COORDINATE}.make_precise (35, -88))
Result.extend (create {EV_COORDINATE}.make_precise (35, -79))
Result.extend (create {EV_COORDINATE}.make_precise (38, -58))
Result.extend (create {EV_COORDINATE}.make_precise (39, -37))
Result.extend (create {EV_COORDINATE}.make_precise (39, -25))
Result.extend (create {EV_COORDINATE}.make_precise (41, -16))
Result.extend (create {EV_COORDINATE}.make_precise (41, -7))
Result.extend (create {EV_COORDINATE}.make_precise (46, -5))
Result.extend (create {EV_COORDINATE}.make_precise (46, -13))
Result.extend (create {EV_COORDINATE}.make_precise (51, -19))
Result.extend (create {EV_COORDINATE}.make_precise (49, -37))
Result.extend (create {EV_COORDINATE}.make_precise (53, -43))
Result.extend (create {EV_COORDINATE}.make_precise (60, -47))
Result.extend (create {EV_COORDINATE}.make_precise (72, -49))
Result.extend (create {EV_COORDINATE}.make_precise (88, -54))
Result.extend (create {EV_COORDINATE}.make_precise (104, -55))
Result.extend (create {EV_COORDINATE}.make_precise (120, -57))
Result.extend (create {EV_COORDINATE}.make_precise (128, -58))
Result.extend (create {EV_COORDINATE}.make_precise (130, -62))
Result.extend (create {EV_COORDINATE}.make_precise (151, -62))
Result.extend (create {EV_COORDINATE}.make_precise (154, -65))
Result.extend (create {EV_COORDINATE}.make_precise (173, -449))
Result.extend (create {EV_COORDINATE}.make_precise (176, -455))
Result.extend (create {EV_COORDINATE}.make_precise (182, -457))
Result.extend (create {EV_COORDINATE}.make_precise (191, -459))
Result.extend (create {EV_COORDINATE}.make_precise (201, -461))
Result.extend (create {EV_COORDINATE}.make_precise (214, -461))
Result.extend (create {EV_COORDINATE}.make_precise (225, -461))
Result.extend (create {EV_COORDINATE}.make_precise (236, -460))
Result.extend (create {EV_COORDINATE}.make_precise (255, -459))
Result.extend (create {EV_COORDINATE}.make_precise (274, -455))
Result.extend (create {EV_COORDINATE}.make_precise (297, -449))
Result.extend (create {EV_COORDINATE}.make_precise (349, -64))
Result.extend (create {EV_COORDINATE}.make_precise (352, -59))
Result.extend (create {EV_COORDINATE}.make_precise (357, -56))
Result.extend (create {EV_COORDINATE}.make_precise (378, -53))
Result.extend (create {EV_COORDINATE}.make_precise (393, -52))
Result.extend (create {EV_COORDINATE}.make_precise (408, -50))
Result.extend (create {EV_COORDINATE}.make_precise (427, -48))
Result.extend (create {EV_COORDINATE}.make_precise (442, -46))
Result.extend (create {EV_COORDINATE}.make_precise (458, -44))
Result.extend (create {EV_COORDINATE}.make_precise (479, -41))
Result.extend (create {EV_COORDINATE}.make_precise (493, -39))
Result.extend (create {EV_COORDINATE}.make_precise (512, -37))
Result.extend (create {EV_COORDINATE}.make_precise (527, -32))
Result.extend (create {EV_COORDINATE}.make_precise (542, -31))
Result.extend (create {EV_COORDINATE}.make_precise (560, -26))
Result.extend (create {EV_COORDINATE}.make_precise (574, -24))
Result.extend (create {EV_COORDINATE}.make_precise (616, -160))
Result.extend (create {EV_COORDINATE}.make_precise (619, -163))
Result.extend (create {EV_COORDINATE}.make_precise (625, -165))
Result.extend (create {EV_COORDINATE}.make_precise (631, -166))
Result.extend (create {EV_COORDINATE}.make_precise (638, -166))
Result.extend (create {EV_COORDINATE}.make_precise (646, -166))
Result.extend (create {EV_COORDINATE}.make_precise (657, -166))
Result.extend (create {EV_COORDINATE}.make_precise (665, -164))
Result.extend (create {EV_COORDINATE}.make_precise (676, -160))
Result.extend (create {EV_COORDINATE}.make_precise (690, -26))
Result.extend (create {EV_COORDINATE}.make_precise (650, -11))
Result.extend (create {EV_COORDINATE}.make_precise (659, -9))
Result.extend (create {EV_COORDINATE}.make_precise (666, -7))
Result.extend (create {EV_COORDINATE}.make_precise (669, -4))
Result.extend (create {EV_COORDINATE}.make_precise (681, -3))
Result.extend (create {EV_COORDINATE}.make_precise (693, 0))
Result.extend (create {EV_COORDINATE}.make_precise (684, 3))
Result.extend (create {EV_COORDINATE}.make_precise (674, 4))
Result.extend (create {EV_COORDINATE}.make_precise (666, 8))
Result.extend (create {EV_COORDINATE}.make_precise (651, 10))
Result.extend (create {EV_COORDINATE}.make_precise (690, 29))
Result.extend (create {EV_COORDINATE}.make_precise (677, 160))
Result.extend (create {EV_COORDINATE}.make_precise (666, 164))
Result.extend (create {EV_COORDINATE}.make_precise (655, 166))
Result.extend (create {EV_COORDINATE}.make_precise (644, 167))
Result.extend (create {EV_COORDINATE}.make_precise (629, 166))
Result.extend (create {EV_COORDINATE}.make_precise (614, 164))
Result.extend (create {EV_COORDINATE}.make_precise (574, 26))
Result.extend (create {EV_COORDINATE}.make_precise (560, 29))
Result.extend (create {EV_COORDINATE}.make_precise (543, 31))
Result.extend (create {EV_COORDINATE}.make_precise (526, 35))
Result.extend (create {EV_COORDINATE}.make_precise (508, 37))
Result.extend (create {EV_COORDINATE}.make_precise (493, 39))
Result.extend (create {EV_COORDINATE}.make_precise (475, 42))
Result.extend (create {EV_COORDINATE}.make_precise (459, 44))
Result.extend (create {EV_COORDINATE}.make_precise (441, 47))
Result.extend (create {EV_COORDINATE}.make_precise (427, 49))
Result.extend (create {EV_COORDINATE}.make_precise (409, 51))
Result.extend (create {EV_COORDINATE}.make_precise (394, 53))
Result.extend (create {EV_COORDINATE}.make_precise (377, 54))
Result.extend (create {EV_COORDINATE}.make_precise (359, 55))
Result.extend (create {EV_COORDINATE}.make_precise (355, 58))
Result.extend (create {EV_COORDINATE}.make_precise (352, 63))
Result.extend (create {EV_COORDINATE}.make_precise (297, 450))
Result.extend (create {EV_COORDINATE}.make_precise (287, 454))
Result.extend (create {EV_COORDINATE}.make_precise (274, 455))
Result.extend (create {EV_COORDINATE}.make_precise (259, 457))
Result.extend (create {EV_COORDINATE}.make_precise (245, 459))
Result.extend (create {EV_COORDINATE}.make_precise (234, 460))
Result.extend (create {EV_COORDINATE}.make_precise (222, 460))
Result.extend (create {EV_COORDINATE}.make_precise (212, 461))
Result.extend (create {EV_COORDINATE}.make_precise (197, 460))
Result.extend (create {EV_COORDINATE}.make_precise (183, 457))
Result.extend (create {EV_COORDINATE}.make_precise (176, 456))
Result.extend (create {EV_COORDINATE}.make_precise (171, 450))
Result.extend (create {EV_COORDINATE}.make_precise (157, 70))
Result.extend (create {EV_COORDINATE}.make_precise (155, 65))
Result.extend (create {EV_COORDINATE}.make_precise (151, 61))
Result.extend (create {EV_COORDINATE}.make_precise (127, 61))
Result.extend (create {EV_COORDINATE}.make_precise (122, 58))
Result.extend (create {EV_COORDINATE}.make_precise (107, 58))
Result.extend (create {EV_COORDINATE}.make_precise (90, 56))
Result.extend (create {EV_COORDINATE}.make_precise (75, 52))
Result.extend (create {EV_COORDINATE}.make_precise (62, 49))
Result.extend (create {EV_COORDINATE}.make_precise (55, 46))
Result.extend (create {EV_COORDINATE}.make_precise (49, 39))
Result.extend (create {EV_COORDINATE}.make_precise (49, 31))
Result.extend (create {EV_COORDINATE}.make_precise (48, 18))
Result.extend (create {EV_COORDINATE}.make_precise (46, 14))
Result.extend (create {EV_COORDINATE}.make_precise (45, 5))
Result.extend (create {EV_COORDINATE}.make_precise (40, 6))
Result.extend (create {EV_COORDINATE}.make_precise (41, 33))
Result.extend (create {EV_COORDINATE}.make_precise (40, 46))
Result.extend (create {EV_COORDINATE}.make_precise (39, 62))
Result.extend (create {EV_COORDINATE}.make_precise (38, 76))
Result.extend (create {EV_COORDINATE}.make_precise (36, 90))
Result.extend (create {EV_COORDINATE}.make_precise (33, 103))
Result.extend (create {EV_COORDINATE}.make_precise (29, 95))
Result.extend (create {EV_COORDINATE}.make_precise (28, 83))
Result.extend (create {EV_COORDINATE}.make_precise (28, 73))
Result.extend (create {EV_COORDINATE}.make_precise (27, 55))
Result.extend (create {EV_COORDINATE}.make_precise (28, 40))
Result.extend (create {EV_COORDINATE}.make_precise (26, 35))
Result.extend (create {EV_COORDINATE}.make_precise (25, 11))
Result.extend (create {EV_COORDINATE}.make_precise (23, 8))
Result.extend (create {EV_COORDINATE}.make_precise (15, 9))
Result.extend (create {EV_COORDINATE}.make_precise (3, 5))
Result.extend (create {EV_COORDINATE}.make_precise (-2, 4))
end
amphibious_symbol_sil: ARRAYED_LIST [EV_COORDINATE]
-- Points decribing the silhouette on
-- the {AMPHIBIOUS_UNIT_WIDGETS}
once
create Result.make (0)
-- Points generated by Grabber application
Result.extend (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend (create {EV_COORDINATE}.make_precise (657, -6))
Result.extend (create {EV_COORDINATE}.make_precise (672, 0))
Result.extend (create {EV_COORDINATE}.make_precise (685, 12))
Result.extend (create {EV_COORDINATE}.make_precise (696, 30))
Result.extend (create {EV_COORDINATE}.make_precise (696, 53))
Result.extend (create {EV_COORDINATE}.make_precise (706, 457))
Result.extend (create {EV_COORDINATE}.make_precise (703, 467))
Result.extend (create {EV_COORDINATE}.make_precise (691, 479))
Result.extend (create {EV_COORDINATE}.make_precise (677, 485))
Result.extend (create {EV_COORDINATE}.make_precise (662, 487))
Result.extend (create {EV_COORDINATE}.make_precise (24, 489))
Result.extend (create {EV_COORDINATE}.make_precise (134, 413))
Result.extend (create {EV_COORDINATE}.make_precise (625, 88))
Result.extend (create {EV_COORDINATE}.make_precise (637, 95))
Result.extend (create {EV_COORDINATE}.make_precise (647, 154))
Result.extend (create {EV_COORDINATE}.make_precise (652, 367))
Result.extend (create {EV_COORDINATE}.make_precise (630, 375))
Result.extend (create {EV_COORDINATE}.make_precise (614, 374))
Result.extend (create {EV_COORDINATE}.make_precise (134, 77))
Result.extend (create {EV_COORDINATE}.make_precise (129, 66))
Result.extend (create {EV_COORDINATE}.make_precise (140, 57))
Result.extend (create {EV_COORDINATE}.make_precise (555, 55))
Result.extend (create {EV_COORDINATE}.make_precise (556, 63))
Result.extend (create {EV_COORDINATE}.make_precise (51, 389))
Result.extend (create {EV_COORDINATE}.make_precise (37, 392))
Result.extend (create {EV_COORDINATE}.make_precise (29, 385))
Result.extend (create {EV_COORDINATE}.make_precise (27, 92))
Result.extend (create {EV_COORDINATE}.make_precise (36, 88))
Result.extend (create {EV_COORDINATE}.make_precise (46, 90))
Result.extend (create {EV_COORDINATE}.make_precise (569, 422))
Result.extend (create {EV_COORDINATE}.make_precise (103, 429))
Result.extend (create {EV_COORDINATE}.make_precise (21, 486))
Result.extend (create {EV_COORDINATE}.make_precise (-12, 480))
Result.extend (create {EV_COORDINATE}.make_precise (-26, 469))
Result.extend (create {EV_COORDINATE}.make_precise (-32, 453))
Result.extend (create {EV_COORDINATE}.make_precise (-35, 27))
Result.extend (create {EV_COORDINATE}.make_precise (-27, 15))
Result.extend (create {EV_COORDINATE}.make_precise (-17, 5))
end
end

View File

@@ -0,0 +1,62 @@
note
description: "Root class for testing the VITP game."
author: "Jimmy J. Johnson"
class
VITP_APPLICATION
inherit
JJ_APPLICATION
redefine
create_interface_objects,
target,
window_anchor
end
create
make_and_launch
feature {NONE} -- Initialization
create_interface_objects
-- Set up the attribute
do
print ("VITP_APPLICATION.create_interface_objects %N")
Precursor
target.sequence_of_play.start
print ("%T end VITP_APPLICATION.create_interface_objects %N")
end
feature {NONE} -- Implementation (anchors)
target: VITP_GAME
-- The object this application will handle
target_anchor: VITP_GAME
-- Anchor for features using nodes.
-- Not to be called; just used to anchor types.
-- Declared as a feature to avoid adding an attribute.
require else
not_callable: False
do
check
do_not_call: False then
-- Because give no info; simply used as anchor.
end
end
window_anchor: VITP_MAIN_WINDOW
-- Anchor for the type of `first_window'
-- Not to be called; just used to anchor types.
-- Declared as a feature to avoid adding an attribute.
require else
not_callable: False
do
check
do_not_call: False then
-- Because give no info; simply used as anchor.
end
end
end

View File

@@ -0,0 +1,115 @@
note
description: "[
Main window for VITP
]"
author: "Jimmy J. Johnson"
class
VITP_MAIN_WINDOW
inherit
JJ_MAIN_WINDOW
redefine
create_interface_objects,
initialize,
-- initialize_interface,
target_imp,
set_target
-- draw
end
FONT_AND_COLOR_CONSTANTS
export
{NONE}
all
undefine
default_create,
copy
end
GAME_CONSTANTS
export
{NONE}
all
undefine
default_create,
copy
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Create objects to be used by `Current' in `initialize'
-- Implemented by descendants to create attached objects
-- in order to adhere to void-safety due to the implementation bridge pattern.
do
print ("VITP_MAIN_WINDOW.create_interface_objects %N")
Precursor {JJ_MAIN_WINDOW}
-- Call to force creation of VITP_GAME
print ("%T VITP_MAIN_WINDOW.create_interface_objects just before creating board_tool %N")
create board_tool.make (target)
print ("%T VITP_MAIN_WINDOW.create_interface_objects just before creating chart_tool %N")
create chart_tool.make (target)
create sequence_tool.make (target)
-- create board_tool
-- create chart_tool
-- create sequence_tool
print ("%T end VITP_MAIN_WINDOW.create_interface_objects %N")
end
initialize
-- Set up the window
local
g: VITP_GAME
do
print ("VITP_MAIN_WINDOW.initialize %N")
Precursor {JJ_MAIN_WINDOW}
split_manager.enable_mode_changes
split_manager.set_vertical
-- split_manager.extend (sequence_tool)
split_manager.extend (board_tool)
split_manager.set_horizontal
split_manager.extend (chart_tool)
-- -- Must `start' the `sequence_of_play' here, not in
-- -- {VITP_GAME} because of Void safety
-- create g
-- g.sequence_of_play.start
-- set_target (g)
-- Set window size, etc.
set_size (1600, 1200)
set_position (600, 100)
print ("%T end VITP_MAIN_WINDOW.initialize %N")
end
feature -- Element change
set_target (a_game: like target)
-- Change the target
do
Precursor {JJ_MAIN_WINDOW} (a_game)
board_tool.set_target (a_game)
chart_tool.set_target (a_game)
end
feature -- Basic operations
feature {NONE} -- Implementation
board_tool: BOARD_TOOL
-- Drawing will be done here.
chart_tool: CHART_TOOL
-- Draw the order of appearance charts here
sequence_tool: GAME_SEQUENCE_TOOL
-- Tool containing the view that displays the sequence of play
target_imp: detachable VITP_GAME
-- Implementation of the `target'
end

View File

@@ -0,0 +1,80 @@
note
description: "[
Class combining the various widget factories into one.
]"
author: "Jimmy J. Johnson"
date: "5/15/24"
copyright: "Copyright (c) 2024, Jimmy J. Johnson"
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
class
ALL_WIDGETS_FACTORY
inherit
ATTACK_WIDGETS_FACTORY
redefine
make_widgets,
extend_widgets,
pair_widgets,
fill_widgets
end
LOCATION_WIDGITS_FACTORY
redefine
make_widgets,
extend_widgets,
pair_widgets,
fill_widgets
end
create
make
feature {NONE} -- Initialization
make_widgets
-- Create widgets for the corresponding game item
-- for each of the ancestors
do
-- create all_widgets.make (100)
print ("ALL_WIDGETS_FACTORY.make_widgets %N")
Precursor {ATTACK_WIDGETS_FACTORY}
Precursor {LOCATION_WIDGITS_FACTORY}
print ("%T end ALL_WIDGETS_FACTORY.make_widgets %N")
end
--feature -- Access
-- all_widgets: VITP_WIDGET_TABLE [VITP_WIDGET, VITP_ITEM]
-- -- Keeps track of all widgets
feature {NONE} -- Implementation
extend_widgets
-- Put each widget into `world'
-- for each of the ancetors
do
Precursor {ATTACK_WIDGETS_FACTORY}
Precursor {LOCATION_WIDGITS_FACTORY}
-- widgets.merge (attack_widgets)
-- widgets.merge (location_widgets)
end
pair_widgets
-- Associate each widget with a unit
-- for each of the ancestors
do
Precursor {ATTACK_WIDGETS_FACTORY}
Precursor {LOCATION_WIDGITS_FACTORY}
end
fill_widgets
-- Call `set_target' to give each widget a target
-- for each of the ancestors
do
Precursor {ATTACK_WIDGETS_FACTORY}
Precursor {LOCATION_WIDGITS_FACTORY}
end
end

View File

@@ -0,0 +1,714 @@
note
description: "[
One of the classes that decompose the numourous VITP widgets
into more managable groups. This class models the widgets
that contain all the Allied units for turns one through nine.
]"
author: "Jimmy J. Johnson"
date: "5/15/24"
copyright: "Copyright (c) 2024, Jimmy J. Johnson"
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
class
ALLIED_FORCES_WIDGET_FACTORY
inherit
WIDGET_FACTORY
redefine
make_widgets,
extend_widgets,
pair_widgets,
fill_widgets
end
create
make
feature {NONE} -- Initialization
make_widgets
-- Create widgets for the corresponding game item
do
create allied_forces_widgets.make (100)
Precursor {WIDGET_FACTORY}
-- Turn 1, on battleship row (Pearl Harbor)
create nevada_widget.make (game.nevada)
create arizona_widget.make (game.arizona)
create west_virginia_widget.make (game.west_virginia)
create tennessee_widget.make (game.tennessee)
create oklahoma_widget.make (game.oklahoma)
create maryland_widget.make (game.maryland)
create california_widget.make (game.california)
create pennsylvania_widget.make (game.pennsylvania)
create new_orleans_widget.make (game.new_orleans)
create san_francisco_widget.make (game.san_francisco)
create seventh_af_widget.make (game.seventh_af)
-- Turn 1, at sea (cannot move)
create hermes_widget.make (game.hermes)
create revenge_widget.make (game.revenge)
create prince_of_wales_widget.make (game.prince_of_wales)
create repulse_widget.make (game.repulse)
create fifth_af_widget.make (game.fifth_af)
create louisville_widget.make (game.louisville)
create pensacola_widget.make (game.pensacola)
create indianapolis_widget.make (game.indianapolis)
create minneapolis_widget.make (game.minneapolis)
-- Turn 1, in port (may move)
create houston_widget.make (game.houston)
create exeter_widget.make (game.exeter)
create de_ruyter_widget.make (game.de_ruyter)
create australia_ship_widget.make (game.australia_ship)
create canberra_widget.make (game.canberra)
-- Turn 1, Location uncertain (group W)
create enterprise_widget.make (game.enterprise)
create salt_lake_city_widget.make (game.salt_lake_city)
create northampton_widget.make (game.northampton)
create chester_widget.make (game.chester)
-- Turn 1, Location uncertain (group X)
create lexington_widget.make (game.lexington)
create chicago_widget.make (game.chicago)
create portland_widget.make (game.portland)
create astoria_widget.make (game.astoria)
-- Turn 1, Location uncertain (group Y)
create saratoga_widget.make (game.saratoga)
-- Turn 1, Location uncertain (group Z)
create hornet_widget.make (game.hornet)
create yorktown_widget.make (game.yorktown)
create vincennes_widget.make (game.vincennes)
create quincy_widget.make (game.quincy)
-- Turn_2
create royal_sovereign_widget.make (game.royal_sovereign)
create ramilies_widget.make (game.ramilies)
create resolution_widget.make (game.resolution)
create warspite_widget.make (game.warspite)
create indomitable_widget.make (game.indomitable)
create formidable_widget.make (game.formidable)
create cornwall_widget.make (game.cornwall)
create dorestshire_widget.make (game.dorestshire)
create new_mexico_widget.make (game.new_mexico)
create idaho_widget.make (game.idaho)
create tenth_af_widget.make (game.tenth_af)
create eleventh_af_widget.make (game.eleventh_af)
-- Turn 3
create north_carolina_widget.make (game.north_carolina)
create mississippi_widget.make (game.mississippi)
create colorado_widget.make (game.colorado)
create marines_1_widget.make (game.marines_1)
create marines_2_widget.make (game.marines_2)
create raaf_widget.make (game.raaf)
create rnzaf_widget.make (game.rnzaf)
create valiant_widget.make (game.valiant)
create illustrious_widget.make (game.illustrious)
-- Turn 4
create south_dakota_widget.make (game.south_dakota)
create indiana_widget.make (game.indiana)
create washington_widget.make (game.washington)
create wasp_widget.make (game.wasp)
create marine_widget.make (game.marine)
create thirteenth_af_widget.make (game.thirteenth_af)
create devonshire_widget.make (game.devonshire)
create shropshire_widget.make (game.shropshire)
create first_027_removal_widget.make (game.first_027_removal)
create second_027_removal_widget.make (game.second_027_removal)
-- Turn 5
create massachusetts_widget.make (game.massachusetts)
create wichita_widget.make (game.wichita)
create victorious_widget.make (game.victorious)
create marines_3_widget.make (game.marines_3)
create fourteenth_af_widget.make (game.fourteenth_af)
create naval_widget.make (game.naval)
create resolution_removal_widget.make (game.resolution_removal)
create revenge_removal_widget.make (game.revenge_removal)
create valiant_removal_widget.make (game.valiant_removal)
create warspite_removal_widget.make (game.warspite_removal)
-- Turn 6
create alabama_widget.make (game.alabama)
create essex_widget.make (game.essex)
create cv_10_widget.make (game.cv_10)
create cv_16_widget.make (game.cv_16)
create independence_widget.make (game.independence)
create princeton_widget.make (game.princeton)
create belleau_wood_widget.make (game.belleau_wood)
create cowpens_widget.make (game.cowpens)
create monterey_widget.make (game.monterey)
create baltimore_widget.make (game.baltimore)
create boston_widget.make (game.boston)
create marines_4_widget.make (game.marines_4)
create victorious_removal_widget.make (game.victorious_removal)
-- Turn 7
create iowa_widget.make (game.iowa)
create new_jersey_widget.make (game.new_jersey)
create intrepid_widget.make (game.intrepid)
create cv_12_widget.make (game.cv_12)
create bunker_hill_widget.make (game.bunker_hill)
create cv_18_widget.make (game.cv_18)
create bataan_widget.make (game.bataan)
create cabot_widget.make (game.cabot)
create langley_ii_widget.make (game.langley_ii)
create canberra_ii_widget.make (game.canberra_ii)
create quincy_ii_widget.make (game.quincy_ii)
create f_boat_widget.make (game.f_boat)
create third_027_removal_widget.make (game.third_027_removal)
create first_443_removal_widget.make (game.first_443_removal)
-- Turn 8
create wisconsin_widget.make (game.wisconsin)
create missouri_widget.make (game.missouri)
create ticonderoga_widget.make (game.ticonderoga)
create san_jacinto_widget.make (game.san_jacinto)
create marines_5_widget.make (game.marines_5)
-- Turn 9
create new_york_widget.make (game.new_york)
create texas_widget.make (game.texas)
create alaska_widget.make (game.alaska)
create franklin_widget.make (game.franklin)
create shangri_la_widget.make (game.shangri_la)
end
feature -- Access
allied_forces_widgets: VITP_WIDGET_TABLE [ATTACK_UNIT_WIDGET, ATTACK_UNIT]
-- Keeps track of Allied attack units turns 2 to 9
feature -- Access (Allied unit widgets turn 2 to 9)
-- On Battleship Row (Pearl Harbor)
nevada_widget: SHIP_WIDGET
arizona_widget: SHIP_WIDGET
west_virginia_widget: SHIP_WIDGET
tennessee_widget: SHIP_WIDGET
oklahoma_widget: SHIP_WIDGET
maryland_widget: SHIP_WIDGET
california_widget: SHIP_WIDGET
pennsylvania_widget: SHIP_WIDGET
new_orleans_widget: SHIP_WIDGET
san_francisco_widget: SHIP_WIDGET
seventh_af_widget: ALLIED_AIR_UNIT_WIDGET
-- At sea (cannot move)
hermes_widget: SHIP_WIDGET
revenge_widget: SHIP_WIDGET
prince_of_wales_widget: SHIP_WIDGET
repulse_widget: SHIP_WIDGET
fifth_af_widget: ALLIED_AIR_UNIT_WIDGET
louisville_widget: SHIP_WIDGET
pensacola_widget: SHIP_WIDGET
indianapolis_widget: SHIP_WIDGET
minneapolis_widget: SHIP_WIDGET
-- In port (may move)
houston_widget: SHIP_WIDGET
exeter_widget: SHIP_WIDGET
de_ruyter_widget: SHIP_WIDGET
australia_ship_widget: SHIP_WIDGET
canberra_widget: SHIP_WIDGET
-- Location Uncertain, group W
enterprise_widget: SHIP_WIDGET
salt_lake_city_widget: SHIP_WIDGET
northampton_widget: SHIP_WIDGET
chester_widget: SHIP_WIDGET
-- Location Uncertain, group X
lexington_widget: SHIP_WIDGET
chicago_widget: SHIP_WIDGET
portland_widget: SHIP_WIDGET
astoria_widget: SHIP_WIDGET
-- Location Uncertain, group Y
saratoga_widget: SHIP_WIDGET
-- Location Uncertain, group W
hornet_widget: SHIP_WIDGET
yorktown_widget: SHIP_WIDGET
vincennes_widget: SHIP_WIDGET
quincy_widget: SHIP_WIDGET
-- Turn 2
royal_sovereign_widget: SHIP_WIDGET
ramilies_widget: SHIP_WIDGET
resolution_widget: SHIP_WIDGET
warspite_widget: SHIP_WIDGET
indomitable_widget: SHIP_WIDGET
formidable_widget: SHIP_WIDGET
cornwall_widget: SHIP_WIDGET
dorestshire_widget: SHIP_WIDGET
new_mexico_widget: SHIP_WIDGET
idaho_widget: SHIP_WIDGET
tenth_af_widget: ALLIED_AIR_UNIT_WIDGET
eleventh_af_widget: ALLIED_AIR_UNIT_WIDGET
-- Turn 3
north_carolina_widget: SHIP_WIDGET
mississippi_widget: SHIP_WIDGET
colorado_widget: SHIP_WIDGET
marines_1_widget: AMPHIBIOUS_UNIT_wIDGET
marines_2_widget: AMPHIBIOUS_UNIT_WIDGET
raaf_widget: ALLIED_AIR_UNIT_WIDGET
rnzaf_widget: ALLIED_AIR_UNIT_WIDGET
valiant_widget: SHIP_WIDGET
illustrious_widget: SHIP_WIDGET
-- Turn 4
south_dakota_widget: SHIP_WIDGET
indiana_widget: SHIP_WIDGET
washington_widget: SHIP_WIDGET
wasp_widget: SHIP_WIDGET
marine_widget: ALLIED_AIR_UNIT_WIDGET
thirteenth_af_widget: ALLIED_AIR_UNIT_WIDGET
devonshire_widget: SHIP_WIDGET
shropshire_widget: SHIP_WIDGET
first_027_removal_widget: SHIP_WIDGET
second_027_removal_widget: SHIP_WIDGET
-- Turn 5
massachusetts_widget: SHIP_WIDGET
wichita_widget: SHIP_WIDGET
victorious_widget: SHIP_WIDGET
marines_3_widget: AMPHIBIOUS_UNIT_WIDGET
fourteenth_af_widget: ALLIED_AIR_UNIT_WIDGET
naval_widget: ALLIED_AIR_UNIT_WIDGET
resolution_removal_widget: SHIP_WIDGET
revenge_removal_widget: SHIP_WIDGET
valiant_removal_widget: SHIP_WIDGET
warspite_removal_widget: SHIP_WIDGET
-- Turn 6
alabama_widget: SHIP_WIDGET
essex_widget: SHIP_WIDGET
cv_10_widget: SHIP_WIDGET
cv_16_widget: SHIP_WIDGET
independence_widget: SHIP_WIDGET
princeton_widget: SHIP_WIDGET
belleau_wood_widget: SHIP_WIDGET
cowpens_widget: SHIP_WIDGET
monterey_widget: SHIP_WIDGET
baltimore_widget: SHIP_WIDGET
boston_widget: SHIP_WIDGET
marines_4_widget: AMPHIBIOUS_UNIT_WIDGET
victorious_removal_widget: SHIP_WIDGET
-- Turn 7
iowa_widget: SHIP_WIDGET
new_jersey_widget: SHIP_WIDGET
intrepid_widget: SHIP_WIDGET
cv_12_widget: SHIP_WIDGET
bunker_hill_widget: SHIP_WIDGET
cv_18_widget: SHIP_WIDGET
bataan_widget: SHIP_WIDGET
cabot_widget: SHIP_WIDGET
langley_ii_widget: SHIP_WIDGET
canberra_ii_widget: SHIP_WIDGET
quincy_ii_widget: SHIP_WIDGET
f_boat_widget: SUBMARINE_WIDGET
third_027_removal_widget: SHIP_WIDGET
first_443_removal_widget: SHIP_WIDGET
-- Turn 8
wisconsin_widget: SHIP_WIDGET
missouri_widget: SHIP_WIDGET
ticonderoga_widget: SHIP_WIDGET
san_jacinto_widget: SHIP_WIDGET
marines_5_widget: AMPHIBIOUS_UNIT_WIDGET
-- Turn 9
new_york_widget: SHIP_WIDGET
texas_widget: SHIP_WIDGET
alaska_widget: SHIP_WIDGET
franklin_widget: SHIP_WIDGET
shangri_la_widget: SHIP_WIDGET
feature {NONE} -- Implementation
extend_widgets
-- Put turn-two to turn-nine allied {ATTACK_UNIT_WIDGET} into `world'.
do
create allied_forces_widgets.make (100)
-- On Battleship Row (Pearl Harbor)
allied_forces_widgets.extend (nevada_widget, game.nevada)
allied_forces_widgets.extend (arizona_widget, game.arizona)
allied_forces_widgets.extend (west_virginia_widget, game.west_virginia)
allied_forces_widgets.extend (tennessee_widget, game.tennessee)
allied_forces_widgets.extend (oklahoma_widget, game.oklahoma)
allied_forces_widgets.extend (maryland_widget, game.maryland)
allied_forces_widgets.extend (california_widget, game.california)
allied_forces_widgets.extend (pennsylvania_widget, game.pennsylvania)
allied_forces_widgets.extend (new_orleans_widget, game.new_orleans)
allied_forces_widgets.extend (san_francisco_widget, game.san_francisco)
allied_forces_widgets.extend (seventh_af_widget, game.seventh_af)
-- At sea (cannot move)
allied_forces_widgets.extend (hermes_widget, game.hermes)
allied_forces_widgets.extend (revenge_widget, game.revenge)
allied_forces_widgets.extend (prince_of_wales_widget, game.prince_of_wales)
allied_forces_widgets.extend (repulse_widget, game.repulse)
allied_forces_widgets.extend (fifth_af_widget, game.fifth_af)
allied_forces_widgets.extend (louisville_widget, game.louisville)
allied_forces_widgets.extend (pensacola_widget, game.pensacola)
allied_forces_widgets.extend (indianapolis_widget, game.indianapolis)
allied_forces_widgets.extend (minneapolis_widget, game.minneapolis)
-- In port (may move)
allied_forces_widgets.extend (houston_widget, game.houston)
allied_forces_widgets.extend (exeter_widget, game.exeter)
allied_forces_widgets.extend (de_ruyter_widget, game.de_ruyter)
allied_forces_widgets.extend (australia_ship_widget, game.australia_ship)
allied_forces_widgets.extend (canberra_widget, game.canberra)
-- Location Uncertain, group W
allied_forces_widgets.extend (enterprise_widget, game.enterprise)
allied_forces_widgets.extend (salt_lake_city_widget, game.salt_lake_city)
allied_forces_widgets.extend (northampton_widget, game.northampton)
allied_forces_widgets.extend (chester_widget, game.chester)
-- Location Uncertain, group X
allied_forces_widgets.extend (lexington_widget, game.lexington)
allied_forces_widgets.extend (chicago_widget, game.chicago)
allied_forces_widgets.extend (portland_widget, game.portland)
allied_forces_widgets.extend (astoria_widget, game.astoria)
-- Location Uncertain, group Y
allied_forces_widgets.extend (saratoga_widget, game.saratoga)
-- Location Uncertain (group Z
allied_forces_widgets.extend (hornet_widget, game.hornet)
allied_forces_widgets.extend (yorktown_widget, game.yorktown)
allied_forces_widgets.extend (vincennes_widget, game.vincennes)
allied_forces_widgets.extend (quincy_widget, game.quincy)
-- Turn 2
allied_forces_widgets.extend (royal_sovereign_widget, game.royal_sovereign)
allied_forces_widgets.extend (ramilies_widget, game.ramilies)
allied_forces_widgets.extend (resolution_widget, game.resolution)
allied_forces_widgets.extend (warspite_widget, game.warspite)
allied_forces_widgets.extend (indomitable_widget, game.indomitable)
allied_forces_widgets.extend (formidable_widget, game.formidable)
allied_forces_widgets.extend (cornwall_widget, game.cornwall)
allied_forces_widgets.extend (dorestshire_widget, game.dorestshire)
allied_forces_widgets.extend (new_mexico_widget, game.new_mexico)
allied_forces_widgets.extend (idaho_widget, game.idaho)
allied_forces_widgets.extend (eleventh_af_widget, game.eleventh_af)
-- Turn 3
allied_forces_widgets.extend (north_carolina_widget, game.north_carolina)
allied_forces_widgets.extend (mississippi_widget, game.mississippi)
allied_forces_widgets.extend (colorado_widget, game.colorado)
allied_forces_widgets.extend (marines_1_widget, game.marines_1)
allied_forces_widgets.extend (marines_2_widget, game.marines_2)
allied_forces_widgets.extend (raaf_widget, game.raaf)
allied_forces_widgets.extend (rnzaf_widget, game.rnzaf)
allied_forces_widgets.extend (valiant_widget, game.valiant)
allied_forces_widgets.extend (illustrious_widget, game.illustrious)
-- Turn 4
allied_forces_widgets.extend (south_dakota_widget, game.south_dakota)
allied_forces_widgets.extend (indiana_widget, game.indiana)
allied_forces_widgets.extend (washington_widget, game.washington)
allied_forces_widgets.extend (wasp_widget, game.wasp)
allied_forces_widgets.extend (marine_widget, game.marine)
allied_forces_widgets.extend (thirteenth_af_widget, game.thirteenth_af)
allied_forces_widgets.extend (devonshire_widget, game.devonshire)
allied_forces_widgets.extend (shropshire_widget, game.shropshire)
-- allied_forces_widgets.extend (first_027_removal_widget, game.first_027_removal)
-- allied_forces_widgets.extend (second_027_removal_widget, game.second_027_removal)
-- Turn 5
allied_forces_widgets.extend (massachusetts_widget, game.massachusetts)
allied_forces_widgets.extend (wichita_widget, game.wichita)
allied_forces_widgets.extend (victorious_widget, game.victorious)
allied_forces_widgets.extend (marines_3_widget, game.marines_3)
allied_forces_widgets.extend (fourteenth_af_widget, game.fourteenth_af)
allied_forces_widgets.extend (naval_widget, game.naval)
-- allied_forces_widgets.extend (resolution_removal_widget, game.resolution_removal)
-- allied_forces_widgets.extend (revenge_removal_widget, game.revenge_removal)
-- allied_forces_widgets.extend (valiant_removal_widget, game.valiant_removal)
-- allied_forces_widgets.extend (warspite_removal_widget, game.warspite_removal)
-- Turn 6
allied_forces_widgets.extend (alabama_widget, game.alabama)
allied_forces_widgets.extend (essex_widget, game.essex)
allied_forces_widgets.extend (cv_10_widget, game.cv_10)
allied_forces_widgets.extend (cv_16_widget, game.cv_16)
allied_forces_widgets.extend (independence_widget, game.independence)
allied_forces_widgets.extend (princeton_widget, game.princeton)
allied_forces_widgets.extend (belleau_wood_widget, game.belleau_wood)
allied_forces_widgets.extend (cowpens_widget, game.cowpens)
allied_forces_widgets.extend (monterey_widget, game.monterey)
allied_forces_widgets.extend (baltimore_widget, game.baltimore)
allied_forces_widgets.extend (boston_widget, game.boston)
allied_forces_widgets.extend (marines_4_widget, game.marines_4)
-- allied_forces_widgets.extend (victorious_removal_widget, game.victorious_removal)
-- Turn 7
allied_forces_widgets.extend (iowa_widget, game.iowa)
allied_forces_widgets.extend (new_jersey_widget, game.new_jersey)
allied_forces_widgets.extend (intrepid_widget, game.intrepid)
allied_forces_widgets.extend (cv_12_widget, game.cv_12)
allied_forces_widgets.extend (bunker_hill_widget, game.bunker_hill)
allied_forces_widgets.extend (cv_18_widget, game.cv_18)
allied_forces_widgets.extend (bataan_widget, game.bataan)
allied_forces_widgets.extend (cabot_widget, game.cabot)
allied_forces_widgets.extend (langley_ii_widget, game.langley_ii)
allied_forces_widgets.extend (canberra_ii_widget, game.canberra_ii)
allied_forces_widgets.extend (quincy_ii_widget, game.quincy_ii)
allied_forces_widgets.extend (f_boat_widget, game.f_boat)
-- Turn 8
allied_forces_widgets.extend (wisconsin_widget, game.wisconsin)
allied_forces_widgets.extend (missouri_widget, game.missouri)
allied_forces_widgets.extend (ticonderoga_widget, game.ticonderoga)
allied_forces_widgets.extend (san_jacinto_widget, game.san_jacinto)
allied_forces_widgets.extend (marines_5_widget, game.marines_5)
-- Turn 9
allied_forces_widgets.extend (new_york_widget, game.new_york)
allied_forces_widgets.extend (texas_widget, game.texas)
allied_forces_widgets.extend (alaska_widget, game.alaska)
allied_forces_widgets.extend (franklin_widget, game.franklin)
allied_forces_widgets.extend (shangri_la_widget, game.shangri_la)
widgets.merge (allied_forces_widgets)
end
pair_widgets
-- Associate turn-two to turn-nine widgets with a unit
do
-- On Battleship Row (Pearl Harbor)
allied_forces_widgets.force (nevada_widget, game.nevada)
allied_forces_widgets.force (arizona_widget, game.arizona)
allied_forces_widgets.force (west_virginia_widget, game.west_virginia)
allied_forces_widgets.force (tennessee_widget, game.tennessee)
allied_forces_widgets.force (oklahoma_widget, game.oklahoma)
allied_forces_widgets.force (maryland_widget, game.maryland)
allied_forces_widgets.force (california_widget, game.california)
allied_forces_widgets.force (pennsylvania_widget, game.pennsylvania)
allied_forces_widgets.force (new_orleans_widget, game.new_orleans)
allied_forces_widgets.force (san_francisco_widget, game.san_francisco)
allied_forces_widgets.force (seventh_af_widget, game.seventh_af)
-- At sea (cannot move)
allied_forces_widgets.force (hermes_widget, game.hermes)
allied_forces_widgets.force (revenge_widget, game.revenge)
allied_forces_widgets.force (prince_of_wales_widget, game.prince_of_wales)
allied_forces_widgets.force (repulse_widget, game.repulse)
allied_forces_widgets.force (fifth_af_widget, game.fifth_af)
allied_forces_widgets.force (louisville_widget, game.louisville)
allied_forces_widgets.force (pensacola_widget, game.pensacola)
allied_forces_widgets.force (indianapolis_widget, game.indianapolis)
allied_forces_widgets.force (minneapolis_widget, game.minneapolis)
-- In port (may move)
allied_forces_widgets.force (houston_widget, game.houston)
allied_forces_widgets.force (exeter_widget, game.exeter)
allied_forces_widgets.force (de_ruyter_widget, game.de_ruyter)
allied_forces_widgets.force (australia_ship_widget, game.australia_ship)
allied_forces_widgets.force (canberra_widget, game.canberra)
-- Location Uncertain, group W
allied_forces_widgets.force (enterprise_widget, game.enterprise)
allied_forces_widgets.force (salt_lake_city_widget, game.salt_lake_city)
allied_forces_widgets.force (northampton_widget, game.northampton)
allied_forces_widgets.force (chester_widget, game.chester)
-- Location Uncertain, group X
allied_forces_widgets.force (lexington_widget, game.lexington)
allied_forces_widgets.force (chicago_widget, game.chicago)
allied_forces_widgets.force (portland_widget, game.portland)
allied_forces_widgets.force (astoria_widget, game.astoria)
-- Location Uncertain, group Y
allied_forces_widgets.force (saratoga_widget, game.saratoga)
-- Location Uncertain (group Z
allied_forces_widgets.force (hornet_widget, game.hornet)
allied_forces_widgets.force (yorktown_widget, game.yorktown)
allied_forces_widgets.force (vincennes_widget, game.vincennes)
allied_forces_widgets.force (quincy_widget, game.quincy)
-- Turn 2
allied_forces_widgets.force (royal_sovereign_widget, game.royal_sovereign)
allied_forces_widgets.force (ramilies_widget, game.ramilies)
allied_forces_widgets.force (resolution_widget, game.resolution)
allied_forces_widgets.force (warspite_widget, game.warspite)
allied_forces_widgets.force (indomitable_widget, game.indomitable)
allied_forces_widgets.force (formidable_widget, game.formidable)
allied_forces_widgets.force (cornwall_widget, game.cornwall)
allied_forces_widgets.force (dorestshire_widget, game.dorestshire)
allied_forces_widgets.force (new_mexico_widget, game.new_mexico)
allied_forces_widgets.force (idaho_widget, game.idaho)
allied_forces_widgets.force (tenth_af_widget, game.tenth_af)
allied_forces_widgets.force (eleventh_af_widget, game.eleventh_af)
-- Turn 3
allied_forces_widgets.force (north_carolina_widget, game.north_carolina)
allied_forces_widgets.force (mississippi_widget, game.mississippi)
allied_forces_widgets.force (colorado_widget, game.colorado)
allied_forces_widgets.force (marines_1_widget, game.marines_1)
allied_forces_widgets.force (marines_2_widget, game.marines_2)
allied_forces_widgets.force (raaf_widget, game.raaf)
allied_forces_widgets.force (rnzaf_widget, game.rnzaf)
allied_forces_widgets.force (valiant_widget, game.valiant)
allied_forces_widgets.force (illustrious_widget, game.illustrious)
-- Turn 4
allied_forces_widgets.force (south_dakota_widget, game.south_dakota)
allied_forces_widgets.force (indiana_widget, game.indiana)
allied_forces_widgets.force (washington_widget, game.washington)
allied_forces_widgets.force (wasp_widget, game.wasp)
allied_forces_widgets.force (marine_widget, game.marine)
allied_forces_widgets.force (thirteenth_af_widget, game.thirteenth_af)
allied_forces_widgets.force (devonshire_widget, game.devonshire)
allied_forces_widgets.force (shropshire_widget, game.shropshire)
-- allied_forces_widgets.force (first_027_removal_widget, game.first_027_removal)
-- allied_forces_widgets.force (second_027_removal_widget, game.second_027_removal)
-- Turn 5
allied_forces_widgets.force (massachusetts_widget, game.massachusetts)
allied_forces_widgets.force (wichita_widget, game.wichita)
allied_forces_widgets.force (victorious_widget, game.victorious)
allied_forces_widgets.force (marines_3_widget, game.marines_3)
allied_forces_widgets.force (fourteenth_af_widget, game.fourteenth_af)
allied_forces_widgets.force (naval_widget, game.naval)
-- allied_forces_widgets.force (resolution_removal_widget, game.resolution_removal)
-- allied_forces_widgets.force (revenge_removal_widget, game.revenge_removal)
-- allied_forces_widgets.force (valiant_removal_widget, game.valiant_removal)
-- allied_forces_widgets.force (warspite_removal_widget, game.warspite_removal)
-- Turn 6
allied_forces_widgets.force (alabama_widget, game.alabama)
allied_forces_widgets.force (essex_widget, game.essex)
allied_forces_widgets.force (cv_10_widget, game.cv_10)
allied_forces_widgets.force (cv_16_widget, game.cv_16)
allied_forces_widgets.force (independence_widget, game.independence)
allied_forces_widgets.force (princeton_widget, game.princeton)
allied_forces_widgets.force (belleau_wood_widget, game.belleau_wood)
allied_forces_widgets.force (cowpens_widget, game.cowpens)
allied_forces_widgets.force (monterey_widget, game.monterey)
allied_forces_widgets.force (baltimore_widget, game.baltimore)
allied_forces_widgets.force (boston_widget, game.boston)
allied_forces_widgets.force (marines_4_widget, game.marines_4)
-- allied_forces_widgets.force (victorious_removal_widget, game.victorious_removal)
-- Turn 7
allied_forces_widgets.force (iowa_widget, game.iowa)
allied_forces_widgets.force (new_jersey_widget, game.new_jersey)
allied_forces_widgets.force (intrepid_widget, game.intrepid)
allied_forces_widgets.force (cv_12_widget, game.cv_12)
allied_forces_widgets.force (bunker_hill_widget, game.bunker_hill)
allied_forces_widgets.force (cv_18_widget, game.cv_18)
allied_forces_widgets.force (bataan_widget, game.bataan)
allied_forces_widgets.force (cabot_widget, game.cabot)
allied_forces_widgets.force (langley_ii_widget, game.langley_ii)
allied_forces_widgets.force (canberra_ii_widget, game.canberra_ii)
allied_forces_widgets.force (quincy_ii_widget, game.quincy_ii)
allied_forces_widgets.force (f_boat_widget, game.f_boat)
-- Turn 8
allied_forces_widgets.force (wisconsin_widget, game.wisconsin)
allied_forces_widgets.force (missouri_widget, game.missouri)
allied_forces_widgets.force (ticonderoga_widget, game.ticonderoga)
allied_forces_widgets.force (san_jacinto_widget, game.san_jacinto)
allied_forces_widgets.force (marines_5_widget, game.marines_5)
-- Turn 9
allied_forces_widgets.force (new_york_widget, game.new_york)
allied_forces_widgets.force (texas_widget, game.texas)
allied_forces_widgets.force (alaska_widget, game.alaska)
allied_forces_widgets.force (franklin_widget, game.franklin)
allied_forces_widgets.force (shangri_la_widget, game.shangri_la)
end
fill_widgets
-- Call `set_target' to give each widget a target.
do
-- On Battleship Row (Pearl Harbor)
nevada_widget.set_target (game.nevada)
arizona_widget.set_target (game.arizona)
west_virginia_widget.set_target (game.west_virginia)
tennessee_widget.set_target (game.tennessee)
oklahoma_widget.set_target (game.oklahoma)
maryland_widget.set_target (game.maryland)
california_widget.set_target (game.california)
pennsylvania_widget.set_target (game.pennsylvania)
new_orleans_widget.set_target (game.new_orleans)
san_francisco_widget.set_target (game.san_francisco)
seventh_af_widget.set_target (game.seventh_af)
-- At sea (cannot move)
hermes_widget.set_target (game.hermes)
revenge_widget.set_target (game.revenge)
prince_of_wales_widget.set_target (game.prince_of_wales)
repulse_widget.set_target (game.repulse)
fifth_af_widget.set_target (game.fifth_af)
louisville_widget.set_target (game.louisville)
pensacola_widget.set_target (game.pensacola)
indianapolis_widget.set_target (game.indianapolis)
minneapolis_widget.set_target (game.minneapolis)
-- In port (may move)
houston_widget.set_target (game.houston)
exeter_widget.set_target (game.exeter)
de_ruyter_widget.set_target (game.de_ruyter)
australia_ship_widget.set_target (game.australia_ship)
canberra_widget.set_target (game.canberra)
-- Location Uncertain, group W
enterprise_widget.set_target (game.enterprise)
salt_lake_city_widget.set_target (game.salt_lake_city)
northampton_widget.set_target (game.northampton)
chester_widget.set_target (game.chester)
-- Location Uncertain, group X
lexington_widget.set_target (game.lexington)
chicago_widget.set_target (game.chicago)
portland_widget.set_target (game.portland)
astoria_widget.set_target (game.astoria)
-- Location Uncertain, group Y
saratoga_widget.set_target (game.saratoga)
-- Location Uncertain, group W
hornet_widget.set_target (game.hornet)
yorktown_widget.set_target (game.yorktown)
vincennes_widget.set_target (game.vincennes)
quincy_widget.set_target (game.quincy)
-- Turn 2
royal_sovereign_widget.set_target (game.royal_sovereign)
ramilies_widget.set_target (game.ramilies)
resolution_widget.set_target (game.resolution)
warspite_widget.set_target (game.warspite)
indomitable_widget.set_target (game.indomitable)
formidable_widget.set_target (game.formidable)
cornwall_widget.set_target (game.cornwall)
dorestshire_widget.set_target (game.dorestshire)
new_mexico_widget.set_target (game.new_mexico)
idaho_widget.set_target (game.idaho)
tenth_af_widget.set_target (game.tenth_af)
eleventh_af_widget.set_target (game.eleventh_af)
-- Turn 3
north_carolina_widget.set_target (game.north_carolina)
mississippi_widget.set_target (game.mississippi)
colorado_widget.set_target (game.colorado)
marines_1_widget.set_target (game.marines_1)
marines_2_widget.set_target (game.marines_2)
raaf_widget.set_target (game.raaf)
rnzaf_widget.set_target (game.rnzaf)
valiant_widget.set_target (game.valiant)
illustrious_widget.set_target (game.illustrious)
-- Turn 4
south_dakota_widget.set_target (game.south_dakota)
indiana_widget.set_target (game.indiana)
washington_widget.set_target (game.washington)
wasp_widget.set_target (game.wasp)
marine_widget.set_target (game.marine)
thirteenth_af_widget.set_target (game.thirteenth_af)
devonshire_widget.set_target (game.devonshire)
shropshire_widget.set_target (game.shropshire)
first_027_removal_widget.set_target (game.first_027_removal)
second_027_removal_widget.set_target (game.second_027_removal)
-- Turn 5
massachusetts_widget.set_target (game.massachusetts)
wichita_widget.set_target (game.wichita)
victorious_widget.set_target (game.victorious)
marines_3_widget.set_target (game.marines_3)
fourteenth_af_widget.set_target (game.fourteenth_af)
naval_widget.set_target (game.naval)
resolution_removal_widget.set_target (game.resolution)
revenge_removal_widget.set_target (game.revenge)
valiant_removal_widget.set_target (game.valiant_removal)
warspite_removal_widget.set_target (game.warspite)
-- Turn 6
alabama_widget.set_target (game.alabama)
essex_widget.set_target (game.essex)
cv_10_widget.set_target (game.cv_10)
cv_16_widget.set_target (game.cv_16)
independence_widget.set_target (game.independence)
princeton_widget.set_target (game.princeton)
belleau_wood_widget.set_target (game.belleau_wood)
cowpens_widget.set_target (game.cowpens)
monterey_widget.set_target (game.monterey)
baltimore_widget.set_target (game.baltimore)
boston_widget.set_target (game.boston)
marines_4_widget.set_target (game.marines_4)
victorious_removal_widget.set_target (game.victorious_removal)
-- Turn 7
iowa_widget.set_target (game.iowa)
new_jersey_widget.set_target (game.new_jersey)
intrepid_widget.set_target (game.intrepid)
cv_12_widget.set_target (game.cv_12)
bunker_hill_widget.set_target (game.bunker_hill)
cv_18_widget.set_target (game.cv_18)
bataan_widget.set_target (game.bataan)
cabot_widget.set_target (game.cabot)
langley_ii_widget.set_target (game.langley_ii)
canberra_ii_widget.set_target (game.canberra_ii)
quincy_ii_widget.set_target (game.quincy_ii)
f_boat_widget.set_target (game.f_boat)
third_027_removal_widget.set_target (game.third_027_removal)
first_443_removal_widget.set_target (game.first_443_removal)
-- Turn 8
wisconsin_widget.set_target (game.wisconsin)
missouri_widget.set_target (game.missouri)
ticonderoga_widget.set_target (game.ticonderoga)
san_jacinto_widget.set_target (game.san_jacinto)
marines_5_widget.set_target (game.marines_5)
-- Turn 9
new_york_widget.set_target (game.new_york)
texas_widget.set_target (game.texas)
alaska_widget.set_target (game.alaska)
franklin_widget.set_target (game.franklin)
shangri_la_widget.set_target (game.shangri_la)
end
end

View File

@@ -0,0 +1,590 @@
note
description: "[
]"
author: "Jimmy J. Johnson"
date: "11/11/23"
copyright: "Copyright (c) 2023, Jimmy J. Johnson"
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
class
ALLIED_ORDER_OF_APPEARANCE_CHART_VIEW
inherit
ORDER_OF_APPEARANCE_VIEW
redefine
create_interface_objects,
initialize,
add_widgets,
add_units,
add_miscellaneous_text,
add_copyright_text,
set_target,
widget_factory,
draw
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Set up Current
do
Precursor {ORDER_OF_APPEARANCE_VIEW}
create group_widgets.make
end
initialize
-- Set up attributes
do
nationality := {NATIONALITY_CONSTANTS}.allied
Precursor
flag.hide
big_marker.hide
little_marker.hide
end
add_widgets
-- Create the widgets for the chart
do
Precursor
add_removals
add_uncommitted_box
end
add_turns
-- Add the "TURN X" and "TO date" texts
local
i: INTEGER
do
from i := 2
until i > 9
loop
add_turn_text (i)
i := i + 1
end
end
add_units
-- Add {ATTACK_UNIT_WIDGETS} to Current
do
-- Turn 1 widgets or on a different chart
-- Turn 2
add_model (positioned_widget (widget_factory.royal_sovereign_widget, Royal_sovereign_cp))
add_model (positioned_widget (widget_factory.ramilies_widget, ramilies_cp))
add_model (positioned_widget (widget_factory.resolution_widget, resolution_cp))
add_model (positioned_widget (widget_factory.warspite_widget, warspite_cp))
add_model (positioned_widget (widget_factory.indomitable_widget, indomitable_cp))
add_model (positioned_widget (widget_factory.formidable_widget, formidable_cp))
add_model (positioned_widget (widget_factory.cornwall_widget, cornwall_cp))
add_model (positioned_widget (widget_factory.dorestshire_widget, dorestshire_cp))
add_model (positioned_widget (widget_factory.new_mexico_widget, new_mexico_cp))
add_model (positioned_widget (widget_factory.idaho_widget, idaho_cp))
add_model (positioned_widget (widget_factory.tenth_af_widget, tenth_af_cp))
add_model (positioned_widget (widget_factory.eleventh_af_widget, eleventh_af_cp))
-- Turn 3
add_model (positioned_widget (widget_factory.north_carolina_widget, north_carolina_cp))
add_model (positioned_widget (widget_factory.mississippi_widget, mississippi_cp))
add_model (positioned_widget (widget_factory.colorado_widget,colorado_cp))
add_model (positioned_widget (widget_factory.marines_1_widget, marines_1_cp))
add_model (positioned_widget (widget_factory.marines_2_widget, marines_2_cp))
add_model (positioned_widget (widget_factory.raaf_widget, raaf_cp))
add_model (positioned_widget (widget_factory.rnzaf_widget, rnzaf_cp))
add_model (positioned_widget (widget_factory.valiant_widget, valiant_cp))
add_model (positioned_widget (widget_factory.illustrious_widget, illustrious_cp))
-- Turn 4
add_model (positioned_widget (widget_factory.south_dakota_widget, south_dakota_cp))
add_model (positioned_widget (widget_factory.indiana_widget, indiana_cp))
add_model (positioned_widget (widget_factory.washington_widget, washington_cp))
add_model (positioned_widget (widget_factory.wasp_widget, wasp_cp))
add_model (positioned_widget (widget_factory.marine_widget, marine_cp))
add_model (positioned_widget (widget_factory.thirteenth_af_widget, thirteenth_af_cp))
add_model (positioned_widget (widget_factory.devonshire_widget, devonshire_cp))
add_model (positioned_widget (widget_factory.shropshire_widget, shropshire_cp))
-- Turn 5
add_model (positioned_widget (widget_factory.massachusetts_widget, massachusetts_cp))
add_model (positioned_widget (widget_factory.wichita_widget, wichita_cp))
add_model (positioned_widget (widget_factory.victorious_widget, victorious_cp))
add_model (positioned_widget (widget_factory.marines_3_widget, marines_3_cp))
add_model (positioned_widget (widget_factory.fourteenth_af_widget, fourteenth_af_cp))
add_model (positioned_widget (widget_factory.naval_widget, naval_cp))
-- Turn 6
add_model (positioned_widget (widget_factory.alabama_widget, alabama_cp))
add_model (positioned_widget (widget_factory.essex_widget, essex_cp))
add_model (positioned_widget (widget_factory.cv_10_widget, cv_10_cp))
add_model (positioned_widget (widget_factory.cv_16_widget, cv_16_cp))
add_model (positioned_widget (widget_factory.independence_widget, independence_cp))
add_model (positioned_widget (widget_factory.princeton_widget, princeton_cp))
add_model (positioned_widget (widget_factory.belleau_wood_widget, belleau_wood_cp))
add_model (positioned_widget (widget_factory.cowpens_widget, cowpens_cp))
add_model (positioned_widget (widget_factory.monterey_widget, monterey_cp))
add_model (positioned_widget (widget_factory.baltimore_widget, baltimore_cp))
add_model (positioned_widget (widget_factory.boston_widget, boston_cp))
add_model (positioned_widget (widget_factory.marines_4_widget, marines_4_cp))
-- Turn 7
add_model (positioned_widget (widget_factory.iowa_widget, iowa_cp))
add_model (positioned_widget (widget_factory.new_jersey_widget, new_jersey_cp))
add_model (positioned_widget (widget_factory.intrepid_widget, intrepid_cp))
add_model (positioned_widget (widget_factory.cv_12_widget, cv_12_cp))
add_model (positioned_widget (widget_factory.bunker_hill_widget, bunker_hill_cp))
add_model (positioned_widget (widget_factory.cv_18_widget, cv_18_cp))
add_model (positioned_widget (widget_factory.bataan_widget, bataan_cp))
add_model (positioned_widget (widget_factory.cabot_widget, cabot_cp))
add_model (positioned_widget (widget_factory.langley_ii_widget, langley_ii_cp))
add_model (positioned_widget (widget_factory.canberra_ii_widget, canberra_ii_cp))
add_model (positioned_widget (widget_factory.quincy_ii_widget, quincy_ii_cp))
add_model (positioned_widget (widget_factory.f_boat_widget, f_boat_cp))
-- Turn 8
add_model (positioned_widget (widget_factory.wisconsin_widget, wisconsin_cp))
add_model (positioned_widget (widget_factory.missouri_widget, missouri_cp))
add_model (positioned_widget (widget_factory.ticonderoga_widget, ticonderoga_cp))
add_model (positioned_widget (widget_factory.san_jacinto_widget, san_jacinto_cp))
add_model (positioned_widget (widget_factory.marines_5_widget, marines_5_cp))
-- Turn 9
add_model (positioned_widget (widget_factory.new_york_widget, new_york_cp))
add_model (positioned_widget (widget_factory.texas_widget, texas_cp))
add_model (positioned_widget (widget_factory.alaska_widget, alaska_cp))
add_model (positioned_widget (widget_factory.franklin_widget, franklin_cp))
add_model (positioned_widget (widget_factory.shangri_la_widget, shangri_la_cp))
end
add_removals
-- All removal widgets and "REMOVALS" texts
local
wf: like widget_factory
do
wf := widget_factory
world.extend (positioned_widget (wf.first_027_removal_widget, first_027_removal_cp))
world.extend (positioned_widget (wf.second_027_removal_widget, second_027_removal_cp))
world.extend (positioned_widget (wf.resolution_removal_widget, resolution_removal_cp))
world.extend (positioned_widget (wf.revenge_removal_widget, revenge_removal_cp))
world.extend (positioned_widget (wf.valiant_removal_widget, valiant_removal_cp))
world.extend (positioned_widget (wf.warspite_removal_widget, warspite_removal_cp))
world.extend (positioned_widget (wf.victorious_removal_widget, victorious_removal_cp))
world.extend (positioned_widget (wf.third_027_removal_widget, third_027_removal_cp))
world.extend (positioned_widget (wf.first_443_removal_widget, first_443_removal_cp))
-- Set flipped
wf.first_027_removal_widget.set_flipped
wf.second_027_removal_widget.set_flipped
wf.resolution_removal_widget.set_flipped
wf.revenge_removal_widget.set_flipped
wf.valiant_removal_widget.set_flipped
wf.warspite_removal_widget.set_flipped
wf.victorious_removal_widget.set_flipped
wf.third_027_removal_widget.set_flipped
wf.first_443_removal_widget.set_flipped
-- Set flat
wf.first_027_removal_widget.set_flat
wf.second_027_removal_widget.set_flat
wf.resolution_removal_widget.set_flat
wf.revenge_removal_widget.set_flat
wf.valiant_removal_widget.set_flat
wf.warspite_removal_widget.set_flat
wf.victorious_removal_widget.set_flat
wf.third_027_removal_widget.set_flat
wf.first_443_removal_widget.set_flat
end
add_uncommitted_box
-- Add the uncommitted box, making spots for possible widgets
local
rec: EV_MODEL_RECTANGLE
bot_rt: EV_COORDINATE
t: EV_MODEL_TEXT
cp: EV_COORDINATE
wf: like widget_factory
do
create bot_rt.make (uncommitted_box_cp.x + (1.5 * ship_size).floor, uncommitted_box_cp.y + 2 * ship_size)
create rec.make_with_points (uncommitted_box_cp, bot_rt)
world.extend (rec)
rec.set_foreground_color (color)
rec.set_background_color (lightened (color, 2.8))
t := new_text ("Groups W, X, Y, Z%N uncommitted %N on Turn 1", turn_x_losses_font)
t.set_x_y (rec.x, rec.y)
world.extend (t)
-- Add widgets to the box using offset's from the `uncommitted_box_cp'
create cp
wf := widget_factory
-- Group W - Enterprise
cp.set_position (uncommitted_box_cp.x + gap_size, uncommitted_box_cp.y - 3 * gap_size)
world.extend (positioned_widget (wf.chester_widget, cp))
cp.set_position (cp.x - 1, cp.y - 2)
world.extend (positioned_widget (wf.northampton_widget, cp))
cp.set_position (cp.x - 1, cp.y - 2)
world.extend (positioned_widget (wf.salt_lake_city_widget, cp))
cp.set_position (cp.x - 1, cp.y - 2)
world.extend (positioned_widget (wf.enterprise_widget, cp))
-- Group X - Lexington
cp.set_position (uncommitted_box_cp.x + 3 * gap_size, uncommitted_box_cp.y)
world.extend (positioned_widget (wf.astoria_widget, cp))
cp.set_position (cp.x + 1, cp.y - 2)
world.extend (positioned_widget (wf.portland_widget, cp))
cp.set_position (cp.x + 1, cp.y - 2)
world.extend (positioned_widget (wf.chicago_widget, cp))
cp.set_position (cp.x + 1, cp.y - 2)
world.extend (positioned_widget (wf.lexington_widget, cp))
-- Group Y -Saratoga
cp.set_position (uncommitted_box_cp.x + 4 * gap_size, uncommitted_box_cp.y + ship_size + 2 * gap_size)
world.extend (positioned_widget (wf.saratoga_widget, cp))
-- Group Z - Hornet
cp.set_position (uncommitted_box_cp.x - gap_size, uncommitted_box_cp.y + ship_size + gap_size)
world.extend (positioned_widget (wf.quincy_widget, cp))
cp.set_position (cp.x - 1, cp.y - 2)
world.extend (positioned_widget (wf.vincennes_widget, cp))
cp.set_position (cp.x - 1, cp.y - 2)
world.extend (positioned_widget (wf.yorktown_widget, cp))
cp.set_position (cp.x - 1, cp.y - 2)
world.extend (positioned_widget (wf.hornet_widget, cp))
-- Hide Group W
wf.chester_widget.hide
wf.northampton_widget.hide
wf.salt_lake_city_widget.hide
wf.enterprise_widget.hide
-- Hide Group X
wf.astoria_widget.hide
wf.portland_widget.hide
wf.chicago_widget.hide
wf.lexington_widget.hide
-- Hide Group Y
wf.saratoga_widget.hide
-- Hide group Z
wf.quincy_widget.hide
wf.vincennes_widget.hide
wf.yorktown_widget.hide
wf.hornet_widget.hide
end
add_miscellaneous_text
-- Add the remaining text fields
local
cp: EV_COORDINATE
t: EV_MODEL_TEXT
s: STRING
do
create cp
s := " AUSTRALIA 1 Repair Point Each Turn %N"
s := s + "AT CEYLON 1 Repair Point Each Turn"
t := new_text (s, at_port_font)
cp.set (resolution_cp.x, turn_2_cp.y)
t.set_point_position (cp.x, cp.y)
world.extend (t)
t := new_text (" 3 Repair Points %N PEARL HARBOR", at_port_font)
cp.set (new_mexico_cp.x - gap_size, turn_2_cp.y)
t.set_point_position (cp.x, cp.y)
world.extend (t)
t := new_text (" 6 Repair Points %N AT PEARL HARBOR", at_port_font)
cp.set (colorado_cp.x, turn_3_cp.y)
t.set_point_position (cp.x, cp.y)
world.extend (t)
t := new_text (" 9 Repair Points %N AT PEARL HARBOR", at_port_font)
cp.set (colorado_cp.x, turn_4_cp.y)
t.set_point_position (cp.x, cp.y)
world.extend (t)
t := new_text (" 12 Repair Points %N AT PEARL HARBOR", at_port_font)
cp.set (colorado_cp.x, turn_5_cp.y)
t.set_point_position (cp.x, cp.y)
world.extend (t)
t := new_text (" 15 Repair Points %N AT PEARL HARBOR", at_port_font)
cp.set (colorado_cp.x, turn_6_cp.y)
t.set_point_position (cp.x, cp.y)
world.extend (t)
t := new_text (" 15 Repair Points %N AT PEARL HARBOR", at_port_font)
cp.set (colorado_cp.x, turn_7_cp.y)
t.set_point_position (cp.x, cp.y)
world.extend (t)
t := new_text (" 15 Repair Points %N AT PEARL HARBOR", at_port_font)
cp.set (colorado_cp.x, turn_8_cp.y)
t.set_point_position (cp.x, cp.y)
world.extend (t)
t := new_text ("AT PEARL HARBOR 15 Repair Points", at_port_font)
cp.set (colorado_cp.x, new_york_cp.y - 2 * gap_size)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- some more text
t := new_text ("AT CEYLON", at_port_font)
cp.set (valiant_cp.x + 2 * gap_size, valiant_cp.y - 3 * gap_size)
t.set_point_position (cp.x, cp.y)
world.extend (t)
t := new_text ("AT CEYLON", at_port_font)
cp.set (devonshire_cp.x + 2 * gap_size, devonshire_cp.y - 3 * gap_size)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- also available
t := new_text (" Also %NAvailable", turn_x_losses_font)
cp.set (tenth_af_cp.x, tenth_af_cp.y - 3 * gap_size)
t.set_point_position (cp.x, cp.y)
world.extend (t)
s := "Also Available"
t := new_text (s, turn_x_losses_font)
cp.set (raaf_cp.x + 2 * gap_size, raaf_cp.y - 2 * gap_size)
t.set_point_position (cp.x, cp.y)
world.extend (t)
t := new_text (s, turn_x_losses_font)
cp.set (marine_cp.x + 2 * gap_size, marine_cp.y - 2 * gap_size)
t.set_point_position (cp.x, cp.y)
world.extend (t)
t := new_text (s, turn_x_losses_font)
cp.set (fourteenth_af_cp.x + 2 * gap_size, fourteenth_af_cp.y - 2 * gap_size)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- Also Available for F-boat
t := new_text ("Also Available", turn_x_losses_font)
cp.set (f_boat_cp.x, f_boat_cp.y - 2 * gap_size)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- Replace with texts
s := "(replace with other British if sunk)"
t := new_text (s, small_font)
cp.set (first_027_removal_cp.x, first_027_removal_cp.y + ship_size + gap_size)
t.set_point_position (cp.x, cp.y)
world.extend (t)
t := new_text (s, small_font)
cp.set (revenge_removal_cp.x, revenge_removal_cp.y + ship_size + gap_size)
t.set_point_position (cp.x, cp.y)
world.extend (t)
s := "(replace with other %NBritish if sunk)"
t := new_text (s, small_font)
cp.set (victorious_removal_cp.x + ship_size + gap_size, victorious_removal_cp.y + gap_size)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- REMOVAL texts
s := "REMOVALS"
t := new_text (s, turn_x_losses_font)
cp.set (first_027_removal_cp.x + 5 * gap_size, first_027_removal_cp.y - 2 * gap_size)
t.set_point_position (cp.x, cp.y)
world.extend (t)
t := new_text (s, turn_x_losses_font)
cp.set (revenge_removal_cp.x + 5 * gap_size, revenge_removal_cp.y - 2 * gap_size)
t.set_point_position (cp.x, cp.y)
world.extend (t)
t := new_text (s, turn_x_losses_font)
cp.set (third_027_removal_cp.x + 5 * gap_size, third_027_removal_cp.y - 2 * gap_size)
t.set_point_position (cp.x, cp.y)
world.extend (t)
s := "REMOVAL"
t := new_text (s, turn_x_losses_font)
cp.set (victorious_removal_cp.x + gap_size, victorious_removal_cp.y - 2 * gap_size)
t.set_point_position (cp.x, cp.y)
world.extend (t)
end
add_copyright_text
-- Add the copy-right notices to each chart
local
cp: EV_COORDINATE
t: EV_MODEL_TEXT
s: STRING
f: EV_FONT
do
create cp
-- Copyright
s := "Copyright 1977, The Avalon Hill Game Co. Balto, MD Printed in U.S.A."
f := small_font
t := new_text (s, f)
cp.set (bottom_right_cp.x - t.width - gap_size, bottom_right_cp.y - 2 * gap_size)
t.set_point_position (cp.x, cp.y)
world.extend (t)
end
feature -- Access
location: LOCATION
-- A {LOCATION} from the {VITP_GAME} used in `draw' to determine
-- if a unit is on this chart or somewhere else (i.e. in the game.)
do
Result := game.allied_oa_chart
end
title: STRING = "Allied Order of Appearance Chart"
-- The text at the top of this chart
feature -- Element change
set_target (a_item: like game)
-- Associate `a_item' with Current.
local
afw: like widget_factory.allied_forces_widgets
do
Precursor (a_item)
afw := widget_factory.allied_forces_widgets
-- Make the widgets white
-- afw.first_027_removal_widget.set_flipped
-- afw.second_027_removal_widget.set_flipped
-- afw.resolution_removal_widget.set_flipped
-- afw.revenge_removal_widget.set_flipped
-- afw.valiant_removal_widget.set_flipped
-- afw.warspite_removal_widget.set_flipped
-- afw.victorious_removal_widget.set_flipped
-- afw.third_027_removal_widget.set_flipped
-- afw.first_443_removal_widget.set_flipped
-- -- Make it look like print
-- afw.first_027_removal_widget.set_flat
-- afw.second_027_removal_widget.set_flat
-- afw.resolution_removal_widget.set_flat
-- afw.revenge_removal_widget.set_flat
-- afw.valiant_removal_widget.set_flat
-- afw.warspite_removal_widget.set_flat
-- afw.victorious_removal_widget.set_flat
-- afw.third_027_removal_widget.set_flat
-- afw.first_443_removal_widget.set_flat
end
feature -- Basic operations
draw
-- Redraw the view.
-- Redefined to account for "Location Uncertain" widgets from turn 1.
local
t: VITP_WIDGET_TABLE [ATTACK_UNIT_WIDGET, ATTACK_UNIT]
w: ATTACK_UNIT_WIDGET
-- s: STRING
u: ATTACK_UNIT
do
Precursor
from group_widgets.start
until group_widgets.after
loop
w := group_widgets.item
if not w.is_view_empty and then w.unit.location = location then
w.show
else
w.hide
end
group_widgets.forth
end
end
feature {NONE} -- Implementation
widget_factory: ALLIED_FORCES_WIDGET_FACTORY
-- Container for all the widget (e.g. attack widget,
-- location widget, etc)
group_widgets: LINKED_LIST [SHIP_WIDGET]
-- To keep track of the "Location Uncertain" widgets, so they
-- can be shown in `draw' only if they are on this chart.
feature {NONE} -- Control point constants
bottom_right_cp: EV_COORDINATE once create Result.make (260, 355) end
-- Change the Turn-x control points
turn_1_cp: EV_COORDINATE do create Result end
turn_2_cp: EV_COORDINATE do create Result.make (7, 14) end
turn_3_cp: EV_COORDINATE do create Result.make (turn_2_cp.x, 50) end
turn_4_cp: EV_COORDINATE do create Result.make (turn_2_cp.x, 85) end
turn_5_cp: EV_COORDINATE do create Result.make (turn_2_cp.x, 120) end
turn_6_cp: EV_COORDINATE do create Result.make (turn_2_cp.x, 155) end
turn_7_cp: EV_COORDINATE do create Result.make (turn_2_cp.x, 215) end
turn_8_cp: EV_COORDINATE do create Result.make (turn_2_cp.x, 275) end
turn_9_cp: EV_COORDINATE do create Result.make (turn_2_cp.x, 310) end
-- To some date text
to_dec_41_cp: EV_COORDINATE do create Result.make (turn_1_cp.x + 2, turn_1_cp.y + 8) end
to_may_42_cp: EV_COORDINATE do create Result.make (turn_2_cp.x + 2, turn_2_cp.y + 8) end
to_sep_42_cp: EV_COORDINATE do create Result.make (turn_3_cp.x + 2, turn_3_cp.y + 8) end
to_jan_43_cp: EV_COORDINATE do create Result.make (turn_4_cp.x + 2, turn_4_cp.y + 8) end
to_jun_43_cp: EV_COORDINATE do create Result.make (turn_5_cp.x + 2, turn_5_cp.y + 8) end
to_jan_44_cp: EV_COORDINATE do create Result.make (turn_6_cp.x + 2, turn_6_cp.y + 8) end
to_may_44_cp: EV_COORDINATE do create Result.make (turn_7_cp.x + 2, turn_7_cp.y + 8) end
to_oct_44_cp: EV_COORDINATE do create Result.make (turn_8_cp.x + 2, turn_8_cp.y + 8) end
to_jan_45_cp: EV_COORDINATE do create Result.make (turn_9_cp.x + 2, turn_9_cp.y + 8) end
-- Change the Turn-x-losses control points
turn_1_losses_cp: EV_COORDINATE do create Result.make (194, 64) end
turn_2_losses_cp: EV_COORDINATE do create Result.make (204, 98) end
turn_3_losses_cp: EV_COORDINATE do create Result.make (200, 132) end
turn_4_losses_cp: EV_COORDINATE do create Result.make (194, 192) end
turn_5_losses_cp: EV_COORDINATE do create Result.make (194, 254) end
turn_6_losses_cp: EV_COORDINATE do create Result.make (194, 288) end
turn_7_losses_cp: EV_COORDINATE do create Result.make (194, 324) end
-- Turn 2
Royal_sovereign_cp: EV_COORDINATE do create Result.make (turn_2_cp.x, Turn_2_cp.y + 12) end
ramilies_cp: EV_COORDINATE do create Result.make (royal_sovereign_cp.x + ship_size, royal_sovereign_cp.y) end
resolution_cp: EV_COORDINATE do create Result.make (ramilies_cp.x + ship_size, royal_sovereign_cp.y) end
warspite_cp: EV_COORDINATE do create Result.make (resolution_cp.x + ship_size, royal_sovereign_cp.y) end
indomitable_cp: EV_COORDINATE do create Result.make (warspite_cp.x + ship_size, royal_sovereign_cp.y) end
formidable_cp: EV_COORDINATE do create Result.make (indomitable_cp.x + ship_size, royal_sovereign_cp.y) end
cornwall_cp: EV_COORDINATE do create Result.make (formidable_cp.x + ship_size, royal_sovereign_cp.y) end
dorestshire_cp: EV_COORDINATE do create Result.make (cornwall_cp.x + ship_size, royal_sovereign_cp.y) end
new_mexico_cp: EV_COORDINATE do create Result.make (dorestshire_cp.x + ship_size + gap_size, royal_sovereign_cp.y) end
idaho_cp: EV_COORDINATE do create Result.make (new_mexico_cp.x + ship_size, royal_sovereign_cp.y) end
uncommitted_box_cp: EV_COORDINATE do create Result.make (idaho_cp.x + ship_size, Turn_2_cp.y + gap_size) end
tenth_af_cp: EV_COORDINATE do create Result.make (240, 22) end
eleventh_af_cp: EV_COORDINATE do create Result.make (tenth_af_cp.x, tenth_af_cp.y + air_size) end
-- Turn 3
north_carolina_cp: EV_COORDINATE do create Result.make (turn_2_cp.x, Turn_3_cp.y + 12) end
mississippi_cp: EV_COORDINATE do create Result.make (north_carolina_cp.x + ship_size, north_carolina_cp.y) end
colorado_cp: EV_COORDINATE do create Result.make (mississippi_cp.x + ship_size, north_carolina_cp.y) end
marines_1_cp: EV_COORDINATE do create Result.make (colorado_cp.x + ship_size, north_carolina_cp.y + ship_size - air_size) end
marines_2_cp: EV_COORDINATE do create Result.make (marines_1_cp.x + air_size, marines_1_cp.y) end
raaf_cp: EV_COORDINATE do create Result.make (marines_2_cp.x + air_size + 2 * gap_size, marines_1_cp.y) end
rnzaf_cp: EV_COORDINATE do create Result.make (raaf_cp.x + air_size, marines_1_cp.y) end
valiant_cp: EV_COORDINATE do create Result.make (rnzaf_cp.x + air_size + 4 * gap_size, north_carolina_cp.y) end
illustrious_cp: EV_COORDINATE do create Result.make (valiant_cp.x + ship_size, north_carolina_cp.y) end
-- Turn 4
south_dakota_cp: EV_COORDINATE do create Result.make (turn_2_cp.x, turn_4_cp.y + 12) end
indiana_cp: EV_COORDINATE do create Result.make (south_dakota_cp.x + ship_size, south_dakota_cp.y) end
washington_cp: EV_COORDINATE do create Result.make (indiana_cp.x + ship_size, south_dakota_cp.y) end
wasp_cp: EV_COORDINATE do create Result.make (washington_cp.x + ship_size, south_dakota_cp.y) end
marine_cp: EV_COORDINATE do create Result.make (wasp_cp.x + ship_size + gap_size, south_dakota_cp.y + ship_size - air_size) end
thirteenth_af_cp: EV_COORDINATE do create Result.make (marine_cp.x + air_size, marine_cp.y) end
devonshire_cp: EV_COORDINATE do create Result.make (thirteenth_af_cp.x + air_size + gap_size, south_dakota_cp.y) end
shropshire_cp: EV_COORDINATE do create Result.make (devonshire_cp.x + ship_size, south_dakota_cp.y) end
first_027_removal_cp: EV_COORDINATE do create Result.make (shropshire_cp.x + ship_size + gap_size, south_dakota_cp.y) end
second_027_removal_cp: EV_COORDINATE do create Result.make (first_027_removal_cp.x + ship_size, south_dakota_cp.y) end
-- Turn 5
massachusetts_cp: EV_COORDINATE do create Result.make (turn_2_cp.x, turn_5_cp.y + 12) end
wichita_cp: EV_COORDINATE do create Result.make (massachusetts_cp.x + ship_size, massachusetts_cp.y) end
victorious_cp: EV_COORDINATE do create Result.make (wichita_cp.x + ship_size, massachusetts_cp.y) end
marines_3_cp: EV_COORDINATE do create Result.make (victorious_cp.x + ship_size, massachusetts_cp.y + ship_size - air_size) end
fourteenth_af_cp: EV_COORDINATE do create Result.make (marines_3_cp.x + air_size + gap_size, marines_3_cp.y) end
naval_cp: EV_COORDINATE do create Result.make (fourteenth_af_cp.x + air_size, fourteenth_af_cp.y) end
resolution_removal_cp: EV_COORDINATE do create Result.make (naval_cp.x + air_size + 2 * gap_size, massachusetts_cp.y) end
revenge_removal_cp: EV_COORDINATE do create Result.make (resolution_removal_cp.x + ship_size, massachusetts_cp.y) end
valiant_removal_cp: EV_COORDINATE do create Result.make (revenge_removal_cp.x + ship_size, massachusetts_cp.y) end
warspite_removal_cp: EV_COORDINATE do create Result.make (valiant_removal_cp.x + ship_size, massachusetts_cp.y) end
-- Turn 6
alabama_cp: EV_COORDINATE do create Result.make (turn_2_cp.x, turn_6_cp.y + 12) end
essex_cp: EV_COORDINATE do create Result.make (alabama_cp.x + ship_size, alabama_cp.y) end
cv_10_cp: EV_COORDINATE do create Result.make (essex_cp.x + ship_size, alabama_cp.y) end
cv_16_cp: EV_COORDINATE do create Result.make (cv_10_cp.x + ship_size, alabama_cp.y) end
independence_cp: EV_COORDINATE do create Result.make (cv_16_cp.x + ship_size, alabama_cp.y) end
princeton_cp: EV_COORDINATE do create Result.make (independence_cp.x + ship_size, alabama_cp.y) end
belleau_wood_cp: EV_COORDINATE do create Result.make (princeton_cp.x + ship_size, alabama_cp.y) end
cowpens_cp: EV_COORDINATE do create Result.make (belleau_wood_cp.x + ship_size, alabama_cp.y) end
monterey_cp: EV_COORDINATE do create Result.make (cowpens_cp.x + ship_size, alabama_cp.y) end
baltimore_cp: EV_COORDINATE do create Result.make (monterey_cp.x + ship_size, alabama_cp.y) end
boston_cp: EV_COORDINATE do create Result.make (baltimore_cp.x + ship_size, alabama_cp.y) end
marines_4_cp: EV_COORDINATE do create Result.make (boston_cp.x + ship_size, alabama_cp.y + ship_size - air_size) end
victorious_removal_cp: EV_COORDINATE do create Result.make (alabama_cp.x, turn_6_cp.y + 39) end
-- Turn 7
iowa_cp: EV_COORDINATE do create Result.make (turn_2_cp.x, turn_7_cp.y + 12) end
new_jersey_cp: EV_COORDINATE do create Result.make (iowa_cp.x + ship_size, iowa_cp.y) end
intrepid_cp: EV_COORDINATE do create Result.make (new_jersey_cp.x + ship_size, iowa_cp.y) end
cv_12_cp: EV_COORDINATE do create Result.make (intrepid_cp.x + ship_size, iowa_cp.y) end
bunker_hill_cp: EV_COORDINATE do create Result.make (cv_12_cp.x + ship_size, iowa_cp.y) end
cv_18_cp: EV_COORDINATE do create Result.make (bunker_hill_cp.x + ship_size, iowa_cp.y) end
bataan_cp: EV_COORDINATE do create Result.make (cv_18_cp.x + ship_size, iowa_cp.y) end
cabot_cp: EV_COORDINATE do create Result.make (bataan_cp.x + ship_size, iowa_cp.y) end
langley_ii_cp: EV_COORDINATE do create Result.make (cabot_cp.x + ship_size, iowa_cp.y) end
canberra_ii_cp: EV_COORDINATE do create Result.make (langley_ii_cp.x + ship_size, iowa_cp.y) end
quincy_ii_cp: EV_COORDINATE do create Result.make (canberra_ii_cp.x + ship_size, iowa_cp.y) end
f_boat_cp: EV_COORDINATE do create Result.make (quincy_ii_cp.x + ship_size + 4 * gap_size, iowa_cp.y) end
third_027_removal_cp: EV_COORDINATE do create Result.make (iowa_cp.x, iowa_cp.y + ship_size + 3 * gap_size) end
first_443_removal_cp: EV_COORDINATE do create Result.make (third_027_removal_cp.x + ship_size, third_027_removal_cp.y) end
-- Turn 8
wisconsin_cp: EV_COORDINATE do create Result.make (turn_2_cp.x, turn_8_cp.y + 12) end
missouri_cp: EV_COORDINATE do create Result.make (wisconsin_cp.x + ship_size, wisconsin_cp.y) end
ticonderoga_cp: EV_COORDINATE do create Result.make (missouri_cp.x + ship_size, wisconsin_cp.y) end
san_jacinto_cp: EV_COORDINATE do create Result.make (ticonderoga_cp.x + ship_size, wisconsin_cp.y) end
marines_5_cp: EV_COORDINATE do create Result.make (san_jacinto_cp.x + ship_size, wisconsin_cp.y + ship_size - air_size) end
-- Turn_9
new_york_cp: EV_COORDINATE do create Result.make (turn_2_cp.x, turn_9_cp.y + 12) end
texas_cp: EV_COORDINATE do create Result.make (new_york_cp.x + ship_size, new_york_cp.y) end
alaska_cp: EV_COORDINATE do create Result.make (texas_cp.x + ship_size, new_york_cp.y) end
franklin_cp: EV_COORDINATE do create Result.make (alaska_cp.x + ship_size, new_york_cp.y) end
shangri_la_cp: EV_COORDINATE do create Result.make (franklin_cp.x + ship_size, new_york_cp.y) end
end

View File

@@ -0,0 +1,473 @@
note
description: "[
A {VIEW} that displays the Allied units that enter
the {VITP_GAME} on turn 1.
]"
author: "Jimmy J. Johnson"
date: "11/11/23"
copyright: "Copyright (c) 2023, Jimmy J. Johnson"
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
class
ALLIED_STARTING_FORCES_VIEW
inherit
ORDER_OF_APPEARANCE_VIEW
redefine
initialize,
widget_factory,
add_return_boxes,
add_widgets,
add_units,
add_starting_control_widgets,
add_miscellaneous_text,
add_copyright_text
end
create
make
feature {NONE} -- Initialization
initialize
-- Set up attributes
do
nationality := {NATIONALITY_CONSTANTS}.allied
Precursor
end
add_turns
-- Add the "TURN X" and "TO date" texts
local
i: INTEGER
do
from i := 1
until i > 1
loop
add_turn_text (i)
i := i + 1
end
end
add_return_boxes
-- Add the "Returning Air/Land Units" boxes
-- Redefined to do nothing
do
end
add_widgets
-- Create the EV_TEXT objects for the chart
do
Precursor
end
add_units
-- Add {ATTACK_UNIT_WIDGETS} to Current
local
f: like widget_factory
do
Precursor
f := widget_factory
-- On Battleship Row (Pearl Harbor)
add_model (positioned_widget (f.nevada_widget, nevada_cp))
add_model (positioned_widget (f.arizona_widget, arizona_cp))
add_model (positioned_widget (f.west_virginia_widget, west_virginia_cp))
add_model (positioned_widget (f.tennessee_widget, tennessee_cp))
add_model (positioned_widget (f.oklahoma_widget, oklahoma_cp))
add_model (positioned_widget (f.maryland_widget, maryland_cp))
add_model (positioned_widget (f.california_widget, california_cp))
add_model (positioned_widget (f.pennsylvania_widget, pennsylvania_cp))
add_model (positioned_widget (f.new_orleans_widget, new_orleans_cp))
add_model (positioned_widget (f.san_francisco_widget, san_francisco_cp))
add_model (positioned_widget (f.seventh_af_widget, seventh_af_cp))
-- At Sea (cannot move)
add_model (positioned_widget (f.hermes_widget, hermes_cp))
add_model (positioned_widget (f.revenge_widget, revenge_cp))
add_model (positioned_widget (f.prince_of_wales_widget, prince_of_wales_cp))
add_model (positioned_widget (f.repulse_widget, repulse_cp))
add_model (positioned_widget (f.fifth_af_widget, fifth_af_cp))
add_model (positioned_widget (f.louisville_widget, louisville_cp))
add_model (positioned_widget (f.pensacola_widget, pensacola_cp))
add_model (positioned_widget (f.indianapolis_widget, indianapolis_cp))
add_model (positioned_widget (f.minneapolis_widget, minneapolis_cp))
-- In Port (may move)
add_model (positioned_widget (f.houston_widget, houston_cp))
add_model (positioned_widget (f.exeter_widget, exeter_cp))
add_model (positioned_widget (f.de_ruyter_widget, de_ruyter_cp))
add_model (positioned_widget (f.australia_ship_widget, australia_cp))
add_model (positioned_widget (f.canberra_widget, canberra_cp))
-- Group W
add_model (positioned_widget (f.enterprise_widget, enterprise_cp))
add_model (positioned_widget (f.salt_lake_city_widget, salt_lake_city_cp))
add_model (positioned_widget (f.northampton_widget, northampton_cp))
add_model (positioned_widget (f.chester_widget, chester_cp))
-- Group X
add_model (positioned_widget (f.lexington_widget, lexington_cp))
add_model (positioned_widget (f.chicago_widget, chicago_cp))
add_model (positioned_widget (f.portland_widget, portland_cp))
add_model (positioned_widget (f.astoria_widget, astoria_cp))
-- Group Y
add_model (positioned_widget (f.saratoga_widget, saratoga_cp))
-- Group Z
add_model (positioned_widget (f.hornet_widget, hornet_cp))
add_model (positioned_widget (f.yorktown_widget, yorktown_cp))
add_model (positioned_widget (f.vincennes_widget, vincennes_cp))
add_model (positioned_widget (f.quincy_widget, quincy_cp))
end
add_starting_control_widgets
-- Add the "Starting Control" text and markers if required
local
cp:EV_COORDINATE
t: EV_MODEL_TEXT
s: STRING
b: EV_MODEL_GROUP
do
Precursor
create cp
-- Add "Starting Control" widgets
s := "STARTING %N CONTROL"
t := new_text (s, turn_x_losses_font)
cp.set (seventh_af_cp.x + 3 * air_size + air_size // 2, san_francisco_cp.y - ship_size // 3)
t.set_x_y (cp.x, cp.y)
world.extend (t)
-- Position the `flag' marker
cp.set (t.x, san_francisco_cp.y + air_size // 3)
flag.set_x_y (cp.x, cp.y)
-- Add boxes around the port names
s := "Hawaian Islands %N%
%U.S. Mandate %N%
%Coral Sea %N%
%South Pacific %N%
%Central Pacific %N%
%Indian Ocian %N%
%Bay of Bengal %N%
%Indonesia"
b := new_jagged_box (s, 9, 9, 9, {MATH_CONST}.pi_2)
b.set_x_y (flag.x, flag.y + air_size + 5 * gap_size)
world.extend (b)
-- Position `big_marker' and `little_marker' relative to `flag'
big_marker.set_x_y (flag.x, chester_cp.y - ship_size // 4)
little_marker.set_x_y (flag.x - air_size - air_size // 2, quincy_cp.y + air_size + air_size // 4)
-- Add boxes around the port names
s := "Pearl Harbor %N%
%Samoa %N%
%Australia %N%
%Ceylon %N%
%Singapore"
b := new_jagged_box (s, 6, 9, 6, {MATH_CONST}.pi_2)
b.set_x_y (flag.x, big_marker.y + ship_size - air_size // 3 )
world.extend (b)
-- Add boxes around the port names
s := "%N%
%Johnston Island %N%
%Dutch Harbor %N%
%Attu %N%
%New Hebrides %N%
%Guadalcanal %N%
%Port Moreby %N%
%Lae %N%
%Midway %N%
%Andaman Islands %N%
%Phillipines"
b := new_jagged_box (s, 9, 11, 9, 0)
b.set_x_y (flag.x, little_marker.y)
world.extend (b)
end
add_miscellaneous_text
-- Create the remaining EV_TEXT objects for the chart
local
cp: EV_COORDINATE
t: EV_MODEL_TEXT
s: STRING
do
create cp
-- On Battleship Row (Pearl Harbor)
s := "ON BATTLESHIP ROW (PEARL HARBOR)"
t := new_text (s, at_port_font)
cp.set (west_virginia_cp.x, west_virginia_cp.y - air_size // 2)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- At Sea (cannot move)
s := "AT SEA (CANNOT MOVE)"
t := new_text (s, at_port_font)
cp.set (hermes_cp.x, hermes_cp.y - air_size // 2)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- Bay of Bengal
s := "BAY OF BENGAL"
t := new_text (s, to_date_font)
cp.set (hermes_cp.x, hermes_cp.y - air_size // 4)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- Indonesia
s := "INDONESIA"
t := new_text (s, to_date_font)
cp.set (prince_of_wales_cp.x, hermes_cp.y - air_size // 4)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- Coral Sea
s := "CORAL SEA"
t := new_text (s, to_date_font)
cp.set (louisville_cp.x, hermes_cp.y - air_size // 4)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- US Mandate
s := "US MANDATE"
t := new_text (s, to_date_font)
cp.set (pensacola_cp.x, hermes_cp.y - air_size // 4)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- Hawaiian Islands
s := "HAWAIIAN ISLANDS"
t := new_text (s, to_date_font)
cp.set (indianapolis_cp.x, hermes_cp.y - air_size // 4)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- In Port (may move)
s := "IN PORT (MAY MOVE)"
t := new_text (s, at_port_font)
cp.set (houston_cp.x, houston_cp.y - air_size // 2)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- Philippines
s := "PHILIPPINES"
t := new_text (s, to_date_font)
cp.set (houston_cp.x, houston_cp.y - air_size // 4)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- Singapore
s := "SINGAPORE"
t := new_text (s, to_date_font)
cp.set (exeter_cp.x, houston_cp.y - air_size // 4)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- Australia
s := "AUSTRALIA"
t := new_text (s, to_date_font)
cp.set (australia_cp.x, houston_cp.y - air_size // 4)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- Location Uncertain
s := "LOCATION UNCERTAIN"
t := new_text (s, at_port_font)
cp.set (enterprise_cp.x, houston_cp.y - air_size // 2)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- Group W
s := "GROUP W"
t := new_text (s, to_date_font)
cp.set (enterprise_cp.x, houston_cp.y - air_size // 4)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- Location Uncertain
s := "LOCATION UNCERTAIN"
t := new_text (s, at_port_font)
cp.set (lexington_cp.x, lexington_cp.y - air_size // 2)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- Group X
s := "GROUP X"
t := new_text (s, to_date_font)
cp.set (lexington_cp.x, lexington_cp.y - air_size // 4)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- Group Y
s := "GROUP Y"
t := new_text (s, to_date_font)
cp.set (saratoga_cp.x, lexington_cp.y - air_size // 4)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- Group Z
s := "GROUP Z"
t := new_text (s, to_date_font)
cp.set (hornet_cp.x, lexington_cp.y - air_size // 4)
t.set_point_position (cp.x, cp.y)
world.extend (t)
-- 1 = Central Pacific...
s := "1 = Central Pcific; 2,3 = Hawaiian Islands; 4-6 = U.S.A. -- arrival Turn 2"
t := new_text (s, small_font)
cp.set (astoria_cp.x + ship_size // 4, astoria_cp.y - air_size // 2)
t.set_point_position (cp.x, cp.y)
world.extend (t)
end
add_copyright_text
-- Add the copy-right notices to each chart
local
rec: EV_MODEL_RECTANGLE
w, h: INTEGER
m: INTEGER -- text margin in box
cp: EV_COORDINATE
t1, t2: EV_MODEL_TEXT
s: STRING
f: EV_FONT
do
create cp
w := 5 * ship_size + air_size
h := 2 * air_size
m := gap_size
-- Make the box
cp.set (bottom_right_cp.x - w, bottom_right_cp.y + ship_size)
create rec.make_rectangle (cp.x, cp.y, w, h)
rec.set_foreground_color (color)
-- rec.set_background_color (lightened (color, 2.8))
world.extend (rec)
-- Design Department
s := "DESIGN DEPARTMENT"
f := small_font
f.set_weight ({EV_FONT_CONSTANTS}.weight_bold)
t1 := new_text (s, f)
cp.set (rec.x , rec.point_a.y + 3 * m)
t1.set_x_y (cp.x, cp.y)
world.extend (t1)
-- The left half of the text
f.set_family ({EV_FONT_CONSTANTS}.family_modern)
f.set_weight ({EV_FONT_CONSTANTS}.weight_thin)
s := "%T We will answer questions about the play of this %N%
%game at no charge but only if you enclose a %N%
%stamped, self-addressed envelope with your query. %N%
%Before writing to us however, we suggest %N%
%thoughtful reference to the rules which should"
t1 := new_text (s, f)
cp.set (rec.point_a.x + m, rec.point_a.y + 5 * m)
t1.set_point_position (cp.x, cp.y)
world.extend (t1)
-- The right half of the text
s := "answer any question and save you time and %N%
%postage. For a current replacment parts price %N%
%list send a stamped, self-addressed envelope to %N%
%The Avalon Hill Co., 4517 Harford Rd. Balti- %N%
%more MD 21214"
t2 := new_text (s, f)
cp.set (rec.point_b.x - m - t2.width, t1.point_y)
t2.set_point_position (cp.x, cp.y)
world.extend (t2)
-- The company name
s := " The %N%
%AVALON HILL %N%
%Game Company"
t2 := new_text (s, company_name_font)
cp.set (0, bottom_right_cp.y + ship_size // 2)
t2.set_point_position (cp.x, cp.y)
world.extend (t2)
-- The company address
s := "4517 Harford Road, Baltimore, MD 21214"
f.set_family ({EV_FONT_CONSTANTS}.family_modern)
f.set_weight ({EV_FONT_CONSTANTS}.weight_bold)
f.set_height (4)
t2 := new_text (s, f)
cp.set (top_left_cp.x + gap_size, bottom_right_cp.y + 3 * air_size)
t2.set_point_position (cp.x, cp.y)
world.extend (t2)
end
feature -- Access
location: LOCATION
-- A {LOCATION} from the {VITP_GAME} used in `draw' to determine
-- if a unit is on this chart or somewhere else (i.e. in the game.)
do
Result := game.allied_starting_forces_chart
end
title: STRING = "Allied Starting Forces"
-- The text at the top of this chart
feature {NONE} -- Implementation
widget_factory: ALLIED_FORCES_WIDGET_FACTORY
-- Hold all the widgets
company_name_font: EV_FONT
-- Large, bold, and italic
once
create Result
Result.set_height (11)
Result.set_shape ({EV_FONT_CONSTANTS}.shape_italic)
Result.set_weight ({EV_FONT_CONSTANTS}.weight_bold)
Result.set_family ({EV_FONT_CONSTANTS}.family_roman)
end
feature {NONE} -- Control point constants
bottom_right_cp: EV_COORDINATE once create Result.make (254, 150) end
-- Turn X text (not used)
turn_1_cp: EV_COORDINATE do create Result.make (7, 14) end
turn_2_cp: EV_COORDINATE do create Result end
turn_3_cp: EV_COORDINATE do create Result end
turn_4_cp: EV_COORDINATE do create Result end
turn_5_cp: EV_COORDINATE do create Result end
turn_6_cp: EV_COORDINATE do create Result end
turn_7_cp: EV_COORDINATE do create Result end
turn_8_cp: EV_COORDINATE do create Result end
turn_9_cp: EV_COORDINATE do create Result end
-- To some date text (not used)
to_dec_41_cp: EV_COORDINATE do create Result end
to_may_42_cp: EV_COORDINATE do create Result end
to_sep_42_cp: EV_COORDINATE do create Result end
to_jan_43_cp: EV_COORDINATE do create Result end
to_jun_43_cp: EV_COORDINATE do create Result end
to_jan_44_cp: EV_COORDINATE do create Result end
to_may_44_cp: EV_COORDINATE do create Result end
to_oct_44_cp: EV_COORDINATE do create Result end
to_jan_45_cp: EV_COORDINATE do create Result end
-- Turn x losses (not used)
turn_1_losses_cp: EV_COORDINATE do create Result end
turn_2_losses_cp: EV_COORDINATE do create Result end
turn_3_losses_cp: EV_COORDINATE do create Result end
turn_4_losses_cp: EV_COORDINATE do create Result end
turn_5_losses_cp: EV_COORDINATE do create Result end
turn_6_losses_cp: EV_COORDINATE do create Result end
turn_7_losses_cp: EV_COORDINATE do create Result end
-- On Battleship Row
nevada_cp: EV_COORDINATE do create Result.make (Turn_1_cp.x, Turn_1_cp.y + 12) end
arizona_cp: EV_COORDINATE do create Result.make (nevada_cp.x + 1 * ship_size, nevada_cp.y) end
west_virginia_cp: EV_COORDINATE do create Result.make (nevada_cp.x + 2 * ship_size, nevada_cp.y) end
tennessee_cp: EV_COORDINATE do create Result.make (nevada_cp.x + 3 * ship_size, nevada_cp.y) end
oklahoma_cp: EV_COORDINATE do create Result.make (nevada_cp.x + 4 * ship_size, nevada_cp.y) end
maryland_cp: EV_COORDINATE do create Result.make (nevada_cp.x + 5 * ship_size, nevada_cp.y) end
california_cp: EV_COORDINATE do create Result.make (nevada_cp.x + 6 * ship_size, nevada_cp.y) end
pennsylvania_cp: EV_COORDINATE do create Result.make (nevada_cp.x + 7 * ship_size, nevada_cp.y) end
new_orleans_cp: EV_COORDINATE do create Result.make (nevada_cp.x + 8 * ship_size, nevada_cp.y) end
san_francisco_cp: EV_COORDINATE do create Result.make (nevada_cp.x + 8 * ship_size, nevada_cp.y) end
seventh_af_cp: EV_COORDINATE do create Result.make (nevada_cp.x + 9 * ship_size, nevada_cp.y + ship_size - air_size) end
-- At Sea (cannot move)
hermes_cp: EV_COORDINATE do create Result.make (turn_1_cp.x, nevada_cp.y + ship_size + 5 * gap_size) end
revenge_cp: EV_COORDINATE do create Result.make (nevada_cp.x + ship_size, hermes_cp.y) end
prince_of_wales_cp: EV_COORDINATE do create Result.make (revenge_cp.x + ship_size + 4 * gap_size, hermes_cp.y) end
repulse_cp: EV_COORDINATE do create Result.make (prince_of_wales_cp.x + ship_size, hermes_cp.y) end
fifth_af_cp: EV_COORDINATE do create Result.make (repulse_cp.x + ship_size, hermes_cp.y + ship_size - air_size) end
louisville_cp: EV_COORDINATE do create Result.make (fifth_af_cp.x + air_size + 4 * gap_size, hermes_cp.y) end
pensacola_cp: EV_COORDINATE do create Result.make (louisville_cp.x + ship_size + 4 * gap_size, hermes_cp.y) end
indianapolis_cp: EV_COORDINATE do create Result.make (pensacola_cp.x + ship_size + 4 * gap_size, hermes_cp.y) end
minneapolis_cp: EV_COORDINATE do create Result.make (indianapolis_cp.x + ship_size, hermes_cp.y) end
-- In Port (may move)
houston_cp: EV_COORDINATE do create Result.make (turn_1_cp.x, hermes_cp.y + ship_size + 5 * gap_size) end
exeter_cp: EV_COORDINATE do create Result.make (houston_cp.x + ship_size + 4 * gap_size, houston_cp.y) end
de_ruyter_cp: EV_COORDINATE do create Result.make (exeter_cp.x + ship_size, houston_cp.y) end
australia_cp: EV_COORDINATE do create Result.make (de_ruyter_cp.x + ship_size + 4 * gap_size, houston_cp.y) end
canberra_cp: EV_COORDINATE do create Result.make (australia_cp.x + ship_size, houston_cp.y) end
-- Group W
enterprise_cp: EV_COORDINATE do create Result.make (louisville_cp.x + ship_size, houston_cp.y) end
salt_lake_city_cp: EV_COORDINATE do create Result.make (enterprise_cp.x + ship_size, houston_cp.y) end
northampton_cp: EV_COORDINATE do create Result.make (salt_lake_city_cp.x + ship_size, houston_cp.y) end
chester_cp: EV_COORDINATE do create Result.make (northampton_cp.x + ship_size, houston_cp.y) end
-- Group X
lexington_cp: EV_COORDINATE do create Result.make (turn_1_cp.x, houston_cp.y + ship_size + 5 * gap_size) end
chicago_cp: EV_COORDINATE do create Result.make (lexington_cp.x + ship_size, lexington_cp.y) end
portland_cp: EV_COORDINATE do create Result.make (chicago_cp.x + ship_size, lexington_cp.y) end
astoria_cp: EV_COORDINATE do create Result.make (portland_cp.x + ship_size, lexington_cp.y) end
-- Group Y
saratoga_cp: EV_COORDINATE do create Result.make (astoria_cp.x + ship_size + 4 * gap_size, lexington_cp.y) end
-- Group Z
hornet_cp: EV_COORDINATE do create Result.make (saratoga_cp.x + ship_size + 4 * gap_size, lexington_cp.y) end
yorktown_cp: EV_COORDINATE do create Result.make (hornet_cp.x + ship_size, lexington_cp.y) end
vincennes_cp: EV_COORDINATE do create Result.make (yorktown_cp.x + ship_size, lexington_cp.y) end
quincy_cp: EV_COORDINATE do create Result.make (vincennes_cp.x + ship_size, lexington_cp.y) end
end

View File

@@ -0,0 +1,290 @@
note
description: "[
One of the classes that decomposes the numourous VITP widgets
into more managable groups. This class models the widgets
that contain the Allied starting-forces units (i.e. the
Allied units that appear on turn 1).
]"
author: "Jimmy J. Johnson"
date: "5/15/24"
copyright: "Copyright (c) 2024, Jimmy J. Johnson"
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
class
ALLIED_STARTING_FORCES_WORLD
inherit
WIDGET_FACTORY
redefine
make_widgets,
widgets,
extend_widgets,
pair_widgets,
fill_widgets
end
create
make
create {ALLIED_STARTING_FORCES_WORLD}
list_make
feature {NONE} -- Initialization
make_widgets
-- Create widgets for the corresponding game item
do
-- Turn 1, on battleship row (Pearl Harbor)
create nevada_widget.make (game.nevada)
create arizona_widget.make (game.arizona)
create west_virginia_widget.make (game.west_virginia)
create tennessee_widget.make (game.tennessee)
create oklahoma_widget.make (game.oklahoma)
create maryland_widget.make (game.maryland)
create california_widget.make (game.california)
create pennsylvania_widget.make (game.pennsylvania)
create new_orleans_widget.make (game.new_orleans)
create san_francisco_widget.make (game.san_francisco)
create seventh_af_widget.make (game.seventh_af)
-- Turn 1, at sea (cannot move)
create hermes_widget.make (game.hermes)
create revenge_widget.make (game.revenge)
create prince_of_wales_widget.make (game.prince_of_wales)
create repulse_widget.make (game.repulse)
create fifth_af_widget.make (game.fifth_af)
create louisville_widget.make (game.louisville)
create pensacola_widget.make (game.pensacola)
create indianapolis_widget.make (game.indianapolis)
create minneapolis_widget.make (game.minneapolis)
-- Turn 1, in port (may move)
create houston_widget.make (game.houston)
create exeter_widget.make (game.exeter)
create de_ruyter_widget.make (game.de_ruyter)
create australia_ship_widget.make (game.australia_ship)
create canberra_widget.make (game.canberra)
-- Turn 1, Location uncertain (group W)
create enterprise_widget.make (game.enterprise)
create salt_lake_city_widget.make (game.salt_lake_city)
create northampton_widget.make (game.northampton)
create chester_widget.make (game.chester)
-- Turn 1, Location uncertain (group X)
create lexington_widget.make (game.lexington)
create chicago_widget.make (game.chicago)
create portland_widget.make (game.portland)
create astoria_widget.make (game.astoria)
-- Turn 1, Location uncertain (group Y)
create saratoga_widget.make (game.saratoga)
-- Turn 1, Location uncertain (group Z)
create hornet_widget.make (game.hornet)
create yorktown_widget.make (game.yorktown)
create vincennes_widget.make (game.vincennes)
create quincy_widget.make (game.quincy)
end
feature -- Access (tables)
widgets: VITP_WIDGET_TABLE [ATTACK_UNIT_WIDGET, ATTACK_UNIT]
-- Keeps track of widgets
feature -- Access (allied starting forces widgets)
-- On Battleship Row (Pearl Harbor)
nevada_widget: SHIP_WIDGET
arizona_widget: SHIP_WIDGET
west_virginia_widget: SHIP_WIDGET
tennessee_widget: SHIP_WIDGET
oklahoma_widget: SHIP_WIDGET
maryland_widget: SHIP_WIDGET
california_widget: SHIP_WIDGET
pennsylvania_widget: SHIP_WIDGET
new_orleans_widget: SHIP_WIDGET
san_francisco_widget: SHIP_WIDGET
seventh_af_widget: ALLIED_AIR_UNIT_WIDGET
-- At sea (cannot move)
hermes_widget: SHIP_WIDGET
revenge_widget: SHIP_WIDGET
prince_of_wales_widget: SHIP_WIDGET
repulse_widget: SHIP_WIDGET
fifth_af_widget: ALLIED_AIR_UNIT_WIDGET
louisville_widget: SHIP_WIDGET
pensacola_widget: SHIP_WIDGET
indianapolis_widget: SHIP_WIDGET
minneapolis_widget: SHIP_WIDGET
-- In port (may move)
houston_widget: SHIP_WIDGET
exeter_widget: SHIP_WIDGET
de_ruyter_widget: SHIP_WIDGET
australia_ship_widget: SHIP_WIDGET
canberra_widget: SHIP_WIDGET
-- Location Uncertain, group W
enterprise_widget: SHIP_WIDGET
salt_lake_city_widget: SHIP_WIDGET
northampton_widget: SHIP_WIDGET
chester_widget: SHIP_WIDGET
-- Location Uncertain, group X
lexington_widget: SHIP_WIDGET
chicago_widget: SHIP_WIDGET
portland_widget: SHIP_WIDGET
astoria_widget: SHIP_WIDGET
-- Location Uncertain, group Y
saratoga_widget: SHIP_WIDGET
-- Location Uncertain, group W
hornet_widget: SHIP_WIDGET
yorktown_widget: SHIP_WIDGET
vincennes_widget: SHIP_WIDGET
quincy_widget: SHIP_WIDGET
feature {NONE} -- Implementation
extend_widgets
-- Put each widget {ATTACK_UNIT_WIDGET} into `world'.
do
-- On Battleship Row (Pearl Harbor)
extend (nevada_widget)
extend (arizona_widget)
extend (west_virginia_widget)
extend (tennessee_widget)
extend (oklahoma_widget)
extend (maryland_widget)
extend (california_widget)
extend (pennsylvania_widget)
extend (new_orleans_widget)
extend (san_francisco_widget)
extend (seventh_af_widget)
-- At sea (cannot move)
extend (hermes_widget)
extend (revenge_widget)
extend (prince_of_wales_widget)
extend (repulse_widget)
extend (fifth_af_widget)
extend (louisville_widget)
extend (pensacola_widget)
extend (indianapolis_widget)
extend (minneapolis_widget)
-- In port (may move)
extend (houston_widget)
extend (exeter_widget)
extend (de_ruyter_widget)
extend (australia_ship_widget)
extend (canberra_widget)
-- Location Uncertain, group W
extend (enterprise_widget)
extend (salt_lake_city_widget)
extend (northampton_widget)
extend (chester_widget)
-- Location Uncertain, group X
extend (lexington_widget)
extend (chicago_widget)
extend (portland_widget)
extend (astoria_widget)
-- Location Uncertain, group Y
extend (saratoga_widget)
-- Location Uncertain, group W
extend (hornet_widget)
extend (yorktown_widget)
extend (vincennes_widget)
extend (quincy_widget)
end
pair_widgets
-- Associate each widget with a unit
do
-- On Battleship Row (Pearl Harbor)
widgets.force (nevada_widget, game.nevada)
widgets.force (arizona_widget, game.arizona)
widgets.force (west_virginia_widget, game.west_virginia)
widgets.force (tennessee_widget, game.tennessee)
widgets.force (oklahoma_widget, game.oklahoma)
widgets.force (maryland_widget, game.maryland)
widgets.force (california_widget, game.california)
widgets.force (pennsylvania_widget, game.pennsylvania)
widgets.force (new_orleans_widget, game.new_orleans)
widgets.force (san_francisco_widget, game.san_francisco)
widgets.force (seventh_af_widget, game.seventh_af)
-- At sea (cannot move)
widgets.force (hermes_widget, game.hermes)
widgets.force (revenge_widget, game.revenge)
widgets.force (prince_of_wales_widget, game.prince_of_wales)
widgets.force (repulse_widget, game.repulse)
widgets.force (fifth_af_widget, game.fifth_af)
widgets.force (louisville_widget, game.louisville)
widgets.force (pensacola_widget, game.pensacola)
widgets.force (indianapolis_widget, game.indianapolis)
widgets.force (minneapolis_widget, game.minneapolis)
-- In port (may move)
widgets.force (houston_widget, game.houston)
widgets.force (exeter_widget, game.exeter)
widgets.force (de_ruyter_widget, game.de_ruyter)
widgets.force (australia_ship_widget, game.australia_ship)
widgets.force (canberra_widget, game.canberra)
-- Location Uncertain, group W
widgets.force (enterprise_widget, game.enterprise)
widgets.force (salt_lake_city_widget, game.salt_lake_city)
widgets.force (northampton_widget, game.northampton)
widgets.force (chester_widget, game.chester)
-- Location Uncertain, group X
widgets.force (lexington_widget, game.lexington)
widgets.force (chicago_widget, game.chicago)
widgets.force (portland_widget, game.portland)
widgets.force (astoria_widget, game.astoria)
-- Location Uncertain, group Y
widgets.force (saratoga_widget, game.saratoga)
-- Location Uncertain (group Z
widgets.force (hornet_widget, game.hornet)
widgets.force (yorktown_widget, game.yorktown)
widgets.force (vincennes_widget, game.vincennes)
widgets.force (quincy_widget, game.quincy)
end
fill_widgets
-- Call `set_target' to give each widget a target.
do
-- On Battleship Row (Pearl Harbor)
nevada_widget.set_target (game.nevada)
arizona_widget.set_target (game.arizona)
west_virginia_widget.set_target (game.west_virginia)
tennessee_widget.set_target (game.tennessee)
oklahoma_widget.set_target (game.oklahoma)
maryland_widget.set_target (game.maryland)
california_widget.set_target (game.california)
pennsylvania_widget.set_target (game.pennsylvania)
new_orleans_widget.set_target (game.new_orleans)
san_francisco_widget.set_target (game.san_francisco)
seventh_af_widget.set_target (game.seventh_af)
-- At sea (cannot move)
hermes_widget.set_target (game.hermes)
revenge_widget.set_target (game.revenge)
prince_of_wales_widget.set_target (game.prince_of_wales)
repulse_widget.set_target (game.repulse)
fifth_af_widget.set_target (game.fifth_af)
louisville_widget.set_target (game.louisville)
pensacola_widget.set_target (game.pensacola)
indianapolis_widget.set_target (game.indianapolis)
minneapolis_widget.set_target (game.minneapolis)
-- In port (may move)
houston_widget.set_target (game.houston)
exeter_widget.set_target (game.exeter)
de_ruyter_widget.set_target (game.de_ruyter)
australia_ship_widget.set_target (game.australia_ship)
canberra_widget.set_target (game.canberra)
-- Location Uncertain, group W
enterprise_widget.set_target (game.enterprise)
salt_lake_city_widget.set_target (game.salt_lake_city)
northampton_widget.set_target (game.northampton)
chester_widget.set_target (game.chester)
-- Location Uncertain, group X
lexington_widget.set_target (game.lexington)
chicago_widget.set_target (game.chicago)
portland_widget.set_target (game.portland)
astoria_widget.set_target (game.astoria)
-- Location Uncertain, group Y
saratoga_widget.set_target (game.saratoga)
-- Location Uncertain, group W
hornet_widget.set_target (game.hornet)
yorktown_widget.set_target (game.yorktown)
vincennes_widget.set_target (game.vincennes)
quincy_widget.set_target (game.quincy)
end
end

View File

@@ -0,0 +1,81 @@
note
description: "[
One of the classes that decompose the numourous VITP widgets
into more managable groups. This class models the widgets
that contain the attack units.
]"
author: "Jimmy J. Johnson"
date: "5/15/24"
copyright: "Copyright (c) 2024, Jimmy J. Johnson"
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
class
ATTACK_WIDGETS_FACTORY
inherit
JAPANESE_FORCES_FACTORY
redefine
make_widgets,
extend_widgets,
pair_widgets,
fill_widgets
end
ALLIED_FORCES_WIDGET_FACTORY
redefine
make_widgets,
extend_widgets,
pair_widgets,
fill_widgets
end
create
make
feature -- Initialization
make_widgets
-- Create the widgets in Current
do
print ("ATTACK_WIDGET_FACTORY.make_widgets %N")
create attack_widgets.make (100)
Precursor {JAPANESE_FORCES_FACTORY}
print ("ATTACK_WIDGET_FACTORY.make_widgets after first Precuror call%N")
Precursor {ALLIED_FORCES_WIDGET_FACTORY}
print ("%T end ATTACK_WIDGET_FACTORY.make_widgets %N")
end
feature -- Access
attack_widgets: VITP_WIDGET_TABLE [ATTACK_UNIT_WIDGET, ATTACK_UNIT]
-- Keeps track of widgets
feature {NONE} -- Implementation
extend_widgets
-- Put each widget into `world'.
do
-- The first two line `merge' into `widgets'
Precursor {JAPANESE_FORCES_FACTORY}
Precursor {ALLIED_FORCES_WIDGET_FACTORY}
-- But also need to merge into `attack_widges'
attack_widgets.merge (japanese_forces_widgets)
attack_widgets.merge (allied_forces_widgets)
end
pair_widgets
-- Associate each widget with a unit
do
Precursor {JAPANESE_FORCES_FACTORY}
Precursor {ALLIED_FORCES_WIDGET_FACTORY}
end
fill_widgets
-- Call `set_target' to give each widget a target.
do
Precursor {JAPANESE_FORCES_FACTORY}
Precursor {ALLIED_FORCES_WIDGET_FACTORY}
end
end

View File

@@ -0,0 +1,228 @@
note
description: "[
Used to hold a BOARD_VIEW in the VITP vitp.program.
]"
author: "Jimmy J. Johnson"
class
BOARD_TOOL
inherit
VITP_TOOL
redefine
create_interface_objects,
initialize,
build_tool_bar,
add_actions,
-- initialize_interface,
-- set_actions,
set_target,
draw,
set_button_states
end
GAME_CONSTANTS
undefine
default_create,
copy
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Create objects to be used by `Current' in `initialize'
-- Implemented by descendants to create attached objects
-- in order to adhere to void-safety due to the implementation
-- bridge pattern.
do
print ("BOARD_TOOL.create_interface_objects %N")
Precursor {VITP_TOOL}
print ("BOARD_TOOL.create_interface_objects before creating board_view %N")
create board_view.make (vitp)
print ("BOARD_TOOL.create_interface_objects after creating board_view %N")
create repair_button
create flip_raiders_button
create commit_button
create sop_button
repair_button.set_pixmap (create {EV_PIXMAP}.make_with_pixel_buffer (Icon_tool_color_buffer))
repair_button.set_tooltip ("Repair Units")
flip_raiders_button.set_pixmap (create {EV_PIXMAP}.make_with_pixel_buffer (Icon_reset_diagram_color_buffer))
flip_raiders_button.set_tooltip ("Flip Raiders")
commit_button.set_pixmap (create {EV_PIXMAP}.make_with_pixel_buffer (Icon_client_link_buffer))
commit_button.set_tooltip ("Commit and Advance")
sop_button.set_text ("SOP Button fix me")
print ("%T end BOARD_TOOL.create_interface_objects %N")
end
initialize
-- Build the interface for this window
do
Precursor {VITP_TOOL}
split_manager.extend (board_view)
set_minimum_width (1000)
end
build_tool_bar
-- Set up the user tool bar for this tool
local
vs: EV_VERTICAL_SEPARATOR
do
Precursor
-- tool_bar.extend (create {EV_VERTICAL_SEPARATOR})
-- tool_bar.extend (repair_button)
-- tool_bar.extend (flip_raiders_button)
tool_bar.extend (sop_button)
-- Separator between two buttons
create vs
tool_bar.extend (vs)
tool_bar.disable_item_expand (vs)
vs.set_minimum_width (20)
-- Add button
tool_bar.extend (commit_button)
tool_bar.disable_item_expand (commit_button)
create vs
tool_bar.extend (vs)
tool_bar.disable_item_expand (vs)
vs.set_minimum_width (20)
end
add_actions
-- Associate actions with the buttons
do
Precursor {VITP_TOOL}
commit_button.select_actions.extend (agent on_commit)
sop_button.select_actions.extend (agent on_execute)
end
feature -- Access
board_view: BOARD_VIEW
-- Handle to the view corresponding to the first view created by the
-- `view_manager' in `initialize'.
-- Convinience feature.
focused_view: VITP_CELL_VIEW
-- The view that currently has the focus
do
Result := board_view
-- if japanese_chart_view.has_focus then
-- Result := japanese_chart_view
-- else
-- Result := board_view
-- end
end
feature -- Element change
set_target (a_game: like vitp)
-- Change the value of `target' and add it to the `target_set' (the set
-- of objects contained in this view. The old target is removed from
-- the set.
-- This feature can be used as a pattern if a descendant wants to give
-- special treatment to a single target.
do
Precursor {VITP_TOOL} (a_game)
board_view.set_target (a_game)
end
feature -- Basic operations
draw
-- Redraw the tool
do
Precursor {VITP_TOOL}
-- board_view.draw
set_button_states
end
on_commit
-- Action to be performed when the `commit_button' is pressed
do
-- vitp.advance
-- board_view.on_advanced
vitp.sequence_of_play.forth
draw_views (vitp)
end
on_execute
-- Perform the any action associated with the current step
-- in the sequence of play.
local
sop: VITP_SEQUENCE_OF_PLAY
do
sop := vitp.sequence_of_play
sop.execute_step_actions
draw_views (vitp)
end
feature {NONE} -- implementation
set_button_states
-- Enable or disable the buttons depending on the
-- state of the view
do
Precursor {VITP_TOOL}
set_added_buttons_states
end
set_added_buttons_states
-- Enable or disable the buttons that this tool
-- added to the tool bar.
local
sop: VITP_SEQUENCE_OF_PLAY
s: GAME_STEP
c: FONT_AND_COLOR_CONSTANTS
do
if is_view_empty then
repair_button.disable_sensitive
flip_raiders_button.disable_sensitive
commit_button.disable_sensitive
else
sop := vitp.sequence_of_play
if not sop.is_off then
sop_button.set_text (sop.full_name)
create c
if sop.is_japanese_player then
sop_button.set_background_color (c.Japanese_unit_color)
sop_button.set_foreground_color (c.black)
elseif sop.is_allied_player then
sop_button.set_background_color (c.us_unit_color)
sop_button.set_foreground_color (c.white)
end
if sop.is_step_executable then
sop_button.enable_sensitive
else
sop_button.disable_sensitive
end
if sop.is_step_completed then
commit_button.enable_sensitive
else
commit_button.disable_sensitive
end
end
end
end
feature {NONE} -- Implementation
sop_button: EV_BUTTON
-- Button showing the current game step in the Sequence
-- of play. The background color corresponds to the active
-- player (red for Japanese and blue for Allied). This
-- button is active when the `vitp'.`sequence_of_play'
-- indicates that automatic actions are executable.
repair_button: EV_TOOL_BAR_BUTTON
-- Button to mark units for repair
flip_raiders_button: EV_TOOL_BAR_BUTTON
-- Button to flip from patroller to raider or back
commit_button: EV_BUTTON --EV_TOOL_BAR_BUTTON
-- Button for player to indicate he is finished with the step
end

View File

@@ -0,0 +1,652 @@
note
description: "[
A {VIEW} that corresponds to the game board in Victory
In the Pacific (VITP). This view has widgets that hold
and allow control of game actions (e.g. movement, attacks,
repositions, etc) of game elements (e.g. ships, control
markers, ports, etc.)
]"
author: "Jimmy J. Johnson"
class
BOARD_VIEW
inherit
VITP_CELL_VIEW
redefine
create_interface_objects,
initialize,
add_actions,
set_target,
draw,
pick_notified_operations,
pick_ended_operations
end
FONT_AND_COLOR_CONSTANTS
export
{NONE}
all
undefine
default_create,
copy
end
POSITION_CONSTANTS
export
{NONE}
all
undefine
default_create,
copy
redefine
playing_area_ratio
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Create objects to be used by `Current' in `initialize'
-- Implemented by descendants to create attached objects
-- in order to adhere to void-safety due to the implementation bridge pattern.
do
print ("BOARD_VIEW.create_interface_objects %N")
Precursor {VITP_CELL_VIEW}
print ("%T BOARD_VIEW.create_interface_objects before creating widget_factory %N")
create widget_factory.make (game)
print ("%T BOARD_VIEW.create_interface_objects after creatingh widget_factory %N")
-- create dot
-- create bounding_figure
-- Create for Void safety
-- create mouse_offset
create last_mouse_position
-- create containers
create task_force_widgets.make (100)
create highlighted_widgets.make
-- create the corner points used to determine the scale factor
create top_left_dot
create bottom_right_dot
-- create container for the grid cells (rows, columns)
-- create cell_array.make (playing_area_height // cell_size,
end
initialize
-- Called after `Default_create'
do
Precursor {VITP_CELL_VIEW}
-- world.extend (dragging_arrow)
-- dragging_arrow.hide
-- -- create the `handle'
-- create handle
-- world.extend (handle)
build_border
-- Attack widgets go on top of all other widgets except the dots
-- build_corner_dots
-- Place the dots from {POSITION_CONSTANTS} into Current
-- The dots move based on scaling of the view, allowing
-- cell positions to be determined regardless of the
-- actual size of the view.
add_widgets
world.extend (top_left_dot)
world.extend (bottom_right_dot)
end
add_widgets
-- Add the sea areas, ports, and unit widgets to the `world',
-- hiding the unit widgets until needed
local
wf: like widget_factory
t: like widget_factory.widgets
w: VITP_WIDGET
do
wf := widget_factory
-- Add sea areas first
t := wf.sea_area_widgets
from t.start
until t.after
loop
-- world.extend (t.item_for_iteration)
add_model (t.item_for_iteration)
t.forth
end
-- Add ports
t := wf.port_widgets
from t.start
until t.after
loop
-- world.extend (t.item_for_iteration)
add_model (t.item_for_iteration)
t.forth
end
-- Add unit widgets
t := wf.attack_widgets
from t.start
until t.after
loop
w := t.item_for_iteration
print ("{BOARD_VIEW}.add_widgets: Adding " + w.target.name + " at (" + w.x.out + ", " + w.y.out + ") %N")
-- world.extend (w)
add_model (w)
-- w.hide
t.forth
end
end
build_corner_dots
-- Create the two dots that will mark the top-left and bottom-right corners of
-- the board. These aid calculation of the current scaling factor and scolling
do
top_left_dot.set_x_y (playing_area_left, playing_area_top)
bottom_right_dot.set_x_y (playing_area_right, playing_area_bottom)
top_left_dot.set_line_width (10)
bottom_right_dot.set_line_width (10)
world.extend (top_left_dot)
world.extend (bottom_right_dot)
end
add_actions
-- Add actions to the widgets
local
w: ATTACK_UNIT_WIDGET
do
-- Do not call precursor
-- asia_widget.pointer_button_press_actions.force_extend (agent toggle_land)
-- pointer_motion_actions.extend (agent on_pointer_moved)
-- pointer_button_release_actions.extend (agent on_button_released)
end
build_border
-- Put a border around the game board to hide some of the land overhangs
local
poly: EV_MODEL_POLYGON
s: INTEGER
bw, bh: INTEGER_32
c: EV_COLOR
do
s := 5
c := Medium_grey
bw := board_width
bh := board_height
-- top
create poly.default_create
poly.set_line_width (0)
poly.extend_point (create {EV_COORDINATE}.make (-s, -s))
poly.extend_point (create {EV_COORDINATE}.make (bw + s, -s))
poly.extend_point (create {EV_COORDINATE}.make (bw + s, 0))
poly.extend_point (create {EV_COORDINATE}.make (-s, 0))
poly.set_background_color (c)
poly.set_foreground_color (c)
world.extend (poly)
-- botton
create poly.default_create
poly.set_line_width (0)
poly.extend_point (create {EV_COORDINATE}.make (-s, bh))
poly.extend_point (create {EV_COORDINATE}.make (bw + s, bh))
poly.extend_point (create {EV_COORDINATE}.make (bw + s, bh + s))
poly.extend_point (create {EV_COORDINATE}.make (-s, bh + s))
poly.set_background_color (c)
poly.set_foreground_color (c)
world.extend (poly)
-- left
create poly.default_create
poly.set_line_width (0)
poly.extend_point (create {EV_COORDINATE}.make (-s, -s))
poly.extend_point (create {EV_COORDINATE}.make (0, -s))
poly.extend_point (create {EV_COORDINATE}.make (0, bh + s))
poly.extend_point (create {EV_COORDINATE}.make (-s, bh + s))
poly.set_background_color (c)
poly.set_foreground_color (c)
world.extend (poly)
-- right
create poly.default_create
poly.set_line_width (0)
poly.extend_point (create {EV_COORDINATE}.make (bw, -s))
poly.extend_point (create {EV_COORDINATE}.make (bw + s, -s))
poly.extend_point (create {EV_COORDINATE}.make (bw + s, bh + s))
poly.extend_point (create {EV_COORDINATE}.make (bw, bh + s))
poly.set_background_color (c)
poly.set_foreground_color (c)
world.extend (poly)
end
feature -- Basic operations
set_target (a_item: like game)
-- Associate `a_item' with Current.
do
Precursor (a_item)
-- Build a polygon that defines the boundary of current for which we
-- find the centerpoint, the `dot'. Other widgets can then be built
-- and if desired placed in Current relative to `dot'
widget_factory.set_game (game)
-- paint
-- set_pebble (a_item)
-- set_accept_cursor (sub_pixmap (bounding_box))
end
draw
-- Redraw the view
-- This means the game has changed in some way
-- (e.g. a ship was added).
do
if not is_view_empty then
-- update_attack_widgets
-- should be no need to draw the whole view unless the game
-- was changed.
end
end
feature -- Access
widget_factory: ALL_WIDGETS_FACTORY
-- Holds all the widgets on the board
playing_area_ratio: REAL_64
-- Ratio of the playing_area_width' to the [possibly]
-- scaled size of the `playing_area_width'. Default = one,
-- but redefined here to use the distance between the
-- two corner dots.
do
Result := playing_area_width / (bottom_right_dot.x - top_left_dot.x)
end
feature -- Query
cell_at (a_x, a_y: INTEGER_32): VITP_CELL
-- The cell at the screen coordinates `a_x', `a_y'
local
x, y: INTEGER_32
do
x := ((a_x * playing_area_ratio) / cell_size).truncated_to_integer + 1
y := ((a_y * playing_area_ratio) / cell_size).truncated_to_integer + 1
Result := game.cell (x, y)
end
screen_coordinates (a_cell: VITP_CELL): TUPLE [x, y: INTEGER_32]
-- The screen coordinates corresponding to `a_cell'
local
x, y: INTEGER_32
do
x := ((a_cell.index.x * cell_size) / playing_area_ratio).truncated_to_integer
y := ((a_cell.index.y * cell_size) / playing_area_ratio).truncated_to_integer
Result := [x, y]
end
feature -- Status report
is_forwarding: BOOLEAN
-- Has a widget been brought to the top?
is_dragging: BOOLEAN
-- Are we in the process of sliding a widget or a group of widgets?
-- is_picking: BOOLEAN
-- -- Are we in the process of a pick-and-put operation?
is_repositioning: BOOLEAN
-- Is a widget being repositioned?
is_moving: BOOLEAN
-- Is a unit being moved to a new location?
is_highlighting: BOOLEAN
-- Is a widget or group of widgets being emphasized?
is_highlighting_location: BOOLEAN
-- Is one or more port widgets being emphasized?
is_highlighting_units: BOOLEAN
-- Is one or more unit widgets being emphasized?
is_highlighting_task_force: BOOLEAN
-- Is one or more {TASK_FORCE_WIDGET}s being emphasized?
is_processing_task_force: BOOLEAN
-- A {TASK_FORCE_WIDGET} is being clicked/move/released
feature -- Actions
pick_notified_operations (a_target: ANY)
-- React to the pick of `a_target' from some view
local
sop: like game.sequence_of_play
set: LINKED_SET [PORT]
p: PORT
pw: PORT_WIDGET
do
Precursor (a_target)
print ("{BOARD_VIEW}.pick_notified_operations on {" + generating_type.name + "}%N")
sop := game.sequence_of_play
if sop.is_reinforcement_step and then attached {ATTACK_UNIT} a_target as t then
set := t.reinforceable_ports
print ("%T undimming " + set.count.out + " areas %N")
from set.start
until set.after
loop
p := set.item
print ("%T%T making " + p.name + " brighter %N")
pw := widget_factory.port_widgets.definite_item (p)
pw.set_dimming_level ({DIMABLE}.bright)
pw.activate_drop_action
highlighted_widgets.extend (pw)
set.forth
end
-- application.process_graphical_events
end
end
pick_ended_operations
-- React to the end of a pick and drop operation
do
Precursor
print ("{BOARD_VIEW}.pick_ended_operations on {" + generating_type.name + "} %N")
from highlighted_widgets.start
until highlighted_widgets.after
loop
highlighted_widgets.item.deactivate_drop_action
highlighted_widgets.item.restore_dimming_level
highlighted_widgets.forth
end
highlighted_widgets.wipe_out
end
on_pointer_enter (a_widget: VITP_WIDGET)
-- React to a pointer entering `a_widget'
local
tfw: TASK_FORCE_WIDGET
do
io.put_string ("BOARD_WORLD.on_pointer_enter: on " + a_widget.target.name + " %N")
-- if attached {ATTACK_UNIT_WIDGET} a_widget as w then
-- if w.unit.is_task_force then
-- tfw := task_force_widgets.widget (w.unit.task_force)
-- forward_widget_to_top (w, tfw)
-- end
-- end
end
on_pointer_leave (a_widget: VITP_WIDGET)
-- React to a pointer leaving a `a_widget'
do
io.put_string ("BOARD_WORLD.on_pointer_leave: on " + a_widget.target.name + " %N")
-- if is_forwarding then
-- restore_forwarded_widget
-- end
end
on_button_pressed (a_widget: VITP_WIDGET; ax: INTEGER; ay: INTEGER; a_button: INTEGER)
-- React to a pointer button pressed notification from `a_widget'
do
io.put_string ("BOARD_WORLD.on_button_pressed: button " + a_button.out +
" pressed at (" + ax.out + ", " + ay.out + ") on " + a_widget.target.name + " %N")
-- last_mouse_position.set_precise (ax, ay)
-- if is_forwarding then
-- restore_forwarded_widget
-- end
-- if a_button = 1 then
-- if attached {ATTACK_UNIT_WIDGET} a_widget as w then
-- highlight_unit (w.unit)
-- begin_widget_reposition (w, ax, ay)
-- elseif attached {LOCATION_WIDGET} a_widget as w then
-- highlight_location (w.location)
-- highlight_location_occupants (w.location)
-- end
-- end
end
on_button_double_pressed (a_widget: VITP_WIDGET; ax: INTEGER; ay: INTEGER; a_button: INTEGER)
-- React to a pointer button released notification from `a_widget'
do
io.put_string ("BOARD_WORLD.on_button_double_pressed: button " + a_button.out +
" double-pressed at (" + ax.out + ", " + ay.out + ") on " + a_widget.target.name + "%N")
if a_button = 1 then
if attached {TASK_FORCE_WIDGET} a_widget as w and then
not w.point_on_bounding_figure (ax, ay) then
if w.is_stacked then
w.tile
else
w.stack
end
-- Next lines to prevent undesired movement
is_repositioning := false
end
end
end
on_button_released (a_widget: VITP_WIDGET; ax: INTEGER; ay: INTEGER; a_button: INTEGER)
-- React to a pointer button released notification from `a_widget'
do
io.put_string ("BOARD_WORLD.on_button_released: button " + a_button.out + " pressed at (" + ax.out + ", " + ay.out + ") %N")
if is_highlighting_location then
normalize_locations
end
if is_highlighting_units then
normalize_units
end
if is_repositioning then
-- finish_widget_reposition
end
end
on_pointer_motion (a_widget: VITP_WIDGET; ax, ay: INTEGER)
-- React to a pointer move notification from `a_widget'
do
io.put_string ("BOARD_WORLD.on_notify_pointer_motion: at (" + ax.out + ", " + ay.out + ") %N")
-- if is_repositioning then
---- last_mouse_position.set_position (ax, ay)
-- -- Adjust for difference in the location of `active_widget' and `last_mouse_position'
---- if can_reposition (ax, ay) then
---- set_pointer_style (create {EV_POINTER_STYLE}.make_predefined ({EV_POINTER_STYLE_CONSTANTS}.Standard_cursor))
---- reposition_active_widget (ax, ay)
---- else
---- set_pointer_style (create {EV_POINTER_STYLE}.make_predefined ({EV_POINTER_STYLE_CONSTANTS}.No_cursor))
---- end
-- end
end
feature -- Basic operations
position_task_force_widget (a_widget: TASK_FORCE_WIDGET)
-- Place `a_widget' on the board so it does not overlap other
-- widgets, possibly moving other widgets.
do
end
position_widget (a_widget: ATTACK_UNIT_WIDGET)
-- Ensure each widget is postioned according to its position,
-- perhaps repositioning it to accomodate other widgets.
do
end
feature --{WIDGET_FACTORY} -- Basic operations
on_flip_widget (a_widget: SHIP_WIDGET)
-- Toggle the raiding status of `a_widget'
do
io.put_string ("on_flip_raider /n")
a_widget.flip
ensure
ship_status_toggled: a_widget.ship.is_raiding = not (old a_widget.ship.is_raiding)
end
board_coordinate_to_model_position (a_position: EV_COORDINATE): VITP_POSITION
-- `a_position' converted to the model's coordinate system
require
position_exists: a_position /= Void
local
brp, tlp: EV_COORDINATE
p: EV_COORDINATE
x_size, y_size: REAL_64
long, lat: REAL_64
do
p := a_position
brp := bottom_right_dot.point
tlp := top_left_dot.point
x_size := brp.x_precise - tlp.x_precise
y_size := brp.y_precise - tlp.y_precise
long := (p.x_precise - tlp.x_precise) * (board_right / x_size)
lat := (p.y_precise - tlp.y_precise) * (board_bottom / y_size)
create Result.set_xy (long.truncated_to_integer, lat.truncated_to_integer)
end
highlight_location (a_location: LOCATION)
-- Brighten the widget corresponding to `a_location'
require
location_exists: a_location /= Void
local
w: VITP_WIDGET
do
w := widget_factory.widgets.definite_item (a_location)
if world.has (w) then
w.set_dimming_level ({DIMABLE}.Bright)
w.paint
highlighted_widgets.extend (w)
is_highlighting_location := true
end
end
highlight_location_occupants (a_location: LOCATION)
-- Brighten the widgets corresponding to the occupants of `a_location'
require
location_exists: a_location /= Void
local
u_list: LINKED_SET [ATTACK_UNIT]
w: VITP_WIDGET
do
u_list := a_location.units
from u_list.start
until u_list.after
loop
w := widget_factory.widgets.definite_item (u_list.item)
w.set_dimming_level ({DIMABLE}.Bright)
w.paint
highlighted_widgets.extend (w)
u_list.forth
end
is_highlighting_units := true
end
highlight_unit (a_unit: ATTACK_UNIT)
-- Brighten the widget corresponding to `a_unit'
require
unit_exists: a_unit /= Void
local
tfw: TASK_FORCE_WIDGET
w: VITP_WIDGET
do
-- if a_unit.is_task_force then
-- tfw := task_force_widgets.widget (a_unit.task_force)
-- if tfw.is_stacked then
-- w := tfw
-- else
-- w := world.attack_widgets.widget (a_unit)
-- end
-- else
-- w := world.attack_widgets.widget (a_unit)
-- end
w := widget_factory.widgets.definite_item (a_unit)
w.set_dimming_level ({DIMABLE}.Bright)
w.paint
highlighted_widgets.extend (w)
is_highlighting_units := true
end
normalize_locations
-- Restor all location widgets to a normal brightness level
local
w: LOCATION_WIDGET
do
-- from world.location_widgets.start
-- until world.location_widgets.after
-- loop
-- w := world.location_widgets.item_for_iteration
-- w.set_dimming_level ({DIMABLE}.Normal)
-- w.paint
-- world.location_widgets.forth
-- end
-- is_highlighting_location := false
end
normalize_units
-- Restore all attack widgets to a normal brightness level
local
w: ATTACK_UNIT_WIDGET
do
-- from world.attack_widgets.start
-- until world.attack_widgets.after
-- loop
-- w := world.attack_widgets.item_for_iteration
-- w.set_dimming_level ({DIMABLE}.Normal)
-- w.paint
-- world.attack_widgets.forth
-- end
-- is_highlighting_units := false
end
feature --{VITP_WIDGET} -- Implementation
task_force_widgets: VITP_WIDGET_TABLE [TASK_FORCE_WIDGET, TASK_FORCE]
last_mouse_position: EV_COORDINATE
-- For possible restoration to the location where the reposition began
forwarded_widget: detachable ATTACK_UNIT_WIDGET
-- A widget that has been brought to the top of its owner
forwarded_widget_owner: detachable VITP_WIDGET
-- The widget in which `forwarded_widget' resides
highlighted_widgets: LINKED_SET [VITP_WIDGET]
-- The widgets with the focus
top_left_dot: EV_MODEL_DOT
-- A dot at top left of the board, that will scale and scroll with the view,
-- whose position when compared with `bottom_right_dot' provides a scale
-- factor used to position widgets
bottom_right_dot: EV_MODEL_DOT
-- See `top_left_dot'
feature {NONE} -- Implementation
-- X_stacking_increment: INTEGER
-- -- The distance in pixels to offset a stacked widget in the x direction
-- local
-- w: ATTACK_UNIT_WIDGET
-- do
-- -- Since we base this distance on the current size of a ship widget,
-- -- we must ensure we have a widget from which to calculate the value.
-- check not world.attack_widgets.is_empty then
-- w := world.attack_widgets.iteration_item (1)
---- Result := (w.tile_size / 10).rounded
-- Result := (w.tile_size / 10).rounded
-- end
-- end
-- Y_stacking_increment: INTEGER
-- -- The distance in pixels to offset a stacked widget in the x direction
-- local
-- w: ATTACK_UNIT_WIDGET
-- do
-- -- Since we base this distance on the current size of a ship widget,
-- -- we must ensure we have a widget from which to calculate the value.
-- check not world.attack_widgets.is_empty then
-- w := world.attack_widgets.iteration_item (1)
---- Result := (w.tile_size / 10).rounded
-- Result := (w.tile_size / 10).rounded
-- end
-- end
--feature {NONE} -- Implemetation
-- target_imp: detachable VITP_GAME
-- -- Detachable implementation of `target' for void safety
end

View File

@@ -0,0 +1,152 @@
note
description: "[
Used to hold a CHART_VIEW in the VITP game program.
]"
author: "Jimmy J. Johnson"
class
CHART_TOOL
inherit
VITP_TOOL
redefine
create_interface_objects,
initialize,
-- add_actions,
set_target,
draw
end
create
default_create,
make
feature {NONE} -- Initialization
create_interface_objects
-- Create objects to be used by `Current' in `initialize'
-- Implemented by descendants to create attached objects
-- in order to adhere to void-safety due to the implementation bridge pattern.
do
Precursor {VITP_TOOL}
create japanese_oa_chart_view.make (vitp)
create allied_oa_chart_view.make (vitp)
create allied_starting_forces_view.make (vitp)
end
initialize
-- Build the interface for this window
do
Precursor {VITP_TOOL}
disable_history
split_manager.extend (japanese_oa_chart_view)
split_manager.extend (allied_starting_forces_view)
split_manager.set_vertical
split_manager.extend (allied_oa_chart_view)
end
-- add_actions
-- -- Add actions to views
-- do
-- Precursor
---- japanese_oa_chart_view.pointer_button_press_actions.extend (agent on_pressed (japanese_oa_chart_view, ?,?,?,?,?,?,?,?))
---- allied_oa_chart_view.pointer_button_press_actions.extend (agent on_pressed (allied_oa_chart_view, ?,?,?,?,?,?,?,?))
---- allied_starting_forces_view.pointer_button_press_actions.extend (agent on_pressed (allied_starting_forces_view, ?,?,?,?,?,?,?,?))
-- allied_starting_forces_view.pointer_enter_actions.extend (agent on_enter)
-- allied_starting_forces_view.pointer_button_release_actions.extend (agent on_pressed (allied_starting_forces_view, ?,?,?,?,?,?,?,?))
-- end
feature {NONE} -- Agent actions
on_enter
-- Test actions
do
io.put_string (generating_type.name + ".on_enter: %N")
end
on_pressed (a_view: ORDER_OF_APPEARANCE_VIEW;
ax, ay, button: INTEGER;
ax_tilt, ay_tilt, a_pressure: DOUBLE;
a_screen_x, a_screen_y: INTEGER)
-- I was going to use this feature for setting the `focused_view'
-- when the user clicks within one of the views, but it never gets
-- called (so I commented out `add_actions'). I bet the event
-- loop never checks for `pointer_press_actions'. ???
do
io.put_string (generating_type.name + ".on_pressed: " + a_view.generating_type.name + "%N")
focused_view_imp := a_view
end
feature -- Access
-- target: VITP_GAME
japanese_oa_chart_view: JAPANESE_ORDER_OF_APPEARANCE_CHART_VIEW
-- The view representing the Japanese order of appearance
allied_oa_chart_view: ALLIED_ORDER_OF_APPEARANCE_CHART_VIEW
-- The view representing the Allied ordr of appearance
allied_starting_forces_view: ALLIED_STARTING_FORCES_VIEW
-- The view reprsenting the Allied, turn 1, starting forces chart
focused_view: VITP_CELL_VIEW
-- The view that currently has the focus
do
if attached focused_view_imp as v and then v.is_displayed then
Result := v
else
if japanese_oa_chart_view.is_displayed then
Result := japanese_oa_chart_view
elseif allied_oa_chart_view.is_displayed then
Result := allied_oa_chart_view
elseif allied_starting_forces_view.is_displayed then
Result := allied_starting_forces_view
else
-- Unlikely, but all view are hidden, so default
Result := japanese_oa_chart_view
end
end
end
feature -- Element change
set_target (a_game: like vitp)
-- Change the value of `target' and add it to the `target_set' (the set
-- of objects contained in this view. The old target is removed from
-- the set.
do
Precursor {VITP_TOOL} (a_game)
japanese_oa_chart_view.set_target (a_game)
allied_oa_chart_view.set_target (a_game)
allied_starting_forces_view.set_target (a_game)
end
set_focused_view (a_view: ORDER_OF_APPEARANCE_VIEW)
-- Set `focused_view' to `a_view'.
-- Called by {ORDER_OF_APPEARANCE_VIEW} when `a_view' was clicked
require
valid_view: a_view = japanese_oa_chart_view or
a_view = allied_oa_chart_view or
a_view = allied_starting_forces_view
do
focused_view_imp := a_view
end
feature -- Basic operations
draw
-- Redraw the tool and the contained view
do
Precursor {VITP_TOOL}
japanese_oa_chart_view.draw
allied_oa_chart_view.draw
end
feature {NONE} -- Implementation
focused_view_imp: detachable like focused_view
-- Implementaion of `focused_view'
end

View File

@@ -0,0 +1,113 @@
note
description: "[
Tool to manipulate the sequence of the game play.
]"
author: "Jimmy J. Johnson"
class
GAME_SEQUENCE_TOOL
inherit
VITP_TOOL
redefine
create_interface_objects,
initialize,
build_tool_bar,
add_actions,
set_target,
draw
end
GAME_CONSTANTS
export
{NONE}
all
undefine
default_create,
copy
end
create
default_create,
make
feature {NONE} -- Initialization
create_interface_objects
-- Create objects to be used by `Current' in `initialize'
-- Implemented by descendants to create attached objects
-- in order to adhere to void-safety due to the implementation bridge pattern.
do
Precursor {VITP_TOOL}
create advance_button
advance_button.set_pixmap (create {EV_PIXMAP}.make_with_pixel_buffer (Icon_supplier_color_buffer))
advance_button.set_tooltip ("Advance")
create view.make (vitp)
end
initialize
-- Build the interface for this window
do
Precursor {VITP_TOOL}
split_manager.extend (view)
-- set_target (vitp)
end
add_actions
-- Add functionality to the buttons
do
Precursor {VITP_TOOL}
advance_button.select_actions.extend (agent on_advance)
end
build_tool_bar
-- Add buttons to `tool_bar' (from TOOL).
do
Precursor {VITP_TOOL}
-- tool_bar.extend (advance_button)
end
feature -- Access
view: GAME_SEQUENCE_VIEW
-- Handle to the view corresponding to the first view created by the
-- `view_manager' in `initialize'.
-- Convinience feature.
focused_view: VITP_CELL_VIEW
-- The view that currently has the focus
do
Result := view
end
feature -- Element change
set_target (a_game: like vitp)
-- Change the `target'
do
Precursor {VITP_TOOL} (a_game)
view.set_target (a_game)
end
draw
-- Redraw the view
do
view.draw
end
feature {NONE} -- Actions
on_advance
-- React to a press of the `advance_button'
do
-- sop.forth
draw_views (vitp)
end
feature {NONE} -- Implementation
advance_button: EV_TOOL_BAR_BUTTON
-- Button to advance to the next phase/step of the game
end

View File

@@ -0,0 +1,93 @@
note
description: "[
View to display the sequence of the vitp.play.
]"
author: "Jimmy J. Johnson"
class
GAME_SEQUENCE_VIEW
inherit
VITP_CELL_VIEW
redefine
create_interface_objects,
initialize,
draw
-- target_imp
end
GAME_CONSTANTS
export
{NONE}
all
undefine
default_create,
copy
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Create objects to be used by `Current' in `initialize'
-- Implemented by descendants to create attached objects
-- in order to adhere to void-safety due to the implementation bridge pattern.
do
Precursor {VITP_CELL_VIEW}
create turn_text
create phase_text
create step_text
create player_text
end
initialize
-- Create the text widgets making up current
local
rp: EV_COORDINATE
do
Precursor {VITP_CELL_VIEW}
world.extend (turn_text)
world.extend (phase_text)
world.extend (step_text)
world.extend (player_text)
create rp.make (10, 10)
turn_text.set_point (rp)
create rp.make (10, 30)
phase_text.set_point (rp)
create rp.make (10, 50)
step_text.set_point (rp)
create rp.make (10, 70)
player_text.set_point (rp)
end
feature -- Basic operations
draw
-- Redraw the view
do
io.put_string (generating_type.name + ".draw: fix me %N")
-- turn_text.set_text ("Turn: %T" + vitp.turn.out)
-- phase_text.set_text ("Phase: %T" + vitp.phase_text)
-- step_text.set_text ("Set: %T" + vitp.stage_text)
-- player_text.set_text ("Player: %T" + vitp.player_text)
Precursor {VITP_CELL_VIEW}
end
feature {NONE} -- Implementation
-- target_imp: detachable VITP_SEQUENCE_OF_PLAY
-- -- The target of this view
turn_text: EV_MODEL_TEXT
phase_text: EV_MODEL_TEXT
step_text: EV_MODEL_TEXT
player_text: EV_MODEL_TEXT
end

View File

@@ -0,0 +1,439 @@
note
description: "[
One of the classes that decompose the numourous VITP widgets
into more managable groups containing the Japanese-unit widgets.
]"
author: "Jimmy J. Johnson"
date: "5/15/24"
copyright: "Copyright (c) 2024, Jimmy J. Johnson"
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
class
JAPANESE_FORCES_FACTORY
inherit
WIDGET_FACTORY
redefine
make_widgets,
extend_widgets,
pair_widgets,
fill_widgets
end
create
make
feature {NONE} -- Initialization
make_widgets
-- Create widgets for the corresponding game item
do
print ("JAPANESE_FORCES_WIDGET_FACTORY.make_widgets %N")
Precursor {WIDGET_FACTORY}
print ("%T JAPANESE_FORCES_WIDGET_FACTORY.make_widgets after Precursor call %N")
create japanese_forces_widgets.make (100)
print ("%T JAPANESE_FORCES_WIDGET_FACTORY.make_widgets after create japanese_forces_widgets %N")
-- Turn 1
check attached game then
print ("%T JAPANESE_FORCES_WIDGET_FACTORY.make_widgets check statement %N")
print ("%T JAPANESE_FORCES_WIDGET_FACTORY.make_widgets " + game.shokaku.name + "%N")
end
create shokaku_widget.make (game.shokaku)
print ("%T JAPANESE_FORCES_WIDGET_FACTORY.make_widgets after create shokaku_widget %N")
create zuikaku_widget.make (game.zuikaku)
create akagi_widget.make (game.akagi)
create kaga_widget.make (game.kaga)
create soryu_widget.make (game.soryu)
create hiryu_widget.make (game.hiryu)
create ryujo_widget.make (game.ryujo)
create hosho_widget.make (game.hosho)
create zuiho_widget.make (game.zuiho)
create mutsu_widget.make (game.mutsu)
create nagato_widget.make (game.nagato)
create fuso_widget.make (game.fuso)
create hyuga_widget.make (game.hyuga)
create ise_widget.make (game.ise)
create yamashiro_widget.make (game.yamashiro)
create haruna_widget.make (game.haruna)
create hiei_widget.make (game.hiei)
create kirishima_widget.make (game.kirishima)
create kongo_widget.make (game.kongo)
create ashigara_widget.make (game.ashigara)
create atago_widget.make (game.atago)
create chokai_widget.make (game.chokai)
create haguro_widget.make (game.haguro)
create maya_widget.make (game.maya)
create myoko_widget.make (game.myoko)
create nachi_widget.make (game.nachi)
create takao_widget.make (game.takao)
create chikuma_widget.make (game.chikuma)
create kumano_widget.make (game.kumano)
create mikuma_widget.make (game.mikuma)
create mogami_widget.make (game.mogami)
create suzuya_widget.make (game.suzuya)
create tone_widget.make (game.tone)
create aoba_widget.make (game.aoba)
create furutaka_widget.make (game.furutaka)
create kako_widget.make (game.kako)
create kinugasa_widget.make (game.kinugasa)
create kitakami_widget.make (game.kitakami)
create oi_widget.make (game.oi)
create yokosuka_widget.make (game.yokosuka)
create airflot_21_widget.make (game.airflot_21)
create airflot_22_widget.make (game.airflot_22)
create airflot_23_widget.make (game.airflot_23)
create airflot_24_widget.make (game.airflot_24)
create airflot_25_widget.make (game.airflot_25)
create airflot_26_widget.make (game.airflot_26)
create i_boat_widget.make (game.i_boat)
-- Turn 2
create shoho_widget.make (game.shoho)
create junyo_widget.make (game.junyo)
create sasebo_widget.make (game.sasebo)
-- Turn 3
create hiyo_widget.make (game.hiyo)
create yamato_widget.make (game.yamato)
create kure_widget.make (game.kure)
-- Turn 4
do_nothing
-- Turn 5
create musashi_widget.make (game.musashi)
-- Turn 6
do_nothing
-- Turn 7
create chiyoda_widget.make (game.chiyoda)
create chitose_widget.make (game.chitose)
create ryuho_widget.make (game.ryuho)
create taiho_widget.make (game.taiho)
create i_boat_removal_widget.make (game.i_boat_removal)
-- Turn 8
create unryu_widget.make (game.unryu)
create amagi_widget.make (game.amagi)
-- Turn 9
create katsuragi_widget.make (game.katsuragi)
create shinano_widget.make (game.shinano)
end
feature -- Access (tables)
japanese_forces_widgets: VITP_WIDGET_TABLE [ATTACK_UNIT_WIDGET, ATTACK_UNIT]
-- Keeps track of widgets
feature -- Access (Japanese unit widgets)
-- Turn 1, row 1
shokaku_widget: SHIP_WIDGET
zuikaku_widget: SHIP_WIDGET
akagi_widget: SHIP_WIDGET
kaga_widget: SHIP_WIDGET
soryu_widget: SHIP_WIDGET
hiryu_widget: SHIP_WIDGET
ryujo_widget: SHIP_WIDGET
hosho_widget: SHIP_WIDGET
zuiho_widget: SHIP_WIDGET
mutsu_widget: SHIP_WIDGET
nagato_widget: SHIP_WIDGET
fuso_widget: SHIP_WIDGET
-- Turn 1, row 2
hyuga_widget: SHIP_WIDGET
ise_widget: SHIP_WIDGET
yamashiro_widget: SHIP_WIDGET
haruna_widget: SHIP_WIDGET
hiei_widget: SHIP_WIDGET
kirishima_widget: SHIP_WIDGET
kongo_widget: SHIP_WIDGET
ashigara_widget: SHIP_WIDGET
atago_widget: SHIP_WIDGET
chokai_widget: SHIP_WIDGET
haguro_widget: SHIP_WIDGET
maya_widget: SHIP_WIDGET
-- Turn 1, row 3
myoko_widget: SHIP_WIDGET
nachi_widget: SHIP_WIDGET
takao_widget: SHIP_WIDGET
chikuma_widget: SHIP_WIDGET
kumano_widget: SHIP_WIDGET
mikuma_widget: SHIP_WIDGET
mogami_widget: SHIP_WIDGET
suzuya_widget: SHIP_WIDGET
tone_widget: SHIP_WIDGET
aoba_widget: SHIP_WIDGET
furutaka_widget: SHIP_WIDGET
kako_widget: SHIP_WIDGET
-- Turn 1, row 4
kinugasa_widget: SHIP_WIDGET
kitakami_widget: SHIP_WIDGET
oi_widget: SHIP_WIDGET
yokosuka_widget: AMPHIBIOUS_UNIT_WIDGET
-- Turn 1, also available
airflot_21_widget: JAPANESE_AIR_UNIT_WIDGET
airflot_22_widget: JAPANESE_AIR_UNIT_WIDGET
airflot_23_widget: JAPANESE_AIR_UNIT_WIDGET
airflot_24_widget: JAPANESE_AIR_UNIT_WIDGET
airflot_25_widget: JAPANESE_AIR_UNIT_WIDGET
airflot_26_widget: JAPANESE_AIR_UNIT_WIDGET
i_boat_widget: SUBMARINE_WIDGET
-- Turn 2
shoho_widget: SHIP_WIDGET
junyo_widget: SHIP_WIDGET
sasebo_widget: AMPHIBIOUS_UNIT_WIDGET
-- Turn 3
hiyo_widget: SHIP_WIDGET
yamato_widget: SHIP_WIDGET
kure_widget: AMPHIBIOUS_UNIT_WIDGET
-- Turn 5
musashi_widget: SHIP_WIDGET
-- Turn 7
chiyoda_widget: SHIP_WIDGET
chitose_widget: SHIP_WIDGET
ryuho_widget: SHIP_WIDGET
taiho_widget: SHIP_WIDGET
i_boat_removal_widget: SUBMARINE_WIDGET
-- Turn 8
unryu_widget: SHIP_WIDGET
amagi_widget: SHIP_WIDGET
-- Turn 9
katsuragi_widget: SHIP_WIDGET
shinano_widget: SHIP_WIDGET
feature {NONE} -- Implementation
extend_widgets
-- Put each widget into `world'.
do
-- Turn 1, row 1
japanese_forces_widgets.extend (shokaku_widget, game.shokaku)
japanese_forces_widgets.extend (zuikaku_widget, game.zuikaku)
japanese_forces_widgets.extend (akagi_widget, game.akagi)
japanese_forces_widgets.extend (kaga_widget, game.kaga)
japanese_forces_widgets.extend (soryu_widget, game.soryu)
japanese_forces_widgets.extend (hiryu_widget, game.hiryu)
japanese_forces_widgets.extend (ryujo_widget, game.ryujo)
japanese_forces_widgets.extend (hosho_widget, game.hosho)
japanese_forces_widgets.extend (zuiho_widget, game.zuiho)
japanese_forces_widgets.extend (mutsu_widget, game.mutsu)
japanese_forces_widgets.extend (nagato_widget, game.nagato)
japanese_forces_widgets.extend (fuso_widget, game.fuso)
-- Turn 1, row 2
japanese_forces_widgets.extend (hyuga_widget, game.hyuga)
japanese_forces_widgets.extend (ise_widget, game.ise)
japanese_forces_widgets.extend (yamashiro_widget, game.yamashiro)
japanese_forces_widgets.extend (haruna_widget, game.haruna)
japanese_forces_widgets.extend (hiei_widget, game.hiei)
japanese_forces_widgets.extend (kirishima_widget, game.kirishima)
japanese_forces_widgets.extend (kongo_widget, game.kongo)
japanese_forces_widgets.extend (ashigara_widget, game.ashigara)
japanese_forces_widgets.extend (atago_widget, game.atago)
japanese_forces_widgets.extend (chokai_widget, game.chokai)
japanese_forces_widgets.extend (haguro_widget, game.haguro)
japanese_forces_widgets.extend (maya_widget, game.maya)
-- Turn 1, row 3
japanese_forces_widgets.extend (myoko_widget, game.myoko)
japanese_forces_widgets.extend (nachi_widget, game.nachi)
japanese_forces_widgets.extend (takao_widget, game.takao)
japanese_forces_widgets.extend (chikuma_widget, game.chikuma)
japanese_forces_widgets.extend (kumano_widget, game.kumano)
japanese_forces_widgets.extend (mikuma_widget, game.mikuma)
japanese_forces_widgets.extend (mogami_widget, game.mogami)
japanese_forces_widgets.extend (suzuya_widget, game.suzuya)
japanese_forces_widgets.extend (tone_widget, game.tone)
japanese_forces_widgets.extend (aoba_widget, game.aoba)
japanese_forces_widgets.extend (furutaka_widget, game.furutaka)
japanese_forces_widgets.extend (kako_widget, game.kako)
-- Turn 1, row 4
japanese_forces_widgets.extend (kinugasa_widget, game.kinugasa)
japanese_forces_widgets.extend (kitakami_widget, game.kitakami)
japanese_forces_widgets.extend (oi_widget, game.oi)
japanese_forces_widgets.extend (yokosuka_widget, game.yokosuka)
-- Turn 1, also available
japanese_forces_widgets.extend (airflot_21_widget, game.airflot_21)
japanese_forces_widgets.extend (airflot_22_widget, game.airflot_22)
japanese_forces_widgets.extend (airflot_23_widget, game.airflot_23)
japanese_forces_widgets.extend (airflot_24_widget, game.airflot_24)
japanese_forces_widgets.extend (airflot_25_widget, game.airflot_25)
japanese_forces_widgets.extend (airflot_26_widget, game.airflot_26)
japanese_forces_widgets.extend (i_boat_widget, game.i_boat)
-- Turn 2
japanese_forces_widgets.extend (shoho_widget, game.shoho)
japanese_forces_widgets.extend (junyo_widget, game.junyo)
japanese_forces_widgets.extend (sasebo_widget, game.sasebo)
-- Turn 3
japanese_forces_widgets.extend (hiyo_widget, game.hiyo)
japanese_forces_widgets.extend (yamato_widget, game.yamato)
japanese_forces_widgets.extend (kure_widget, game.kure)
-- Turn 5
japanese_forces_widgets.extend (musashi_widget, game.musashi)
-- Turn 7
japanese_forces_widgets.extend (chiyoda_widget, game.chiyoda)
japanese_forces_widgets.extend (chitose_widget, game.chitose)
japanese_forces_widgets.extend (ryuho_widget, game.ryuho)
japanese_forces_widgets.extend (taiho_widget, game.taiho)
-- Turn 8
japanese_forces_widgets.extend (unryu_widget, game.unryu)
japanese_forces_widgets.extend (amagi_widget, game.amagi)
-- Turn 9
japanese_forces_widgets.extend (katsuragi_widget, game.katsuragi)
japanese_forces_widgets.extend (shinano_widget, game.shinano)
widgets.merge (japanese_forces_widgets)
end
pair_widgets
-- Associate each widget with a unit
do
-- Turn 1, row 1
japanese_forces_widgets.force (shokaku_widget, game.shokaku)
japanese_forces_widgets.force (zuikaku_widget, game.zuikaku)
japanese_forces_widgets.force (akagi_widget, game.akagi)
japanese_forces_widgets.force (kaga_widget, game.kaga)
japanese_forces_widgets.force (soryu_widget, game.soryu)
japanese_forces_widgets.force (hiryu_widget, game.hiryu)
japanese_forces_widgets.force (ryujo_widget, game.ryujo)
japanese_forces_widgets.force (hosho_widget, game.hosho)
japanese_forces_widgets.force (zuiho_widget, game.zuiho)
japanese_forces_widgets.force (mutsu_widget, game.mutsu)
japanese_forces_widgets.force (nagato_widget, game.nagato)
japanese_forces_widgets.force (fuso_widget, game.fuso)
-- Turn 1, row 2
japanese_forces_widgets.force (hyuga_widget, game.hyuga)
japanese_forces_widgets.force (ise_widget, game.ise)
japanese_forces_widgets.force (yamashiro_widget, game.yamashiro)
japanese_forces_widgets.force (haruna_widget, game.haruna)
japanese_forces_widgets.force (hiei_widget, game.hiei)
japanese_forces_widgets.force (kirishima_widget, game.kirishima)
japanese_forces_widgets.force (kongo_widget, game.kongo)
japanese_forces_widgets.force (ashigara_widget, game.ashigara)
japanese_forces_widgets.force (atago_widget, game.atago)
japanese_forces_widgets.force (chokai_widget, game.chokai)
japanese_forces_widgets.force (haguro_widget, game.haguro)
japanese_forces_widgets.force (maya_widget, game.maya)
-- Turn 1, row 3
japanese_forces_widgets.force (myoko_widget, game.myoko)
japanese_forces_widgets.force (nachi_widget, game.nachi)
japanese_forces_widgets.force (takao_widget, game.takao)
japanese_forces_widgets.force (chikuma_widget, game.chikuma)
japanese_forces_widgets.force (kumano_widget, game.kumano)
japanese_forces_widgets.force (mikuma_widget, game.mikuma)
japanese_forces_widgets.force (mogami_widget, game.mogami)
japanese_forces_widgets.force (suzuya_widget, game.suzuya)
japanese_forces_widgets.force (tone_widget, game.tone)
japanese_forces_widgets.force (aoba_widget, game.aoba)
japanese_forces_widgets.force (furutaka_widget, game.furutaka)
japanese_forces_widgets.force (kako_widget, game.kako)
-- Turn 1, row 4
japanese_forces_widgets.force (kinugasa_widget, game.kinugasa)
japanese_forces_widgets.force (kitakami_widget, game.kitakami)
japanese_forces_widgets.force (oi_widget, game.oi)
japanese_forces_widgets.force (yokosuka_widget, game.yokosuka)
-- Turn 1, also available
japanese_forces_widgets.force (airflot_21_widget, game.airflot_21)
japanese_forces_widgets.force (airflot_22_widget, game.airflot_22)
japanese_forces_widgets.force (airflot_23_widget, game.airflot_23)
japanese_forces_widgets.force (airflot_24_widget, game.airflot_24)
japanese_forces_widgets.force (airflot_25_widget, game.airflot_25)
japanese_forces_widgets.force (airflot_26_widget, game.airflot_26)
japanese_forces_widgets.force (i_boat_widget, game.i_boat)
-- Turn 2
japanese_forces_widgets.force (shoho_widget, game.shoho)
japanese_forces_widgets.force (junyo_widget, game.junyo)
japanese_forces_widgets.force (sasebo_widget, game.sasebo)
-- Turn 3
japanese_forces_widgets.force (hiyo_widget, game.hiyo)
japanese_forces_widgets.force (yamato_widget, game.yamato)
japanese_forces_widgets.force (kure_widget, game.kure)
-- Turn 5
japanese_forces_widgets.force (musashi_widget, game.musashi)
-- Turn 7
japanese_forces_widgets.force (chiyoda_widget, game.chiyoda)
japanese_forces_widgets.force (chitose_widget, game.chitose)
japanese_forces_widgets.force (ryuho_widget, game.ryuho)
japanese_forces_widgets.force (taiho_widget, game.taiho)
-- Turn 8
japanese_forces_widgets.force (unryu_widget, game.unryu)
japanese_forces_widgets.force (amagi_widget, game.amagi)
-- Turn 9
japanese_forces_widgets.force (katsuragi_widget, game.katsuragi)
japanese_forces_widgets.force (shinano_widget, game.shinano)
end
fill_widgets
-- Call `set_target' to give each widget a target.
do
-- Turn 1, row 1
shokaku_widget.set_target (game.shokaku)
zuikaku_widget.set_target (game.zuikaku)
akagi_widget.set_target (game.akagi)
kaga_widget.set_target (game.kaga)
soryu_widget.set_target (game.soryu)
hiryu_widget.set_target (game.hiryu)
ryujo_widget.set_target (game.ryujo)
hosho_widget.set_target (game.hosho)
zuiho_widget.set_target (game.zuiho)
mutsu_widget.set_target (game.mutsu)
nagato_widget.set_target (game.nagato)
fuso_widget.set_target (game.fuso)
-- Turn 1, row 2
hyuga_widget.set_target (game.hyuga)
ise_widget.set_target (game.ise)
yamashiro_widget.set_target (game.yamashiro)
haruna_widget.set_target (game.haruna)
hiei_widget.set_target (game.hiei)
kirishima_widget.set_target (game.kirishima)
kongo_widget.set_target (game.kongo)
ashigara_widget.set_target (game.ashigara)
atago_widget.set_target (game.atago)
chokai_widget.set_target (game.chokai)
haguro_widget.set_target (game.haguro)
maya_widget.set_target (game.maya)
-- Turn 1, row 3
myoko_widget.set_target (game.myoko)
nachi_widget.set_target (game.nachi)
takao_widget.set_target (game.takao)
chikuma_widget.set_target (game.chikuma)
kumano_widget.set_target (game.kumano)
mikuma_widget.set_target (game.mikuma)
mogami_widget.set_target (game.mogami)
suzuya_widget.set_target (game.suzuya)
tone_widget.set_target (game.tone)
aoba_widget.set_target (game.aoba)
furutaka_widget.set_target (game.furutaka)
kako_widget.set_target (game.kako)
-- Turn 1, row 4
kinugasa_widget.set_target (game.kinugasa)
kitakami_widget.set_target (game.kitakami)
oi_widget.set_target (game.oi)
yokosuka_widget.set_target (game.yokosuka)
-- Turn 1, also available
airflot_21_widget.set_target (game.airflot_21)
airflot_22_widget.set_target (game.airflot_22)
airflot_23_widget.set_target (game.airflot_23)
airflot_24_widget.set_target (game.airflot_24)
airflot_25_widget.set_target (game.airflot_25)
airflot_26_widget.set_target (game.airflot_26)
i_boat_widget.set_target (game.i_boat)
-- Turn 2
shoho_widget.set_target (game.shoho)
junyo_widget.set_target (game.junyo)
sasebo_widget.set_target (game.sasebo)
-- Turn 3
hiyo_widget.set_target (game.hiyo)
yamato_widget.set_target (game.yamato)
kure_widget.set_target (game.kure)
-- Turn 5
musashi_widget.set_target (game.musashi)
-- Turn 7
chiyoda_widget.set_target (game.chiyoda)
chitose_widget.set_target (game.chitose)
ryuho_widget.set_target (game.ryuho)
taiho_widget.set_target (game.taiho)
i_boat_removal_widget.set_target (game.i_boat_removal)
-- Turn 8
unryu_widget.set_target (game.unryu)
amagi_widget.set_target (game.amagi)
-- Turn 9
katsuragi_widget.set_target (game.katsuragi)
shinano_widget.set_target (game.shinano)
end
end

View File

@@ -0,0 +1,374 @@
note
description: "[
A {VIEW} that displays the units and the turns on
which each unit enters the {VITP_GAME}
]"
author: "Jimmy J. Johnson"
date: "11/11/23"
copyright: "Copyright (c) 2023, Jimmy J. Johnson"
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
class
JAPANESE_ORDER_OF_APPEARANCE_CHART_VIEW
inherit
ORDER_OF_APPEARANCE_VIEW
redefine
add_widgets,
add_units,
add_miscellaneous_text,
add_starting_control_widgets,
add_copyright_text,
set_target,
widget_factory
end
create
make
feature {NONE} -- Initialization
add_widgets
-- Create the widgets for the chart
do
Precursor
add_removals
end
add_turns
-- Add the "TURN X" and "TO date" texts
local
i: INTEGER
do
from i := 1
until i > 9
loop
add_turn_text (i)
i := i + 1
end
end
add_miscellaneous_text
-- Create the remaining EV_TEXT objects for the chart
local
p, cp: EV_COORDINATE
i: INTEGER
t: EV_MODEL_TEXT
do
Precursor
-- "At Yokosuka Navy Yard" text (placed relative to the "TURN X" text)
create p
from i := 1
until i > 8
loop
p := turn_x_cp (i)
create cp.make (p.x + 42, p.y + 5)
world.extend (new_text_widget ("AT YOKOSUKA NAVY YARD", At_port_font, cp))
i := i + 1
end
create cp.make (Turn_9_cp.x + 80, Turn_9_cp.y + 1)
world.extend (new_text_widget ("AT YOKOSUKA %N NAVY YARD", At_port_font, cp))
-- "Also Available" and other misc. text
world.extend (new_text_widget ("ALSO AVAILABLE", At_port_font, Also_available_cp))
-- "REMOVAL" above I-boat
cp.set (i_boat_removal_cp.x, i_boat_removal_cp.y - 2 * gap_size)
t := new_text ("REMOVAL", turn_x_losses_font)
t.set_x_y (cp.x, cp.y)
world.extend (t)
end
add_starting_control_widgets
-- Add the "Starting Control" text and markers if required
local
cp:EV_COORDINATE
t: EV_MODEL_TEXT
s: STRING
rec: EV_MODEL_RECTANGLE
b: EV_MODEL_GROUP
do
Precursor
create cp
-- Make the "Pearl Harbor Raid" box
cp.set (shokaku_cp.x + 4 * ship_size, yokosuka_cp.y + 3 * gap_size)
create rec.make_rectangle (cp.x, cp.y, 8 * ship_size, air_size)
rec.set_foreground_color (color)
world.extend (rec)
-- Make "Pearl Harbor Raid" text
cp.set (rec.x, rec.y - gap_size)
t := new_text ("PEARL HARBOR RAID", at_port_font)
t.set_x_y (cp.x, cp.y)
world.extend (t)
-- Make "As many ships as desired ..." text
cp.set (rec.x, rec.y + gap_size)
s := "As many ships as desired, but only ships with%
% a movement factor of 5 or better"
-- Add "Starting Control" widgets
t := new_text (s, turn_x_losses_font)
t.set_x_y (cp.x, cp.y)
world.extend (t)
-- Position the `flag' marker
cp.set (airflot_21_cp.x + 8 * air_size, airflot_21_cp.y)
flag.set_point_position (cp.x, cp.y)
flag.show
-- Position `big_marker' and `little_marker' relative to `flag'
big_marker.set_x_y (flag.x + 4 * air_size - gap_size, flag.y)
little_marker.set_x_y (flag.x + 7 * air_size, flag.y)
-- Starting control text
t := new_text ("STARTING CONTROL", at_port_font)
t.set_point_position (cp.x, cp.y - 3 * gap_size)
world.extend (t)
s := "%N%NJapanese %N Islands %NMarianas %NMarshalls"
-- Add boxes around the port names
b := new_jagged_box (s, 6, 6, 7, 0)
b.set_point_position (flag.point_x + 2 * air_size, flag.point_y)
world.extend (b)
s := "%N%NYokosuka %N Navy Yard %NTruk %NSaigon"
-- Add boxes around the port names
b := new_jagged_box (s, 6, 6, 7, 0)
b.set_point_position (flag.point_x + 5 * air_size + 2 * gap_size, flag.point_y)
world.extend (b)
s := "%N%NOkinawa %NSaipan %NMalaolap %NKwajalein"
-- Add boxes around the port names
b := new_jagged_box (s, 6, 6, 7, 0)
b.set_point_position (flag.point_x + 8 * air_size + gap_size, flag.point_y)
world.extend (b)
end
add_removals
-- All removal widgets and "REMOVAL" texts
-- Just one for the I-Boat
do
add_model (positioned_widget (widget_factory.i_boat_removal_widget, i_boat_removal_cp))
widget_factory.i_boat_removal_widget.set_flipped
widget_factory.i_boat_removal_widget.set_flat
end
add_units
-- Add {ATTACK_UNIT_WIDGETS} to Current
do
Precursor
add_model (positioned_widget (widget_factory.shokaku_widget, Shokaku_cp))
add_model (positioned_widget (widget_factory.zuikaku_widget, Zuikaku_cp))
add_model (positioned_widget (widget_factory.akagi_widget, Akagi_cp))
add_model (positioned_widget (widget_factory.kaga_widget, Kaga_cp))
add_model (positioned_widget (widget_factory.soryu_widget, Soryu_cp))
add_model (positioned_widget (widget_factory.hiryu_widget, Hiryu_cp))
add_model (positioned_widget (widget_factory.ryujo_widget, Ryujo_cp))
add_model (positioned_widget (widget_factory.hosho_widget, Hosho_cp))
add_model (positioned_widget (widget_factory.zuiho_widget, Zuiho_cp))
add_model (positioned_widget (widget_factory.mutsu_widget, Mutsu_cp))
add_model (positioned_widget (widget_factory.nagato_widget, Nagato_cp))
add_model (positioned_widget (widget_factory.fuso_widget, Fuso_cp))
add_model (positioned_widget (widget_factory.hyuga_widget, Hyuga_cp))
add_model (positioned_widget (widget_factory.ise_widget, Ise_cp))
add_model (positioned_widget (widget_factory.yamashiro_widget, Yamashiro_cp))
add_model (positioned_widget (widget_factory.haruna_widget, Haruna_cp))
add_model (positioned_widget (widget_factory.hiei_widget, Hiei_cp))
add_model (positioned_widget (widget_factory.kirishima_widget, Kirishima_cp))
add_model (positioned_widget (widget_factory.kongo_widget, Kongo_cp))
add_model (positioned_widget (widget_factory.ashigara_widget, Ashigara_cp))
add_model (positioned_widget (widget_factory.atago_widget, Atago_cp))
add_model (positioned_widget (widget_factory.chokai_widget, Chokai_cp))
add_model (positioned_widget (widget_factory.haguro_widget, Haguro_cp))
add_model (positioned_widget (widget_factory.maya_widget, Maya_cp))
add_model (positioned_widget (widget_factory.myoko_widget, Myoko_cp))
add_model (positioned_widget (widget_factory.nachi_widget, Nachi_cp))
add_model (positioned_widget (widget_factory.takao_widget, Takao_cp))
add_model (positioned_widget (widget_factory.chikuma_widget, Chikuma_cp))
add_model (positioned_widget (widget_factory.kumano_widget, Kumano_cp))
add_model (positioned_widget (widget_factory.mikuma_widget, Mikuma_cp))
add_model (positioned_widget (widget_factory.mogami_widget, Mogami_cp))
add_model (positioned_widget (widget_factory.suzuya_widget, Suzuya_cp))
add_model (positioned_widget (widget_factory.tone_widget, Tone_cp))
add_model (positioned_widget (widget_factory.aoba_widget, Aoba_cp))
add_model (positioned_widget (widget_factory.furutaka_widget, Furutaka_cp))
add_model (positioned_widget (widget_factory.kako_widget, Kako_cp))
add_model (positioned_widget (widget_factory.kinugasa_widget, Kinugasa_cp))
add_model (positioned_widget (widget_factory.kitakami_widget, Kitakami_cp))
add_model (positioned_widget (widget_factory.oi_widget, Oi_cp))
add_model (positioned_widget (widget_factory.yokosuka_widget, Yokosuka_cp))
add_model (positioned_widget (widget_factory.airflot_21_widget, Airflot_21_cp))
add_model (positioned_widget (widget_factory.airflot_22_widget, Airflot_22_cp))
add_model (positioned_widget (widget_factory.airflot_23_widget, Airflot_23_cp))
add_model (positioned_widget (widget_factory.airflot_24_widget, Airflot_24_cp))
add_model (positioned_widget (widget_factory.airflot_25_widget, Airflot_25_cp))
add_model (positioned_widget (widget_factory.airflot_26_widget, Airflot_26_cp))
add_model (positioned_widget (widget_factory.i_boat_widget, I_boat_cp))
add_model (positioned_widget (widget_factory.shoho_widget, Shoho_cp))
add_model (positioned_widget (widget_factory.junyo_widget, Junyo_cp))
add_model (positioned_widget (widget_factory.sasebo_widget, Sasebo_cp))
add_model (positioned_widget (widget_factory.hiyo_widget, Hiyo_cp))
add_model (positioned_widget (widget_factory.yamato_widget, Yamato_cp))
add_model (positioned_widget (widget_factory.kure_widget, Kure_cp))
add_model (positioned_widget (widget_factory.musashi_widget, Musashi_cp))
add_model (positioned_widget (widget_factory.chiyoda_widget, Chiyoda_cp))
add_model (positioned_widget (widget_factory.chitose_widget, Chitose_cp))
add_model (positioned_widget (widget_factory.ryuho_widget, Ryuho_cp))
add_model (positioned_widget (widget_factory.taiho_widget, Taiho_cp))
add_model (positioned_widget (widget_factory.unryu_widget, Unryu_cp))
add_model (positioned_widget (widget_factory.amagi_widget, Amagi_cp))
add_model (positioned_widget (widget_factory.katsuragi_widget, Katsuragi_cp))
add_model (positioned_widget (widget_factory.shinano_widget, Shinano_cp))
end
add_copyright_text
-- Add the copy-right notices to each chart
local
cp: EV_COORDINATE
t: EV_MODEL_TEXT
s: STRING
f: EV_FONT
do
create cp
-- Copyright
s := "Copyright 1977, The Avalon Hill Game Co. Balto, MD Printed in U.S.A."
f := small_font
t := new_text (s, f)
cp.set (top_left_cp.x + gap_size, bottom_right_cp.y - 2 * gap_size)
t.set_point_position (cp.x, cp.y)
world.extend (t)
end
feature -- Access
location: LOCATION
-- A {LOCATION} from the {VITP_GAME} used in `draw' to determine
-- if a unit is on this chart or somewhere else (i.e. in the game.)
do
Result := game.japanese_oa_chart
end
title: STRING = "Japanese Order of Appearance Chart"
-- The text at the top of this chart
feature -- Element change
set_target (a_item: like game)
-- Associate `a_item' with Current.
do
Precursor (a_item)
-- -- Make the widgets white
-- world.i_boat_removal_widget.set_flipped
-- -- Make it look like print
-- world.i_boat_removal_widget.set_flat
end
feature {NONE} -- Implementation
widget_factory: JAPANESE_FORCES_FACTORY
-- Container for all the widget (e.g. attack widget,
-- location widget, etc)
feature {NONE} -- Control point constants
bottom_right_cp: EV_COORDINATE do create Result.make (260, 316) end
-- Turn X text
turn_1_cp: EV_COORDINATE do create Result.make (7, 14) end
turn_2_cp: EV_COORDINATE do create Result.make (turn_1_cp.x, 136) end
turn_3_cp: EV_COORDINATE do create Result.make (133, turn_2_cp.y) end
turn_4_cp: EV_COORDINATE do create Result.make (turn_1_cp.x, 170) end
turn_5_cp: EV_COORDINATE do create Result.make (turn_3_cp.x, turn_4_cp.y) end
turn_6_cp: EV_COORDINATE do create Result.make (turn_1_cp.x, 205) end
turn_7_cp: EV_COORDINATE do create Result.make (turn_1_cp.x, 240) end
turn_8_cp: EV_COORDINATE do create Result.make (turn_1_cp.x, 275) end
turn_9_cp: EV_COORDINATE do create Result.make (turn_3_cp.x, turn_8_cp.y) end
-- To some date text
to_dec_41_cp: EV_COORDINATE do create Result.make (turn_1_cp.x + 2, turn_1_cp.y + 8) end
to_may_42_cp: EV_COORDINATE do create Result.make (turn_2_cp.x + 2, turn_2_cp.y + 8) end
to_sep_42_cp: EV_COORDINATE do create Result.make (turn_3_cp.x + 2, turn_3_cp.y + 8) end
to_jan_43_cp: EV_COORDINATE do create Result.make (turn_4_cp.x + 2, turn_4_cp.y + 8) end
to_jun_43_cp: EV_COORDINATE do create Result.make (turn_5_cp.x + 2, turn_5_cp.y + 8) end
to_jan_44_cp: EV_COORDINATE do create Result.make (turn_6_cp.x + 2, turn_6_cp.y + 8) end
to_may_44_cp: EV_COORDINATE do create Result.make (turn_7_cp.x + 2, turn_7_cp.y + 8) end
to_oct_44_cp: EV_COORDINATE do create Result.make (turn_8_cp.x + 2, turn_8_cp.y + 8) end
to_jan_45_cp: EV_COORDINATE do create Result.make (turn_9_cp.x + 2, turn_9_cp.y + 8) end
-- Turn x losses
turn_1_losses_cp: EV_COORDINATE do create Result.make (Turn_3_cp.x + 60, turn_3_cp.y + 12) end
turn_2_losses_cp: EV_COORDINATE do create Result.make (57, turn_5_cp.y + 12) end
turn_3_losses_cp: EV_COORDINATE do create Result.make (turn_1_losses_cp.x, turn_2_losses_cp.y) end
turn_4_losses_cp: EV_COORDINATE do create Result.make (turn_2_losses_cp.x, turn_6_cp.y + 12) end
turn_5_losses_cp: EV_COORDINATE do create Result.make (96, Turn_7_cp.y + 12) end
turn_6_losses_cp: EV_COORDINATE do create Result.make (turn_2_losses_cp.x, Turn_8_cp.y + 12) end
turn_7_losses_cp: EV_COORDINATE do create Result.make (turn_1_losses_cp.x, Turn_6_losses_cp.y) end
-- Misc
also_available_cp: EV_COORDINATE do create Result.make (turn_1_cp.x, 109) end
starting_control_cp: EV_COORDINATE do create Result.make (133, also_available_cp.y - 1) end
-- Turn one, row one
shokaku_cp: EV_COORDINATE do create Result.make (Turn_1_cp.x + 6, Turn_1_cp.y + 12) end
Zuikaku_cp: EV_COORDINATE do create Result.make (Shokaku_cp.x + ship_size, Shokaku_cp.y) end
Akagi_cp: EV_COORDINATE do create Result.make (Zuikaku_cp.x + ship_size, Shokaku_cp.y) end
Kaga_cp: EV_COORDINATE do create Result.make (Akagi_cp.x + ship_size, Shokaku_cp.y) end
Soryu_cp: EV_COORDINATE do create Result.make (Kaga_cp.x + ship_size, Shokaku_cp.y) end
Hiryu_cp: EV_COORDINATE do create Result.make (Soryu_cp.x + ship_size, Shokaku_cp.y) end
Ryujo_cp: EV_COORDINATE do create Result.make (Hiryu_cp.x + ship_size, Shokaku_cp.y) end
Hosho_cp: EV_COORDINATE do create Result.make (Ryujo_cp.x + ship_size, Shokaku_cp.y) end
Zuiho_cp: EV_COORDINATE do create Result.make (Hosho_cp.x + ship_size, Shokaku_cp.y) end
Mutsu_cp: EV_COORDINATE do create Result.make (Zuiho_cp.x + ship_size, Shokaku_cp.y) end
Nagato_cp: EV_COORDINATE do create Result.make (Mutsu_cp.x + ship_size, Shokaku_cp.y) end
Fuso_cp: EV_COORDINATE do create Result.make (Nagato_cp.x + ship_size, Shokaku_cp.y) end
-- Turn one, row 2
Hyuga_cp: EV_COORDINATE do create Result.make (Shokaku_cp.x, Shokaku_cp.y + ship_size) end
Ise_cp: EV_COORDINATE do create Result.make (Hyuga_cp.x + ship_size, Hyuga_cp.y) end
Yamashiro_cp: EV_COORDINATE do create Result.make (Ise_cp.x + ship_size, Hyuga_cp.y) end
Haruna_cp: EV_COORDINATE do create Result.make (Yamashiro_cp.x + ship_size, Hyuga_cp.y) end
Hiei_cp: EV_COORDINATE do create Result.make (Haruna_cp.x + ship_size, Hyuga_cp.y) end
Kirishima_cp: EV_COORDINATE do create Result.make (Hiei_cp.x + ship_size, Hyuga_cp.y) end
Kongo_cp: EV_COORDINATE do create Result.make (Kirishima_cp.x + ship_size, Hyuga_cp.y) end
Ashigara_cp: EV_COORDINATE do create Result.make (Kongo_cp.x + ship_size, Hyuga_cp.y) end
Atago_cp: EV_COORDINATE do create Result.make (Ashigara_cp.x + ship_size, Hyuga_cp.y) end
Chokai_cp: EV_COORDINATE do create Result.make (Atago_cp.x + ship_size, Hyuga_cp.y) end
Haguro_cp: EV_COORDINATE do create Result.make (Chokai_cp.x + ship_size, Hyuga_cp.y) end
Maya_cp: EV_COORDINATE do create Result.make (Haguro_cp.x + ship_size, Hyuga_cp.y) end
-- Turn one, row 3
Myoko_cp: EV_COORDINATE do create Result.make (Shokaku_cp.x, Hyuga_cp.y + ship_size) end
Nachi_cp: EV_COORDINATE do create Result.make (Myoko_cp.x + ship_size, Myoko_cp.y) end
Takao_cp: EV_COORDINATE do create Result.make (Nachi_cp.x + ship_size, Myoko_cp.y) end
Chikuma_cp: EV_COORDINATE do create Result.make (Takao_cp.x + ship_size, Myoko_cp.y) end
Kumano_cp: EV_COORDINATE do create Result.make (Chikuma_cp.x + ship_size, Myoko_cp.y) end
Mikuma_cp: EV_COORDINATE do create Result.make (Kumano_cp.x + ship_size, Myoko_cp.y) end
Mogami_cp: EV_COORDINATE do create Result.make (Mikuma_cp.x + ship_size, Myoko_cp.y) end
Suzuya_cp: EV_COORDINATE do create Result.make (Mogami_cp.x + ship_size, Myoko_cp.y) end
Tone_cp: EV_COORDINATE do create Result.make (Suzuya_cp.x + ship_size, Myoko_cp.y) end
Aoba_cp: EV_COORDINATE do create Result.make (Tone_cp.x + ship_size, Myoko_cp.y) end
Furutaka_cp: EV_COORDINATE do create Result.make (Aoba_cp.x + ship_size, Myoko_cp.y) end
Kako_cp: EV_COORDINATE do create Result.make (Furutaka_cp.x + ship_size, Myoko_cp.y) end
-- Turn one, row 4
Kinugasa_cp: EV_COORDINATE do create Result.make (Shokaku_cp.x, Myoko_cp.y + ship_size) end
Kitakami_cp: EV_COORDINATE do create Result.make (Kinugasa_cp.x + ship_size, Kinugasa_cp.y) end
Oi_cp: EV_COORDINATE do create Result.make (Kitakami_cp.x + ship_size, Kinugasa_cp.y) end
Yokosuka_cp: EV_COORDINATE do create Result.make (Oi_cp.x + ship_size, Kinugasa_cp.y) end
-- "Also Available" row
Airflot_21_cp: EV_COORDINATE do create Result.make (7, 115) end
Airflot_22_cp: EV_COORDINATE do create Result.make (Airflot_21_cp.x + air_size, Airflot_21_cp.y) end
Airflot_23_cp: EV_COORDINATE do create Result.make (Airflot_22_cp.x + air_size, Airflot_21_cp.y) end
Airflot_24_cp: EV_COORDINATE do create Result.make (Airflot_23_cp.x + air_size, Airflot_21_cp.y) end
Airflot_25_cp: EV_COORDINATE do create Result.make (Airflot_24_cp.x + air_size, Airflot_21_cp.y) end
Airflot_26_cp: EV_COORDINATE do create Result.make (Airflot_25_cp.x + air_size, Airflot_21_cp.y) end
I_boat_cp: EV_COORDINATE do create Result.make (Airflot_26_cp.x + air_size, Airflot_21_cp.y + air_size - ship_size) end
-- Turn two
Shoho_cp: EV_COORDINATE do create Result.make (Shokaku_cp.x, Turn_2_cp.y + 12) end
Junyo_cp: EV_COORDINATE do create Result.make (Shoho_cp.x + ship_size, Shoho_cp.y) end
Sasebo_cp: EV_COORDINATE do create Result.make (Junyo_cp.x + ship_size + gap_size, Shoho_cp.y) end
-- Turn three
Hiyo_cp: EV_COORDINATE do create Result.make (Ryujo_cp.x, Shoho_cp.y) end
Yamato_cp: EV_COORDINATE do create Result.make (Hiyo_cp.x + ship_size, Shoho_cp.y) end
Kure_cp: EV_COORDINATE do create Result.make (Yamato_cp.x + ship_size + gap_size, Shoho_cp.y) end
-- Turn four
-- Turn five
Musashi_cp: EV_COORDINATE do create Result.make (Ryujo_cp.x, Turn_5_cp.y + 12) end
-- Turn six
-- Turn seven
Chiyoda_cp: EV_COORDINATE do create Result.make (Shokaku_cp.x, Turn_7_cp.y + 12) end
Chitose_cp: EV_COORDINATE do create Result.make (Chiyoda_cp.x + ship_size, Chiyoda_cp.y) end
Ryuho_cp: EV_COORDINATE do create Result.make (Chitose_cp.x + ship_size, Chiyoda_cp.y) end
Taiho_cp: EV_COORDINATE do create Result.make (Ryuho_cp.x + ship_size, Chiyoda_cp.y) end
i_boat_removal_cp: EV_COORDINATE do create Result.make (turn_7_cp.x + 8 * ship_size, chiyoda_cp.y) end
-- Turn eight
Unryu_cp: EV_COORDINATE do create Result.make (Shokaku_cp.x, Turn_8_cp.y + 12) end
Amagi_cp: EV_COORDINATE do create Result.make (Unryu_cp.x + ship_size, Unryu_cp.y) end
-- Turn nine
Katsuragi_cp: EV_COORDINATE do create Result.make (Ryujo_cp.x, Unryu_cp.y) end
Shinano_cp: EV_COORDINATE do create Result.make (Katsuragi_cp.x + ship_size, Unryu_cp.y) end
end

View File

@@ -0,0 +1,77 @@
note
description: "[
One of the classes that decompose the numourous VITP widgets
into more managable groups. This class models the widgets
that contain the ports AND sea areas.
]"
author: "Jimmy J. Johnson"
date: "5/15/24"
copyright: "Copyright (c) 2024, Jimmy J. Johnson"
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
class
LOCATION_WIDGITS_FACTORY
inherit
PORT_WIDGET_FACTORY
redefine
make_widgets,
extend_widgets,
pair_widgets,
fill_widgets
end
SEA_AREAS_FACTORY
redefine
make_widgets,
extend_widgets,
pair_widgets,
fill_widgets
end
create
make
feature -- Initialization
make_widgets
-- Create the widgets in Current
do
create location_widgets.make (100)
Precursor {PORT_WIDGET_FACTORY}
Precursor {SEA_AREAS_FACTORY}
end
feature -- Access
location_widgets: VITP_WIDGET_TABLE [LOCATION_WIDGET, LOCATION]
-- Keeps track of widgets
feature {NONE} -- Implementation
extend_widgets
-- Put each widget into `world'.
do
Precursor {PORT_WIDGET_FACTORY}
Precursor {SEA_AREAS_FACTORY}
location_widgets.merge (port_widgets)
location_widgets.merge (sea_area_widgets)
end
pair_widgets
-- Associate each widget with a unit
do
Precursor {PORT_WIDGET_FACTORY}
Precursor {SEA_AREAS_FACTORY}
end
fill_widgets
-- Call `set_target' to give each widget a target.
do
Precursor {PORT_WIDGET_FACTORY}
Precursor {SEA_AREAS_FACTORY}
end
end

View File

@@ -0,0 +1,888 @@
note
description: "[
Root class for the three order-of-appearance charts in
the {VITP_GAME}.
The position of the control points were obtained by measuring
the phisical charts in millimeters from the edge or top.
]"
author: "Jimmy J. Johnson"
date: "11/11/23"
copyright: "Copyright (c) 2023, Jimmy J. Johnson"
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
deferred class
ORDER_OF_APPEARANCE_VIEW
inherit
VITP_CELL_VIEW
redefine
create_interface_objects,
initialize,
add_actions,
draw,
set_target
end
FONT_AND_COLOR_CONSTANTS
undefine
default_create,
copy
end
feature {NONE} -- Initialization
create_interface_objects
-- Create attributes
do
Precursor {VITP_CELL_VIEW}
create widget_factory.make (game)
create returning_air_widgets.make
create returning_amphibious_widgets.make
create flag.make (location)
create big_marker.make (location)
create little_marker.make (location)
create background.make_with_points (top_left_cp, bottom_right_cp)
end
initialize
-- Set up Current
do
-- Precursor creates the `world' and other previously-
-- defined attributes
Precursor {VITP_CELL_VIEW}
set_minimum_size (ship_size * 14, ship_size * 16)
build_flag
build_markers
add_widgets
end
build_flag
-- Set `flag' characteristics
do
flag.set_flat
flag.show_outline
end
build_markers
-- Set the characteristics for `big_marker' and `little_marker'.
do
-- `big_marker'
big_marker.scale (0.08)
big_marker.show_boarder
-- `little_marker'
little_marker.scale (0.05)
little_marker.hide_anchor
little_marker.show_boarder
end
add_actions
-- Add a click event to the background
do
Precursor {VITP_CELL_VIEW}
-- The next line does not work, I use the `background' to
-- pick up the actions. I bet the event loop does not
-- call this actions or a {EV_CELL_VIEW}?
pointer_button_press_actions.extend (agent on_pressed)
background.pointer_button_press_actions.extend (agent on_pressed)
end
on_pressed (ax, ay, button: INTEGER;
ax_tilt, ay_tilt, a_pressure: DOUBLE;
a_screen_x, a_screen_y: INTEGER)
-- Agent placed in the `background' retangle to allow the
-- user to click, sending a message to the parent {CHART_TOOL}
-- to set Current as the focused view.
local
pt: TOOL
do
io.put_string (generating_type.name + ".on_pressed: " + generating_type.name + "%N")
pt := parent_tool
check attached {CHART_TOOL} parent_tool as t then
t.set_focused_view (Current)
end
end
add_widgets
-- Add the attack widgets (e.g. Japanese attack widgets)
-- to the view's `world' by calling the appropriate feature
-- (e.g. `extend_allied_attack_unit_widgets', etc) from
-- {WIDGET_FACTORY}.
do
add_background
add_title
add_top_markers
add_turns
add_return_boxes
add_units
add_returning_widgets
add_miscellaneous_text
add_starting_control_widgets
add_copyright_text
end
add_background
-- Put a rectangle representing the paper of the chart.
-- This is an attempt to get button press actions to get
-- called so that he zoom-in/zoom-out buttons can be applied
-- the the correct view in the enclosing {CHART_TOOL}
do
background.set_background_color (Light_grey)
world.extend (background)
end
add_title
-- Put the title into Current
local
p: EV_COORDINATE
t: EV_MODEL_TEXT
do
t := new_text (title, title_font)
create p.make (middle_cp.x - t.width // 2 + 4, 4)
t.set_point_position (p.x, p.y)
world.extend (t)
end
add_top_markers
-- Add the circles or stars to the top of the chart
local
s, s2: STAR
e, e2: EV_MODEL_ELLIPSE
do
if nationality = {NATIONALITY_CONSTANTS}.japanese then
-- Create the red circles
create e.make_with_positions (0, 0, 9, 9)
create e2.make_with_positions (0, 0, 9, 9)
e.set_x_y (26, 8)
e2.set_x_y (240, 8)
e.set_background_color (color)
e.set_foreground_color (color)
e2.set_background_color (color)
e2.set_foreground_color (color)
world.extend (e)
world.extend (e2)
else
-- Create the blue stars
create s
create s2
s.scale (0.08)
s2.scale (0.08)
s.set_x_y (26, 8)
s2.set_x_y (240, 8)
s.set_foreground_color (color)
s.set_background_color (color)
s2.set_foreground_color (color)
s2.set_background_color (color)
world.extend (s)
world.extend (s2)
end
end
add_turns
-- Add the "TURN X" and "TO x-date" text
deferred
-- Call `add_turn_text' a number of times
end
add_turn_text (a_turn: INTEGER)
-- Add the "TURN X" and TO_date_text
local
p: EV_COORDINATE
t: EV_MODEL_TEXT
s: STRING
do
s := "Turn " + a_turn.out
if a_turn = 9 then
s := s + " (Optional)"
end
p := turn_x_cp (a_turn)
t := new_text (s, Turn_font)
t.set_point_position (p.x, p.y)
world.extend (t)
t := new_text (turn_x_date (a_turn), To_date_font)
t.set_point_position (p.x + 2, p.y + 8)
world.extend (t)
end
add_return_boxes
-- Add the "Returning Air/Land Units" boxes
do
world.extend (new_box_widget ("Turn 1 Losses", Turn_1_losses_cp))
world.extend (new_box_widget ("Turn 2 Losses", Turn_2_losses_cp))
world.extend (new_box_widget ("Turn 3 Losses", Turn_3_losses_cp))
world.extend (new_box_widget ("Turn 4 Losses", Turn_4_losses_cp))
world.extend (new_box_widget ("Turn 5 Losses", Turn_5_losses_cp))
world.extend (new_box_widget ("Turn 6 Losses", Turn_6_losses_cp))
world.extend (new_box_widget ("Turn 7 Losses", Turn_7_losses_cp))
end
add_miscellaneous_text
-- Add other texts as necessary
do
end
add_starting_control_widgets
-- Add the "Starting Control" text and markers if required
do
-- Add the markers, but hide them
world.extend (flag)
world.extend (big_marker)
world.extend (little_marker)
end
add_copyright_text
-- Add the copy-right notices to each chart
do
end
new_text (a_text: STRING; a_font: EV_FONT): EV_MODEL_TEXT
-- Create a new model from he parameters
do
create Result.make_with_text (a_text)
Result.set_font (a_font)
Result.set_foreground_color (color)
end
new_text_widget (a_text: STRING; a_font: EV_FONT; a_point: EV_COORDINATE): EV_MODEL_TEXT
-- Create a new model from the parameters
do
create Result.make_with_text (a_text)
Result.set_font (a_font)
Result.set_foreground_color (color)
Result.set_point_position (a_point.x, a_point.y)
end
new_box_widget (a_text: STRING; a_point: EV_COORDINATE): EV_MODEL_WORLD
-- Create the "Returning Air/Land Units" box
local
w, mid: INTEGER
lf, rt: INTEGER
p1, p2: EV_COORDINATE
rec: EV_MODEL_RECTANGLE
mt, mt2: EV_MODEL_TEXT
g: EV_MODEL_GROUP
use_2: BOOLEAN
ret_s, ret_s2: STRING
may_s, may_s2: STRING
mt_ret, mt_turn, mt_may: EV_MODEL_TEXT
correction: INTEGER
do
-- Make the box relative to `ship_size' and don't
-- go beyond the implied border of the `background'
create Result
-- Get an x-point that is relative to right border
w := 3 * ship_size
rt := (a_point.x + w).min (background.point_b.x - 3 * gap_size)
lf := (rt - w).max (a_point.x)
create p1.make (lf, a_point.y)
create p2.make (rt, a_point.y + ship_size)
create rec.make_with_points (p1, p2)
rec.set_foreground_color (color)
rec.set_background_color (lightened (color, 2.8))
Result.extend (rec)
-- Build a group to hold all the text and center that
-- group in the `rec'
ret_s := "RETURNING "
ret_s2 := "AIR/LAND UNITS"
may_s := "(may be placed in any friendly "
may_s2 := "major port)"
create g
mt := new_text (ret_s + ret_s2, returning_units_font)
if mt.width >= rec.width * 0.96 then
-- Use two lines for some of the text
use_2 := true
end
mt_turn := new_text (a_text, turn_x_losses_font)
correction := 2
if use_2 then
-- Break text over two lines
mt_ret := new_text (" " + ret_s + "%N" + ret_s2, returning_units_font)
mt_ret.set_x_y (rec.x, rec.y - mt_ret.height // 2)
mt_turn.set_x_y (rec.x, rec.y + correction)
mt_may := new_text (may_s + "%N " + may_s2, may_be_placed_font)
mt_may.set_x_y (rec.x - 2 * correction, mt_turn.y + mt_turn.height)
else
-- Use one line per text
mt_ret := new_text (ret_s + ret_s2, returning_units_font)
mt_ret.set_x_y (rec.x, rec.y - mt_ret.height)
mt_turn.set_x_y (rec.x, rec.y + correction // 2)
mt_may := new_text (may_s + may_s2, may_be_placed_font)
mt_may.set_x_y (rec.x - 3 * correction, mt_turn.y + mt_turn.height)
end
Result.extend (mt_ret)
Result.extend (mt_turn)
Result.extend (mt_may)
end
new_jagged_box (a_text: STRING; a_count_1, a_count_2, a_count_3: INTEGER; a_angle: REAL_64): EV_MODEL_GROUP
-- Builds a three-sided box with jagged lines centered around
-- `a_text' (intended for port names) for placement
-- around the the port names in the "Starting Control".
-- Each side (clockwise from top) consists of the number
-- of triangles given by the parameters, then rotated `a_angle'.
-- require
-- count_big_enough: a_count >= 1
-- count_small_enough: a_count <= 8
local
i: INTEGER
a: ARRAY [EV_COORDINATE]
poly: EV_MODEL_POLYGON
t: EV_MODEL_TEXT
p1, p2, p3: EV_COORDINATE
w, h: INTEGER
do
create Result
-- create a.make_empty
-- Build big trianges and then scale down.
w := 60
h := w // 2
create p1
create p2
create p3
a := <<p1, p2, p3>>
-- Make the first (i.e. top) line
from i := 1
until i > a_count_1
loop
create p1.set (p2.x, p2.y)
create p2.set (p1.x + w, p1.y)
create p3.set (p1.x + h, p1.y - h)
a := <<p1, p2, p3>>
create poly.make_with_coordinates (a)
poly.set_foreground_color (color)
poly.set_background_color (color)
Result.extend (poly)
i := i + 1
end
-- Make the second (i.e. right) line
from i := 1
until i > a_count_2
loop
create p1.set (p2.x, p2.y)
create p2.set (p1.x, p1.y + w)
create p3.set (p1.x + h, p1.y + h)
a := <<p1, p2, p3>>
create poly.make_with_coordinates (a)
poly.set_foreground_color (color)
poly.set_background_color (color)
Result.extend (poly)
i := i + 1
end
-- Make the third (i.e. bottom) line
from i := 1
until i > a_count_3
loop
create p1.set (p2.x, p2.y)
create p2.set (p1.x - w, p1.y)
create p3.set (p1.x - h, p1.y + h)
a := <<p1, p2, p3>>
create poly.make_with_coordinates (a)
poly.set_foreground_color (color)
poly.set_background_color (color)
Result.extend (poly)
i := i + 1
end
Result.scale (0.05)
Result.rotate (a_angle)
t := new_text (a_text, may_be_placed_font)
-- not quite centered so subtract a correction
Result.set_x_y (t.x, t.y - gap_size)
Result.extend (t)
end
add_units
-- Add {ATTACK_UNIT_WIDGETS} to Current
do
end
add_returning_widgets
-- Adds an {AIR_UNIT_WIDGET} and an {AMPHIBIOUS_UNIT_WIDGET}
-- to possibly hold a returning unit. This widgets are NOT
-- initially empty. They are targetted, positioned and
-- shown/hidden in feature `draw'.
local
i: INTEGER
air_w: AIR_UNIT_WIDGET
amp_w: AMPHIBIOUS_UNIT_WIDGET
do
-- There is a maximum of ten air units that can
-- return on any given turn.
from i := 1
until i > 10
loop
-- Can not be empty
create air_w.make (game.airflot_21)
returning_air_widgets.extend (air_w)
world.extend (air_w)
air_w.hide
i := i + 1
end
-- There is a maximum of four amphibious units that can
-- return on any given turn.
from i := 1
until i > 4
loop
-- Can not be empty
create amp_w.make (game.yokosuka)
returning_amphibious_widgets.extend (amp_w)
world.extend (amp_w)
amp_w.hide
i := i + 1
end
end
positioned_widget (a_widget: ATTACK_UNIT_WIDGET; a_point: EV_COORDINATE): ATTACK_UNIT_WIDGET
-- The `a_widget' after positioning it at `a_point'
do
Result := a_widget
Result.set_point_position (a_point.x, a_point.y)
end
feature -- Access
widget_factory: WIDGET_FACTORY
-- Creator and repository for widgets in this view
location: LOCATION
-- A {LOCATION} from the {VITP_GAME} used in `draw' to determine
-- if a unit is on this chart or somewhere else (i.e. in the game.)
deferred
ensure
valid_result: Result = game.japanese_oa_chart or
Result = game.allied_oa_chart or
Result = game.allied_starting_forces_chart
end
nationality: INTEGER
-- The nationality of the unit on this chart
color: EV_COLOR
-- The main color used for the text in Current
do
if nationality = {NATIONALITY_CONSTANTS}.japanese then
Result := (create {FONT_AND_COLOR_CONSTANTS}).Japanese_unit_color
else
Result := (create {FONT_AND_COLOR_CONSTANTS}).us_unit_color
end
end
title: STRING
-- The text at top of this chart
deferred
end
feature -- Element change
set_target (a_item: like game)
-- Associate `a_item' with Current.
do
Precursor (a_item)
widget_factory.set_game (a_item)
-- The unit widgets come from `game', so must wait
-- until calling this feature to add them to Current.
-- (i.e. do not add them in `initialize')
-- NO, that is wrong. We do not make new widget when
-- targetting to a new game, we just repair the widgets
-- to the new units.
-- Make the flag color itself based on location's owner
flag.set_location (location)
-- big_marker.set_target (location)
-- little_marker.set_target (location)
big_marker.set_location (location)
little_marker.set_location (location)
end
feature -- Basic operations
draw
-- Redraw the view
local
-- t: VITP_WIDGET_TABLE [ATTACK_UNIT_WIDGET, ATTACK_UNIT]
w: ATTACK_UNIT_WIDGET
u: ATTACK_UNIT
i: INTEGER
do
-- Replace this with call to `notify_views'
-- check attached {VITP_WIDGET_TABLE [ATTACK_UNIT_WIDGET, ATTACK_UNIT]} world.widgets as t then
-- -- because of select clause
---- t := world.widgets
-- from t.start
-- until t.after
-- loop
-- w := t.item_for_iteration
-- u := t.key_for_iteration
-- if u.location = location then
-- w.set_unflipped
-- w.set_raised
-- else
-- w.set_flipped
-- w.set_flat
-- end
-- t.forth
-- end
-- end
-- Place any returning air & amphibious units
if not is_view_empty then
from i := 3
until i > 9
loop
place_returning_air (i)
place_returning_amphibious (i)
i := i + 1
end
end
flag.paint
Precursor {VITP_CELL_VIEW}
end
place_returning_air (a_turn: INTEGER)
-- Place any returning air units at proper place
require
turn_big_enough: a_turn >= 3
turn_small_enough: a_turn <= 9
local
t: VITP_TABLE [AIR_UNIT]
i: INTEGER
u: AIR_UNIT
w: AIR_UNIT_WIDGET
cp: EV_COORDINATE
do
if nationality = {NATIONALITY_CONSTANTS}.japanese then
t := game.returning_japanese_air_units (a_turn)
else
t := game.returning_allied_air_units (a_turn)
end
create cp
i := 1
from t.start
until t.after
loop
u := t.item_for_iteration
w := returning_air_widgets.i_th (i)
w.set_target (u)
w.show
-- position the widget based on turn
cp := turn_x_cp (a_turn)
cp.set_position (cp.x + a_turn * air_size, cp.y + gap_size)
w.set_point_position (cp.x, cp.y)
t.forth
i := i + 1
end
-- Now hide remaining (i.e. extra) widgets
from
until i > returning_air_widgets.count
loop
returning_air_widgets.i_th (i).hide
i := i + 1
end
end
place_returning_amphibious (a_turn: INTEGER)
-- Place any returning amphibious units at proper place
require
turn_big_enough: a_turn >= 3
turn_small_enough: a_turn <= 9
local
t: VITP_TABLE [AMPHIBIOUS_UNIT]
i: INTEGER
u: AMPHIBIOUS_UNIT
w: AMPHIBIOUS_UNIT_WIDGET
cp: EV_COORDINATE
do
if nationality = {NATIONALITY_CONSTANTS}.japanese then
t := game.returning_japanese_amphibious_units (a_turn)
else
t := game.returning_allied_amphibious_units (a_turn)
end
create cp
i := 1
from t.start
until t.after
loop
u := t.item_for_iteration
w := returning_amphibious_widgets.i_th (i)
w.set_target (u)
w.show
-- position the widget based on turn
cp := turn_x_cp (a_turn)
cp.set_position (cp.x + a_turn * air_size, cp.y + 2 * gap_size + air_size)
w.set_point_position (cp.x, cp.y)
t.forth
i := i + 1
end
-- Now hide remaining (i.e. extra) widgets
from
until i > returning_amphibious_widgets.count
loop
-- returning_amphibious_widgets.item.hide
i := i + 1
end
end
feature {NONE} -- Implementation
flag: FLAG
-- The flag that is one of the "Starting Control" widgets
big_marker: CONTROL_MARKER
-- The larger of the two port control markers, that is
-- part the "Starting Control" widgets.
little_marker: CONTROL_MARKER
-- The larger of the two port control markers, that is
-- part the "Starting Control" widgets.
feature {NONE} -- Implementation
returning_air_widgets: LINKED_LIST [AIR_UNIT_WIDGET]
-- List of widgets which can hold any returning air units
-- Built up in `draw'
returning_amphibious_widgets: LINKED_LIST [AMPHIBIOUS_UNIT_WIDGET]
-- List of widgets which can hold any returning amphibious unit
background: EV_MODEL_RECTANGLE --attribute create Result.make_with_points (top_left_cp, bottom_right_cp) end
-- Represents the paper of the chart and provides a
-- clickable area for selection of Current to pass on
-- a click event to the containing {CHART_TOOL} so that
-- the zoom-in/zoom-out buttons will work.
feature {NONE} -- Implementation
turn_x_cp (a_turn: INTEGER): EV_COORDINATE
-- The control point for the "TURN X" text for `a_turn'
require
turn_big_enough: a_turn >= 1
turn_small_enough: a_turn <= 9
do
inspect a_turn
when 1 then
Result := Turn_1_cp
when 2 then
Result := Turn_2_cp
when 3 then
Result := Turn_3_cp
when 4 then
Result := Turn_4_cp
when 5 then
Result := Turn_5_cp
when 6 then
Result := Turn_6_cp
when 7 then
Result := Turn_7_cp
when 8 then
Result := Turn_8_cp
when 9 then
Result := Turn_9_cp
else
check
should_not_happen: False
-- because of precondition
end
create Result
end
end
turn_x_date (a_turn: INTEGER): STRING
-- The date (e.g. "TO DEMCEMBER 1941", etc) corresponding to
-- turn number `a_turn
require
turn_big_enough: a_turn >= 1
turn_small_enough: a_turn <= 9
do
inspect a_turn
when 1 then
Result := Turn_1_date
when 2 then
Result := Turn_2_date
when 3 then
Result := Turn_3_date
when 4 then
Result := Turn_4_date
when 5 then
Result := Turn_5_date
when 6 then
Result := Turn_6_date
when 7 then
Result := Turn_7_date
when 8 then
Result := Turn_8_date
when 9 then
Result := Turn_9_date
else
check
should_not_happen: False
-- because of precondition
end
Result := ""
end
end
feature -- Implementation
title_font: EV_FONT
once
create Result
Result.set_height (9)
Result.set_weight ({EV_FONT_CONSTANTS}.Weight_bold)
end
turn_font: EV_FONT
once
create Result
Result.set_height (9)
Result.set_weight ({EV_FONT_CONSTANTS}.Weight_bold)
end
to_date_font: EV_FONT
once
create Result
Result.set_height (3)
Result.set_weight ({EV_FONT_CONSTANTS}.Weight_bold)
end
at_port_font: EV_FONT
once
create Result
Result.set_height (5)
Result.set_weight ({EV_FONT_CONSTANTS}.Weight_bold)
end
returning_units_font: EV_FONT
once
create Result
Result.set_height (4)
Result.set_weight ({EV_FONT_CONSTANTS}.Weight_bold)
end
turn_x_losses_font: EV_FONT
once
create Result
Result.set_height (3)
Result.set_weight ({EV_FONT_CONSTANTS}.Weight_bold)
end
may_be_placed_font: EV_FONT
once
create Result
Result.set_height (3)
-- Result.set_weight ({EV_FONT_CONSTANTS}.Weight_bold)
end
may_be_placed_italic_font: EV_FONT
once
create Result
Result.set_height (3)
Result.set_shape ({EV_FONT_CONSTANTS}.shape_italic)
end
small_font: EV_FONT
once
create Result
Result.set_height (2)
end
returning_units_box_color: EV_COLOR
-- The [lighter] color used for the backgroun of the
-- "Returning Air/Land Units" boxes
do
if nationality = {NATIONALITY_CONSTANTS}.japanese then
Result := Japanese_unit_color_dim
else
Result := US_unit_color_dim
end
end
Returning_units_text: STRING = "RETURNING AIR/LAND UNITS"
-- Text placed in the returning units boxes
May_be_placed_text: String = "may be placed in any friendly major port"
-- More text for the returning units boxes
turn_1_date: STRING = "TO DECEMBER 1941"
-- Date placed near the "TURN 1" text
turn_2_date: STRING = "TO MAY 1942"
-- Date placed near the "TURN 1" text
turn_3_date: STRING = "TO SEPTEMBER 1942"
-- Date placed near the "TURN 1" text
turn_4_date: STRING = "TO JANUARY 1943"
-- Date placed near the "TURN 1" text
turn_5_date: STRING = "TO JUNE 1943"
-- Date placed near the "TURN 1" text
turn_6_date: STRING = "TO JANUARY 1944"
-- Date placed near the "TURN 1" text
turn_7_date: STRING = "TO MAY 1944"
-- Date placed near the "TURN 1" text
turn_8_date: STRING = "TO OCTOBER 1944"
-- Date placed near the "TURN 1" text
turn_9_date: STRING = "TO JANUARY 1945"
-- Date placed near the "TURN 1" text
feature {NONE} -- Implementation (control points in millimeters)
top_left_cp: EV_COORDINATE once create Result.make (0, 0) end
bottom_right_cp: EV_COORDINATE deferred end
middle_cp: EV_COORDINATE do create Result.make (bottom_right_cp.x // 2, bottom_right_cp.y // 2) end
-- Turn X text
turn_1_cp: EV_COORDINATE deferred end
turn_2_cp: EV_COORDINATE deferred end
turn_3_cp: EV_COORDINATE deferred end
turn_4_cp: EV_COORDINATE deferred end
turn_5_cp: EV_COORDINATE deferred end
turn_6_cp: EV_COORDINATE deferred end
turn_7_cp: EV_COORDINATE deferred end
turn_8_cp: EV_COORDINATE deferred end
turn_9_cp: EV_COORDINATE deferred end
-- To some date text
to_dec_41_cp: EV_COORDINATE deferred end
to_may_42_cp: EV_COORDINATE deferred end
to_sep_42_cp: EV_COORDINATE deferred end
to_jan_43_cp: EV_COORDINATE deferred end
to_jun_43_cp: EV_COORDINATE deferred end
to_jan_44_cp: EV_COORDINATE deferred end
to_may_44_cp: EV_COORDINATE deferred end
to_oct_44_cp: EV_COORDINATE deferred end
to_jan_45_cp: EV_COORDINATE deferred end
-- Turn x losses
turn_1_losses_cp: EV_COORDINATE deferred end
turn_2_losses_cp: EV_COORDINATE deferred end
turn_3_losses_cp: EV_COORDINATE deferred end
turn_4_losses_cp: EV_COORDINATE deferred end
turn_5_losses_cp: EV_COORDINATE deferred end
turn_6_losses_cp: EV_COORDINATE deferred end
turn_7_losses_cp: EV_COORDINATE deferred end
feature {NONE} -- Implementation
gap_size: INTEGER = 2
-- To add a small gap between widgets
ship_size: INTEGER
-- Size of a [square] ship widget
once
-- Result := {SHIP_WIDGET}.default_tile_size.rounded
check attached {SHIP_WIDGET} widget_factory.widgets.item (game.akagi) as w then
Result := w.tile_size.rounded
end
end
air_size: INTEGER
-- Size of a [square] air unit widget
once
-- Result := ({SHIP_WIDGET}.default_tile_size * 0.7).rounded
check attached {AIR_UNIT_WIDGET} widget_factory.widgets.item (game.airflot_21) as w then
Result := w.tile_size.rounded
end
end
end

View File

@@ -0,0 +1,177 @@
note
description: "[
One of the classes that decompose the numourous VITP widgets
into more managable groups. This class models the widgets
that contain the ports.
]"
author: "Jimmy J. Johnson"
date: "5/15/24"
copyright: "Copyright (c) 2024, Jimmy J. Johnson"
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
class
PORT_WIDGET_FACTORY
inherit
WIDGET_FACTORY
redefine
make_widgets,
extend_widgets,
pair_widgets,
fill_widgets
end
create
make
feature {NONE} -- Initialization
make_widgets
-- Create widgets for the corresponding game item
do
Precursor {WIDGET_FACTORY}
create port_widgets.make (100)
-- Create widgets
create andaman_islands_widget.make (game.andaman_islands)
create attu_widget.make (game.attu)
create australia_widget.make (game.australia)
create ceylon_widget.make (game.ceylon)
create dutch_harbor_widget.make (game.dutch_harbor)
create guadalcanal_widget.make (game.guadalcanal)
create johnston_island_widget.make (game.johnston_island)
create kwajalein_widget.make (game.kwajalein)
create lae_widget.make (game.lae)
create maloelap_widget.make (game.maloelap)
create midway_widget.make (game.midway)
create new_hebrides_widget.make (game.new_hebrides)
create okinawa_widget.make (game.okinawa)
create pearl_harbor_widget.make (game.pearl_harbor)
create philippines_widget.make (game.philippines)
create port_moresby_widget.make (game.port_moresby)
create saigon_widget.make (game.saigon)
create saipan_widget.make (game.saipan)
create samoa_widget.make (game.samoa)
create singapore_widget.make (game.singapore)
create truk_widget.make (game.truk)
create yokosuka_navy_yard_widget.make (game.yokosuka_navy_yard)
end
feature -- Access (tables)
port_widgets: VITP_WIDGET_TABLE [PORT_WIDGET, PORT]
-- Keeps track of widgets
feature -- Access (ports)
Andaman_islands_widget: ANDAMAN_ISLANDS_WIDGET
Attu_widget: ATTU_WIDGET
Australia_widget: AUSTRALIA_WIDGET
Ceylon_widget: CEYLON_WIDGET
Dutch_harbor_widget: DUTCH_HARBOR_WIDGET
Guadalcanal_widget: GUADALCANAL_WIDGET
Johnston_island_widget: JOHNSTON_ISLAND_WIDGET
Kwajalein_widget: KWAJALEIN_WIDGET
Lae_widget: LAE_WIDGET
Maloelap_widget: MALOELAP_WIDGET
Midway_widget: MIDWAY_WIDGET
New_hebrides_widget: NEW_HEBRIDES_WIDGET
Okinawa_widget: OKINAWA_WIDGET
Pearl_harbor_widget: PEARL_HARBOR_WIDGET
Philippines_widget: PHILIPPINES_WIDGET
Port_moresby_widget: PORT_MORESBY_WIDGET
Saigon_widget: SAIGON_WIDGET
Saipan_widget: SAIPAN_WIDGET
Samoa_widget: SAMOA_WIDGET
Singapore_widget: SINGAPORE_WIDGET
Truk_widget: TRUK_WIDGET
Yokosuka_navy_yard_widget: YOKOSUKA_NAVY_YARD_WIDGET
feature {NONE} -- Implementation
extend_widgets
-- Put each widget {ATTACK_UNIT_WIDGET} into `world'.
do
port_widgets.extend (Andaman_islands_widget, game.Andaman_islands)
port_widgets.extend (Attu_widget, game.Attu)
port_widgets.extend (Australia_widget, game.Australia)
port_widgets.extend (Ceylon_widget, game.Ceylon)
port_widgets.extend (Dutch_harbor_widget, game.Dutch_harbor)
port_widgets.extend (Guadalcanal_widget, game.Guadalcanal)
port_widgets.extend (Johnston_island_widget, game.Johnston_island)
port_widgets.extend (Kwajalein_widget, game.Kwajalein)
port_widgets.extend (Lae_widget, game.Lae)
port_widgets.extend (Maloelap_widget, game.Maloelap)
port_widgets.extend (Midway_widget, game.Midway)
port_widgets.extend (New_hebrides_widget, game.New_hebrides)
port_widgets.extend (Okinawa_widget, game.Okinawa)
port_widgets.extend (Pearl_harbor_widget, game.Pearl_harbor)
port_widgets.extend (Philippines_widget, game.Philippines)
port_widgets.extend (Port_moresby_widget, game.Port_moresby)
port_widgets.extend (Saigon_widget, game.Saigon)
port_widgets.extend (Saipan_widget, game.Saipan)
port_widgets.extend (Samoa_widget, game.Samoa)
port_widgets.extend (Singapore_widget, game.Singapore)
port_widgets.extend (Truk_widget, game.Truk)
port_widgets.extend (Yokosuka_navy_yard_widget, game.Yokosuka_navy_yard)
widgets.merge (port_widgets)
end
pair_widgets
-- Associate each widget with a unit
do
port_widgets.force (Andaman_islands_widget, game.Andaman_islands)
port_widgets.force (Attu_widget, game.Attu)
port_widgets.force (Australia_widget, game.Australia)
port_widgets.force (Ceylon_widget, game.Ceylon)
port_widgets.force (Dutch_harbor_widget, game.Dutch_harbor)
port_widgets.force (Guadalcanal_widget, game.Guadalcanal)
port_widgets.force (Johnston_island_widget, game.Johnston_island)
port_widgets.force (Kwajalein_widget, game.Kwajalein)
port_widgets.force (Lae_widget, game.Lae)
port_widgets.force (Maloelap_widget, game.Maloelap)
port_widgets.force (Midway_widget, game.Midway)
port_widgets.force (New_hebrides_widget, game.New_hebrides)
port_widgets.force (Okinawa_widget, game.Okinawa)
port_widgets.force (Pearl_harbor_widget, game.Pearl_harbor)
port_widgets.force (Philippines_widget, game.Philippines)
port_widgets.force (Port_moresby_widget, game.Port_moresby)
port_widgets.force (Saigon_widget, game.Saigon)
port_widgets.force (Saipan_widget, game.Saipan)
port_widgets.force (Samoa_widget, game.Samoa)
port_widgets.force (Singapore_widget, game.Singapore)
port_widgets.force (Truk_widget, game.Truk)
port_widgets.force (Yokosuka_navy_yard_widget, game.Yokosuka_navy_yard)
ensure then
port_count_correct: port_widgets.count = 22
-- ports_paired: across port_widgets as pw all pw.item.vitp = vitp end
end
fill_widgets
-- Call `set_target' to give each widget a target.
do
Andaman_islands_widget.set_target (game.andaman_islands)
Attu_widget.set_target (game.attu)
Australia_widget.set_target (game.australia)
Ceylon_widget.set_target (game.ceylon)
Dutch_harbor_widget.set_target (game.dutch_harbor)
Guadalcanal_widget.set_target (game.guadalcanal)
Johnston_island_widget.set_target (game.johnston_island)
Kwajalein_widget.set_target (game.kwajalein)
Lae_widget.set_target (game.lae)
Maloelap_widget.set_target (game.maloelap)
Midway_widget.set_target (game.midway)
New_hebrides_widget.set_target (game.new_hebrides)
Okinawa_widget.set_target (game.okinawa)
Pearl_harbor_widget.set_target (game.pearl_harbor)
Philippines_widget.set_target (game.philippines)
Port_moresby_widget.set_target (game.port_moresby)
Saigon_widget.set_target (game.saigon)
Saipan_widget.set_target (game.saipan)
Samoa_widget.set_target (game.samoa)
Singapore_widget.set_target (game.singapore)
Truk_widget.set_target (game.truk)
Yokosuka_navy_yard_widget.set_target (game.yokosuka_navy_yard)
end
end

View File

@@ -0,0 +1,129 @@
note
description: "[
One of the classes that decompose the numourous VITP widgets
into more managable groups. This class models the widgets
that contain the sea areas.
]"
author: "Jimmy J. Johnson"
date: "5/15/24"
copyright: "Copyright (c) 2024, Jimmy J. Johnson"
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
class
SEA_AREAS_FACTORY
inherit
WIDGET_FACTORY
redefine
make_widgets,
extend_widgets,
pair_widgets,
fill_widgets
end
create
make
feature {NONE} -- Initialization
make_widgets
-- Create widgets for the corresponding game item
do
Precursor {WIDGET_FACTORY}
create sea_area_widgets.make (100)
-- Create widgets
create aleutian_islands_widget.make (game.aleutian_islands)
create bay_of_bengal_widget.make (game.bay_of_bengal)
create central_pacific_ocean_widget.make (game.central_pacific_ocean)
create coral_sea_widget.make (game.coral_sea)
create hawaiian_islands_widget.make (game.hawaiian_islands)
create indian_ocean_widget.make (game.indian_ocean)
create indonesia_widget.make (game.indonesia)
create japanese_islands_widget.make (game.japanese_islands)
create marianas_islands_widget.make (game.marianas_islands)
create marshall_islands_widget.make (game.marshall_islands)
create north_pacific_ocean_widget.make (game.north_pacific_ocean)
create south_pacific_ocean_widget.make (game.south_pacific_ocean)
create us_mandate_widget.make (game.us_mandate)
end
feature -- Access (tables)
sea_area_widgets: VITP_WIDGET_TABLE [SEA_AREA_WIDGET, SEA_AREA]
-- Keeps track of sea-area widgets
feature -- Access (sea area widgets)
aleutian_islands_widget: ALEUTIAN_ISLANDS_WIDGET
bay_of_bengal_widget: BAY_OF_BENGAL_WIDGET
central_pacific_ocean_widget: CENTRAL_PACIFIC_OCEAN_WIDGET
coral_sea_widget: CORAL_SEA_WIDGET
hawaiian_islands_widget: HAWAIIAN_ISLANDS_WIDGET
indian_ocean_widget: INDIAN_OCEAN_WIDGET
indonesia_widget: INDONESIA_WIDGET
japanese_islands_widget: JAPANESE_ISLANDS_WIDGET
marianas_islands_widget: MARIANAS_ISLANDS_WIDGET
marshall_islands_widget: MARSHALL_ISLANDS_WIDGET
north_pacific_ocean_widget: NORTH_PACIFIC_OCEAN_WIDGET
south_pacific_ocean_widget: SOUTH_PACIFIC_OCEAN_WIDGET
us_mandate_widget: US_MANDATE_WIDGET
feature {NONE} -- Implementation
extend_widgets
-- Put each widget into `world'
do
sea_area_widgets.extend (aleutian_islands_widget, game.aleutian_islands)
sea_area_widgets.extend (bay_of_bengal_widget, game.bay_of_bengal)
sea_area_widgets.extend (central_pacific_ocean_widget, game.central_pacific_ocean)
sea_area_widgets.extend (coral_sea_widget, game.coral_sea)
sea_area_widgets.extend (hawaiian_islands_widget, game.hawaiian_islands)
sea_area_widgets.extend (indian_ocean_widget, game.indian_ocean)
sea_area_widgets.extend (indonesia_widget, game.indonesia)
sea_area_widgets.extend (japanese_islands_widget, game.japanese_islands)
sea_area_widgets.extend (marianas_islands_widget, game.marianas_islands)
sea_area_widgets.extend (marshall_islands_widget, game.marshall_islands)
sea_area_widgets.extend (north_pacific_ocean_widget, game.north_pacific_ocean)
sea_area_widgets.extend (south_pacific_ocean_widget, game.south_pacific_ocean)
sea_area_widgets.extend (us_mandate_widget, game.us_mandate)
widgets.merge (sea_area_widgets)
end
pair_widgets
-- Associate each widget with a sea area
do
sea_area_widgets.force (aleutian_islands_widget, game.aleutian_islands)
sea_area_widgets.force (bay_of_bengal_widget, game.bay_of_bengal)
sea_area_widgets.force (central_pacific_ocean_widget, game.central_pacific_ocean)
sea_area_widgets.force (coral_sea_widget, game.coral_sea)
sea_area_widgets.force (hawaiian_islands_widget, game.hawaiian_islands)
sea_area_widgets.force (indian_ocean_widget, game.indian_ocean)
sea_area_widgets.force (indonesia_widget, game.indonesia)
sea_area_widgets.force (japanese_islands_widget, game.japanese_islands)
sea_area_widgets.force (marianas_islands_widget, game.marianas_islands)
sea_area_widgets.force (marshall_islands_widget, game.marshall_islands)
sea_area_widgets.force (north_pacific_ocean_widget, game.north_pacific_ocean)
sea_area_widgets.force (south_pacific_ocean_widget, game.south_pacific_ocean)
sea_area_widgets.force (us_mandate_widget, game.us_mandate)
end
fill_widgets
-- Call `set_target' to give each widget a target
do
aleutian_islands_widget.set_target (game.aleutian_islands)
bay_of_bengal_widget.set_target (game.bay_of_bengal)
central_pacific_ocean_widget.set_target (game.central_pacific_ocean)
coral_sea_widget.set_target (game.coral_sea)
hawaiian_islands_widget.set_target (game.hawaiian_islands)
indian_ocean_widget.set_target (game.indian_ocean)
indonesia_widget.set_target (game.indonesia)
japanese_islands_widget.set_target (game.japanese_islands)
marianas_islands_widget.set_target (game.marianas_islands)
marshall_islands_widget.set_target (game.marshall_islands)
north_pacific_ocean_widget.set_target (game.north_pacific_ocean)
south_pacific_ocean_widget.set_target (game.south_pacific_ocean)
us_mandate_widget.set_target (game.us_mandate)
end
end

View File

@@ -0,0 +1,70 @@
note
description: "[
Root class for all "windows" in VITP.
A scrollable drawing area (i.e. an {EV_MODEL_WORLD_CELL} that is
also a {VIEW} through inheritance from {JJ_MODEL_WORLD_CELL_VIEW}.
]"
author: "Jimmy J. Johnson"
class
VITP_CELL_VIEW
inherit
JJ_MODEL_WORLD_CELL_VIEW
rename
target as game
redefine
draw,
target_imp
end
--create
-- default_create
--create {VITP_CELL_VIEW}
feature -- Basic operations
draw
-- Redraw the window
do
-- world.wipe_out
world.full_redraw
Precursor {JJ_MODEL_WORLD_CELL_VIEW}
end
scale_up
-- Increase to the next largest size
do
world.scale (scale_factor)
resize_if_necessary
end
scale_down
-- Decrease to the next smallest size
do
world.scale (1 / scale_factor)
if world.bounding_box.width < client_width or
world.bounding_box.height < client_height then
fit_to_screen
end
-- fix the scrollbars
resize_if_necessary
crop
end
feature {NONE} -- Implementation
target_imp: detachable VITP_GAME
-- Detachable implementation of `target' for void safety
scale_factor: DOUBLE = 1.5
-- The amount to grow (or swrink by reciprocal)
Default_width: INTEGER = 200
-- The default width of `border'
Default_height: INTEGER = 300
-- the default width of `border'
end

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,140 @@
note
description: "[
Root class for tools used in the VITP game.
]"
author: "Jimmy J. Johnson"
deferred class
VITP_TOOL
inherit
TOOL
rename
target as vitp
redefine
create_interface_objects,
initialize,
add_actions,
target_imp
-- set_target
end
feature {NONE} -- Initialization
create_interface_objects
-- Create objects to be used by `Current' in `initialize'
-- Implemented by descendants to create attached objects
-- in order to adhere to void-safety due to the implementation bridge pattern.
do
print ("VITP_TOOL.create_interface_objects %N")
Precursor {TOOL}
print ("%T VITP_TOOL.create_interface_objects after Precursor {TOOL} %N")
create zoom_in_button
create zoom_out_button
create fit_button
zoom_in_button.set_pixmap (create {EV_PIXMAP}.make_with_pixel_buffer (Icon_zoom_in_color_buffer))
zoom_in_button.set_tooltip ("Zoom In")
zoom_out_button.set_pixmap (create {EV_PIXMAP}.make_with_pixel_buffer (Icon_zoom_out_color_buffer))
zoom_out_button.set_tooltip ("Zoom Out")
fit_button.set_pixmap (create {EV_PIXMAP}.make_with_pixel_buffer (icon_format_exporteds_color_buffer))
fit_button.set_tooltip ("Fit to View")
end
initialize
-- Build the interface for this window
do
Precursor {TOOL}
build_tool_bar
split_manager.enable_mode_changes
split_manager.set_horizontal
end
build_tool_bar
-- Add buttons to `tool_bar' (from TOOL).
local
vs: EV_VERTICAL_SEPARATOR
do
-- Add a separator and space it out with minimum size.
create vs
tool_bar.extend (vs)
tool_bar.disable_item_expand (vs)
vs.set_minimum_width (20)
-- Add the zoom buttons
tool_bar.extend (zoom_in_button)
tool_bar.extend (zoom_out_button)
tool_bar.extend (fit_button)
tool_bar.disable_item_expand (zoom_in_button)
tool_bar.disable_item_expand (zoom_out_button)
tool_bar.disable_item_expand (fit_button)
-- Add a separator and space it out with minimum size.
create vs
tool_bar.extend (vs)
tool_bar.disable_item_expand (vs)
vs.set_minimum_width (20)
end
add_actions
-- Add functionality to the buttons
do
Precursor {TOOL}
zoom_in_button.select_actions.extend (agent on_zoom_in)
zoom_out_button.select_actions.extend (agent on_zoom_out)
fit_button.select_actions.extend (agent on_fit)
end
feature -- Access
focused_view: VITP_CELL_VIEW
-- The view that currently has the focus
deferred
end
feature {NONE} -- Implementation (actions)
on_set_defaults
-- Restore the view-vector to the default settings.
do
end
on_zoom_in
-- Make the board larger
do
focused_view.scale_up
end
on_zoom_out
-- Make the board smaller
do
focused_view.scale_down
end
on_fit
-- Make the content fit the view
do
focused_view.fit_to_screen
focused_view.resize_if_necessary
focused_view.crop
end
Default_object: VITP_GAME
--
once
create Result
end
feature {NONE} -- Implementation
target_imp: detachable VITP_GAME
-- Detachable implementation of `target' for void safety
zoom_in_button: EV_BUTTON --EV_TOOL_BAR_BUTTON
-- Button to make the game board larger.
zoom_out_button: EV_BUTTON --EV_TOOL_BAR_BUTTON
-- Button to make the game board smaller.
fit_button: EV_BUTTON
-- Button to fit the content to the view
end

View File

@@ -0,0 +1,37 @@
note
description: "[
Root class for all the views in VITP
]"
author: "Jimmy J. Johnson"
class
VITP_VIEW
inherit
JJ_MODEL_WORLD_VIEW
redefine
-- create_interface_objects,
-- world,
-- target,
-- draw
end
create {VITP_VIEW}
list_make
feature -- Basic operations
-- draw
-- -- Redraw the window
-- do
---- world.wipe_out
-- world.full_redraw
-- Precursor {JJ_MODEL_WORLD_VIEW}
-- end
invariant
end

View File

@@ -0,0 +1,80 @@
note
description: "[
Top container class of the classes that decompose the numourous
VITP widgets into more managable groups.
This class keeps track of widgets, allowing a {VITP_WIDGET}
to add/remove a widget to/from its world.
]"
author: "Jimmy J. Johnson"
date: "5/15/24"
copyright: "Copyright (c) 2024, Jimmy J. Johnson"
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
class
WIDGET_FACTORY
create
make
feature {NONE} -- Initialization
make (a_game: like game)
-- Create an instance
do
print ("WIDGET_FACTORY.make %N")
game := a_game
make_widgets
extend_widgets
pair_widgets
fill_widgets
print ("%T end WIDGET_FACTORY.make %N")
end
make_widgets
-- Create widgets for the corresponding game item
do
create widgets.make (100)
end
feature -- Access
game: VITP_GAME
-- The game for which the widgets are created
widgets: VITP_WIDGET_TABLE [VITP_WIDGET, VITP_ITEM]
-- Container to keep track of all widgets
feature -- Element change
set_game (a_game: like game)
-- Associate `a_game' with Current.
do
game := a_game
-- Add widgets to the table only once, because
-- the widgets don't change
if widgets.is_empty then
extend_widgets
end
pair_widgets
fill_widgets
end
feature -- Basic operations
extend_widgets
-- Put each widget into a list.
do
end
pair_widgets
-- Associate each widget with a unit
do
end
fill_widgets
-- Called by `set_target' to place each item into
-- its associated widget.
do
end
end

View File

@@ -0,0 +1,142 @@
note
description: "[
A table of TUPLEs where each TUPLE holds an EV_WORLD object
(e.g. EV_TEXT_WIDGET, ATTACK_UNIT_WIDGET, etc.) along with
an EV_COORDINATE of where that widget should be placed,
indexed by a string name.
]"
author: "Jimmy J. Johnson"
date: "11/11/23"
copyright: "Copyright (c) 2023, Jimmy J. Johnson"
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
class
WIDGET_POSITION_TABLE [G -> EV_MODEL, K -> HASHABLE]
--inherit
-- HASH_TABLE [TUPLE [mod: G; loc: EV_COORDINATE], K]
-- rename
-- extend as table_extend
-- export
-- {NONE}
-- put,
-- force,
-- table_extend,
-- replace,
-- replace_key,
-- merge
-- end
create
make
feature {NONE} -- Initialization
make
-- Create an instance
do
create table.make (100)
end
feature -- Access
widget (a_key: K): EV_MODEL
-- The widget associated with `a_key'
require
has_key: has (a_key)
do
Result := table.definite_item (a_key).mod
end
location (a_key: K): EV_COORDINATE
-- The location associated with `a_key'
require
has_key: has (a_key)
do
Result := table.definite_item (a_key).loc
end
widget_for_iteration: EV_MODEL
-- The `widget' item at the current iteration position
require
not_off: not is_off
do
Result := table.item_for_iteration.mod
end
location_for_iteration: EV_COORDINATE
-- The `location' item at the current iteration position
require
not_off: not is_off
do
Result := table.item_for_iteration.loc
end
key_for_iteration: K
-- The key at thge currenbt iteration position
require
not_off: not is_off
do
Result := table.key_for_iteration
end
feature -- Query
has (a_key: K): BOOLEAN
-- Does Current contain an item with `a_key'
do
Result := table.has (a_key)
end
feature -- Element change
extend (a_widget: EV_MODEL; a_x, a_y: INTEGER; a_key: K)
-- Add `a_widget' to the table, located at (a_x, a_y) and
-- indexed by `a_key'. Replace any previous item that
-- was indexed by `a_key'.
-- An EV_COORDINATE is created from `a_x' and `a_y'.
local
loc: EV_COORDINATE
do
create loc.make (a_x, a_y)
table.force ([a_widget, loc], a_key)
end
reposition (a_key: K; a_x, a_y: INTEGER)
-- Change the `location' for the item indexed by `a_key'
require
has_key: has (a_key)
do
location (a_key).set_x (a_x)
location (a_key).set_y (a_y)
end
feature -- Cursor movement
start
-- Bring cursor to first position
do
table.start
end
forth
-- Advance cursor to next position or `is_off'
require
not_off: not is_off
do
table.forth
end
is_off: BOOLEAN
-- Is the cursor after the last item?
do
Result := table.off
end
feature {NONE} -- Implementation
table: HASH_TABLE [TUPLE [mod: EV_MODEL; loc: EV_COORDINATE], K]
-- Implementation of Current
end

View File

@@ -0,0 +1,26 @@
note
description: "[
A {LOCATION_WIDGET} used specifically for building land areas
that are not ports, such as Asia and Kamchatka.
]"
author: "Jimmy J. Johnson"
class
LAND_WIDGET
inherit
LOCATION_WIDGET
redefine
target_imp
end
create
default_create
feature {NONE} -- Implementation
target_imp: detachable LAND
-- Anchor for the `target' represented by Current
end

View File

@@ -0,0 +1,29 @@
note
description: "[
A EV_MODEL_WORLD containing polygons that represent the land
areas in VITP. The `land' in Current is simply a named object;
This widget defines the visual representation as a group of
polygons in a world.
]"
author: "Jimmy J. Johnson"
revision: "$Revision: 42 $"
class
LAND_WORLD
inherit
EV_MODEL_WORLD
create
default_create
create {LAND_WORLD}
list_make
feature -- Access
feature -- Implementation
end

View File

@@ -0,0 +1,184 @@
note
description: "[
Widget representing an area on the game board (such as a
land mass or port.)
]"
author: "Jimmy J. Johnson"
deferred class
LOCATION_WIDGET
inherit
VITP_WIDGET
rename
target as location
redefine
create_interface_objects,
-- initialize,
extend_widgets,
build_widgets,
set_widget_order,
add_actions,
-- defining_figure,
paint,
on_button_pressed,
-- on_pointer_leave,
target_imp
end
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
create land
land_color := Default_land_color
Precursor {VITP_WIDGET}
end
extend_widgets
-- Put widgets into Current. This cannot be done
-- in `create_interface_object', because cannot call
-- `extend' feature until all objects [in descendants]
-- are also created.
do
Precursor {VITP_WIDGET}
extend (land)
end
build_widgets
-- Now that widgets were created in `create_interface_objects'
-- and added to Current in `extend_widgets', build up the
-- widgets by adding internal structure to each widget.
do
Precursor {VITP_WIDGET}
build_land
end
set_widget_order
-- Ensure the widgets are ordered properly
-- (i.e. whose on top?)
do
Precursor {VITP_WIDGET}
bring_to_front (land)
bring_to_front (text_group)
end
add_actions
-- Make Current react to events
do
Precursor {VITP_WIDGET}
pointer_button_press_actions.extend (agent on_button_pressed)
pointer_button_release_actions.extend (agent on_button_released)
pointer_leave_actions.extend (agent on_pointer_leave)
end
build_land
-- Create any land masses in Current
do
end
feature -- Access
-- defining_figure: EV_MODEL
-- -- The figure to be used to determine if other figures
-- -- overlap this one or for capturing mouse events
-- do
-- Result := land
-- end
feature -- Basic operations
paint
-- Set the colors for the land and other areas
local
bc, c: EV_COLOR
do
Precursor {VITP_WIDGET}
bc := adjusted_color (Land_boundary_color)
c := adjusted_color (land_color)
from land.start
until land.exhausted
loop
check attached {EV_MODEL_POLYGON} land.item as p then
p.set_foreground_color (bc)
p.set_background_color (c)
end
land.forth
end
end
feature {NONE} -- Implementation (actions)
on_button_pressed (ax: INTEGER; ay: INTEGER; a_button: INTEGER; x_tilt: DOUBLE; y_tilt: DOUBLE;
pressure: DOUBLE; a_screen_x: INTEGER; a_screen_y: INTEGER)
-- React to a button press by brightening the location.
-- -- Notify `board_world' that Current was clicked
-- -- This allows the `board_world' to handle the click *and* to know the
-- -- widget on which the click occurred.
local
-- u_list: LINKED_SET [VITP_MOVEABLE]
g: EV_MODEL_GROUP
do
io.put_string ("LOCATION_WIDGET.on_button_press -- " + location.name + "%N")
g := group
is_highlighting := True
-- is_highlighting.set_item (true)
-- focused_widgets.extend (Current)
set_dimming_level ({DIMABLE}.Bright)
paint
-- -- Also, brighten all units that are at this location
-- check attached board_world as bw then
-- u_list := location.units
-- from u_list.start
-- until u_list.after
-- loop
-- check attached {ATTACK_UNIT_WIDGET} bw.attack_widgets.item (u_list.item) as w then
-- focused_widgets.extend (w)
-- w.set_dimming_level ({DIMABLE}.Bright)
-- w.paint
-- end
-- u_list.forth
-- end
-- end
end
on_button_released (ax: INTEGER; ay: INTEGER; a_button: INTEGER; x_tilt: DOUBLE; y_tilt: DOUBLE;
pressure: DOUBLE; a_screen_x: INTEGER; a_screen_y: INTEGER)
-- React to a button release event
do
if is_highlighting then
is_highlighting := false
restore_dimming_level
paint
end
end
on_pointer_leave
-- React to the pointer leaving the area [in case the
-- button was pressed and dragged off Current].
do
if is_highlighting then
is_highlighting := false
restore_dimming_level
paint
end
-- Precursor {VITP_NAMED_WIDGET}
end
feature {NONE} -- Implementation
is_highlighting: BOOLEAN
-- Is the location set brighter than normal?
land: EV_MODEL_WORLD
-- To draw the land area(s) in Current
land_color: EV_COLOR
-- The color with which to draw the land
target_imp: detachable LOCATION
-- Anchor for the `target' represented by Current
end

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,826 @@
note
description: "[
Widget representing the brown land of Asia
]"
author: "Jimmy J. Johnson"
class
ASIA_WIDGET
inherit
LOCATION_WIDGET
redefine
build_widgets,
build_land
end
create
default_create
feature {NONE} -- Initialization
build_widgets
-- Add widgets to Current
do
Precursor {LOCATION_WIDGET}
-- Remove `text_widget'
prune_all (text_widget)
-- Put polygons representing land into the `land'
-- Make adjustments
rotate_widget (land, 12.0)
scale_widget (land, 0.27)
land.set_point_position (0,0)
translate_widget (Current, -5, -11)
end
build_land
-- Add `land' to Current and create the polygons.
do
Precursor {LOCATION_WIDGET}
-- Put polygons representing land into the `land'
land.extend (hainan)
land.extend (mainland)
land.extend (taiwan)
end
feature {NONE} -- Implementation
mainland: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (1442.25, -307))
Result.extend_point (create {EV_COORDINATE}.make_precise (1441.2499999999993, -296))
Result.extend_point (create {EV_COORDINATE}.make_precise (1443.2499999999993, -270))
Result.extend_point (create {EV_COORDINATE}.make_precise (1443.2499999999993, -257))
Result.extend_point (create {EV_COORDINATE}.make_precise (1448.25, -255))
Result.extend_point (create {EV_COORDINATE}.make_precise (1441.2499999999993, -249))
Result.extend_point (create {EV_COORDINATE}.make_precise (1444.25, -236))
Result.extend_point (create {EV_COORDINATE}.make_precise (1439.2499999999993, -228.00000000000003))
Result.extend_point (create {EV_COORDINATE}.make_precise (1440.25, -215))
Result.extend_point (create {EV_COORDINATE}.make_precise (1436.2499999999993, -211.00000000000003))
Result.extend_point (create {EV_COORDINATE}.make_precise (1437.2499999999993, -202))
Result.extend_point (create {EV_COORDINATE}.make_precise (1427.2499999999993, -191.00000000000006))
Result.extend_point (create {EV_COORDINATE}.make_precise (1419.2499999999993, -183))
Result.extend_point (create {EV_COORDINATE}.make_precise (1415.25, -177.00000000000006))
Result.extend_point (create {EV_COORDINATE}.make_precise (1412.3611111111104, -169.11111111111117))
Result.extend_point (create {EV_COORDINATE}.make_precise (1411.25, -162))
Result.extend_point (create {EV_COORDINATE}.make_precise (1402.25, -157.00000000000006))
Result.extend_point (create {EV_COORDINATE}.make_precise (1398.2499999999993, -147))
Result.extend_point (create {EV_COORDINATE}.make_precise (1393.25, -136.00000000000006))
Result.extend_point (create {EV_COORDINATE}.make_precise (1388.3611111111104, -126.44444444444446))
Result.extend_point (create {EV_COORDINATE}.make_precise (1386.25, -123))
Result.extend_point (create {EV_COORDINATE}.make_precise (1380.2499999999993, -110))
Result.extend_point (create {EV_COORDINATE}.make_precise (1371.2499999999993, -104))
Result.extend_point (create {EV_COORDINATE}.make_precise (1364.2499999999993, -93.000000000000085))
Result.extend_point (create {EV_COORDINATE}.make_precise (1358.2499999999993, -90))
Result.extend_point (create {EV_COORDINATE}.make_precise (1349.25, -77))
Result.extend_point (create {EV_COORDINATE}.make_precise (1346.5833333333328, -74.000000000000085))
Result.extend_point (create {EV_COORDINATE}.make_precise (1345.6944444444443, -66))
Result.extend_point (create {EV_COORDINATE}.make_precise (1338.2499999999995, -67.000000000000114))
Result.extend_point (create {EV_COORDINATE}.make_precise (1334.25, -55.000000000000114))
Result.extend_point (create {EV_COORDINATE}.make_precise (1327.2499999999995, -42.000000000000114))
Result.extend_point (create {EV_COORDINATE}.make_precise (1318.25, -34.000000000000114))
Result.extend_point (create {EV_COORDINATE}.make_precise (1299.2499999999995, -23))
Result.extend_point (create {EV_COORDINATE}.make_precise (1294.5833333333328, -17.111111111111256))
Result.extend_point (create {EV_COORDINATE}.make_precise (1292.3611111111106, -18.000000000000114))
Result.extend_point (create {EV_COORDINATE}.make_precise (1290.1388888888882, -16.222222222222342))
Result.extend_point (create {EV_COORDINATE}.make_precise (1286.1388888888882, -16.222222222222342))
Result.extend_point (create {EV_COORDINATE}.make_precise (1282.1388888888882, -14.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (1274.2499999999995, -13.000000000000114))
Result.extend_point (create {EV_COORDINATE}.make_precise (1271.9166666666661, -16.666666666666799))
Result.extend_point (create {EV_COORDINATE}.make_precise (1269.25, -13.555555555555657))
Result.extend_point (create {EV_COORDINATE}.make_precise (1266.1388888888882, -18.000000000000114))
Result.extend_point (create {EV_COORDINATE}.make_precise (1263.4722222222222, -15.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (1259.9166666666661, -19.333333333333456))
Result.extend_point (create {EV_COORDINATE}.make_precise (1257.2499999999995, -17.000000000000114))
Result.extend_point (create {EV_COORDINATE}.make_precise (1257.2499999999995, -27))
Result.extend_point (create {EV_COORDINATE}.make_precise (1254.5833333333328, -26.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (1251.9166666666661, -26.000000000000114))
Result.extend_point (create {EV_COORDINATE}.make_precise (1247.2499999999995, -19.000000000000171))
Result.extend_point (create {EV_COORDINATE}.make_precise (1243.9166666666661, -18.888888888888999))
Result.extend_point (create {EV_COORDINATE}.make_precise (1247.0277777777776, -24.222222222222342))
Result.extend_point (create {EV_COORDINATE}.make_precise (1249.2499999999995, -30))
Result.extend_point (create {EV_COORDINATE}.make_precise (1243.2499999999995, -29.000000000000114))
Result.extend_point (create {EV_COORDINATE}.make_precise (1241.6944444444439, -23.777777777777914))
Result.extend_point (create {EV_COORDINATE}.make_precise (1236.805555555555, -18.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (1232.25, -10))
Result.extend_point (create {EV_COORDINATE}.make_precise (1217.25, -11))
Result.extend_point (create {EV_COORDINATE}.make_precise (1223.2499999999995, -7.0000000000001137))
Result.extend_point (create {EV_COORDINATE}.make_precise (1221.2499999999995, 2))
Result.extend_point (create {EV_COORDINATE}.make_precise (1218.5833333333328, -0.22222222222234222))
Result.extend_point (create {EV_COORDINATE}.make_precise (1214.25, 2))
Result.extend_point (create {EV_COORDINATE}.make_precise (1211.0277777777774, 4.222222222222058))
Result.extend_point (create {EV_COORDINATE}.make_precise (1207.4722222222222, 8.222222222222058))
Result.extend_point (create {EV_COORDINATE}.make_precise (1204.805555555555, 8.6666666666665151))
Result.extend_point (create {EV_COORDINATE}.make_precise (1202.5833333333333, 15.333333333333201))
Result.extend_point (create {EV_COORDINATE}.make_precise (1197.2499999999995, 18.999999999999886))
Result.extend_point (create {EV_COORDINATE}.make_precise (1197.2499999999995, 27))
Result.extend_point (create {EV_COORDINATE}.make_precise (1199.9166666666661, 30.444444444444343))
Result.extend_point (create {EV_COORDINATE}.make_precise (1197.6944444444439, 34.888888888888687))
Result.extend_point (create {EV_COORDINATE}.make_precise (1199.0277777777776, 42.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (1198.1388888888882, 46.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (1195.4722222222217, 45.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (1185.2499999999995, 50))
Result.extend_point (create {EV_COORDINATE}.make_precise (1184.2499999999995, 56.999999999999829))
Result.extend_point (create {EV_COORDINATE}.make_precise (1181.6944444444443, 56.222222222222058))
Result.extend_point (create {EV_COORDINATE}.make_precise (1177.6944444444443, 59.777777777777601))
Result.extend_point (create {EV_COORDINATE}.make_precise (1173.25, 59))
Result.extend_point (create {EV_COORDINATE}.make_precise (1174.25, 64.999999999999829))
Result.extend_point (create {EV_COORDINATE}.make_precise (1168.3611111111106, 67.333333333333144))
Result.extend_point (create {EV_COORDINATE}.make_precise (1163.0277777777774, 68.666666666666515))
Result.extend_point (create {EV_COORDINATE}.make_precise (1157.2499999999995, 67))
Result.extend_point (create {EV_COORDINATE}.make_precise (1152.3611111111106, 74.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (1147.2499999999995, 77))
Result.extend_point (create {EV_COORDINATE}.make_precise (1148.805555555555, 82.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (1147.0277777777774, 87.777777777777601))
Result.extend_point (create {EV_COORDINATE}.make_precise (1144.805555555555, 87.777777777777601))
Result.extend_point (create {EV_COORDINATE}.make_precise (1145.6944444444439, 93.555555555555316))
Result.extend_point (create {EV_COORDINATE}.make_precise (1153.2499999999993, 98))
Result.extend_point (create {EV_COORDINATE}.make_precise (1167.2499999999995, 110.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (1173.25, 126.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1179.4722222222222, 136.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (1184.805555555555, 136.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (1190.1388888888882, 141.11111111111092))
Result.extend_point (create {EV_COORDINATE}.make_precise (1189.6944444444443, 146.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (1189.2499999999995, 152.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (1191.2499999999995, 156.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1191.2499999999995, 171.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (1188.25, 184.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (1195.2499999999995, 183.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (1193.2499999999995, 198))
Result.extend_point (create {EV_COORDINATE}.make_precise (1184.2499999999995, 208.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1178.25, 212.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1174.1388888888882, 210.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (1172.3611111111106, 208.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (1172.3611111111106, 212.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (1164.2499999999995, 213.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1162.1388888888882, 216.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (1159.4722222222217, 213.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1157.2499999999995, 213.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1161.25, 220.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (1156.3611111111106, 220.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (1154.5833333333328, 215.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (1149.6944444444439, 216.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (1152.805555555555, 217.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (1154.1388888888882, 222.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (1149.2499999999995, 222.44444444444417))
Result.extend_point (create {EV_COORDINATE}.make_precise (1148.3611111111106, 219.33333333333309))
Result.extend_point (create {EV_COORDINATE}.make_precise (1145.2499999999995, 218.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (1147.0277777777774, 223.33333333333309))
Result.extend_point (create {EV_COORDINATE}.make_precise (1139.9166666666661, 229.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (1140.805555555555, 225.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (1143.9166666666665, 221.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (1136.805555555555, 222.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (1135.0277777777774, 228.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (1131.9166666666665, 228.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (1130.5833333333328, 225.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (1128.3611111111106, 229.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (1128.2499999999995, 232.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1124.3611111111106, 233.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (1124.805555555555, 226.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (1121.25, 226.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (1120.805555555555, 230.44444444444417))
Result.extend_point (create {EV_COORDINATE}.make_precise (1116.805555555555, 231.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (1114.2499999999993, 228.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1117.6944444444439, 226.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (1119.4722222222217, 221.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (1121.6944444444443, 222))
Result.extend_point (create {EV_COORDINATE}.make_precise (1124.805555555555, 222.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (1125.6944444444439, 217.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (1122.2499999999995, 216.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1120.805555555555, 213.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (1122.5833333333333, 211.33333333333309))
Result.extend_point (create {EV_COORDINATE}.make_precise (1120.2499999999995, 204.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (1123.9166666666661, 195.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (1128.2499999999995, 191.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1131.4722222222217, 188.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (1126.5833333333328, 189.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (1128.2499999999995, 185.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1124.3611111111106, 181.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (1124.3611111111106, 168.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (1119.4722222222217, 166.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (1115.2499999999995, 163.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (1119.0277777777774, 159.33333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (1120.805555555555, 161.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (1121.6944444444443, 157.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (1123.9166666666661, 158.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (1124.3611111111106, 156.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (1128.2499999999995, 156.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1132.805555555555, 161.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (1131.4722222222217, 156.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (1131.4722222222217, 153.11111111111092))
Result.extend_point (create {EV_COORDINATE}.make_precise (1127.9166666666661, 151.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (1132.3611111111106, 148.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (1127.0277777777776, 145.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (1127.25, 140))
Result.extend_point (create {EV_COORDINATE}.make_precise (1119.25, 134))
Result.extend_point (create {EV_COORDINATE}.make_precise (1116.3611111111109, 136.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (1114.5833333333328, 133.11111111111092))
Result.extend_point (create {EV_COORDINATE}.make_precise (1110.2499999999995, 132.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1108.3611111111106, 127.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (1105.6944444444439, 129.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (1105.6944444444439, 132.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (1104.2499999999995, 138.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1100.805555555555, 136.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (1097.6944444444439, 137.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (1100.805555555555, 131.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (1095.4722222222222, 132.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (1089.6944444444439, 130.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (1094.5833333333333, 127.33333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (1095.9166666666661, 125.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (1083.9166666666661, 125.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (1088.2499999999995, 117))
Result.extend_point (create {EV_COORDINATE}.make_precise (1095.4722222222222, 98))
Result.extend_point (create {EV_COORDINATE}.make_precise (1099.9166666666661, 91.777777777777601))
Result.extend_point (create {EV_COORDINATE}.make_precise (1098.5833333333328, 86.444444444444173))
Result.extend_point (create {EV_COORDINATE}.make_precise (1101.6944444444439, 81.555555555555316))
Result.extend_point (create {EV_COORDINATE}.make_precise (1097.25, 83.777777777777601))
Result.extend_point (create {EV_COORDINATE}.make_precise (1096.2499999999993, 81))
Result.extend_point (create {EV_COORDINATE}.make_precise (1082.25, 78))
Result.extend_point (create {EV_COORDINATE}.make_precise (1079.4722222222217, 74.888888888888687))
Result.extend_point (create {EV_COORDINATE}.make_precise (1075.9166666666661, 75.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (1074.5833333333328, 70.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (1072.3611111111106, 76.222222222222001))
Result.extend_point (create {EV_COORDINATE}.make_precise (1051.2499999999995, 77))
Result.extend_point (create {EV_COORDINATE}.make_precise (1030.2499999999995, 89))
Result.extend_point (create {EV_COORDINATE}.make_precise (1024.805555555555, 93.555555555555316))
Result.extend_point (create {EV_COORDINATE}.make_precise (1018.583333333333, 99.777777777777601))
Result.extend_point (create {EV_COORDINATE}.make_precise (1015.0277777777774, 104.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (1009.2499999999997, 103.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (1004.2499999999997, 108))
Result.extend_point (create {EV_COORDINATE}.make_precise (1003.2499999999995, 99.999999999999829))
Result.extend_point (create {EV_COORDINATE}.make_precise (1012.2499999999995, 95.999999999999829))
Result.extend_point (create {EV_COORDINATE}.make_precise (1014.2499999999997, 87.999999999999829))
Result.extend_point (create {EV_COORDINATE}.make_precise (1004.2499999999997, 87.999999999999829))
Result.extend_point (create {EV_COORDINATE}.make_precise (1009.694444444444, 84.222222222222001))
Result.extend_point (create {EV_COORDINATE}.make_precise (1005.694444444444, 82.888888888888687))
Result.extend_point (create {EV_COORDINATE}.make_precise (1009.2499999999995, 78.999999999999829))
Result.extend_point (create {EV_COORDINATE}.make_precise (1010.2499999999997, 72.999999999999829))
Result.extend_point (create {EV_COORDINATE}.make_precise (1016.805555555555, 72.222222222222001))
Result.extend_point (create {EV_COORDINATE}.make_precise (1020.2499999999997, 63.999999999999829))
Result.extend_point (create {EV_COORDINATE}.make_precise (1026.25, 58))
Result.extend_point (create {EV_COORDINATE}.make_precise (1027.0277777777774, 53.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (1021.2499999999993, 45.999999999999829))
Result.extend_point (create {EV_COORDINATE}.make_precise (1002.2499999999997, 42.999999999999829))
Result.extend_point (create {EV_COORDINATE}.make_precise (1000.2499999999995, 50))
Result.extend_point (create {EV_COORDINATE}.make_precise (994.13888888888846, 50.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (991.24999999999955, 60))
Result.extend_point (create {EV_COORDINATE}.make_precise (988.24999999999932, 64.999999999999829))
Result.extend_point (create {EV_COORDINATE}.make_precise (966.25, 72))
Result.extend_point (create {EV_COORDINATE}.make_precise (960.24999999999966, 83.999999999999829))
Result.extend_point (create {EV_COORDINATE}.make_precise (957.25, 94))
Result.extend_point (create {EV_COORDINATE}.make_precise (947.02777777777737, 94))
Result.extend_point (create {EV_COORDINATE}.make_precise (939.25, 98))
Result.extend_point (create {EV_COORDINATE}.make_precise (933.24999999999966, 92.999999999999829))
Result.extend_point (create {EV_COORDINATE}.make_precise (924.24999999999966, 99))
Result.extend_point (create {EV_COORDINATE}.make_precise (922.13888888888846, 107.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (928.24999999999955, 120.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (942.24999999999966, 127.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (947.25, 125))
Result.extend_point (create {EV_COORDINATE}.make_precise (953.25, 127.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (958.24999999999955, 136.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (954.25, 141.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (956.25, 150.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (965.25, 154.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (973.24999999999955, 149.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (981.25, 141.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (984.36111111111063, 137.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (996.24999999999966, 134))
Result.extend_point (create {EV_COORDINATE}.make_precise (1005.2499999999997, 140))
Result.extend_point (create {EV_COORDINATE}.make_precise (1010.1388888888888, 143.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (1022.2499999999997, 143))
Result.extend_point (create {EV_COORDINATE}.make_precise (1036.2499999999995, 147))
Result.extend_point (create {EV_COORDINATE}.make_precise (1035.4722222222217, 152.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (1032.3611111111106, 153.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (1034.2499999999995, 159))
Result.extend_point (create {EV_COORDINATE}.make_precise (1029.6944444444439, 161.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (1021.2499999999993, 159.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1000.8055555555552, 168.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (998.1388888888888, 174.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (995.02777777777737, 172.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (991.24999999999955, 180.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (984.36111111111063, 183.33333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (983.91666666666629, 179.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (978.58333333333326, 180.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (982.13888888888823, 185.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (977.24999999999966, 188.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (974.25, 192.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (972.36111111111063, 197.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (968.36111111111063, 197.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (966.58333333333303, 203.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (961.24999999999932, 212.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (959.47222222222183, 216.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (959.02777777777737, 220.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (962.58333333333326, 220.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (965.25, 225))
Result.extend_point (create {EV_COORDINATE}.make_precise (973.694444444444, 228.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (983.25, 235.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1001.25, 280))
Result.extend_point (create {EV_COORDINATE}.make_precise (1008.2499999999997, 283.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1010.2499999999997, 295))
Result.extend_point (create {EV_COORDINATE}.make_precise (1016.25, 293.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1022.2499999999997, 307.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1016.25, 314))
Result.extend_point (create {EV_COORDINATE}.make_precise (1022.2499999999997, 324.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1008.2499999999997, 326.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (1000.2499999999995, 336))
Result.extend_point (create {EV_COORDINATE}.make_precise (1006.2499999999993, 337.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (1017.25, 346.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (1024.3611111111106, 344.66666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (1030.583333333333, 348.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (1021.694444444444, 348.22222222222183))
Result.extend_point (create {EV_COORDINATE}.make_precise (1023.9166666666666, 351.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (1027.4722222222222, 355.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (1022.1388888888888, 354.88888888888846))
Result.extend_point (create {EV_COORDINATE}.make_precise (1017.25, 359))
Result.extend_point (create {EV_COORDINATE}.make_precise (1009.2499999999997, 361.11111111111074))
Result.extend_point (create {EV_COORDINATE}.make_precise (1021.2499999999997, 359.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (1021.2499999999997, 365.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (1021.694444444444, 373.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (1016.805555555555, 369.55555555555509))
Result.extend_point (create {EV_COORDINATE}.make_precise (1013.25, 372.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (1015.0277777777774, 378))
Result.extend_point (create {EV_COORDINATE}.make_precise (1014.1388888888883, 381.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (1010.583333333333, 382.44444444444412))
Result.extend_point (create {EV_COORDINATE}.make_precise (1013.25, 388.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (1014.5833333333333, 394))
Result.extend_point (create {EV_COORDINATE}.make_precise (1010.583333333333, 392.22222222222183))
Result.extend_point (create {EV_COORDINATE}.make_precise (1007.0277777777774, 396.66666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (1003.4722222222218, 398.44444444444412))
Result.extend_point (create {EV_COORDINATE}.make_precise (1003.9166666666663, 392.66666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (1000.2499999999995, 400.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (996.36111111111063, 402.44444444444412))
Result.extend_point (create {EV_COORDINATE}.make_precise (992.8055555555552, 409.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (991.24999999999955, 415.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (980.25, 427.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (978.58333333333326, 435.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (974.1388888888888, 437.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (976.36111111111063, 432.66666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (971.91666666666629, 433.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (968.36111111111063, 432.66666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (968.8055555555552, 436.22222222222183))
Result.extend_point (create {EV_COORDINATE}.make_precise (972.36111111111063, 439.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (974.1388888888888, 443.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (969.24999999999966, 445.5555555555552))
Result.extend_point (create {EV_COORDINATE}.make_precise (967.47222222222217, 451.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (969.694444444444, 452.66666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (967.91666666666629, 456.22222222222183))
Result.extend_point (create {EV_COORDINATE}.make_precise (967.91666666666629, 459.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (964.80555555555497, 460.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (971.02777777777737, 461.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (972.8055555555552, 464.22222222222183))
Result.extend_point (create {EV_COORDINATE}.make_precise (968.8055555555552, 467.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (965.25, 468.66666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (963.02777777777737, 464.66666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (957.25, 466))
Result.extend_point (create {EV_COORDINATE}.make_precise (960.8055555555552, 470.88888888888846))
Result.extend_point (create {EV_COORDINATE}.make_precise (955.47222222222217, 471.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (953.25, 477))
Result.extend_point (create {EV_COORDINATE}.make_precise (950.58333333333326, 481.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (944.8055555555552, 481.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (948.36111111111063, 483.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (944.36111111111063, 488.66666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (941.694444444444, 486.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (942.13888888888835, 491.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (936.8055555555552, 490.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (935.47222222222183, 486.88888888888846))
Result.extend_point (create {EV_COORDINATE}.make_precise (930.58333333333303, 490.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (934.13888888888846, 494.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (930.13888888888835, 497.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (928.36111111111063, 502.88888888888846))
Result.extend_point (create {EV_COORDINATE}.make_precise (924.8055555555552, 500.66666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (923.02777777777737, 505.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (919.91666666666629, 505.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (917.694444444444, 511.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (915.02777777777737, 509.5555555555552))
Result.extend_point (create {EV_COORDINATE}.make_precise (908.36111111111063, 513.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (903.02777777777737, 518.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (898.58333333333326, 523.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (896.36111111111063, 527.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (891.91666666666663, 527.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (879.47222222222217, 531.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (874.25, 529.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (875.91666666666629, 535.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (869.694444444444, 534))
Result.extend_point (create {EV_COORDINATE}.make_precise (867.02777777777737, 531.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (862.13888888888846, 534))
Result.extend_point (create {EV_COORDINATE}.make_precise (859.02777777777737, 538))
Result.extend_point (create {EV_COORDINATE}.make_precise (856.36111111111063, 532.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (853.694444444444, 533.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (852.24999999999966, 537))
Result.extend_point (create {EV_COORDINATE}.make_precise (846.13888888888846, 537.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (847.47222222222217, 542.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (844.8055555555552, 546.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (840.24999999999966, 547))
Result.extend_point (create {EV_COORDINATE}.make_precise (838.58333333333303, 541.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (835.02777777777737, 537.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (832.24999999999966, 532))
Result.extend_point (create {EV_COORDINATE}.make_precise (831.91666666666663, 543.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (828.25, 550.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (823.47222222222217, 550))
Result.extend_point (create {EV_COORDINATE}.make_precise (823.02777777777737, 553.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (819.47222222222183, 546.88888888888846))
Result.extend_point (create {EV_COORDINATE}.make_precise (817.69444444444412, 551.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (815.02777777777737, 554.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (812.36111111111074, 551.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (808.8055555555552, 557.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (803.91666666666629, 555.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (794.58333333333303, 556.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (795.02777777777737, 559.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (789.69444444444412, 562.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (788.36111111111109, 556.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (787.47222222222183, 562.88888888888846))
Result.extend_point (create {EV_COORDINATE}.make_precise (778.58333333333303, 564.66666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (765.25, 565.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (762.13888888888846, 573.5555555555552))
Result.extend_point (create {EV_COORDINATE}.make_precise (763.91666666666629, 578.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (756.8055555555552, 575.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (759.02777777777737, 571.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (754.58333333333303, 574.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (753.24999999999966, 578.88888888888846))
Result.extend_point (create {EV_COORDINATE}.make_precise (757.25, 579.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (757.25, 581.5555555555552))
Result.extend_point (create {EV_COORDINATE}.make_precise (758.58333333333303, 584.66666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (761.24999999999966, 586.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (756.25, 594))
Result.extend_point (create {EV_COORDINATE}.make_precise (746.24999999999966, 592.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (746.13888888888846, 587.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (740.25, 583))
Result.extend_point (create {EV_COORDINATE}.make_precise (743.02777777777749, 580.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (740.25, 574))
Result.extend_point (create {EV_COORDINATE}.make_precise (743.9166666666664, 568.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (746.13888888888846, 564.66666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (741.25, 564))
Result.extend_point (create {EV_COORDINATE}.make_precise (728.36111111111109, 565.5555555555552))
Result.extend_point (create {EV_COORDINATE}.make_precise (729.25, 561.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (718.24999999999977, 559.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (716.80555555555532, 553.5555555555552))
Result.extend_point (create {EV_COORDINATE}.make_precise (715.9166666666664, 561.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (697.24999999999977, 564))
Result.extend_point (create {EV_COORDINATE}.make_precise (695.9166666666664, 568.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (690.13888888888869, 569.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (694.58333333333303, 570.88888888888835))
Result.extend_point (create {EV_COORDINATE}.make_precise (693.24999999999977, 574))
Result.extend_point (create {EV_COORDINATE}.make_precise (683.02777777777749, 577.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (678.13888888888869, 579.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (675.02777777777749, 583.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (675.25, 592))
Result.extend_point (create {EV_COORDINATE}.make_precise (660.25, 598.99999999999932))
Result.extend_point (create {EV_COORDINATE}.make_precise (653.24999999999977, 608.66666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (650.58333333333303, 624.66666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (655.47222222222217, 635.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (666.24999999999977, 643.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (668.24999999999977, 655.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (682.25, 670.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (687.25, 678.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (704.25, 691.99999999999932))
Result.extend_point (create {EV_COORDINATE}.make_precise (714.13888888888846, 704.22222222222172))
Result.extend_point (create {EV_COORDINATE}.make_precise (730.25, 741))
Result.extend_point (create {EV_COORDINATE}.make_precise (729.25, 793.55555555555497))
Result.extend_point (create {EV_COORDINATE}.make_precise (620.80555555555543, 818.59259259259238))
Result.extend_point (create {EV_COORDINATE}.make_precise (584.06481481481478, 788.07407407407391))
Result.extend_point (create {EV_COORDINATE}.make_precise (576.36111111111109, 786.29629629629608))
Result.extend_point (create {EV_COORDINATE}.make_precise (576.65740740740739, 790.74074074074042))
Result.extend_point (create {EV_COORDINATE}.make_precise (573.99074074074065, 791.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (574.25, 784.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (566.58333333333314, 777.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (559.25, 774.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (548.36111111111086, 774))
Result.extend_point (create {EV_COORDINATE}.make_precise (540.24999999999977, 776))
Result.extend_point (create {EV_COORDINATE}.make_precise (543.0277777777776, 756.22222222222172))
Result.extend_point (create {EV_COORDINATE}.make_precise (536.80555555555532, 754.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (527.91666666666663, 754.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (521.25, 758.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (523.02777777777749, 766))
Result.extend_point (create {EV_COORDINATE}.make_precise (520.80555555555532, 774))
Result.extend_point (create {EV_COORDINATE}.make_precise (519.91666666666663, 784.66666666666606))
Result.extend_point (create {EV_COORDINATE}.make_precise (518.13888888888869, 790.88888888888823))
Result.extend_point (create {EV_COORDINATE}.make_precise (515.47222222222194, 795.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (511.472222222222, 804.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (510.58333333333309, 813.55555555555475))
Result.extend_point (create {EV_COORDINATE}.make_precise (509.24999999999983, 817.55555555555475))
Result.extend_point (create {EV_COORDINATE}.make_precise (504.80555555555532, 822.88888888888823))
Result.extend_point (create {EV_COORDINATE}.make_precise (502.13888888888869, 839.33333333333235))
Result.extend_point (create {EV_COORDINATE}.make_precise (502.58333333333331, 845.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (506.13888888888869, 849.55555555555497))
Result.extend_point (create {EV_COORDINATE}.make_precise (504.36111111111092, 851.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (506.58333333333314, 854.88888888888823))
Result.extend_point (create {EV_COORDINATE}.make_precise (511.472222222222, 853.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (515.47222222222194, 851.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (519.02777777777749, 853.55555555555497))
Result.extend_point (create {EV_COORDINATE}.make_precise (520.36111111111109, 862))
Result.extend_point (create {EV_COORDINATE}.make_precise (521.25, 868.22222222222172))
Result.extend_point (create {EV_COORDINATE}.make_precise (524.80555555555532, 873.55555555555475))
Result.extend_point (create {EV_COORDINATE}.make_precise (527.02777777777749, 872.22222222222172))
Result.extend_point (create {EV_COORDINATE}.make_precise (527.91666666666663, 878))
Result.extend_point (create {EV_COORDINATE}.make_precise (531.02777777777749, 890.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (534.58333333333314, 900.22222222222172))
Result.extend_point (create {EV_COORDINATE}.make_precise (543.91666666666663, 907.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (551.02777777777749, 908.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (556.36111111111109, 907.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (561.24999999999977, 916.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (570.13888888888869, 922.88888888888823))
Result.extend_point (create {EV_COORDINATE}.make_precise (564.80555555555532, 930.44444444444389))
Result.extend_point (create {EV_COORDINATE}.make_precise (563.02777777777749, 934.88888888888823))
Result.extend_point (create {EV_COORDINATE}.make_precise (557.24999999999977, 930.44444444444389))
Result.extend_point (create {EV_COORDINATE}.make_precise (551.91666666666652, 931.77777777777692))
Result.extend_point (create {EV_COORDINATE}.make_precise (547.0277777777776, 928.66666666666606))
Result.extend_point (create {EV_COORDINATE}.make_precise (546.58333333333303, 923.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (542.13888888888869, 922.44444444444366))
Result.extend_point (create {EV_COORDINATE}.make_precise (538.13888888888869, 916.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (532.80555555555532, 916.66666666666606))
Result.extend_point (create {EV_COORDINATE}.make_precise (527.02777777777749, 911.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (524.36111111111086, 918.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (519.91666666666663, 911.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (515.02777777777749, 909.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (514.58333333333326, 904.66666666666606))
Result.extend_point (create {EV_COORDINATE}.make_precise (510.58333333333309, 898))
Result.extend_point (create {EV_COORDINATE}.make_precise (507.91666666666652, 899.33333333333258))
Result.extend_point (create {EV_COORDINATE}.make_precise (505.6944444444444, 890.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (506.13888888888869, 886.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (503.0277777777776, 890.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (500.80555555555532, 894.88888888888823))
Result.extend_point (create {EV_COORDINATE}.make_precise (499.472222222222, 885.55555555555475))
Result.extend_point (create {EV_COORDINATE}.make_precise (497.25, 882.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (492.80555555555532, 881.55555555555475))
Result.extend_point (create {EV_COORDINATE}.make_precise (489.6944444444444, 875.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (491.02777777777749, 869.55555555555475))
Result.extend_point (create {EV_COORDINATE}.make_precise (486.13888888888869, 875.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (486.58333333333303, 879.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (486.58333333333303, 884.22222222222172))
Result.extend_point (create {EV_COORDINATE}.make_precise (483.91666666666652, 886.88888888888823))
Result.extend_point (create {EV_COORDINATE}.make_precise (482.13888888888869, 879.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (480.80555555555532, 869.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (481.24999999999983, 856.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (484.80555555555532, 851.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (488.36111111111109, 837.55555555555497))
Result.extend_point (create {EV_COORDINATE}.make_precise (487.472222222222, 831.3333333333328))
Result.extend_point (create {EV_COORDINATE}.make_precise (487.472222222222, 827.33333333333258))
Result.extend_point (create {EV_COORDINATE}.make_precise (486.13888888888869, 820.22222222222172))
Result.extend_point (create {EV_COORDINATE}.make_precise (489.6944444444444, 816.22222222222172))
Result.extend_point (create {EV_COORDINATE}.make_precise (491.91666666666663, 815.33333333333235))
Result.extend_point (create {EV_COORDINATE}.make_precise (491.02777777777749, 809.55555555555475))
Result.extend_point (create {EV_COORDINATE}.make_precise (492.80555555555532, 807.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (492.80555555555532, 802.88888888888823))
Result.extend_point (create {EV_COORDINATE}.make_precise (492.36111111111109, 796.66666666666606))
Result.extend_point (create {EV_COORDINATE}.make_precise (489.24999999999983, 796.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (489.24999999999983, 794))
Result.extend_point (create {EV_COORDINATE}.make_precise (487.0277777777776, 794))
Result.extend_point (create {EV_COORDINATE}.make_precise (485.69444444444423, 788.66666666666606))
Result.extend_point (create {EV_COORDINATE}.make_precise (487.91666666666652, 790.44444444444389))
Result.extend_point (create {EV_COORDINATE}.make_precise (491.472222222222, 790.44444444444389))
Result.extend_point (create {EV_COORDINATE}.make_precise (488.36111111111109, 785.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (487.472222222222, 781.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (483.472222222222, 782.88888888888823))
Result.extend_point (create {EV_COORDINATE}.make_precise (483.02777777777749, 778.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (483.472222222222, 774))
Result.extend_point (create {EV_COORDINATE}.make_precise (485.69444444444423, 776.66666666666606))
Result.extend_point (create {EV_COORDINATE}.make_precise (488.36111111111109, 778.88888888888823))
Result.extend_point (create {EV_COORDINATE}.make_precise (490.13888888888869, 775.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (491.02777777777749, 772.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (489.24999999999983, 762.88888888888823))
Result.extend_point (create {EV_COORDINATE}.make_precise (485.25, 755.33333333333258))
Result.extend_point (create {EV_COORDINATE}.make_precise (482.13888888888869, 750.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (480.36111111111109, 754.88888888888823))
Result.extend_point (create {EV_COORDINATE}.make_precise (478.13888888888869, 750.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (478.58333333333331, 742.88888888888835))
Result.extend_point (create {EV_COORDINATE}.make_precise (477.69444444444423, 738.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (475.47222222222206, 733.55555555555497))
Result.extend_point (create {EV_COORDINATE}.make_precise (472.80555555555554, 725.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (470.58333333333314, 713.55555555555497))
Result.extend_point (create {EV_COORDINATE}.make_precise (469.25, 706.88888888888835))
Result.extend_point (create {EV_COORDINATE}.make_precise (469.25, 700.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (467.0277777777776, 697.55555555555497))
Result.extend_point (create {EV_COORDINATE}.make_precise (465.25, 690.88888888888835))
Result.extend_point (create {EV_COORDINATE}.make_precise (461.25, 684.22222222222172))
Result.extend_point (create {EV_COORDINATE}.make_precise (459.0277777777776, 680.22222222222172))
Result.extend_point (create {EV_COORDINATE}.make_precise (456.36111111111109, 672.66666666666606))
Result.extend_point (create {EV_COORDINATE}.make_precise (456.80555555555537, 669.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (453.69444444444423, 672.66666666666606))
Result.extend_point (create {EV_COORDINATE}.make_precise (450.58333333333309, 671.3333333333328))
Result.extend_point (create {EV_COORDINATE}.make_precise (450.58333333333309, 673.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (448.36111111111109, 674.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (448.36111111111109, 678.88888888888835))
Result.extend_point (create {EV_COORDINATE}.make_precise (444.36111111111109, 682.88888888888835))
Result.extend_point (create {EV_COORDINATE}.make_precise (439.91666666666652, 684.22222222222172))
Result.extend_point (create {EV_COORDINATE}.make_precise (436.36111111111092, 678.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (439.02777777777766, 685.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (432.80555555555554, 687.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (431.91666666666652, 690.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (426.13888888888869, 691.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (424.80555555555554, 694.44444444444355))
Result.extend_point (create {EV_COORDINATE}.make_precise (419.91666666666652, 700.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (416.36111111111097, 701.55555555555497))
Result.extend_point (create {EV_COORDINATE}.make_precise (412.80555555555543, 701.55555555555497))
Result.extend_point (create {EV_COORDINATE}.make_precise (410.58333333333331, 698.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (411.02777777777766, 692.66666666666606))
Result.extend_point (create {EV_COORDINATE}.make_precise (408.36111111111097, 701.55555555555497))
Result.extend_point (create {EV_COORDINATE}.make_precise (404.36111111111097, 702))
Result.extend_point (create {EV_COORDINATE}.make_precise (400.36111111111109, 700.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (397.6944444444444, 696.66666666666606))
Result.extend_point (create {EV_COORDINATE}.make_precise (395.02777777777766, 698.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (393.69444444444434, 696.66666666666606))
Result.extend_point (create {EV_COORDINATE}.make_precise (399.91666666666652, 690.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (400.36111111111109, 683.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (398.13888888888869, 688.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (390.13888888888874, 697.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (389.69444444444434, 690.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (393.69444444444434, 678.88888888888835))
Result.extend_point (create {EV_COORDINATE}.make_precise (396.80555555555554, 662.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (394.58333333333331, 644.22222222222172))
Result.extend_point (create {EV_COORDINATE}.make_precise (387.02777777777766, 629.55555555555497))
Result.extend_point (create {EV_COORDINATE}.make_precise (386.13888888888874, 620.66666666666606))
Result.extend_point (create {EV_COORDINATE}.make_precise (383.91666666666652, 622.44444444444366))
Result.extend_point (create {EV_COORDINATE}.make_precise (383.47222222222206, 627.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (379.02777777777771, 625.55555555555486))
Result.extend_point (create {EV_COORDINATE}.make_precise (375.91666666666652, 620.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (373.24999999999989, 614.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (374.58333333333331, 613.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (378.13888888888874, 615.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (380.80555555555543, 618.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (381.24999999999989, 615.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (377.69444444444434, 610.44444444444366))
Result.extend_point (create {EV_COORDINATE}.make_precise (378.58333333333314, 604.22222222222183))
Result.extend_point (create {EV_COORDINATE}.make_precise (373.24999999999989, 601.55555555555486))
Result.extend_point (create {EV_COORDINATE}.make_precise (375.47222222222206, 606))
Result.extend_point (create {EV_COORDINATE}.make_precise (371.91666666666652, 606))
Result.extend_point (create {EV_COORDINATE}.make_precise (369.25, 599.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (365.69444444444434, 600.66666666666617))
Result.extend_point (create {EV_COORDINATE}.make_precise (360.80555555555543, 597.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (362.58333333333326, 593.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (359.47222222222206, 597.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (356.80555555555543, 595.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (356.80555555555543, 586.44444444444366))
Result.extend_point (create {EV_COORDINATE}.make_precise (355.02777777777766, 594))
Result.extend_point (create {EV_COORDINATE}.make_precise (351.47222222222211, 586.88888888888846))
Result.extend_point (create {EV_COORDINATE}.make_precise (345.69444444444434, 579.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (338.13888888888874, 569.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (335.91666666666657, 554.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (337.24999999999989, 552.22222222222183))
Result.extend_point (create {EV_COORDINATE}.make_precise (333.24999999999989, 542.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (331.47222222222217, 536.22222222222183))
Result.extend_point (create {EV_COORDINATE}.make_precise (326.58333333333326, 533.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (327.02777777777766, 536.66666666666606))
Result.extend_point (create {EV_COORDINATE}.make_precise (329.69444444444434, 540.22222222222183))
Result.extend_point (create {EV_COORDINATE}.make_precise (328.36111111111097, 542.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (325.24999999999989, 538.44444444444366))
Result.extend_point (create {EV_COORDINATE}.make_precise (322.13888888888874, 539.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (320.36111111111097, 542.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (320.80555555555543, 546))
Result.extend_point (create {EV_COORDINATE}.make_precise (316.36111111111097, 550))
Result.extend_point (create {EV_COORDINATE}.make_precise (316.36111111111097, 543.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (315.91666666666657, 535.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (309.24999999999989, 525.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (307.47222222222211, 516.22222222222183))
Result.extend_point (create {EV_COORDINATE}.make_precise (306.1388888888888, 517.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (307.02777777777777, 526.44444444444366))
Result.extend_point (create {EV_COORDINATE}.make_precise (310.13888888888874, 528.22222222222149))
Result.extend_point (create {EV_COORDINATE}.make_precise (311.02777777777766, 532.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (313.24999999999989, 538.88888888888846))
Result.extend_point (create {EV_COORDINATE}.make_precise (312.80555555555554, 545.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (309.69444444444434, 550.44444444444366))
Result.extend_point (create {EV_COORDINATE}.make_precise (304.36111111111103, 554.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (297.25, 555.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (294.1388888888888, 552.66666666666617))
Result.extend_point (create {EV_COORDINATE}.make_precise (291.02777777777777, 549.5555555555552))
Result.extend_point (create {EV_COORDINATE}.make_precise (290.58333333333326, 555.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (283.91666666666663, 558.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (278.58333333333326, 557.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (278.58333333333326, 559.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (273.25, 559.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (270.1388888888888, 557.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (269.24999999999994, 561.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (266.1388888888888, 561.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (264.80555555555549, 555.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (263.02777777777771, 563.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (259.47222222222217, 562.44444444444366))
Result.extend_point (create {EV_COORDINATE}.make_precise (260.80555555555543, 556.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (257.69444444444434, 561.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (255.02777777777771, 561.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (254.58333333333326, 557.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (251.02777777777777, 560.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (248.80555555555546, 559.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (251.02777777777777, 553.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (254.58333333333326, 547.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (252.36111111111103, 546.88888888888835))
Result.extend_point (create {EV_COORDINATE}.make_precise (247.91666666666663, 553.99999999999932))
Result.extend_point (create {EV_COORDINATE}.make_precise (244.80555555555549, 559.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (236.80555555555546, 560.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (231.47222222222217, 561.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (224.36111111111106, 565.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (222.58333333333331, 573.5555555555552))
Result.extend_point (create {EV_COORDINATE}.make_precise (223.47222222222217, 581.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (227.47222222222217, 581.55555555555497))
Result.extend_point (create {EV_COORDINATE}.make_precise (223.02777777777777, 585.5555555555552))
Result.extend_point (create {EV_COORDINATE}.make_precise (220.80555555555551, 589.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (225.24999999999994, 587.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (219.9166666666666, 592.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (214.13888888888889, 598.88888888888846))
Result.extend_point (create {EV_COORDINATE}.make_precise (205.6944444444444, 603.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (190.13888888888886, 609.55555555555497))
Result.extend_point (create {EV_COORDINATE}.make_precise (175.02777777777777, 621.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (157.25, 643.3333333333328))
Result.extend_point (create {EV_COORDINATE}.make_precise (146.58333333333331, 652.22222222222172))
Result.extend_point (create {EV_COORDINATE}.make_precise (137.69444444444446, 658.44444444444366))
end
hainan: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (763.02777777777737, 601.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (760.8055555555552, 598.88888888888846))
Result.extend_point (create {EV_COORDINATE}.make_precise (764.8055555555552, 596.66666666666606))
Result.extend_point (create {EV_COORDINATE}.make_precise (767.47222222222217, 599.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (770.5833333333328, 599.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (771.47222222222217, 608.66666666666606))
Result.extend_point (create {EV_COORDINATE}.make_precise (765.25, 615.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (763.91666666666617, 618.88888888888835))
Result.extend_point (create {EV_COORDINATE}.make_precise (763.02777777777737, 625.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (759.91666666666663, 628.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (761.69444444444412, 630.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (759.02777777777737, 631.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (756.36111111111074, 631.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (751.02777777777737, 634.88888888888823))
Result.extend_point (create {EV_COORDINATE}.make_precise (751.47222222222217, 638.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (749.25, 639.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (746.58333333333303, 637.99999999999932))
Result.extend_point (create {EV_COORDINATE}.make_precise (742.58333333333303, 640.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (743.9166666666664, 642.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (738.13888888888846, 643.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (735.9166666666664, 641.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (731.02777777777737, 641.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (724.80555555555532, 639.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (721.69444444444412, 637.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (719.02777777777715, 636.66666666666617))
Result.extend_point (create {EV_COORDINATE}.make_precise (718.58333333333303, 631.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (717.69444444444412, 627.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (718.13888888888869, 620.66666666666606))
Result.extend_point (create {EV_COORDINATE}.make_precise (718.13888888888869, 616.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (724.36111111111086, 611.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (729.69444444444412, 607.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (729.25, 605.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (732.80555555555532, 603.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (737.24999999999977, 604.22222222222183))
Result.extend_point (create {EV_COORDINATE}.make_precise (738.13888888888846, 600.22222222222149))
Result.extend_point (create {EV_COORDINATE}.make_precise (741.25, 600.22222222222149))
Result.extend_point (create {EV_COORDINATE}.make_precise (744.8055555555552, 600.66666666666617))
Result.extend_point (create {EV_COORDINATE}.make_precise (749.69444444444412, 600.66666666666617))
Result.extend_point (create {EV_COORDINATE}.make_precise (753.24999999999966, 598.88888888888846))
Result.extend_point (create {EV_COORDINATE}.make_precise (757.25, 597.5555555555552))
end
taiwan: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (1009.2499999999995, 473.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (1009.694444444444, 469.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (1012.8055555555549, 469.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (1015.0277777777774, 472.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (1019.0277777777774, 473.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (1023.0277777777774, 477.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (1020.3611111111106, 478.88888888888846))
Result.extend_point (create {EV_COORDINATE}.make_precise (1017.6944444444437, 483.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (1019.4722222222218, 488.22222222222183))
Result.extend_point (create {EV_COORDINATE}.make_precise (1019.4722222222218, 494.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (1014.1388888888883, 499.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (1013.25, 501.55555555555497))
Result.extend_point (create {EV_COORDINATE}.make_precise (1012.8055555555549, 512.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (1009.694444444444, 520.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (1007.4722222222215, 527.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (1000.805555555555, 533.55555555555497))
Result.extend_point (create {EV_COORDINATE}.make_precise (998.1388888888888, 539.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (997.694444444444, 544.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (997.694444444444, 550.44444444444366))
Result.extend_point (create {EV_COORDINATE}.make_precise (995.47222222222149, 553.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (993.25, 553.11111111111063))
Result.extend_point (create {EV_COORDINATE}.make_precise (992.36111111111063, 550))
Result.extend_point (create {EV_COORDINATE}.make_precise (992.36111111111063, 547.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (989.694444444444, 542.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (987.02777777777737, 540.22222222222183))
Result.extend_point (create {EV_COORDINATE}.make_precise (983.02777777777737, 538.88888888888846))
Result.extend_point (create {EV_COORDINATE}.make_precise (980.8055555555552, 528.66666666666617))
Result.extend_point (create {EV_COORDINATE}.make_precise (978.13888888888823, 524.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (979.47222222222183, 518.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (980.36111111111063, 506.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (983.02777777777737, 505.99999999999955))
Result.extend_point (create {EV_COORDINATE}.make_precise (985.694444444444, 498))
Result.extend_point (create {EV_COORDINATE}.make_precise (990.58333333333303, 491.77777777777737))
Result.extend_point (create {EV_COORDINATE}.make_precise (991.91666666666606, 487.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (994.58333333333269, 484.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (998.1388888888888, 478.444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (1003.0277777777774, 474.88888888888835))
end
invariant
-- correct_location: attached target_imp implies location = vitp.asia
end

View File

@@ -0,0 +1,855 @@
note
description: "[
Widget representing the brown land of Kamchatka and Sakhalin
]"
author: "Jimmy J. Johnson"
class
KAMCHATKA_WIDGET
inherit
LOCATION_WIDGET
redefine
build_widgets,
build_land
end
create
default_create
feature {NONE} -- Initialization
build_widgets
-- Add widgets to Current
do
Precursor {LOCATION_WIDGET} -- calls `build_land'
-- Remove `text_widget'
prune_all (text_widget)
-- Make adjustments
scale_widget (Current, 0.07)
rotate_widget (land, 12.0)
set_point_position (0,0)
translate_widget (Current, 485, -10)
end
build_land
-- Add `land' to Current and create the polygons.
do
Precursor {LOCATION_WIDGET}
-- Put polygons representing land into the `land'
land.extend (kamchatsky)
land.extend (shumshu)
land.extend (paramushir)
land.extend (atlasov)
land.extend (onekotan)
land.extend (makanrushi)
land.extend (kharimkotan)
land.extend (shiashkotan)
land.extend (ekarma)
land.extend (matua)
land.extend (rasshua)
land.extend (ketoy)
land.extend (simushir)
land.extend (sakhalin)
end
feature {NONE} -- Implementation
kamchatsky: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (-6.6666666666667425, -48))
Result.extend_point (create {EV_COORDINATE}.make_precise (-13.333333333333712, -83.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (355.33333333333326, -132))
Result.extend_point (create {EV_COORDINATE}.make_precise (353.33333333333326, -120))
Result.extend_point (create {EV_COORDINATE}.make_precise (348, -106.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (343.33333333333326, -93.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (342.66666666666652, -74.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (345.33333333333326, -65.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (348.66666666666652, -68))
Result.extend_point (create {EV_COORDINATE}.make_precise (347.33333333333326, -59.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (353.33333333333326, -52))
Result.extend_point (create {EV_COORDINATE}.make_precise (352.66666666666652, -34.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (346.66666666666652, -36.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (342, -40))
Result.extend_point (create {EV_COORDINATE}.make_precise (342.66666666666652, -34))
Result.extend_point (create {EV_COORDINATE}.make_precise (342.66666666666652, -24))
Result.extend_point (create {EV_COORDINATE}.make_precise (344.66666666666652, -22))
Result.extend_point (create {EV_COORDINATE}.make_precise (349.33333333333326, -22.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (350, -18.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (346.66666666666652, -12))
Result.extend_point (create {EV_COORDINATE}.make_precise (354, -14))
Result.extend_point (create {EV_COORDINATE}.make_precise (352.66666666666652, -8.6666666666666572))
Result.extend_point (create {EV_COORDINATE}.make_precise (348, -2.6666666666666572))
Result.extend_point (create {EV_COORDINATE}.make_precise (351.33333333333326, 4))
Result.extend_point (create {EV_COORDINATE}.make_precise (353.33333333333326, -0.66666666666665719))
Result.extend_point (create {EV_COORDINATE}.make_precise (358, -2.6666666666666572))
Result.extend_point (create {EV_COORDINATE}.make_precise (356.66666666666652, 4))
Result.extend_point (create {EV_COORDINATE}.make_precise (361.33333333333326, 4))
Result.extend_point (create {EV_COORDINATE}.make_precise (360.66666666666652, 10.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (361.33333333333326, 16.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (358.66666666666652, 23.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (350.66666666666652, 18))
Result.extend_point (create {EV_COORDINATE}.make_precise (333.33333333333326, 7.3333333333333428))
Result.extend_point (create {EV_COORDINATE}.make_precise (336.66666666666652, 0.66666666666665719))
Result.extend_point (create {EV_COORDINATE}.make_precise (341.33333333333326, -4))
Result.extend_point (create {EV_COORDINATE}.make_precise (338, -4))
Result.extend_point (create {EV_COORDINATE}.make_precise (330.66666666666652, 4))
Result.extend_point (create {EV_COORDINATE}.make_precise (326, 1.3333333333333428))
Result.extend_point (create {EV_COORDINATE}.make_precise (323.33333333333326, -1.3333333333333428))
Result.extend_point (create {EV_COORDINATE}.make_precise (315.33333333333326, 0.66666666666665719))
Result.extend_point (create {EV_COORDINATE}.make_precise (308.66666666666652, 4))
Result.extend_point (create {EV_COORDINATE}.make_precise (301.33333333333326, 14))
Result.extend_point (create {EV_COORDINATE}.make_precise (297.33333333333326, 12))
Result.extend_point (create {EV_COORDINATE}.make_precise (290.66666666666652, 12))
Result.extend_point (create {EV_COORDINATE}.make_precise (278, 18))
Result.extend_point (create {EV_COORDINATE}.make_precise (263.33333333333326, 28))
Result.extend_point (create {EV_COORDINATE}.make_precise (255.33333333333326, 34.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (244.66666666666652, 47.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (241.33333333333326, 44.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (244, 50.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (239.33333333333326, 53.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (237.33333333333326, 46.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (234.66666666666652, 45.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (234.66666666666652, 40))
Result.extend_point (create {EV_COORDINATE}.make_precise (232.66666666666652, 31.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (228.66666666666652, 29.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (224.66666666666652, 28.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (222.66666666666652, 25.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (222.66666666666652, 30))
Result.extend_point (create {EV_COORDINATE}.make_precise (212.66666666666652, 34.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (213.33333333333326, 38.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (217.33333333333326, 40))
Result.extend_point (create {EV_COORDINATE}.make_precise (216.66666666666652, 43.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (213.33333333333326, 44.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (214.66666666666652, 50.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (222, 52.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (222, 49.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (226.66666666666652, 49.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (231.33333333333326, 49.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (230.66666666666652, 56.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (233.33333333333326, 60))
Result.extend_point (create {EV_COORDINATE}.make_precise (227.33333333333326, 63.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (226.66666666666652, 70.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (222.66666666666652, 68.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (219.33333333333326, 72))
Result.extend_point (create {EV_COORDINATE}.make_precise (219.33333333333326, 76))
Result.extend_point (create {EV_COORDINATE}.make_precise (224.66666666666652, 76.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (228, 81.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (228, 88.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (225.33333333333326, 92.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (219.33333333333326, 94.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (218, 91.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (211.33333333333326, 88.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (214, 94.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (217.33333333333326, 101.99999999999991))
Result.extend_point (create {EV_COORDINATE}.make_precise (220.66666666666652, 101.33333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (223.33333333333326, 108.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (219.33333333333326, 111.33333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (222, 115.99999999999991))
Result.extend_point (create {EV_COORDINATE}.make_precise (220.66666666666652, 118.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (216.66666666666652, 118.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (216.66666666666652, 123.33333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (212.66666666666652, 127.33333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (221.33333333333326, 122.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (225.33333333333326, 130.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (220, 134.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (220, 137.99999999999991))
Result.extend_point (create {EV_COORDINATE}.make_precise (225.33333333333326, 135.99999999999991))
Result.extend_point (create {EV_COORDINATE}.make_precise (226, 142.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (219.33333333333326, 146.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (214.66666666666652, 145.33333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (214.66666666666652, 149.99999999999991))
Result.extend_point (create {EV_COORDINATE}.make_precise (210.66666666666652, 155.33333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (212, 159.99999999999991))
Result.extend_point (create {EV_COORDINATE}.make_precise (208.66666666666652, 167.99999999999991))
Result.extend_point (create {EV_COORDINATE}.make_precise (205.33333333333326, 163.99999999999991))
Result.extend_point (create {EV_COORDINATE}.make_precise (201.33333333333326, 169.33333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (204, 176.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (200, 181.33333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (201.33333333333326, 191.33333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (194, 197.99999999999997))
Result.extend_point (create {EV_COORDINATE}.make_precise (189.33333333333326, 205.99999999999997))
Result.extend_point (create {EV_COORDINATE}.make_precise (184, 213.99999999999997))
Result.extend_point (create {EV_COORDINATE}.make_precise (178, 215.99999999999997))
Result.extend_point (create {EV_COORDINATE}.make_precise (173.33333333333326, 225.33333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (168.66666666666652, 235.33333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (166.66666666666652, 240.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (162.66666666666652, 240.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (159.33333333333326, 245.99999999999997))
Result.extend_point (create {EV_COORDINATE}.make_precise (156, 245.33333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (154.66666666666652, 250.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (146, 251.33333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (143.33333333333326, 253.99999999999997))
Result.extend_point (create {EV_COORDINATE}.make_precise (139.33333333333326, 253.33333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (137.33333333333326, 255.99999999999997))
Result.extend_point (create {EV_COORDINATE}.make_precise (132.66666666666652, 262.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (129.33333333333326, 268))
Result.extend_point (create {EV_COORDINATE}.make_precise (126.66666666666652, 276))
Result.extend_point (create {EV_COORDINATE}.make_precise (127.33333333333326, 281.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (118.66666666666652, 281.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (114, 287.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (104.66666666666652, 302.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (100, 303.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (92, 308.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (90.666666666666515, 314))
Result.extend_point (create {EV_COORDINATE}.make_precise (79.333333333333258, 324.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (74.666666666666515, 328))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.333333333333258, 331.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (62, 342.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (53.333333333333258, 350.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (51.333333333333258, 348))
Result.extend_point (create {EV_COORDINATE}.make_precise (60.666666666666515, 336))
Result.extend_point (create {EV_COORDINATE}.make_precise (61.333333333333258, 323.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (60.666666666666515, 319.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (57.333333333333258, 320.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (58, 309.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (56.666666666666515, 302.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (51.333333333333258, 295.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (46, 295.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (43.333333333333258, 291.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (41.333333333333258, 284.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (39.333333333333258, 271.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (36, 252.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (37.333333333333258, 235.99999999999997))
Result.extend_point (create {EV_COORDINATE}.make_precise (36.666666666666515, 221.33333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (34.666666666666515, 194.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (36, 171.33333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (31.333333333333258, 148.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (26, 123.33333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (16.666666666666288, 100.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (13.333333333333258, 89.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (6.6666666666662877, 70.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (2.6666666666662877, 38.666666666666657))
end
shumshu: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (37.333333333333258, 350.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (40, 365.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (34, 376))
Result.extend_point (create {EV_COORDINATE}.make_precise (30.666666666666515, 378))
Result.extend_point (create {EV_COORDINATE}.make_precise (30.666666666666515, 384))
Result.extend_point (create {EV_COORDINATE}.make_precise (22.666666666666515, 384.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (18.666666666666288, 384.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (13.333333333333258, 379.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (8.6666666666662877, 378))
Result.extend_point (create {EV_COORDINATE}.make_precise (8, 373.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (10, 364))
Result.extend_point (create {EV_COORDINATE}.make_precise (14, 363.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (24.666666666666515, 353.33333333333337))
end
paramushir: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-4.6666666666667425, 364.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (2, 366.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (5.1111111111108585, 366))
Result.extend_point (create {EV_COORDINATE}.make_precise (6, 370.44444444444446))
Result.extend_point (create {EV_COORDINATE}.make_precise (4.2222222222221717, 377.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (4.6666666666662877, 383.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (6.8888888888886868, 386.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (7.7777777777776009, 391.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (5.5555555555552019, 392.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (7.7777777777776009, 401.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (5.1111111111108585, 405.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (1.5555555555552019, 404.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-2.8888888888891415, 406.44444444444446))
Result.extend_point (create {EV_COORDINATE}.make_precise (-6.4444444444447981, 412.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (-4.6666666666667425, 417.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-6.8888888888891415, 419.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-9.5555555555556566, 422))
Result.extend_point (create {EV_COORDINATE}.make_precise (-10, 426.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-13.111111111111313, 430))
Result.extend_point (create {EV_COORDINATE}.make_precise (-14.888888888889142, 434.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-18, 440.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-22, 440.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-28.222222222222399, 449.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-31.777777777777828, 447.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-43.333333333333712, 449.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-47.333333333333712, 453.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-49.555555555555657, 453.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-54.444444444444798, 457.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-57.555555555555657, 465.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-62.444444444444798, 475.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-63.333333333333712, 470.44444444444446))
Result.extend_point (create {EV_COORDINATE}.make_precise (-66.888888888889142, 466.44444444444446))
Result.extend_point (create {EV_COORDINATE}.make_precise (-71.777777777777828, 466.44444444444446))
Result.extend_point (create {EV_COORDINATE}.make_precise (-78, 467.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-80.222222222222399, 462.44444444444446))
Result.extend_point (create {EV_COORDINATE}.make_precise (-77.555555555555657, 461.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-74.888888888889142, 454.44444444444446))
Result.extend_point (create {EV_COORDINATE}.make_precise (-74.888888888889142, 447.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-75.333333333333712, 442.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-78, 442))
Result.extend_point (create {EV_COORDINATE}.make_precise (-79.777777777777828, 437.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-78.888888888889142, 431.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-76.666666666666742, 430.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-72.666666666666742, 430.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-68.666666666666742, 433.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-66, 433.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-63.333333333333712, 429.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-59.777777777777828, 422.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-53.111111111111313, 423.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-48.666666666666742, 422))
Result.extend_point (create {EV_COORDINATE}.make_precise (-46.444444444444798, 419.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-42.888888888889142, 421.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-36.222222222222399, 418))
Result.extend_point (create {EV_COORDINATE}.make_precise (-30, 406))
Result.extend_point (create {EV_COORDINATE}.make_precise (-27.333333333333712, 401.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-24.222222222222399, 397.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-23.777777777777828, 390.44444444444446))
Result.extend_point (create {EV_COORDINATE}.make_precise (-21.555555555555657, 387.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-21.111111111111313, 382.44444444444446))
Result.extend_point (create {EV_COORDINATE}.make_precise (-18.444444444444798, 378.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-14.888888888889142, 372.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-9.5555555555556566, 367.33333333333337))
end
atlasov: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-55.777777777777828, 343.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-45.555555555555657, 342.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-42.888888888889142, 345.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-41.555555555555657, 343.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-38.444444444444798, 346))
Result.extend_point (create {EV_COORDINATE}.make_precise (-36.222222222222399, 350))
Result.extend_point (create {EV_COORDINATE}.make_precise (-37.555555555555657, 351.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-36.222222222222399, 354.44444444444446))
Result.extend_point (create {EV_COORDINATE}.make_precise (-38.888888888889142, 358.44444444444446))
Result.extend_point (create {EV_COORDINATE}.make_precise (-42.444444444444798, 360.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-46.444444444444798, 359.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-49.555555555555657, 359.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-53.555555555555657, 355.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-56.222222222222399, 349.11111111111097))
end
onekotan: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-114.88888888888914, 527.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-111.77777777777783, 526))
Result.extend_point (create {EV_COORDINATE}.make_precise (-111.33333333333371, 528.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-105.55555555555566, 529.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-107.77777777777783, 530.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-106.88888888888914, 536.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-108.2222222222224, 539.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-112.66666666666674, 542.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-114, 548.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-115.77777777777783, 550))
Result.extend_point (create {EV_COORDINATE}.make_precise (-116.2222222222224, 557.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-112.66666666666674, 561.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-112.66666666666674, 569.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-114.88888888888914, 573.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-118.4444444444448, 574.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-122.88888888888914, 578))
Result.extend_point (create {EV_COORDINATE}.make_precise (-126.88888888888914, 577.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-130.4444444444448, 577.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-133.55555555555566, 574))
Result.extend_point (create {EV_COORDINATE}.make_precise (-133.11111111111131, 564.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-129.55555555555566, 556.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-125.55555555555566, 550.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-125.55555555555566, 548.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-122, 542))
Result.extend_point (create {EV_COORDINATE}.make_precise (-119.77777777777783, 536.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-119.33333333333371, 532.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-115.77777777777783, 530.88888888888869))
end
makanrushi: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-155.33333333333371, 510))
Result.extend_point (create {EV_COORDINATE}.make_precise (-153.11111111111131, 508.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-154.88888888888914, 506))
Result.extend_point (create {EV_COORDINATE}.make_precise (-152.2222222222224, 501.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-147.77777777777783, 499.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-145.55555555555566, 503.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-146.88888888888914, 506.44444444444446))
Result.extend_point (create {EV_COORDINATE}.make_precise (-146.4444444444448, 509.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-148.2222222222224, 510.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-152.66666666666674, 511.33333333333337))
end
kharimkotan: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-147.77777777777783, 590.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-146, 593.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-142.88888888888914, 592.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-138.88888888888914, 592.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-137.11111111111131, 595.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-134.4444444444448, 596.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-134.4444444444448, 600.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-137.55555555555566, 604.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-139.77777777777783, 603.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-142, 605.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-145.11111111111131, 602))
Result.extend_point (create {EV_COORDINATE}.make_precise (-146.88888888888914, 597.55555555555554))
end
shiashkotan: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-180.66666666666674, 630.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-178, 630))
Result.extend_point (create {EV_COORDINATE}.make_precise (-176.66666666666674, 627.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-173.55555555555566, 627.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-170.88888888888914, 630.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-168.66666666666674, 631.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-170, 632.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-170.4444444444448, 636.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-174, 637.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-174, 641.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-178.4444444444448, 642))
Result.extend_point (create {EV_COORDINATE}.make_precise (-181.55555555555566, 643.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-183.33333333333371, 647.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-183.33333333333371, 650.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-186.88888888888914, 652.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-190.4444444444448, 652.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-191.33333333333371, 649.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-190.88888888888914, 645.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-187.77777777777783, 644.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-185.55555555555566, 645.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-181.55555555555566, 640.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-182, 636.22222222222217))
end
ekarma: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-195.77777777777783, 618.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-194, 620.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-190, 619.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-188.66666666666674, 623.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-191.77777777777783, 626))
Result.extend_point (create {EV_COORDINATE}.make_precise (-197.11111111111131, 626))
Result.extend_point (create {EV_COORDINATE}.make_precise (-197.11111111111131, 623.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-198.88888888888914, 620.22222222222217))
end
matua: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-263.33333333333371, 734.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-258.88888888888914, 739.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-254, 741.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-256.2222222222224, 742))
Result.extend_point (create {EV_COORDINATE}.make_precise (-255.77777777777783, 748.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-258, 746))
Result.extend_point (create {EV_COORDINATE}.make_precise (-260.66666666666674, 747.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-262, 745.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-265.11111111111131, 743.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-266.4444444444448, 736.22222222222217))
end
rasshua: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-277.11111111111131, 777.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-274, 781.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-273.11111111111131, 785.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-274.88888888888914, 789.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-276.2222222222224, 791.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-279.77777777777783, 793.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-280.2222222222224, 795.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-283.33333333333371, 795.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-284.2222222222224, 789.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-282.4444444444448, 788.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-283.33333333333371, 784.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-280.2222222222224, 778.88888888888869))
end
ketoy: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-333.55555555555566, 837.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-329.1111111111112, 834.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-328.66666666666674, 837.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-324.2222222222224, 836.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-322, 841.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-320.66666666666674, 843.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-322.88888888888903, 846.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-327.77777777777783, 847.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-332.2222222222224, 847.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-332.66666666666674, 845.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-334, 842.44444444444434))
end
simushir: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-353.55555555555566, 863.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-349.1111111111112, 864.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-343.77777777777783, 866.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-345.1111111111112, 869.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-346.88888888888903, 872.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-351.33333333333337, 875.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-353.1111111111112, 875.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-355.33333333333337, 879.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-355.33333333333337, 885.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-356.2222222222224, 888.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-361.55555555555566, 889.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (-362.88888888888903, 893.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-365.55555555555566, 896.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-368.2222222222224, 901.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-371.77777777777783, 902.88888888888857))
Result.extend_point (create {EV_COORDINATE}.make_precise (-374, 905.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-377.1111111111112, 905.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-381.1111111111112, 908.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-383.77777777777783, 913.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (-386.44444444444468, 917.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-390.88888888888903, 918.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-392.2222222222224, 917.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-395.33333333333337, 916.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-396.2222222222224, 913.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-398, 907.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-395.77777777777783, 905.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (-389.1111111111112, 904.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-386.88888888888903, 905.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (-383.77777777777783, 904.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-383.33333333333337, 900.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-380.66666666666674, 899.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-380.66666666666674, 895.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-374.44444444444468, 892.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-371.77777777777783, 888.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-367.77777777777783, 887.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-364.2222222222224, 881.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-360.2222222222224, 873.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (-356.2222222222224, 867.77777777777771))
end
sakhalin: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-1275, 263.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1155, 243.33333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1148, 282.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1133, 338.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1129.5555555555557, 360.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1126.8888888888889, 377.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1127.7777777777778, 389.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1121.1111111111111, 421.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1108.6666666666667, 455.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1099.3333333333333, 471.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1101.1111111111111, 475.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1089.1111111111111, 507.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1086.8888888888889, 511.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1088.6666666666667, 513.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1088.6666666666667, 525.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1078, 543.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1079.7777777777778, 546))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1078.8888888888889, 555.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1077.5555555555557, 562.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1075.7777777777778, 569.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1067.3333333333335, 593.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1068.2222222222222, 594.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1063.7777777777778, 610))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1053.5555555555557, 618.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1049.5555555555557, 622.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1045.1111111111111, 625.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1037.1111111111111, 633.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1038.4444444444443, 636.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1037.1111111111111, 640.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1035.7777777777778, 644.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1036.2222222222222, 646.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1038, 649.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1036.6666666666667, 655.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1034, 660.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1030.4444444444443, 662.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1032.2222222222222, 664.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1034.8888888888889, 663.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1037.5555555555557, 663.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1038.4444444444443, 658.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1041.5555555555557, 654))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1040.2222222222222, 646.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1042.8888888888889, 643.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1043.7777777777778, 640.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1044.2222222222222, 638.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1046.4444444444443, 636.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1049.1111111111111, 630))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1051.3333333333335, 627.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1053.1111111111111, 623.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1055.3333333333335, 622.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1059.3333333333335, 616.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1062.8888888888889, 613.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1069.5555555555557, 610.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1071.3333333333335, 604.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1073.5555555555557, 605.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1078.4444444444443, 595.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1080.6666666666667, 594))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1084.2222222222222, 589.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1086.8888888888889, 585.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1091.7777777777778, 582))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1102, 578))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1112.6666666666667, 574.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1126.4444444444443, 572.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1123.3333333333333, 570.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1124.6666666666667, 568.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1137.1111111111111, 566.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1140.2222222222222, 564.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1145.1111111111111, 566.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1149.1111111111111, 564.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1153.1111111111111, 558.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1160.6666666666667, 558))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1162, 556.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1168.6666666666667, 560.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1165.5555555555557, 566.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1162.8888888888889, 565.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1160.6666666666667, 567.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1163.3333333333333, 569.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1159.3333333333333, 569.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1154, 570.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1151.7777777777778, 569.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1142, 569.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1142.8888888888889, 570.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1150.4444444444443, 571.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1160.6666666666667, 573.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1174, 579.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1187.7777777777778, 591.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1193.5555555555557, 598.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1196.6666666666667, 610.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1193.1111111111111, 617.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1192.2222222222222, 627.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1194, 633.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1205.1111111111111, 655.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1213.1111111111111, 679.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1217.5555555555557, 697.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1220.2222222222222, 703.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1220.2222222222222, 707.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1223.7777777777778, 714))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1226.8888888888889, 729.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1232.2222222222222, 750.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1232.2222222222222, 762.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1234, 767.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1232.6666666666667, 770))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1233.5555555555557, 774.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1231.7777777777778, 788.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1224.6666666666667, 808.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1216.6666666666667, 821.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1208.2222222222222, 831.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1206, 830.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1201.5555555555557, 836.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1198.8888888888889, 836.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1192.6666666666667, 845.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1190, 850.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1186.8888888888889, 863.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1186, 868.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1188.2222222222222, 874.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1181.5555555555557, 888.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1181.5555555555557, 897.99999999999989))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1175.3333333333333, 905.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1177.1111111111111, 909.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1183.3333333333333, 905.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1183.7777777777778, 911.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1178.8888888888889, 913.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1178.8888888888889, 920.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1176.2222222222222, 921.99999999999989))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1175.7777777777778, 925.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1170.4444444444443, 923.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1164.2222222222222, 924.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1160.6666666666667, 927.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1157.1111111111111, 926.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1156.2222222222222, 921.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1158.8888888888889, 919.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1162, 918.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1166.4444444444443, 916.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1174.4444444444443, 914.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1175.7777777777778, 912.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1173.5555555555557, 908.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1168.2222222222222, 911.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1161.5555555555557, 913.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1155.3333333333333, 913.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1152.6666666666667, 911.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1152.6666666666667, 908.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1150.8888888888889, 907.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1147.7777777777778, 910.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1145.1111111111111, 924.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1144.6666666666667, 940.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1141.1111111111111, 952.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1138, 966.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1134.8888888888889, 969.99999999999989))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1135.7777777777778, 972.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1138.4444444444443, 973.99999999999989))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1139.3333333333333, 976.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1138, 980.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1142, 981.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1145.1111111111111, 989.99999999999989))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1147.3333333333333, 993.99999999999989))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1149.5555555555557, 1000.6666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1148.2222222222222, 1004.2222222222221))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1148.6666666666667, 1008.2222222222221))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1151.3333333333333, 1009.9999999999999))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1151.3333333333333, 1014.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1153.5555555555557, 1016.2222222222221))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1155.7777777777778, 1007.3333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1154.4444444444443, 1003.3333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1153.1111111111111, 997.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1152.2222222222222, 988.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1155.7777777777778, 980.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1157.5555555555557, 974.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1159.7777777777778, 970.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1161.1111111111111, 962.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1160.6666666666667, 957.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1164.2222222222222, 952.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1172.2222222222222, 943.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1176.6666666666667, 940.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1181.5555555555557, 940.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1188.6666666666667, 941.99999999999989))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1191.7777777777778, 939.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1200.2222222222222, 936.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1203.3333333333333, 938.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1207.3333333333333, 940.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1210.4444444444443, 940.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1212.6666666666667, 936.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1215.3333333333333, 927.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1215.3333333333333, 922.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1219.7777777777778, 920.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1219.3333333333333, 922.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1227.3333333333333, 924.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1234.4444444444443, 928.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1239.3333333333333, 933.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1244.6666666666667, 945.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1247.7777777777778, 954.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1254, 971.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1258, 982.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1258.4444444444443, 993.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1261.1111111111111, 1001.5555555555555))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1263.3333333333333, 1005.5555555555555))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1263.7777777777778, 1013.5555555555555))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1266.4444444444443, 1017.111111111111))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1270.8888888888889, 1017.9999999999999))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1273.5555555555557, 1022.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1273.5555555555557, 1033.9999999999998))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1276.6666666666667, 1031.3333333333333))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1278.8888888888889, 1029.1111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1282, 1023.3333333333334))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1284.2222222222222, 1017.111111111111))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1290.4444444444443, 1012.6666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1288.2222222222222, 1011.7777777777777))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1288.6666666666667, 1001.5555555555555))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1291.3333333333333, 983.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1293.5555555555557, 969.99999999999989))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1298, 954.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1299.7777777777778, 947.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1299.7777777777778, 939.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1296.6666666666667, 939.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1296.2222222222222, 934.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1296.6666666666667, 926.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1294, 925.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1290.4444444444443, 915.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1287.3333333333333, 905.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1282.4444444444443, 893.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1278.8888888888889, 879.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1276.6666666666667, 865.99999999999989))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1278.8888888888889, 857.99999999999989))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1283.7777777777778, 849.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1285.5555555555557, 845.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1282.4444444444443, 838.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1284.6666666666667, 830))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1286, 816.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1286.4444444444443, 805.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1282.8888888888889, 798.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1282, 790))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1275.3333333333333, 775.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1274, 770.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1267.7777777777778, 761.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1264.2222222222222, 755.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1265.5555555555557, 751.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1267.3333333333333, 731.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1266.8888888888889, 720.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1268.2222222222222, 717.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1267.7777777777778, 711.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1271.3333333333333, 705.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1274.8888888888889, 694))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1284.6666666666667, 679.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1293.5555555555557, 662.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1295.3333333333333, 647.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1293.1111111111111, 639.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1289.1111111111111, 636.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1285.5555555555557, 630.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1286.8888888888889, 625.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1282, 622))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1282, 612.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1279.7777777777778, 609.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1280.6666666666667, 597.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1277.5555555555557, 590.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1274.4444444444443, 582.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1275.7777777777778, 579.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1275.7777777777778, 562))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1272.6666666666667, 555.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1270.4444444444443, 550))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1269.1111111111111, 526))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1268.2222222222222, 521.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1267.3333333333333, 502.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1269.1111111111111, 501.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1270.8888888888889, 488.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1268.2222222222222, 485.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1269.5555555555557, 481.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1268.2222222222222, 472.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1266.4444444444443, 461.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1268.6666666666667, 436.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1271.3333333333333, 431.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1268.2222222222222, 429.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1269.1111111111111, 421.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1274.4444444444443, 411.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1275.7777777777778, 403.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1277.5555555555557, 400.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1278.4444444444443, 389.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1275.7777777777778, 376.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1273.5555555555557, 370.44444444444446))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1273.5555555555557, 358.44444444444446))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1271.7777777777778, 350.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1272.2222222222222, 345.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1265.1111111111111, 339.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1260.6666666666667, 329.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1259.3333333333333, 318.44444444444446))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1258.4444444444443, 309.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1261.5555555555557, 304.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1265.1111111111111, 299.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1266.8888888888889, 291.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1265.5555555555557, 288.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1268.2222222222222, 283.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1271.3333333333333, 280.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1273.5555555555557, 272.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1275.3333333333333, 268.22222222222217))
end
invariant
-- correct_location: attached target_imp implies location = vitp.kamchatka
end

View File

@@ -0,0 +1,497 @@
note
description: "[
Widget representing the brown land of the Northern Marshall Islands
]"
author: "Jimmy J. Johnson"
class
MARSHALLS_NORTH_WIDGET
inherit
LOCATION_WIDGET
redefine
build_widgets,
build_land
end
create
default_create
feature {NONE} -- Initialization
build_widgets
-- Add widgets to Current
do
Precursor {LOCATION_WIDGET} -- calls `build_land'
-- Remove `text_widget'
prune_all (text_widget)
-- Make adjustments
scale_widget (land, 0.07)
-- scale_widget (land, 0.08)
rotate_widget (land, 13.0)
translate_widget (Current, 450, -265)
end
build_land
-- Add `land' to Current and create the polygons.
do
Precursor {LOCATION_WIDGET}
-- Put polygons representing land into the `land'
land.extend (wake)
land.extend (taongi_atoll)
land.extend (bikar_atoll)
land.extend (utrik_atoll)
land.extend (taka_atoll)
land.extend (ailuk_atoll)
land.extend (likiep_atoll)
land.extend (wotje_atoll)
land.extend (erikub_atoll)
land.extend (kwajalein_atoll)
land.extend (namu_atoll)
land.extend (ailinglaplap_atoll)
land.extend (maloelap_atoll)
land.extend (aur_atoll)
land.extend (majuro_atoll)
land.extend (amo_atoll)
land.extend (ujae_atoll)
land.extend (wotho_atoll)
land.extend (ailinginae_atoll)
land.extend (rongelap_atoll)
land.extend (rongerik_atoll)
land.extend (bikini_atoll)
land.extend (enewetak_atoll)
end
feature {NONE} -- Implemetation
wake: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (-2.3703703703703241, -1.7777777777777768))
Result.extend_point (create {EV_COORDINATE}.make_precise (-2.074074074074133, -5.0370370370370345))
Result.extend_point (create {EV_COORDINATE}.make_precise (1.1851851851852189, -7.1111111111111072))
Result.extend_point (create {EV_COORDINATE}.make_precise (3.5555555555555429, -5.3333333333333321))
Result.extend_point (create {EV_COORDINATE}.make_precise (3.2592592592592382, -1.1851851851851833))
end
taongi_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (205.33333333333337, 433.18518518518511))
Result.extend_point (create {EV_COORDINATE}.make_precise (210.37037037037032, 432.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (216.5925925925925, 436.1481481481481))
Result.extend_point (create {EV_COORDINATE}.make_precise (220.14814814814815, 443.55555555555549))
Result.extend_point (create {EV_COORDINATE}.make_precise (217.48148148148141, 446.81481481481467))
Result.extend_point (create {EV_COORDINATE}.make_precise (211.55555555555554, 450.96296296296288))
Result.extend_point (create {EV_COORDINATE}.make_precise (209.77777777777771, 448.59259259259244))
Result.extend_point (create {EV_COORDINATE}.make_precise (210.96296296296293, 445.62962962962956))
Result.extend_point (create {EV_COORDINATE}.make_precise (210.07407407407402, 441.18518518518511))
Result.extend_point (create {EV_COORDINATE}.make_precise (207.70370370370358, 435.85185185185179))
end
bikar_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (314.07407407407402, 661.92592592592575))
Result.extend_point (create {EV_COORDINATE}.make_precise (315.25925925925912, 659.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (317.92592592592575, 661.03703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (320, 661.03703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (322.66666666666663, 665.18518518518511))
Result.extend_point (create {EV_COORDINATE}.make_precise (320.29629629629619, 669.92592592592575))
Result.extend_point (create {EV_COORDINATE}.make_precise (318.51851851851859, 672.29629629629619))
Result.extend_point (create {EV_COORDINATE}.make_precise (317.33333333333337, 670.81481481481455))
Result.extend_point (create {EV_COORDINATE}.make_precise (315.55555555555554, 670.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (313.77777777777771, 666.96296296296282))
Result.extend_point (create {EV_COORDINATE}.make_precise (314.96296296296293, 664.29629629629619))
end
utrik_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (289.77777777777771, 748.74074074074065))
Result.extend_point (create {EV_COORDINATE}.make_precise (291.25925925925912, 752.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (298.07407407407402, 759.70370370370358))
Result.extend_point (create {EV_COORDINATE}.make_precise (290.66666666666663, 762.96296296296282))
Result.extend_point (create {EV_COORDINATE}.make_precise (287.40740740740739, 764.14814814814792))
Result.extend_point (create {EV_COORDINATE}.make_precise (284.44444444444434, 760.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (284.44444444444434, 752.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (285.62962962962956, 749.92592592592575))
end
taka_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (266.07407407407402, 762.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (272.29629629629619, 762.07407407407402))
Result.extend_point (create {EV_COORDINATE}.make_precise (278.81481481481478, 760.59259259259238))
Result.extend_point (create {EV_COORDINATE}.make_precise (281.48148148148141, 761.4814814814813))
Result.extend_point (create {EV_COORDINATE}.make_precise (279.70370370370358, 763.85185185185173))
Result.extend_point (create {EV_COORDINATE}.make_precise (279.70370370370358, 771.85185185185173))
Result.extend_point (create {EV_COORDINATE}.make_precise (275.55555555555554, 773.92592592592575))
Result.extend_point (create {EV_COORDINATE}.make_precise (271.40740740740739, 773.92592592592575))
Result.extend_point (create {EV_COORDINATE}.make_precise (268.74074074074076, 769.18518518518499))
end
ailuk_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (293.03703703703695, 846.51851851851836))
Result.extend_point (create {EV_COORDINATE}.make_precise (297.77777777777771, 843.85185185185173))
Result.extend_point (create {EV_COORDINATE}.make_precise (300.14814814814815, 830.51851851851836))
Result.extend_point (create {EV_COORDINATE}.make_precise (304.5925925925925, 829.03703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (307.25925925925912, 836.74074074074065))
Result.extend_point (create {EV_COORDINATE}.make_precise (306.07407407407402, 844.14814814814792))
Result.extend_point (create {EV_COORDINATE}.make_precise (307.25925925925912, 854.51851851851836))
Result.extend_point (create {EV_COORDINATE}.make_precise (304, 853.62962962962956))
Result.extend_point (create {EV_COORDINATE}.make_precise (297.77777777777771, 854.81481481481455))
end
likiep_Atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (217.18518518518522, 883.25925925925912))
Result.extend_point (create {EV_COORDINATE}.make_precise (216.5925925925925, 880.29629629629619))
Result.extend_point (create {EV_COORDINATE}.make_precise (217.77777777777771, 878.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (217.77777777777771, 873.4814814814813))
Result.extend_point (create {EV_COORDINATE}.make_precise (215.40740740740739, 868.74074074074065))
Result.extend_point (create {EV_COORDINATE}.make_precise (220.44444444444434, 869.92592592592575))
Result.extend_point (create {EV_COORDINATE}.make_precise (225.18518518518522, 869.92592592592575))
Result.extend_point (create {EV_COORDINATE}.make_precise (229.62962962962956, 875.25925925925912))
Result.extend_point (create {EV_COORDINATE}.make_precise (243.25925925925912, 881.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (247.11111111111097, 890.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (236.14814814814815, 890.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (235.25925925925912, 893.33333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (227.25925925925912, 893.33333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (226.37037037037032, 889.18518518518499))
end
wotje_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (300.14814814814815, 936.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (293.92592592592575, 927.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (290.66666666666663, 927.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (290.07407407407402, 920.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (292.14814814814815, 917.03703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (315.55555555555554, 917.62962962962956))
Result.extend_point (create {EV_COORDINATE}.make_precise (322.37037037037032, 913.4814814814813))
Result.extend_point (create {EV_COORDINATE}.make_precise (331.55555555555554, 921.4814814814813))
Result.extend_point (create {EV_COORDINATE}.make_precise (329.48148148148141, 930.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (316.44444444444434, 931.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (312.5925925925925, 934.51851851851836))
end
erikub_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (298.96296296296293, 952.29629629629619))
Result.extend_point (create {EV_COORDINATE}.make_precise (299.85185185185185, 941.33333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (305.77777777777771, 940.74074074074065))
Result.extend_point (create {EV_COORDINATE}.make_precise (313.77777777777771, 946.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (319.70370370370358, 956.74074074074065))
Result.extend_point (create {EV_COORDINATE}.make_precise (319.11111111111097, 964.74074074074065))
Result.extend_point (create {EV_COORDINATE}.make_precise (312.5925925925925, 966.51851851851836))
Result.extend_point (create {EV_COORDINATE}.make_precise (309.92592592592575, 959.70370370370358))
Result.extend_point (create {EV_COORDINATE}.make_precise (305.18518518518522, 958.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (303.11111111111097, 955.25925925925912))
end
kwajalein_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (18.96296296296299, 935.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (33.185185185185219, 935.70370370370358))
Result.extend_point (create {EV_COORDINATE}.make_precise (43.851851851851904, 932.14814814814792))
Result.extend_point (create {EV_COORDINATE}.make_precise (62.222222222222172, 937.18518518518499))
Result.extend_point (create {EV_COORDINATE}.make_precise (71.111111111111086, 934.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (74.370370370370324, 934.51851851851836))
Result.extend_point (create {EV_COORDINATE}.make_precise (81.185185185185219, 928.29629629629619))
Result.extend_point (create {EV_COORDINATE}.make_precise (83.259259259259238, 937.18518518518499))
Result.extend_point (create {EV_COORDINATE}.make_precise (94.51851851851859, 948.44444444444412))
Result.extend_point (create {EV_COORDINATE}.make_precise (104.8888888888888, 958.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (102.81481481481478, 963.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (106.96296296296293, 974.81481481481455))
Result.extend_point (create {EV_COORDINATE}.make_precise (102.81481481481478, 979.85185185185173))
Result.extend_point (create {EV_COORDINATE}.make_precise (103.11111111111109, 993.4814814814813))
Result.extend_point (create {EV_COORDINATE}.make_precise (91.259259259259238, 986.37037037037021))
Result.extend_point (create {EV_COORDINATE}.make_precise (85.629629629629676, 979.25925925925912))
Result.extend_point (create {EV_COORDINATE}.make_precise (84.148148148148152, 970.96296296296282))
Result.extend_point (create {EV_COORDINATE}.make_precise (86.51851851851859, 966.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (78.51851851851859, 959.70370370370358))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.333333333333371, 956.74074074074065))
Result.extend_point (create {EV_COORDINATE}.make_precise (58.666666666666629, 959.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (51.851851851851848, 954.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (46.222222222222172, 955.85185185185173))
Result.extend_point (create {EV_COORDINATE}.make_precise (34.370370370370324, 946.37037037037021))
Result.extend_point (create {EV_COORDINATE}.make_precise (27.555555555555543, 942.51851851851836))
Result.extend_point (create {EV_COORDINATE}.make_precise (21.925925925925867, 939.55555555555532))
end
namu_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (123.55555555555554, 1042.3703703703702))
Result.extend_point (create {EV_COORDINATE}.make_precise (123.25925925925924, 1039.1111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (126.81481481481478, 1038.2222222222219))
Result.extend_point (create {EV_COORDINATE}.make_precise (130.66666666666663, 1039.9999999999998))
Result.extend_point (create {EV_COORDINATE}.make_precise (144.2962962962963, 1041.185185185185))
Result.extend_point (create {EV_COORDINATE}.make_precise (144, 1051.5555555555552))
Result.extend_point (create {EV_COORDINATE}.make_precise (144.8888888888888, 1057.4814814814813))
Result.extend_point (create {EV_COORDINATE}.make_precise (152, 1068.1481481481478))
Result.extend_point (create {EV_COORDINATE}.make_precise (156.74074074074076, 1073.7777777777774))
Result.extend_point (create {EV_COORDINATE}.make_precise (154.66666666666663, 1079.9999999999998))
Result.extend_point (create {EV_COORDINATE}.make_precise (145.77777777777771, 1082.0740740740739))
Result.extend_point (create {EV_COORDINATE}.make_precise (141.03703703703695, 1071.4074074074074))
Result.extend_point (create {EV_COORDINATE}.make_precise (142.81481481481478, 1067.2592592592591))
Result.extend_point (create {EV_COORDINATE}.make_precise (138.07407407407402, 1061.9259259259256))
Result.extend_point (create {EV_COORDINATE}.make_precise (135.11111111111109, 1051.8518518518517))
Result.extend_point (create {EV_COORDINATE}.make_precise (127.11111111111109, 1048.8888888888887))
end
ailinglaplap_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (176.5925925925925, 1108.4444444444441))
Result.extend_point (create {EV_COORDINATE}.make_precise (181.62962962962968, 1104.5925925925924))
Result.extend_point (create {EV_COORDINATE}.make_precise (188.74074074074076, 1104.2962962962961))
Result.extend_point (create {EV_COORDINATE}.make_precise (194.96296296296293, 1101.6296296296296))
Result.extend_point (create {EV_COORDINATE}.make_precise (201.18518518518522, 1101.333333333333))
Result.extend_point (create {EV_COORDINATE}.make_precise (205.62962962962968, 1097.4814814814813))
Result.extend_point (create {EV_COORDINATE}.make_precise (210.07407407407402, 1093.6296296296296))
Result.extend_point (create {EV_COORDINATE}.make_precise (216.5925925925925, 1094.2222222222219))
Result.extend_point (create {EV_COORDINATE}.make_precise (213.03703703703695, 1099.8518518518517))
Result.extend_point (create {EV_COORDINATE}.make_precise (213.62962962962968, 1107.8518518518517))
Result.extend_point (create {EV_COORDINATE}.make_precise (207.11111111111109, 1114.0740740740739))
Result.extend_point (create {EV_COORDINATE}.make_precise (208, 1120.5925925925924))
Result.extend_point (create {EV_COORDINATE}.make_precise (201.18518518518522, 1125.9259259259256))
Result.extend_point (create {EV_COORDINATE}.make_precise (198.22222222222217, 1129.185185185185))
Result.extend_point (create {EV_COORDINATE}.make_precise (191.70370370370358, 1126.2222222222219))
Result.extend_point (create {EV_COORDINATE}.make_precise (189.62962962962968, 1122.6666666666665))
Result.extend_point (create {EV_COORDINATE}.make_precise (180.14814814814815, 1116.1481481481478))
end
maloelap_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (380.74074074074076, 974.81481481481455))
Result.extend_point (create {EV_COORDINATE}.make_precise (394.07407407407402, 973.92592592592575))
Result.extend_point (create {EV_COORDINATE}.make_precise (404.14814814814815, 976.59259259259238))
Result.extend_point (create {EV_COORDINATE}.make_precise (412.44444444444434, 984.29629629629619))
Result.extend_point (create {EV_COORDINATE}.make_precise (417.48148148148141, 985.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (421.62962962962956, 992.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (416.29629629629619, 1000.8888888888887))
Result.extend_point (create {EV_COORDINATE}.make_precise (415.70370370370358, 1009.4814814814813))
Result.extend_point (create {EV_COORDINATE}.make_precise (416.8888888888888, 1013.037037037037))
Result.extend_point (create {EV_COORDINATE}.make_precise (412.74074074074076, 1014.2222222222219))
Result.extend_point (create {EV_COORDINATE}.make_precise (404.14814814814815, 1013.037037037037))
Result.extend_point (create {EV_COORDINATE}.make_precise (400.29629629629619, 1007.1111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (399.40740740740739, 1002.074074074074))
Result.extend_point (create {EV_COORDINATE}.make_precise (392, 988.74074074074065))
Result.extend_point (create {EV_COORDINATE}.make_precise (386.96296296296293, 984.29629629629619))
end
aur_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (400.29629629629619, 1039.4074074074074))
Result.extend_point (create {EV_COORDINATE}.make_precise (402.66666666666663, 1023.9999999999998))
Result.extend_point (create {EV_COORDINATE}.make_precise (413.33333333333337, 1029.037037037037))
Result.extend_point (create {EV_COORDINATE}.make_precise (413.03703703703695, 1038.2222222222219))
Result.extend_point (create {EV_COORDINATE}.make_precise (415.70370370370358, 1041.4814814814813))
Result.extend_point (create {EV_COORDINATE}.make_precise (415.11111111111097, 1047.1111111111109))
end
majuro_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (401.18518518518522, 1136.8888888888887))
Result.extend_point (create {EV_COORDINATE}.make_precise (404.44444444444434, 1129.4814814814813))
Result.extend_point (create {EV_COORDINATE}.make_precise (416.5925925925925, 1135.4074074074074))
Result.extend_point (create {EV_COORDINATE}.make_precise (423.11111111111097, 1134.5185185185182))
Result.extend_point (create {EV_COORDINATE}.make_precise (432.29629629629619, 1137.7777777777774))
Result.extend_point (create {EV_COORDINATE}.make_precise (434.96296296296293, 1141.6296296296296))
Result.extend_point (create {EV_COORDINATE}.make_precise (418.96296296296293, 1146.6666666666665))
end
amo_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (449.48148148148141, 1142.2222222222219))
Result.extend_point (create {EV_COORDINATE}.make_precise (456.88888888888869, 1129.7777777777774))
Result.extend_point (create {EV_COORDINATE}.make_precise (459.55555555555532, 1136.2962962962961))
Result.extend_point (create {EV_COORDINATE}.make_precise (462.81481481481478, 1136.8888888888887))
Result.extend_point (create {EV_COORDINATE}.make_precise (469.33333333333314, 1141.037037037037))
Result.extend_point (create {EV_COORDINATE}.make_precise (478.22222222222206, 1141.037037037037))
Result.extend_point (create {EV_COORDINATE}.make_precise (483.55555555555532, 1138.3703703703702))
Result.extend_point (create {EV_COORDINATE}.make_precise (483.85185185185185, 1141.6296296296296))
Result.extend_point (create {EV_COORDINATE}.make_precise (477.92592592592575, 1143.9999999999998))
Result.extend_point (create {EV_COORDINATE}.make_precise (470.81481481481478, 1149.9259259259256))
Result.extend_point (create {EV_COORDINATE}.make_precise (469.33333333333314, 1157.037037037037))
Result.extend_point (create {EV_COORDINATE}.make_precise (460.74074074074076, 1150.8148148148146))
Result.extend_point (create {EV_COORDINATE}.make_precise (454.51851851851859, 1151.7037037037035))
end
ujae_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-100.44444444444446, 944.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-98.370370370370324, 943.70370370370358))
Result.extend_point (create {EV_COORDINATE}.make_precise (-93.333333333333314, 949.92592592592575))
Result.extend_point (create {EV_COORDINATE}.make_precise (-86.814814814814781, 951.40740740740739))
Result.extend_point (create {EV_COORDINATE}.make_precise (-77.03703703703701, 972.74074074074065))
Result.extend_point (create {EV_COORDINATE}.make_precise (-88.296296296296305, 968.59259259259238))
Result.extend_point (create {EV_COORDINATE}.make_precise (-95.407407407407391, 962.07407407407402))
Result.extend_point (create {EV_COORDINATE}.make_precise (-97.777777777777828, 952.88888888888869))
end
wotho_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-63.703703703703695, 854.81481481481455))
Result.extend_point (create {EV_COORDINATE}.make_precise (-53.925925925925924, 856.59259259259238))
Result.extend_point (create {EV_COORDINATE}.make_precise (-53.925925925925924, 860.14814814814792))
Result.extend_point (create {EV_COORDINATE}.make_precise (-56, 862.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-51.851851851851848, 869.03703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (-53.629629629629619, 872.59259259259238))
Result.extend_point (create {EV_COORDINATE}.make_precise (-60.740740740740705, 868.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (-62.518518518518533, 862.51851851851836))
Result.extend_point (create {EV_COORDINATE}.make_precise (-64.296296296296305, 860.44444444444434))
end
ailinginae_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-29.03703703703701, 764.14814814814792))
Result.extend_point (create {EV_COORDINATE}.make_precise (-18.666666666666629, 765.03703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (-10.074074074074133, 763.85185185185173))
Result.extend_point (create {EV_COORDINATE}.make_precise (-7.1111111111111427, 765.92592592592575))
Result.extend_point (create {EV_COORDINATE}.make_precise (-6.8148148148147811, 771.25925925925912))
Result.extend_point (create {EV_COORDINATE}.make_precise (-9.4814814814814099, 772.74074074074065))
Result.extend_point (create {EV_COORDINATE}.make_precise (-12.148148148148096, 771.25925925925912))
Result.extend_point (create {EV_COORDINATE}.make_precise (-21.629629629629619, 771.85185185185173))
Result.extend_point (create {EV_COORDINATE}.make_precise (-28.740740740740705, 769.7777777777776))
end
rongelap_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0.88888888888885731, 758.81481481481455))
Result.extend_point (create {EV_COORDINATE}.make_precise (0.59259259259255259, 747.25925925925912))
Result.extend_point (create {EV_COORDINATE}.make_precise (5.925925925925867, 737.4814814814813))
Result.extend_point (create {EV_COORDINATE}.make_precise (16, 737.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (21.925925925925867, 733.92592592592575))
Result.extend_point (create {EV_COORDINATE}.make_precise (30.51851851851859, 739.85185185185173))
Result.extend_point (create {EV_COORDINATE}.make_precise (37.333333333333371, 736.29629629629619))
Result.extend_point (create {EV_COORDINATE}.make_precise (41.777777777777771, 738.96296296296282))
Result.extend_point (create {EV_COORDINATE}.make_precise (38.814814814814781, 742.51851851851836))
Result.extend_point (create {EV_COORDINATE}.make_precise (36.444444444444457, 747.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (30.51851851851859, 748.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (25.481481481481467, 754.96296296296282))
Result.extend_point (create {EV_COORDINATE}.make_precise (27.259259259259238, 767.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (20.148148148148152, 768.59259259259238))
Result.extend_point (create {EV_COORDINATE}.make_precise (12.148148148148152, 767.40740740740739))
Result.extend_point (create {EV_COORDINATE}.make_precise (6.8148148148147811, 762.37037037037021))
end
rongerik_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (68.148148148148152, 746.37037037037021))
Result.extend_point (create {EV_COORDINATE}.make_precise (70.222222222222172, 741.33333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (83.555555555555543, 742.81481481481455))
Result.extend_point (create {EV_COORDINATE}.make_precise (84.444444444444457, 746.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (82.370370370370324, 747.85185185185173))
Result.extend_point (create {EV_COORDINATE}.make_precise (81.185185185185219, 755.85185185185173))
Result.extend_point (create {EV_COORDINATE}.make_precise (77.629629629629676, 755.25925925925912))
Result.extend_point (create {EV_COORDINATE}.make_precise (72.592592592592496, 757.03703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (72.592592592592496, 751.11111111111097))
end
bikini_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-129.48148148148141, 722.96296296296282))
Result.extend_point (create {EV_COORDINATE}.make_precise (-120.88888888888891, 714.07407407407402))
Result.extend_point (create {EV_COORDINATE}.make_precise (-114.96296296296293, 716.14814814814792))
Result.extend_point (create {EV_COORDINATE}.make_precise (-109.92592592592592, 713.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (-102.81481481481478, 719.40740740740739))
Result.extend_point (create {EV_COORDINATE}.make_precise (-94.518518518518533, 720.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (-93.03703703703701, 733.03703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (-96.592592592592609, 734.81481481481455))
Result.extend_point (create {EV_COORDINATE}.make_precise (-106.66666666666663, 735.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-118.81481481481478, 737.18518518518499))
Result.extend_point (create {EV_COORDINATE}.make_precise (-120, 733.33333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (-128.2962962962963, 727.70370370370358))
end
enewetak_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-416.29629629629625, 731.25925925925912))
Result.extend_point (create {EV_COORDINATE}.make_precise (-409.18518518518511, 719.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (-401.77777777777771, 717.33333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (-397.92592592592587, 717.03703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (-394.66666666666663, 721.4814814814813))
Result.extend_point (create {EV_COORDINATE}.make_precise (-390.22222222222217, 722.07407407407402))
Result.extend_point (create {EV_COORDINATE}.make_precise (-389.62962962962956, 728.29629629629619))
Result.extend_point (create {EV_COORDINATE}.make_precise (-383.11111111111109, 735.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (-385.18518518518511, 745.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (-390.51851851851848, 751.40740740740739))
Result.extend_point (create {EV_COORDINATE}.make_precise (-401.18518518518511, 750.81481481481455))
Result.extend_point (create {EV_COORDINATE}.make_precise (-410.37037037037032, 745.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (-413.03703703703695, 735.11111111111097))
end
invariant
-- correct_location: attached target_imp implies location = vitp.marshalls_north
end

View File

@@ -0,0 +1,352 @@
note
description: "[
Widget representing the brown land of the Southern Marshall Islands
]"
author: "Jimmy J. Johnson"
class
MARSHALLS_SOUTH_WIDGET
inherit
LOCATION_WIDGET
redefine
build_widgets,
build_land
end
create
default_create
feature {NONE} -- Initialization
build_widgets
-- Add widgets to Current
do
Precursor {LOCATION_WIDGET} -- calls `build_land'
-- Remove `text_widget'
prune_all (text_widget)
-- Make adjustments
scale_widget (land, 0.07)
rotate_widget (land, 13.0)
translate_widget (Current, 78, -139)
end
build_land
-- Add `land' to Current and create the polygons.
do
Precursor {LOCATION_WIDGET}
-- Put polygons representing land into the `land'
-- land.extend (kajalein_south)
-- land.extend (maloelap_south)
land.extend (mili_atoll)
land.extend (butaritari_atoll)
land.extend (abalng_island)
land.extend (tarawa_island)
land.extend (majana_island)
land.extend (kuna_island)
land.extend (aranuka_island)
land.extend (abemama_island)
land.extend (nonouti_island)
land.extend (tabiteuea_island)
land.extend (onotoa_island)
land.extend (beru_island)
land.extend (jaluit_atoll)
end
feature {NONE} -- Implementation
kajalein_south: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (13.333333333333343, 0.59259259259259522))
Result.extend_point (create {EV_COORDINATE}.make_precise (25.18518518518519, -2.3703703703703667))
Result.extend_point (create {EV_COORDINATE}.make_precise (45.925925925925895, 2.0740740740740762))
Result.extend_point (create {EV_COORDINATE}.make_precise (63.407407407407391, 1.7777777777777786))
Result.extend_point (create {EV_COORDINATE}.make_precise (82.962962962962933, 20.148148148148138))
Result.extend_point (create {EV_COORDINATE}.make_precise (83.555555555555543, 29.925925925925924))
Result.extend_point (create {EV_COORDINATE}.make_precise (88, 40.888888888888886))
Result.extend_point (create {EV_COORDINATE}.make_precise (84.444444444444457, 46.222222222222214))
Result.extend_point (create {EV_COORDINATE}.make_precise (84.148148148148152, 57.481481481481467))
Result.extend_point (create {EV_COORDINATE}.make_precise (67.851851851851848, 47.407407407407405))
Result.extend_point (create {EV_COORDINATE}.make_precise (68.148148148148152, 34.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (61.333333333333343, 26.074074074074076))
Result.extend_point (create {EV_COORDINATE}.make_precise (51.851851851851848, 21.629629629629626))
Result.extend_point (create {EV_COORDINATE}.make_precise (40, 23.703703703703702))
Result.extend_point (create {EV_COORDINATE}.make_precise (32.296296296296276, 19.555555555555557))
Result.extend_point (create {EV_COORDINATE}.make_precise (20.444444444444457, 17.18518518518519))
Result.extend_point (create {EV_COORDINATE}.make_precise (11.851851851851848, 8))
end
maloelap_south: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (362.07407407407402, 38.81481481481481))
Result.extend_point (create {EV_COORDINATE}.make_precise (375.7037037037037, 38.81481481481481))
Result.extend_point (create {EV_COORDINATE}.make_precise (390.81481481481478, 45.037037037037038))
Result.extend_point (create {EV_COORDINATE}.make_precise (397.92592592592587, 50.370370370370367))
Result.extend_point (create {EV_COORDINATE}.make_precise (403.55555555555554, 56.888888888888886))
Result.extend_point (create {EV_COORDINATE}.make_precise (396.74074074074065, 63.999999999999986))
Result.extend_point (create {EV_COORDINATE}.make_precise (396.74074074074065, 78.81481481481481))
Result.extend_point (create {EV_COORDINATE}.make_precise (382.81481481481478, 69.629629629629619))
Result.extend_point (create {EV_COORDINATE}.make_precise (373.03703703703695, 54.81481481481481))
end
mili_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (445.03703703703695, 285.92592592592587))
Result.extend_point (create {EV_COORDINATE}.make_precise (455.7037037037037, 283.85185185185185))
Result.extend_point (create {EV_COORDINATE}.make_precise (464.88888888888891, 281.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (468.44444444444446, 285.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (480.59259259259261, 285.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (484.44444444444446, 292.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (483.55555555555554, 305.18518518518522))
Result.extend_point (create {EV_COORDINATE}.make_precise (488.59259259259261, 316.74074074074076))
Result.extend_point (create {EV_COORDINATE}.make_precise (488, 319.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (482.66666666666663, 311.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (478.22222222222217, 307.25925925925924))
Result.extend_point (create {EV_COORDINATE}.make_precise (470.81481481481478, 304.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (464.88888888888891, 305.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (461.92592592592587, 301.03703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (458.07407407407402, 302.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (454.22222222222217, 299.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (450.96296296296282, 302.81481481481478))
Result.extend_point (create {EV_COORDINATE}.make_precise (446.22222222222217, 301.03703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (446.81481481481478, 291.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (445.03703703703695, 291.55555555555554))
end
butaritari_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (534.51851851851848, 553.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (540.74074074074065, 558.51851851851848))
Result.extend_point (create {EV_COORDINATE}.make_precise (553.77777777777783, 559.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (557.33333333333326, 557.62962962962956))
Result.extend_point (create {EV_COORDINATE}.make_precise (560, 545.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (561.48148148148141, 543.40740740740739))
Result.extend_point (create {EV_COORDINATE}.make_precise (564.44444444444446, 544))
Result.extend_point (create {EV_COORDINATE}.make_precise (564.74074074074065, 546.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (562.37037037037021, 547.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (561.18518518518499, 555.25925925925912))
Result.extend_point (create {EV_COORDINATE}.make_precise (557.62962962962956, 559.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (560.8888888888888, 560.5925925925925))
Result.extend_point (create {EV_COORDINATE}.make_precise (561.18518518518499, 565.92592592592587))
Result.extend_point (create {EV_COORDINATE}.make_precise (554.96296296296282, 568.2962962962963))
Result.extend_point (create {EV_COORDINATE}.make_precise (555.25925925925924, 573.03703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (549.33333333333326, 573.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (545.18518518518499, 575.40740740740739))
Result.extend_point (create {EV_COORDINATE}.make_precise (541.62962962962956, 579.25925925925912))
Result.extend_point (create {EV_COORDINATE}.make_precise (538.37037037037032, 577.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (538.37037037037032, 571.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (536.29629629629619, 569.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (535.40740740740739, 564.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (533.03703703703695, 557.33333333333326))
end
abalng_island: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (542.22222222222217, 679.70370370370358))
Result.extend_point (create {EV_COORDINATE}.make_precise (549.92592592592587, 672.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (555.25925925925924, 674.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (566.81481481481478, 688))
Result.extend_point (create {EV_COORDINATE}.make_precise (567.11111111111109, 692.14814814814804))
Result.extend_point (create {EV_COORDINATE}.make_precise (561.48148148148141, 695.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (554.07407407407402, 691.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (552.8888888888888, 686.51851851851848))
Result.extend_point (create {EV_COORDINATE}.make_precise (548.44444444444446, 682.96296296296282))
Result.extend_point (create {EV_COORDINATE}.make_precise (544.29629629629619, 682.96296296296282))
end
tarawa_island: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (560, 704.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (560.8888888888888, 711.70370370370358))
Result.extend_point (create {EV_COORDINATE}.make_precise (577.77777777777783, 728))
Result.extend_point (create {EV_COORDINATE}.make_precise (566.81481481481478, 731.25925925925912))
Result.extend_point (create {EV_COORDINATE}.make_precise (562.37037037037021, 734.51851851851848))
Result.extend_point (create {EV_COORDINATE}.make_precise (557.33333333333326, 731.85185185185185))
Result.extend_point (create {EV_COORDINATE}.make_precise (553.48148148148141, 732.14814814814804))
Result.extend_point (create {EV_COORDINATE}.make_precise (553.77777777777783, 725.92592592592575))
Result.extend_point (create {EV_COORDINATE}.make_precise (552.59259259259261, 717.03703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (555.25925925925924, 707.85185185185185))
end
majana_island: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (563.25925925925924, 759.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (569.77777777777783, 766.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (566.81481481481478, 768))
Result.extend_point (create {EV_COORDINATE}.make_precise (565.03703703703695, 775.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (562.07407407407402, 778.37037037037021))
Result.extend_point (create {EV_COORDINATE}.make_precise (556.14814814814804, 772.74074074074065))
Result.extend_point (create {EV_COORDINATE}.make_precise (560.59259259259261, 763.55555555555543))
end
kuna_island: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (595.25925925925924, 827.85185185185185))
Result.extend_point (create {EV_COORDINATE}.make_precise (599.11111111111109, 828.74074074074065))
Result.extend_point (create {EV_COORDINATE}.make_precise (601.48148148148141, 831.70370370370358))
Result.extend_point (create {EV_COORDINATE}.make_precise (605.33333333333326, 833.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (599.70370370370358, 836.14814814814804))
Result.extend_point (create {EV_COORDINATE}.make_precise (597.92592592592587, 832.29629629629619))
end
aranuka_island: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (609.48148148148141, 835.85185185185185))
Result.extend_point (create {EV_COORDINATE}.make_precise (615.40740740740739, 835.85185185185185))
Result.extend_point (create {EV_COORDINATE}.make_precise (619.85185185185173, 833.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (622.81481481481478, 838.81481481481478))
Result.extend_point (create {EV_COORDINATE}.make_precise (619.85185185185173, 844.14814814814804))
Result.extend_point (create {EV_COORDINATE}.make_precise (616.59259259259261, 843.85185185185185))
Result.extend_point (create {EV_COORDINATE}.make_precise (615.70370370370358, 840.59259259259238))
end
abemama_island: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (631.11111111111109, 816.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (633.77777777777783, 815.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (635.25925925925924, 810.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (641.18518518518499, 808.59259259259238))
Result.extend_point (create {EV_COORDINATE}.make_precise (645.92592592592587, 813.92592592592575))
Result.extend_point (create {EV_COORDINATE}.make_precise (649.18518518518499, 821.62962962962956))
Result.extend_point (create {EV_COORDINATE}.make_precise (648.59259259259261, 826.96296296296282))
Result.extend_point (create {EV_COORDINATE}.make_precise (642.07407407407402, 826.37037037037021))
Result.extend_point (create {EV_COORDINATE}.make_precise (637.92592592592587, 822.81481481481478))
Result.extend_point (create {EV_COORDINATE}.make_precise (636.74074074074065, 820.14814814814804))
Result.extend_point (create {EV_COORDINATE}.make_precise (632.59259259259261, 819.85185185185185))
end
nonouti_island: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (665.48148148148141, 911.40740740740739))
Result.extend_point (create {EV_COORDINATE}.make_precise (672, 898.07407407407402))
Result.extend_point (create {EV_COORDINATE}.make_precise (675.85185185185173, 902.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (683.55555555555543, 902.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (693.33333333333326, 908.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (695.11111111111109, 914.07407407407402))
Result.extend_point (create {EV_COORDINATE}.make_precise (696.8888888888888, 928.29629629629619))
Result.extend_point (create {EV_COORDINATE}.make_precise (691.25925925925924, 924.74074074074065))
Result.extend_point (create {EV_COORDINATE}.make_precise (685.62962962962956, 925.62962962962956))
Result.extend_point (create {EV_COORDINATE}.make_precise (682.07407407407402, 927.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (679.70370370370358, 924.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (672.8888888888888, 919.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (671.40740740740739, 916.74074074074065))
end
tabiteuea_island: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (711.40740740740739, 954.96296296296282))
Result.extend_point (create {EV_COORDINATE}.make_precise (715.25925925925924, 953.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (718.81481481481478, 956.14814814814804))
Result.extend_point (create {EV_COORDINATE}.make_precise (725.33333333333326, 965.33333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (727.40740740740739, 968.59259259259238))
Result.extend_point (create {EV_COORDINATE}.make_precise (726.81481481481478, 973.03703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (732.14814814814804, 974.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (735.70370370370358, 978.07407407407402))
Result.extend_point (create {EV_COORDINATE}.make_precise (751.70370370370358, 986.07407407407402))
Result.extend_point (create {EV_COORDINATE}.make_precise (753.18518518518499, 994.96296296296282))
Result.extend_point (create {EV_COORDINATE}.make_precise (744, 994.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (737.77777777777783, 995.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (729.18518518518499, 989.92592592592575))
Result.extend_point (create {EV_COORDINATE}.make_precise (728, 982.81481481481478))
Result.extend_point (create {EV_COORDINATE}.make_precise (721.77777777777783, 979.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (720.59259259259261, 972.74074074074065))
Result.extend_point (create {EV_COORDINATE}.make_precise (714.66666666666663, 963.85185185185185))
Result.extend_point (create {EV_COORDINATE}.make_precise (712.29629629629619, 961.18518518518522))
end
onotoa_island: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (789.92592592592575, 1015.7037037037035))
Result.extend_point (create {EV_COORDINATE}.make_precise (796.14814814814792, 1016.2962962962961))
Result.extend_point (create {EV_COORDINATE}.make_precise (795.55555555555543, 1020.4444444444443))
Result.extend_point (create {EV_COORDINATE}.make_precise (800.59259259259238, 1024.5925925925924))
Result.extend_point (create {EV_COORDINATE}.make_precise (801.4814814814813, 1029.333333333333))
Result.extend_point (create {EV_COORDINATE}.make_precise (796.74074074074065, 1032.5925925925924))
Result.extend_point (create {EV_COORDINATE}.make_precise (794.07407407407402, 1026.6666666666665))
Result.extend_point (create {EV_COORDINATE}.make_precise (789.33333333333326, 1025.1851851851852))
Result.extend_point (create {EV_COORDINATE}.make_precise (790.81481481481455, 1020.4444444444443))
end
beru_island: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (829.62962962962956, 970.07407407407402))
Result.extend_point (create {EV_COORDINATE}.make_precise (831.40740740740739, 968.29629629629619))
Result.extend_point (create {EV_COORDINATE}.make_precise (839.70370370370358, 978.37037037037021))
Result.extend_point (create {EV_COORDINATE}.make_precise (839.40740740740739, 979.85185185185185))
Result.extend_point (create {EV_COORDINATE}.make_precise (837.03703703703695, 977.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (832.59259259259238, 978.07407407407402))
end
jaluit_atoll: EV_MODEL_POLYGON
-- Make the polygon
attribute
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (234.96296296296291, 283.25925925925924))
Result.extend_point (create {EV_COORDINATE}.make_precise (237.03703703703698, 278.81481481481478))
Result.extend_point (create {EV_COORDINATE}.make_precise (242.6666666666666, 277.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (248.29629629629628, 287.40740740740739))
Result.extend_point (create {EV_COORDINATE}.make_precise (254.81481481481475, 299.85185185185185))
Result.extend_point (create {EV_COORDINATE}.make_precise (261.92592592592587, 300.14814814814815))
Result.extend_point (create {EV_COORDINATE}.make_precise (265.77777777777783, 308.74074074074076))
Result.extend_point (create {EV_COORDINATE}.make_precise (261.03703703703695, 311.40740740740739))
Result.extend_point (create {EV_COORDINATE}.make_precise (259.55555555555554, 321.18518518518522))
Result.extend_point (create {EV_COORDINATE}.make_precise (253.9259259259259, 327.40740740740739))
Result.extend_point (create {EV_COORDINATE}.make_precise (246.81481481481475, 324.14814814814804))
Result.extend_point (create {EV_COORDINATE}.make_precise (244.74074074074068, 317.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (236.14814814814807, 310.51851851851848))
Result.extend_point (create {EV_COORDINATE}.make_precise (237.9259259259259, 305.18518518518522))
Result.extend_point (create {EV_COORDINATE}.make_precise (237.9259259259259, 299.25925925925924))
Result.extend_point (create {EV_COORDINATE}.make_precise (239.70370370370367, 292.14814814814815))
Result.extend_point (create {EV_COORDINATE}.make_precise (238.5185185185185, 287.11111111111109))
end
invariant
-- correct_location: attached target_imp implies location = vitp.marshalls_south
end

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,123 @@
note
description: "[
A widget drawn as an anchor.
]"
author: "Jimmy J. Johnson"
class
ANCHOR
inherit
EV_MODEL_POLYGON
redefine
default_create
end
create
default_create
feature {NONE} -- Initialization
default_create
-- Create an intance
do
Precursor {EV_MODEL_POLYGON}
extend_point (create {EV_COORDINATE}.make_precise (0, 0))
extend_point (create {EV_COORDINATE}.make_precise (-2.2222222222222285, -1.3333333333333286))
extend_point (create {EV_COORDINATE}.make_precise (-4, -5.7777777777777857))
extend_point (create {EV_COORDINATE}.make_precise (-3.5555555555555571, -9.3333333333333286))
extend_point (create {EV_COORDINATE}.make_precise (-1.3333333333333286, -12))
extend_point (create {EV_COORDINATE}.make_precise (2.6666666666666714, -13.777777777777786))
extend_point (create {EV_COORDINATE}.make_precise (7.5555555555555571, -14.222222222222214))
extend_point (create {EV_COORDINATE}.make_precise (11.1111111111111, -13.333333333333329))
extend_point (create {EV_COORDINATE}.make_precise (13.777777777777771, -9.3333333333333286))
extend_point (create {EV_COORDINATE}.make_precise (14.666666666666671, -4.8888888888888857))
extend_point (create {EV_COORDINATE}.make_precise (11.358024691358025, 0.52674897119338482))
extend_point (create {EV_COORDINATE}.make_precise (43.999999999999986, 0.44444444444444287))
extend_point (create {EV_COORDINATE}.make_precise (44.806584362139901, -1.1851851851851904))
extend_point (create {EV_COORDINATE}.make_precise (45.59670781893, 0.39506172839504927))
extend_point (create {EV_COORDINATE}.make_precise (48.625514403292172, 0.79012345679011275))
extend_point (create {EV_COORDINATE}.make_precise (48.8888888888889, 4.4444444444444429))
extend_point (create {EV_COORDINATE}.make_precise (45.860082304526699, 4.7407407407407334))
extend_point (create {EV_COORDINATE}.make_precise (44.938271604938265, 6.3209876543209731))
extend_point (create {EV_COORDINATE}.make_precise (44.279835390946474, 4.4773662551440196))
extend_point (create {EV_COORDINATE}.make_precise (8.5925925925925952, 4.7407407407407334))
extend_point (create {EV_COORDINATE}.make_precise (9.5144032921810577, 95.736625514403258))
extend_point (create {EV_COORDINATE}.make_precise (14.650205761316855, 102.18930041152258))
extend_point (create {EV_COORDINATE}.make_precise (20.31275720164605, 101.53086419753082))
extend_point (create {EV_COORDINATE}.make_precise (24.444444444444443, 99.999999999999986))
extend_point (create {EV_COORDINATE}.make_precise (29.333333333333329, 96.888888888888872))
extend_point (create {EV_COORDINATE}.make_precise (34.666666666666671, 93.777777777777786))
extend_point (create {EV_COORDINATE}.make_precise (38.222222222222214, 90.222222222222214))
extend_point (create {EV_COORDINATE}.make_precise (42.222222222222214, 86.222222222222214))
extend_point (create {EV_COORDINATE}.make_precise (46.222222222222214, 81.777777777777786))
extend_point (create {EV_COORDINATE}.make_precise (49.777777777777757, 76.444444444444443))
extend_point (create {EV_COORDINATE}.make_precise (51.522633744855952, 71.901234567901199))
extend_point (create {EV_COORDINATE}.make_precise (52.312757201646022, 68.082304526748928))
extend_point (create {EV_COORDINATE}.make_precise (52.971193415637813, 65.448559670781847))
extend_point (create {EV_COORDINATE}.make_precise (52.8888888888889, 63.1111111111111))
extend_point (create {EV_COORDINATE}.make_precise (50.666666666666671, 63.999999999999986))
extend_point (create {EV_COORDINATE}.make_precise (54.02469135802464, 60.444444444444443))
extend_point (create {EV_COORDINATE}.make_precise (55.341563786008223, 57.283950617283935))
extend_point (create {EV_COORDINATE}.make_precise (55.999999999999986, 53.333333333333329))
extend_point (create {EV_COORDINATE}.make_precise (57.580246913580211, 58.864197530864161))
extend_point (create {EV_COORDINATE}.make_precise (57.185185185185148, 62.814814814814795))
extend_point (create {EV_COORDINATE}.make_precise (56.444444444444443, 67.999999999999986))
extend_point (create {EV_COORDINATE}.make_precise (55.555555555555557, 72.444444444444443))
extend_point (create {EV_COORDINATE}.make_precise (53.777777777777757, 76.888888888888872))
extend_point (create {EV_COORDINATE}.make_precise (50.995884773662524, 82.041152263374428))
extend_point (create {EV_COORDINATE}.make_precise (47.308641975308618, 86.386831275720127))
extend_point (create {EV_COORDINATE}.make_precise (43.555555555555557, 90.222222222222214))
extend_point (create {EV_COORDINATE}.make_precise (39.999999999999986, 94.222222222222186))
extend_point (create {EV_COORDINATE}.make_precise (33.777777777777757, 99.1111111111111))
extend_point (create {EV_COORDINATE}.make_precise (29.92592592592591, 102.05761316872425))
extend_point (create {EV_COORDINATE}.make_precise (24.395061728395049, 104.82304526748966))
extend_point (create {EV_COORDINATE}.make_precise (18.469135802469125, 106.79835390946495))
extend_point (create {EV_COORDINATE}.make_precise (13.728395061728392, 108.5102880658436))
extend_point (create {EV_COORDINATE}.make_precise (9.9094650205761212, 111.67078189300408))
extend_point (create {EV_COORDINATE}.make_precise (7.6707818930040759, 114.56790123456786))
extend_point (create {EV_COORDINATE}.make_precise (4.8888888888888999, 118.22222222222219))
extend_point (create {EV_COORDINATE}.make_precise (3.1111111111111001, 114.66666666666664))
extend_point (create {EV_COORDINATE}.make_precise (0.44444444444444287, 111.55555555555553))
extend_point (create {EV_COORDINATE}.make_precise (-3.1111111111111001, 108.88888888888887))
extend_point (create {EV_COORDINATE}.make_precise (-8.4444444444444429, 107.1111111111111))
extend_point (create {EV_COORDINATE}.make_precise (-16, 103.99999999999999))
extend_point (create {EV_COORDINATE}.make_precise (-21.777777777777771, 101.33333333333333))
extend_point (create {EV_COORDINATE}.make_precise (-26.222222222222214, 97.777777777777786))
extend_point (create {EV_COORDINATE}.make_precise (-31.1111111111111, 93.777777777777786))
extend_point (create {EV_COORDINATE}.make_precise (-34.666666666666671, 90.222222222222214))
extend_point (create {EV_COORDINATE}.make_precise (-38.222222222222214, 85.333333333333329))
extend_point (create {EV_COORDINATE}.make_precise (-40.444444444444443, 82.222222222222214))
extend_point (create {EV_COORDINATE}.make_precise (-43.1111111111111, 77.333333333333329))
extend_point (create {EV_COORDINATE}.make_precise (-44.888888888888886, 72.888888888888872))
extend_point (create {EV_COORDINATE}.make_precise (-46.666666666666671, 67.1111111111111))
extend_point (create {EV_COORDINATE}.make_precise (-47.55555555555555, 61.333333333333329))
extend_point (create {EV_COORDINATE}.make_precise (-46.666666666666671, 55.1111111111111))
extend_point (create {EV_COORDINATE}.make_precise (-44.872427983539112, 60.31275720164605))
extend_point (create {EV_COORDINATE}.make_precise (-43.160493827160508, 63.604938271604922))
extend_point (create {EV_COORDINATE}.make_precise (-40.444444444444443, 66.666666666666643))
extend_point (create {EV_COORDINATE}.make_precise (-43.423868312757222, 66.370370370370338))
extend_point (create {EV_COORDINATE}.make_precise (-41.448559670781904, 73.481481481481481))
extend_point (create {EV_COORDINATE}.make_precise (-38.666666666666671, 78.666666666666643))
extend_point (create {EV_COORDINATE}.make_precise (-36.181069958847743, 82.567901234567856))
extend_point (create {EV_COORDINATE}.make_precise (-32.888888888888886, 86.666666666666643))
extend_point (create {EV_COORDINATE}.make_precise (-29.333333333333329, 90.222222222222214))
extend_point (create {EV_COORDINATE}.make_precise (-24.8888888888889, 94.666666666666643))
extend_point (create {EV_COORDINATE}.make_precise (-20.444444444444443, 97.333333333333329))
extend_point (create {EV_COORDINATE}.make_precise (-15.555555555555557, 99.999999999999986))
extend_point (create {EV_COORDINATE}.make_precise (-10.222222222222229, 101.77777777777779))
extend_point (create {EV_COORDINATE}.make_precise (-4.8888888888888999, 103.55555555555553))
extend_point (create {EV_COORDINATE}.make_precise (1.3333333333333286, 95.999999999999986))
extend_point (create {EV_COORDINATE}.make_precise (1.744855967078152, 5.0041152263374471))
extend_point (create {EV_COORDINATE}.make_precise (-34.469135802469154, 5.0041152263374471))
extend_point (create {EV_COORDINATE}.make_precise (-35.52263374485598, 6.7160493827160366))
extend_point (create {EV_COORDINATE}.make_precise (-36.181069958847743, 4.8724279835390831))
extend_point (create {EV_COORDINATE}.make_precise (-39.1111111111111, 4.8888888888888857))
extend_point (create {EV_COORDINATE}.make_precise (-39.1111111111111, 1.3333333333333286))
extend_point (create {EV_COORDINATE}.make_precise (-36.312757201646107, 0.52674897119338482))
extend_point (create {EV_COORDINATE}.make_precise (-35.654320987654316, -1.0534979423868407))
extend_point (create {EV_COORDINATE}.make_precise (-34.600823045267518, 0.79012345679011275))
end
end

View File

@@ -0,0 +1,177 @@
note
description: "[
An arrow widget
]"
author: "Jimmy J. Johnson"
class
ARROW
inherit
VITP_WIDGET
redefine
default_create,
target_imp,
build_widgets,
paint
end
create
default_create
feature {NONE} -- Initialization
default_create
-- Initialize attributes
do
-- create head_dot
create nock
create shaft
create head
Precursor {VITP_WIDGET}
end
build_widgets
-- Create the widgets that make up Current
local
t: EV_MODEL_TRANSFORMATION
do
-- Use the `dot' as reference point to build the arrow (the center of the nock).
-- The EV_MODEL_DOT and EV_MODEL_LINE do not scale nicely, so use circle and
-- rectangle to build the parts of the arrow.
create t.make_zero
t.translate (width // 2, 0)
dot.transform (t)
direction := North
build_nock
build_shaft
build_head
end
build_nock
-- Create the end of the arrow opposite the head
-- A circle slightly bigger than the shaft, centered on `dot'
local
p1, p2: EV_COORDINATE
r: INTEGER
do
r := (width // 2) + (width // 4)
create p1.make_precise (dot.x - r, dot.y - r)
create p2.make_precise (dot.x + r, dot.y + r)
create nock.make_with_points (p1, p2)
extend (nock)
end
build_shaft
-- Create the shaft as a rectangle `width' wide with an arrow on the
-- end. Assume the arrow tip ends `Default_length' away from `dot'.
local
p: EV_COORDINATE
len, wid: INTEGER
do
io.put_string ("ARROW.build_shaft -- fix me! Add a pointed tip. %N")
len := length
wid := width // 2
create shaft
create p.make_precise (dot.x - wid, dot.y)
shaft.extend_point (p)
create p.make_precise (dot.x + wid, dot.y)
shaft.extend_point (p)
create p.make_precise (dot.x + wid, dot.y + len)
shaft.extend_point (p)
create p.make_precise (dot.x - wid, dot.y + len)
shaft.extend_point (p)
extend (shaft)
end
build_head
-- Create the point (or retical) end of the arrow
local
p: EV_COORDINATE
do
create head
end
feature -- Access
direction: INTEGER
-- The direction the arrow is pointing if not targetting a unit
width: INTEGER
-- The size of the `shaft'
do
Result := 100
end
length: INTEGER
-- The length of the `shaft' calculated from the distance between the
-- two widgets or as a percentage of the size of the `unit_widget'
local
xd, yd: INTEGER
do
Result := 500
end
feature -- Basic operations
fill_widgets
-- Nothing to do here.
do
end
paint
-- Set the colors of the sub-widgets
do
Precursor {VITP_WIDGET}
-- if attached unit_widget as uw then
-- if attached targetted_widget as tw then
-- if uw.unit.nationality = US then
-- nock.set_foreground_color (adjusted_color (US_retical_color))
-- nock.set_background_color (adjusted_color (US_retical_color))
-- shaft.set_foreground_color (adjusted_color (US_retical_color))
-- shaft.set_background_color (adjusted_color (US_retical_color))
-- else
-- nock.set_foreground_color (adjusted_color (Japanese_retical_color))
-- nock.set_background_color (adjusted_color (Japanese_retical_color))
-- shaft.set_foreground_color (adjusted_color (Japanese_retical_color))
-- shaft.set_background_color (adjusted_color (Japanese_retical_color))
-- end
-- else
-- -- there is no target
-- nock.set_foreground_color (adjusted_color (arrow_color))
-- nock.set_background_color (adjusted_color (arrow_color))
-- shaft.set_foreground_color (adjusted_color (arrow_color))
-- shaft.set_background_color (adjusted_color (arrow_color))
--io.put_string ("ARROW.paint -- fix me! Hide/show the retical %N")
-- end
-- end
end
feature {NONE} -- Implementation
target_imp: detachable ATTACK_UNIT
-- Anchor for `target'
nock: EV_MODEL_ELLIPSE
-- Shows the end opposite the head
shaft: EV_MODEL_POLYGON
-- The shaft of the arrow
head: EV_MODEL_POLYGON
-- The point of the arrow
-- head: RETICAL
-- Gun sight retical
North: INTEGER = 1
South: INTEGER = 2
East: INTEGER = 3
West: INTEGER = 4
North_east: INTEGER = 5
South_east: INTEGER = 6
North_west: INTEGER = 7
South_west: INTEGER = 8
end

View File

@@ -0,0 +1,236 @@
note
description: "[
Builds a raised border for placement on an {ATTACK_UNIT_WIDGET}
]"
author: "Jimmy J. Johnson"
class
BORDER
inherit
EV_MODEL_WORLD
redefine
create_interface_objects
end
create
make
create {BORDER}
list_make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
Precursor {EV_MODEL_WORLD}
create color
create borders.make_filled (create {LINKED_LIST [EV_MODEL_POLYGON]}.make, 1, 4)
end
-- make (a_size: REAL_64)
make (a_width, a_height, a_edge_size: REAL_64)
-- Create Current setting the `width' and `height'
-- If `a_width' and `a_height' is the size of the widget on
-- which to place the border, then the border steps will be
-- placed over the edge of the widget, not surrounding the
-- widget. (This seems preferred, so that the size of the
-- bordered widget is not bigger than planned.)
require
width_big_enough: a_width >= 30 -- arbitrary
height_big_enough: a_height >= 30
edge_size_big_enough: a_edge_size >= 10
local
i: INTEGER
do
default_create
create borders.make_filled (create {LINKED_LIST [EV_MODEL_POLYGON]}.make, 1, 4)
from i := Left
until i > Bottom
loop
borders [i] := create {LINKED_LIST [EV_MODEL_POLYGON]}.make
i := i + 1
end
-- size := a_size
width := a_width
height := a_height
edge_size := a_edge_size
build_edges
end
feature -- Access
color: EV_COLOR
-- The color from which to `paint' Current.
width: REAL_64
-- The width from which to build Current.
height: REAL_64
-- The height from which to build Current.
-- size: REAL_64
-- The width [and length] from which to build Current.
feature -- Element change
set_color (a_color: EV_COLOR)
-- Change the `color'.
do
color := a_color
paint
end
feature -- Basic operations
paint
-- Set the colors for the boarder polygons based on the
-- color of the background color of the `tile'
local
i: INTEGER
do
-- Color each edge in order: Left, Top, Right, Bottom
from i := Left
until i > Bottom
loop
paint_edge (i)
i := i + 1
end
end
feature {NONE} -- Implementation
paint_edge (a_index: INTEGER)
-- Paint the `a_index'th edge
require
index_big_enough: a_index >= 1
index_small_enough: a_index <= 4
local
fad: COLOR_FADER
polys: LINKED_LIST [EV_MODEL_POLYGON]
p: EV_MODEL_POLYGON
c: EV_COLOR
i: INTEGER
do
polys := borders [a_index]
create fad.make_with_color_and_count (color, polys.count)
from polys.start
until polys.exhausted
loop
p := polys.item
i := polys.count - polys.index + 1
if a_index <= 2 then
c := fad.i_th_lighter (i)
else
c := fad.i_th_darker (i)
end
p.set_background_color (c)
p.set_foreground_color (c)
polys.forth
end
end
build_edges
-- Create the polygons that simulate a raised boarder
local
-- Short variable names to make equations shorter
p, p2, p3, p4: EV_COORDINATE
poly: EV_MODEL_POLYGON
w, h: REAL_64
ss: REAL_64
c: INTEGER
i: INTEGER
do
-- Each boarder is one-tenth the width of the `box'. We then determine
-- the number of times 2 will go into this width and use that as the
-- number of color steps to make on each boarder.
-- The right and bottom boarders should fade-to-black; the top and left
-- boarders should fade-to-white then fade-to-grey.
-- This should give the appearance of a light source up and left.
ss := step_size
w := width
h := height
c := step_count
from i := 1
until i > c
loop
-- right
create p.make_precise (w - i * ss, i * ss)
create p2.make_precise ((w - (i - 1) * ss), (i - 1) * ss)
create p3.make_precise (w - (i - 1) * ss, h - (i - 1) * ss)
create p4.make_precise (w - i * ss, h - i * ss)
create poly
poly.extend_point (p)
poly.extend_point (p2)
poly.extend_point (p3)
poly.extend_point (p4)
borders [Right].extend (poly)
extend (poly)
-- left
create p.make_precise (i * ss, i * ss)
create p2.make_precise (i * ss, h - i * ss)
create p3.make_precise ((i - 1) * ss, h - (i - 1) * ss)
create p4.make_precise ((i - 1) * ss, (i - 1) * ss)
create poly
poly.extend_point (p)
poly.extend_point (p2)
poly.extend_point (p3)
poly.extend_point (p4)
borders [Left].extend (poly)
extend (poly)
-- bottom
create p.make_precise (i * ss, h - i * ss)
create p2.make_precise ((w - i * ss), h - i * ss)
create p3.make_precise (w - (i - 1) * ss, h - (i - 1) * ss)
create p4.make_precise ((i - 1) * ss, h - (i - 1) * ss)
create poly
poly.extend_point (p)
poly.extend_point (p2)
poly.extend_point (p3)
poly.extend_point (p4)
borders [Bottom].extend (poly)
extend (poly)
-- top
create p.make_precise ((i - 1) * ss, (i - 1) * ss)
create p2.make_precise (w - (i - 1) * ss, (i - 1) * ss)
create p3.make_precise (w - i * ss, i * ss)
create p4.make_precise (i * ss, i * ss)
create poly
poly.extend_point (p)
poly.extend_point (p2)
poly.extend_point (p3)
poly.extend_point (p4)
borders [Top].extend (poly)
extend (poly)
i := i + 1
end
end
borders: ARRAY [LINKED_LIST [EV_MODEL_POLYGON]]
-- Contains the four edges
edge_size: REAL_64
-- The size of each edge calculated from the smaller of
-- the `width' or `height'
-- do
---- Result := size / 10
-- Result := width.min (height) / 10
-- end
step_count: INTEGER
-- The number of incremental colors into which each edge is broken
do
Result := (edge_size / step_size).rounded
end
step_size: REAL_64 = 2.0
-- The logical width of each polygon in the edges
Left: INTEGER = 1
Top: INTEGER = 2
Right: INTEGER = 3
Bottom: INTEGER = 4
end

View File

@@ -0,0 +1,251 @@
note
description: "[
Draws the circular control markers for VITP.
]"
author: "Jimmy J. Johnson"
class
CONTROL_MARKER
inherit
FONT_AND_COLOR_CONSTANTS
undefine
default_create
end
DIMABLE
redefine
default_create
end
EV_MODEL_WORLD
redefine
default_create,
create_interface_objects
end
create
make
create {CONTROL_MARKER}
list_make
feature {NONE} -- Initialization
default_create
-- Set up Current
do
Precursor {DIMABLE}
Precursor {EV_MODEL_WORLD}
build_widgets
end
make (a_location: LOCATION)
-- Set up Current
do
location_imp := a_location
default_create
end
create_interface_objects
-- Create attributes
local
p1, p2: EV_COORDINATE
s: REAL_64
offset: REAL_64
t: EV_MODEL_TRANSFORMATION
do
Precursor {EV_MODEL_WORLD}
create circle
create sun
create star
create anchor
end
build_widgets
-- Construct and add widgets to Current.
do
build_circle
build_sun
build_star
build_anchor
star.scale (0.8)
anchor.set_x_y (anchor.x + 90, anchor.y + 62)
star.set_x_y (star.x + 96, star.y + 96)
sun.set_x_y (sun.x + 20, sun.y + 30)
paint
end
build_circle
-- Create the marker
local
p1, p2: EV_COORDINATE
s: REAL_64
do
extend (circle)
create p1.make_precise (0, 0)
create p2.make_precise (Initial_size, Initial_size)
circle.set_point_a (p1)
circle.set_point_b (p2)
end
build_sun
-- Create the "Japanese" rising `sun'
local
p1, p2: EV_COORDINATE
s: REAL_64
offset: REAL_64
do
extend (sun)
-- create a circle that is slightly small than `circle'
-- and offset it a little
s := Initial_size * 0.7
create p1.make_precise (0, 0)
create p2.make_precise (s, s)
sun.set_point_a (p1)
sun.set_point_b (p2)
offset := Initial_size / 12
-- offset a little
-- translate_widget (sun, offset, offset)
end
build_star
-- Create the star
do
extend (star)
-- translate_widget (star, -Initial_size/12, -Initial_size/12)
-- scale_widget (star, 1.2)
-- fix center on ... dot is not positioned yet by `initialize'
-- star.set_x_y (dot.x, dot.y)
end
build_anchor
-- Create an anchor
do
extend (anchor)
-- scale_widget (anchor, 2.0)
-- translate_widget (anchor, -Initial_size/12, -Initial_size/12)
-- fix center on ... dot is not positioned yet by `initialize'
end
feature -- Access
location: LOCATION
-- The location (e.g. a PORT or a chart) to which
-- this marker belongs
require
has_location: has_location
do
check attached location_imp as loc then
Result := loc
end
end
set_location (a_location: like location)
-- Change the `location'
do
location_imp := a_location
end
feature {NONE} -- Implementation
location_imp: detachable like location
-- Implementation for `location'
feature -- Status report
has_location: BOOLEAN
-- Has a location been assigned?
do
Result := attached location_imp
end
is_boarder_shown: BOOLEAN
-- Should the outline of the flag show?
feature -- Status setting
show_boarder
-- Make the outline of the flag visible
do
is_boarder_shown := true
end
hide_boarder
-- Make the outline of the flag NOT visible
do
is_boarder_shown := false
end
feature -- Basic operations
hide_anchor
-- Make the anchor no show.
-- Required for non-major ports.
do
anchor.hide
end
paint
-- Set the colors of the sub-widgets
local
fc: EV_COLOR
do
circle.show
if location.is_allied then
circle.set_foreground_color (adjusted_color (US_unit_color))
circle.set_background_color (adjusted_color (US_unit_color))
sun.hide
star.show
-- star.paint
else
sun.show
star.hide
circle.set_foreground_color (adjusted_color (White))
circle.set_background_color (adjusted_color (White))
end
-- Hide or show boarder color?
if location.nationality = {NATIONALITY_CONSTANTS}.japanese then
fc := japanese_unit_color
else
fc := allied_unit_boarder_color
end
if is_boarder_shown then
circle.set_foreground_color (adjusted_color (fc))
end
anchor.set_foreground_color (adjusted_color (Black))
anchor.set_background_color (adjusted_color (Black))
sun.set_foreground_color (adjusted_color (Japanese_unit_color))
sun.set_background_color (adjusted_color (Japanese_unit_color))
end
feature {NONE} -- Implementation
circle: EV_MODEL_ELLIPSE
-- The main figure
sun: EV_MODEL_ELLIPSE
-- The sun on Japanese markers
star: STAR
-- The star on US widgets
anchor: ANCHOR
-- The anchor on major port control markers
internal_scale_factor_small: DOUBLE = 0.05
-- Used to scale `internal_size'
internal_scale_factor_medium: DOUBLE = 0.07
-- Used to scale `internal_size'
internal_scale_factor_large: DOUBLE = 0.09
-- Used to scale `internal_size'
Initial_size: REAL_64 = 200.0
-- Used internally to build the figure
invariant
end

View File

@@ -0,0 +1,641 @@
note
description: "[
A base class for building the Japanese or US flag
]"
author: "Jimmy J. Johnson"
class
FLAG
inherit
FONT_AND_COLOR_CONSTANTS
undefine
default_create
end
DIMABLE
redefine
default_create
end
EV_MODEL_WORLD
redefine
default_create,
create_interface_objects
end
create
make
create {FLAG}
list_make
feature {NONE} -- Initialization
default_create
-- Set up Current
do
Precursor {DIMABLE}
Precursor {EV_MODEL_WORLD}
build_widgets
end
make (a_location: like location)
-- Set up Current
do
location_imp := a_location
default_create
end
create_interface_objects
-- Create attributes
do
Precursor {EV_MODEL_WORLD}
create field
create border.make (width, height, border_size)
background_coordinates := [create {EV_COORDINATE}, create {EV_COORDINATE}]
create background
create charge
create rising_sun
create canton
create canton_imp
create stars.make
end
build_widgets
-- Create the widget and associate it with `a_location'
do
build_field
build_us_charge
build_japanese_charge
build_canton
build_border
scale (0.07)
end
build_border
-- Add the border on top of other widgets in Current
do
extend (border)
end
build_field
-- Create the flags background
local
p1, p2: EV_COORDINATE
do
create field
extend (field)
-- create p1.make_precise (0.0, 0.0)
-- create p2.make_precise (width, height)
create p1.make_precise (border_size, border_size)
create p2.make_precise (width - border_size, height - border_size)
create background.make_with_points (p1, p2)
-- Save the points
background_coordinates := [p1, p2]
field.extend (background)
end
build_us_charge
-- Build the `charge', sizing it relative to the `background' rectangle.
-- Create the red stripes. (The white is background.)
local
i: INTEGER
x1, y1, x2, y2: REAL_64
h: REAL_64
stripe: EV_MODEL_POLYGON
do
create charge
field.extend (charge)
x1 := background_coordinates.point_1.x + 2
y1 := background_coordinates.point_1.y + 2
x2 := background_coordinates.point_2.x - 2
y2 := background_coordinates.point_2.y - 2
h := (y2 - y1) / 13
from i := 1
until i > 13
loop
if i \\ 2 = 1 then
create stripe
stripe.extend_point (create {EV_COORDINATE}.make_precise (x1, y1 + (i - 1) * h))
stripe.extend_point (create {EV_COORDINATE}.make_precise (x2, y1 + (i - 1) * h))
stripe.extend_point (create {EV_COORDINATE}.make_precise (x2, y1 + i * h))
stripe.extend_point (create {EV_COORDINATE}.make_precise (x1, y1 + i * h))
charge.extend (stripe)
end
i := i + 1
end
end
build_japanese_charge
-- Create the sun and rays for the Japanese flag
local
p1: EV_MODEL_POLYGON
os: REAL_64
clipper: POLYGON_CLIPPER
ang, ang_step: REAL_64
mid: EV_COORDINATE
ray: EV_MODEL_POLYGON
do
build_rising_sun
rising_sun.scale_x (1.8)
rising_sun.scale_y (1.4)
field.extend (rising_sun)
-- Must move the charge a bit to line up with the background
rising_sun.set_x_y (165, 100)
-- center_widget_on_other (rising_sun, field)
-- create japanese_charge
-- field.extend (japanese_charge)
-- -- Build the `japanese_charge' inside a square so the angles at which the rays
-- -- radiate from the sun can be uniformly spaced around a circle. After
-- -- the rays are build the `charge' is scaled to match the flag's `width'
-- -- and `height'.
-- -- Create a polygon slightly smaller than the `field'
-- os := width / 10.0
-- create p1
-- p1.extend_point (create {EV_COORDINATE}.make_precise (os, os))
-- p1.extend_point (create {EV_COORDINATE}.make_precise (width - os, os))
-- p1.extend_point (create {EV_COORDINATE}.make_precise (width - os, width - os))
-- p1.extend_point (create {EV_COORDINATE}.make_precise (os, width - os))
-- -- Each of the 16 "rays" immenating from the sun is built as a triangle centered
-- -- at the midpoint, extending beyond the boundaries of `p1'. Each ray is then
-- -- clipped against `p1'
-- create clipper
-- ang := (2.0 * Pi) / 16.0
-- create mid.make_precise (width / 2.0, width / 2.0)
-- from i := 1
-- until i > 16
-- loop
-- create ray.default_create
-- ray.extend_point (mid)
-- ax := delta_x (ang * i, width)
-- ay := delta_y (ang * i, width)
-- ray.extend_point (create {EV_COORDINATE}.make_precise (ax, ay))
-- ax := delta_x (ang * (i + 1), width)
-- ay := delta_y (ang * (i + 1), width)
-- ray.extend_point (create {EV_COORDINATE}.make_precise (ax, ay))
-- ray := clipper.clipped (ray, p1)
-- field.extend (ray)
-- i := i + 1
-- end
end
-- build_canton
-- -- Create the union on US flag.
-- -- This contains the [50] stars (should be 48).
-- local
-- p1, p2: EV_COORDINATE
-- s: STAR
-- i, j: INTEGER
-- a, b: REAL_64
-- c, d: REAL_64
-- e, f, g, h: REAL_64
-- k: REAL_64
-- ax, ay: REAL_64
-- t: EV_MODEL_TRANSFORMATION
-- do
-- create t.make_zero
-- create canton
-- field.extend (canton)
-- a := height
-- b := width
-- c := a * 7/13
-- d := b * 2/5
-- e := c / 10
-- f := c / 10
-- g := d / 12
-- h := d / 12
-- k := a * 0.0616
-- create p1.make_precise (0.0, 0.0)
-- create p2.make_precise (d, c)
---- create canton_imp.make_with_points (p1, p2)
---- create canton_imp
-- canton_imp.extend_point (create {EV_COORDINATE}.make_precise (0.0, 0.0))
-- canton_imp.extend_point (create {EV_COORDINATE}.make_precise (d, 0.0))
-- canton_imp.extend_point (create {EV_COORDINATE}.make_precise (d, c))
-- canton_imp.extend_point (create {EV_COORDINATE}.make_precise (0.0, c))
-- canton.extend (canton_imp)
-- -- A star is created, scaled and then its center point is moved to
-- -- (0, 0). From there the star is positioned based on the algorithm.
-- -- Add the 6 x 5 set of stars
-- from i := 1
-- until i > 6
-- loop
-- ax := (i - 1) * (2 * h) + g
-- from j := 1
-- until j > 5
-- loop
-- create s
---- s.set_target (location)
-- s.scale (0.0616)
-- canton.extend (s)
-- stars.extend (s)
-- t.translate (-s.dot.point.x, -s.dot.point.y)
-- s.transform (t)
-- ay := (j - 1) * (2 * f) + e
-- t.translate (ax, ay)
-- s.transform (t)
-- j := j + 1
-- end
-- i := i + 1
-- end
-- -- Add the remaining stars, the 5 x 4 set
-- from i := 1
-- until i > 5
-- loop
-- ax := i * (2 * h) - h + g
-- from j := 1
-- until j > 4
-- loop
-- create s
---- s.set_target (location)
-- s.scale (0.0616)
-- canton.extend (s)
-- t.translate (-s.dot.point.x, -s.dot.point.y)
-- s.transform (t)
-- ay := j * (2 * f) - f + e
-- t.translate (ax, ay)
-- s.transform (t)
-- j := j + 1
-- end
-- i := i + 1
-- end
-- end
build_canton
-- Create the 48-star union on US flag.
-- The dimensions were estimated based on the 50-star version.
local
-- p1, p2: EV_COORDINATE
s: STAR
i, j: INTEGER
a, b: REAL_64
c, d: REAL_64
e, f, g, h: REAL_64
k: REAL_64
ax, ay: REAL_64
marg: REAL_64 -- margin to account for boarder
t: EV_MODEL_TRANSFORMATION
x1, y1, x2, y2: REAL_64
do
create t.make_zero
create canton
field.extend (canton)
x1 := background_coordinates.point_1.x + 2
y1 := background_coordinates.point_1.y + 2
x2 := background_coordinates.point_2.x - 2
y2 := background_coordinates.point_2.y - 2
-- a := height - 2 * border_size
-- b := width - 2 * border_size
a := y2 - y1
b := x2 - x1
c := a * 7/13
d := b * 2/5
e := c / 7 -- divided by number of rows + 1
f := c / 7 -- divided by number of rows + 1
g := d / 9 -- divided by number of columns + 1
h := d / 9 -- divided by number of columns + 1
k := a * 0.0616
-- create p1.make_precise (0.0, 0.0)
-- create p2.make_precise (d, c)
-- Create the blue background for the stars
canton_imp.extend_point (create {EV_COORDINATE}.make_precise (x1, y1))
canton_imp.extend_point (create {EV_COORDINATE}.make_precise (x1 + d, y1))
canton_imp.extend_point (create {EV_COORDINATE}.make_precise (x1 + d, y1 + c))
canton_imp.extend_point (create {EV_COORDINATE}.make_precise (x1, y1 + c))
canton.extend (canton_imp)
-- A star is created, scaled and then its center point is moved to
-- (0, 0). From there the star is positioned based on the algorithm.
-- Add the 6 x 5 set of stars
from i := 1
until i > 8
loop
-- ax := (i - 1) * (2 * h) + g
-- ax := (i - 1) * h + g/2
ax := x1 + (i - 1) * h + g
from j := 1
until j > 6
loop
create s
s.scale (0.0616)
canton.extend (s)
stars.extend (s)
-- t.translate (-s.dot.point.x, -s.dot.point.y)
-- s.transform (t)
s.set_x_y (0, 0)
-- ay := (j - 1) * (2 * f) + e
-- ay := (j - 1) * f + e/2
ay := y1 + (j - 1) * f + e
t.translate (ax, ay)
s.transform (t)
j := j + 1
end
i := i + 1
end
end
feature -- Access
location: LOCATION
-- The location (e.g. a PORT or a chart) to which
-- this marker belongs
require
has_location: has_location
do
check attached location_imp as loc then
Result := loc
end
end
set_location (a_location: like location)
-- Change the `location'
do
location_imp := a_location
end
feature {NONE} -- Implementation
location_imp: detachable like location
-- Implementation for `location'
feature -- Status report
has_location: BOOLEAN
-- Has a location been assigned?
do
Result := attached location_imp
end
is_outlined: BOOLEAN
-- Should the outline of the flag show?
-- If yes, change the foreground color to show a line around Current.
is_flat: BOOLEAN
-- Should Current be drawn as a flat picture?
feature -- Status setting
show_outline
-- Make the outline of the flag visible
do
is_outlined := true
end
hide_outline
-- Make the outline of the flag NOT visible
do
is_outlined := false
end
set_flat
-- Cause the widget to be painted as a flat tile
do
is_flat := True
paint
end
set_raised
-- Cause the widget to be painted as a 3-d tile
do
is_flat := False
paint
end
feature -- Basic operations
-- set_dimming_level (a_level: INTEGER)
-- -- Change the `dimming_level'
-- do
-- Precursor {DIMABLE} (a_level)
-- paint
-- end
paint
-- Set the colors of the sub-widgets
do
paint_field
paint_charge
paint_canton
paint_border
if is_flat then
border.hide
else
border.show
end
if location.is_allied then
field.show
charge.show
canton.show
rising_sun.hide
elseif location.nationality = {NATIONALITY_CONSTANTS}.japanese then
field.show
rising_sun.show
charge.hide
canton.hide
else
field.hide
charge.hide
canton.hide
rising_sun.hide
border.hide
end
end
feature {NONE} -- Implementation
paint_border
-- Set the color for the `border'
do
border.set_color (adjusted_color (White))
end
paint_field
-- Paint the `field'
local
c: EV_COLOR
do
c := us_flag_white_color
background.set_background_color (adjusted_color (c))
-- Set color for boarder around the background if shown.
-- This is just the line around the flag on the OA Charts.
if is_outlined then
if location.nationality = {NATIONALITY_CONSTANTS}.japanese then
c := japanese_unit_color
else
c := us_unit_color
end
end
background.set_foreground_color (adjusted_color (c))
end
paint_charge
-- Paint the `charge'
do
from charge.start
until charge.exhausted
loop
if attached {EV_MODEL_POLYGON} charge.item as s then
s.set_foreground_color (adjusted_color (US_flag_red_color))
s.set_background_color (adjusted_color (US_flag_red_color))
end
rising_sun.set_foreground_color (adjusted_color (Japanese_unit_color))
rising_sun.set_background_color (adjusted_color (Japanese_unit_color))
charge.forth
end
end
paint_canton
-- Paint the canton area (and stars)
local
s: STAR
do
canton_imp.set_background_color (adjusted_color (US_flag_blue_color))
canton_imp.set_foreground_color (adjusted_color (US_flag_blue_color))
-- Must paint each star (to dim or brighten them)
from stars.start
until stars.off
loop
s := stars.item
s.set_background_color (adjusted_color (white))
s.set_foreground_color (adjusted_color (white))
stars.forth
end
end
feature {NONE} -- Implementation
frozen height: REAL_64 = 200.0
-- The span of a flag down the side parallel to the flagpole
-- width: REAL_64 = 380.0
width: REAL_64 = 330.0
-- The span of the flag along the side at right angles to the flagpole
ratio: REAL_64
-- The ratio of the `width' / `height' (1.9 for US flags)
background_coordinates: TUPLE [point_1: EV_COORDINATE; point_2: EV_COORDINATE]
-- The corner points for the `background'.
-- Used EV_COORDINATE to be more precise (i.e. REAL_64, not INTEGER_32)
background: EV_MODEL_RECTANGLE
-- The background of Current (usually white)
border: BORDER
-- The borders around the `field', giving a raised appearance
border_size: REAL_64
-- Ratio of the size of the `border' to `width'
do
Result:= (height.min (width)) / 20
end
canton: EV_MODEL_WORLD
-- The upper hoist (left) quarter (contains the field of stars in US flag)
charge: EV_MODEL_WORLD
-- A figure or symbol appearing on the flag
rising_sun: EV_MODEL_POLYGON
-- The red sun and rays on the Japanese flag
field: EV_MODEL_WORLD
-- The top container for Current
canton_imp: EV_MODEL_POLYGON
-- The rectangle to make a blue canton
stars: LINKED_SET [STAR]
-- Keep track of all the stars in Current, so they can be dimmed
-- when `set_dimming_level' is called
build_rising_sun
-- Make the polygon
do
create rising_sun
-- Points generated by Grabber application
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (32.395061728395063, 39.308641975308639))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (35.358024691358025, 37.728395061728392))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (38.913580246913575, 35.55555555555555))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (20.938271604938265, 1.7777777777777786))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (33.777777777777771, 1.7777777777777786))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (43.851851851851848, 33.777777777777764))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (46.617283950617285, 33.58024691358024))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (49.97530864197531, 32.79012345679012))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (47.407407407407412, 1.5802469135802468))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (58.66666666666665, 1.9753086419753103))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (56.888888888888879, 33.185185185185176))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (59.851851851851841, 32.987654320987652))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (64.395061728395063, 33.975308641975303))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (74.074074074074048, 1.3827160493827169))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (87.111111111111114, 1.7777777777777786))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (69.925925925925895, 35.950617283950614))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (72.296296296296276, 37.92592592592591))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (74.271604938271594, 40.296296296296291))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (107.25925925925924, 0.98765432098765338))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (130.17283950617283, 1.1851851851851851))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (78.81481481481481, 44.444444444444436))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (80.790123456790099, 47.012345679012341))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (82.370370370370352, 50.962962962962955))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (168.09876543209876, 1.3827160493827169))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (167.90123456790118, 30.024691358024683))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (85.333333333333314, 55.506172839506164))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (85.925925925925895, 58.074074074074055))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (85.925925925925895, 62.222222222222207))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (167.90123456790118, 54.716049382716044))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (168.09876543209876, 76.246913580246883))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (85.925925925925895, 68.938271604938251))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (85.53086419753086, 72.098765432098759))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (85.135802469135797, 75.851851851851848))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (167.3086419753086, 100.34567901234567))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (166.71604938271602, 130.56790123456787))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (83.160493827160479, 80.592592592592581))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (81.382716049382708, 83.160493827160479))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (79.407407407407391, 85.728395061728378))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (130.56790123456787, 128.59259259259255))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (107.06172839506172, 129.38271604938268))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (75.259259259259238, 89.679012345679013))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (72.691358024691368, 92.049382716049365))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (69.53086419753086, 94.024691358024654))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (87.308641975308632, 128.98765432098762))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (74.074074074074048, 129.18518518518516))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (64.592592592592581, 96.395061728395035))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (61.432098765432094, 97.185185185185162))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (57.283950617283942, 97.185185185185162))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (60.049382716049372, 128.79012345679007))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (47.999999999999993, 128.79012345679007))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (50.37037037037036, 97.382716049382708))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (47.407407407407412, 97.185185185185162))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (44.049382716049372, 95.999999999999972))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (34.172839506172842, 128.98765432098762))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (19.950617283950621, 129.18518518518516))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (38.716049382716044, 94.024691358024654))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (35.358024691358025, 92.839506172839464))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (32.592592592592588, 90.469135802469111))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (0.39506172839506704, 128.59259259259255))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (0.39506172839506704, 109.43209876543207))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (28.839506172839513, 85.925925925925895))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (26.074074074074076, 83.358024691357997))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (24.493827160493822, 79.999999999999972))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (0.19753086419753174, 93.03703703703701))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (0.19753086419753174, 82.172839506172807))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (21.728395061728399, 75.061728395061692))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (21.728395061728399, 71.703703703703695))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (21.925925925925924, 68.34567901234567))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (0.39506172839506704, 70.123456790123441))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (0.39506172839506704, 61.234567901234563))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (21.728395061728399, 62.617283950617271))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (21.333333333333336, 59.061728395061728))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (22.320987654320987, 56.493827160493829))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (0.19753086419753174, 49.185185185185176))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (0.39506172839506704, 37.530864197530853))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (24.691358024691361, 50.567901234567891))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (26.271604938271594, 47.012345679012341))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (28.444444444444436, 44.049382716049379))
rising_sun.extend_point (create {EV_COORDINATE}.make_precise (0, 20.938271604938272))
end
end

View File

@@ -0,0 +1,83 @@
note
description: "[
A star widget
]"
author: "Jimmy J. Johnson"
class
STAR
inherit
FONT_AND_COLOR_CONSTANTS
undefine
default_create
end
EV_MODEL_POLYGON
redefine
default_create
end
create
default_create
feature {NONE} -- Initialization
default_create
-- Create an intance
do
Precursor {EV_MODEL_POLYGON}
build_widgets
end
build_widgets
-- Create the widget
local
d: REAL_64 -- the diameter of a circle that fits in box
r: REAL_64 -- the radius of above circle
r_small: REAL_64 -- the radius of a smaller circle
a: REAL_64 -- the current angle around a circle
delta_a: REAL_64 -- the amount to change `ang' as we go around circle
i: INTEGER
ax, ay: REAL_64
p: EV_COORDINATE
do
d := 200
r := d / 2.0
r_small := r / 3.0
delta_a := (2.0 * Pi) / (points_on_star_count * 2.0)
a := 0
from i := 1
until i > points_on_star_count * 2
loop
if i \\ 2 = 1 then
ax := delta_x (a, r_small)
ay := delta_y (a, r_small)
else
ax := delta_x (a, r)
ay := delta_y (a, r)
end
create p.make_precise (ax, ay)
extend_point (p)
a := a + delta_a
i := i + 1
end
-- Rotate star and move it to the center of its system.
rotate (0.3)
set_background_color (White)
set_foreground_color (White)
end
feature -- Basic operations
feature {NONE} -- Implementation
points_on_star_count: INTEGER = 5
-- The number of points the star has
invariant
end

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,165 @@
note
description: "[
The widget representing this port
]"
author: "Jimmy J. Johnson"
class
ATTU_WIDGET
inherit
-- GREEN_PORT_WIDGET
-- undefine
-- paint
-- redefine
-- initialize,
-- create_interface_objects,
-- position_widgets,
-- build_land
-- end
ISLAND_PORT_WIDGET
redefine
create_interface_objects,
-- initialize,
position_widgets,
build_land,
rotation_amount
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
attu_island := attu_island_imp
-- Make objects non-Void before calling Precursor,
-- because a qualified call is made in an EV_xx class.
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
end
-- initialize
-- -- Set up the widgets in Current.
-- do
-- Precursor {ISLAND_PORT_WIDGET}
---- Precursor {GREEN_PORT_WIDGET}
-- end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
-- marker.center_on_dot (dot)
marker.set_x_y (dot.x, dot.y)
center_on (532, 20)
translate_widget (land, 9, 2)
translate_widget (name_mt, -1, 0)
translate_widget (marker, 0, 7)
scale_widget (land, 0.25)
end
build_land
-- Add widgets to Current
do
Precursor {ISLAND_PORT_WIDGET}
land.extend (attu_island)
end
feature -- Status report
is_red: BOOLEAN = False
-- Does Current represent a red (i.e. major) port?
feature {NONE} -- Implementation
attu_island: EV_MODEL_POLYGON
feature {NONE} -- Implementation
attu_island_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (-0.44444444444444287, -2.2222222222222854))
Result.extend_point (create {EV_COORDINATE}.make_precise (3.1111111111111072, -6.6666666666666856))
Result.extend_point (create {EV_COORDINATE}.make_precise (6.2222222222222214, -7.1111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (8, -11.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (12.444444444444443, -12))
Result.extend_point (create {EV_COORDINATE}.make_precise (14.666666666666657, -14.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (18.222222222222221, -15.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (23.111111111111107, -13.333333333333371))
Result.extend_point (create {EV_COORDINATE}.make_precise (26.222222222222221, -15.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (30.222222222222221, -14.222222222222285))
Result.extend_point (create {EV_COORDINATE}.make_precise (35.111111111111107, -13.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (37.777777777777771, -14.222222222222285))
Result.extend_point (create {EV_COORDINATE}.make_precise (40.444444444444443, -12.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (40.444444444444443, -10.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (44.444444444444443, -10.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (46.222222222222214, -12.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (55.555555555555557, -11.5555555555556))
Result.extend_point (create {EV_COORDINATE}.make_precise (57.333333333333329, -13.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (64.444444444444429, -8.4444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (59.555555555555557, -4))
Result.extend_point (create {EV_COORDINATE}.make_precise (62.666666666666657, -3.5555555555555998))
Result.extend_point (create {EV_COORDINATE}.make_precise (62.666666666666657, -0.88888888888891415))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.777777777777757, -6.2222222222222854))
Result.extend_point (create {EV_COORDINATE}.make_precise (70.666666666666657, -4))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.999999999999986, -3.1111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (76.444444444444429, 2.2222222222222285))
Result.extend_point (create {EV_COORDINATE}.make_precise (72.888888888888886, 5.7777777777777146))
Result.extend_point (create {EV_COORDINATE}.make_precise (78.666666666666657, 7.1111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (87.1111111111111, 8.4444444444444002))
Result.extend_point (create {EV_COORDINATE}.make_precise (87.1111111111111, 10.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (80.444444444444429, 11.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (77.333333333333329, 12.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (76.444444444444429, 14.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (72.888888888888886, 11.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.777777777777757, 8.8888888888889142))
Result.extend_point (create {EV_COORDINATE}.make_precise (66.222222222222214, 11.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (63.555555555555557, 14.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (64.444444444444429, 16.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (60.444444444444429, 19.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (57.777777777777757, 16.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (55.999999999999986, 16))
Result.extend_point (create {EV_COORDINATE}.make_precise (55.555555555555557, 12))
Result.extend_point (create {EV_COORDINATE}.make_precise (50.666666666666657, 13.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (43.1111111111111, 23.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (39.1111111111111, 24.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (39.1111111111111, 19.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (37.777777777777771, 16.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (34.222222222222221, 18.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (32.444444444444443, 16.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (31.999999999999993, 19.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (28.888888888888886, 19.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (24.444444444444443, 17.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (26.222222222222221, 14.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (27.111111111111107, 11.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (27.111111111111107, 8.4444444444444002))
Result.extend_point (create {EV_COORDINATE}.make_precise (29.777777777777771, 3.5555555555555429))
Result.extend_point (create {EV_COORDINATE}.make_precise (26.666666666666657, 5.3333333333333144))
Result.extend_point (create {EV_COORDINATE}.make_precise (19.999999999999993, 4.8888888888889142))
Result.extend_point (create {EV_COORDINATE}.make_precise (15.111111111111107, 7.1111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (12.888888888888886, 5.7777777777777146))
Result.extend_point (create {EV_COORDINATE}.make_precise (15.555555555555557, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (15.999999999999993, -3.1111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (9.3333333333333286, -1.7777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (8, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (3.5555555555555571, 0.44444444444440023))
Result.extend_point (create {EV_COORDINATE}.make_precise (3.1111111111111072, -1.3333333333333712))
end
feature {NONE} -- Implementation
rotation_amount: REAL_64 = 5.0
-- Make the arrow point slightly south of east
end

View File

@@ -0,0 +1,996 @@
note
description: "[
Widget representing a {PORT}.
]"
author: "Jimmy J. Johnson"
class
AUSTRALIA_WIDGET
inherit
RED_PORT_WIDGET
redefine
create_interface_objects,
extend_widgets,
set_fonts_and_colors,
position_widgets,
build_land
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
Precursor {RED_PORT_WIDGET}
mainland := mainland_imp
melville_island := melville_island_imp
create not_allowed_text.make_with_text ("(No British Allowed)")
-- extend (not_allowed_text)
end
extend_widgets
-- Put widgets into Current. This cannot be done
-- in `create_interface_object', because cannot call
-- `extend' feature until all objects [in descendants]
-- are also created.
do
Precursor {RED_PORT_WIDGET}
text_group.extend (not_allowed_text)
end
set_fonts_and_colors
-- Set up the widgets in Current.
do
Precursor {RED_PORT_WIDGET}
not_allowed_text.set_font (Subtext_font)
dot.show
dot.set_foreground_color (Yellow)
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {RED_PORT_WIDGET}
-- make adjustments
scale_widget (land, 0.23)
rotate_widget (land, 10.0)
translate_widget (Current, 364, 773)
-- anchor.set_x_y (x, y - 200)
-- name_mt.set_x_y (x - 5, y - 190)
-- not_allowed_text.set_x_y (x, y - 170)
text_group.set_x_y (300, 465)
marker.set_x_y (270, 460)
anchor.set_x_y (300, 455)
not_allowed_text.set_x_y (300, 470)
-- translate_widget (name_mt, -68, -311)
-- translate_widget (dot, -80, -290)
---- marker.center_on_dot (dot)
-- marker.set_x_y (dot.x, dot.y)
---- anchor.center_on_dot (dot)
-- anchor.set_x_y (dot.x, dot.y)
-- translate_widget (marker, -10, -20)
-- translate_widget (anchor, 17, -30)
-- translate_widget (not_allowed_text, -77, -306)
dot.set_x_y (x, y)
end
build_land
-- Add widgets to Current
do
Precursor {RED_PORT_WIDGET}
-- Initialize attributes
land.extend (mainland)
land.extend (melville_island)
end
not_allowed_text: EV_MODEL_TEXT
-- Extra text on some Red ports (e.g. "No British Allowed").
--feature -- Access
-- defining_figure: EV_MODEL
-- -- The figure to be used to determine if other figures
-- -- overlap this one or for capturing mouse events
-- do
-- Result := mainland
-- end
feature -- Access
mainland: EV_MODEL_POLYGON
melville_island: EV_MODEL_POLYGON
feature -- Status report
is_red: BOOLEAN = True
-- Does Current represent a red (i.e. major) port?
feature {NONE} -- Implementation
mainland_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Clockwise from Adelaide (where west coast goes off the bottom)
Result.extend_point (create {EV_COORDINATE}.make_precise (-3, 20))
Result.extend_point (create {EV_COORDINATE}.make_precise (-7, 12))
Result.extend_point (create {EV_COORDINATE}.make_precise (-8, 7))
Result.extend_point (create {EV_COORDINATE}.make_precise (-5, 5))
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (0, -7.5555555555555429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-4.4444444444442297, -9.3333333333330302))
Result.extend_point (create {EV_COORDINATE}.make_precise (-5.3333333333331439, -15.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-9.3333333333331439, -20.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-9.7777777777778283, -16))
Result.extend_point (create {EV_COORDINATE}.make_precise (-13.777777777777828, -10.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-12.888888888888687, -5.7777777777777146))
Result.extend_point (create {EV_COORDINATE}.make_precise (-15.555555555555316, 0.44444444444445708))
Result.extend_point (create {EV_COORDINATE}.make_precise (-16.44444444444423, 6.6666666666669698))
Result.extend_point (create {EV_COORDINATE}.make_precise (-18.222222222222285, 8))
Result.extend_point (create {EV_COORDINATE}.make_precise (-24.888888888888687, 6.2222222222222854))
Result.extend_point (create {EV_COORDINATE}.make_precise (-25.333333333333144, 8))
Result.extend_point (create {EV_COORDINATE}.make_precise (-28.888888888888687, 7.1111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-28.888888888888687, 9.7777777777780557))
Result.extend_point (create {EV_COORDINATE}.make_precise (-32.888888888888687, 9.3333333333335986))
Result.extend_point (create {EV_COORDINATE}.make_precise (-35.1111111111112, 11.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-38.222222222222285, 10.222222222222285))
Result.extend_point (create {EV_COORDINATE}.make_precise (-35.1111111111112, 5.7777777777780557))
Result.extend_point (create {EV_COORDINATE}.make_precise (-34.222222222222285, 0.44444444444445708))
Result.extend_point (create {EV_COORDINATE}.make_precise (-28.888888888888687, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (-25.333333333333144, 1.3333333333335986))
Result.extend_point (create {EV_COORDINATE}.make_precise (-23.1111111111112, -12))
Result.extend_point (create {EV_COORDINATE}.make_precise (-26.222222222222285, -10.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-22.666666666666515, -14.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-22.666666666666515, -19.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-24.44444444444423, -21.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-22.222222222222285, -22.666666666666401))
Result.extend_point (create {EV_COORDINATE}.make_precise (-23.1111111111112, -24.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-20, -26.666666666666401))
Result.extend_point (create {EV_COORDINATE}.make_precise (-20, -29.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (-13.777777777777828, -35.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-11.555555555555316, -36.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-12.888888888888687, -41.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-15.1111111111112, -45.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-10.222222222222285, -47.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-10.222222222222285, -51.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-12.44444444444423, -51.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-14.666666666666515, -62.666666666666401))
Result.extend_point (create {EV_COORDINATE}.make_precise (-16.888888888888687, -65.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (-15.1111111111112, -56.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-16, -52.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-18.666666666666515, -52.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-20.44444444444423, -49.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-23.555555555555316, -47.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-24.44444444444423, -40.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-27.1111111111112, -39.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-29.333333333333144, -33.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-35.1111111111112, -33.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-35.555555555555316, -29.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (-41.333333333333144, -27.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-44, -24.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-47.1111111111112, -23.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-49.333333333333144, -17.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-52.888888888888687, -14.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-52.888888888888687, -9.3333333333330302))
Result.extend_point (create {EV_COORDINATE}.make_precise (-55.1111111111112, -10.666666666666401))
Result.extend_point (create {EV_COORDINATE}.make_precise (-57.777777777777828, -8.4444444444442297))
Result.extend_point (create {EV_COORDINATE}.make_precise (-56, -3.5555555555555429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-56, 1.7777777777780557))
Result.extend_point (create {EV_COORDINATE}.make_precise (-52.888888888888687, 0.88888888888914153))
Result.extend_point (create {EV_COORDINATE}.make_precise (-52.44444444444423, 4))
Result.extend_point (create {EV_COORDINATE}.make_precise (-56.888888888888687, 4))
Result.extend_point (create {EV_COORDINATE}.make_precise (-60.888888888888687, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (-63.555555555555316, -0.88888888888891415))
Result.extend_point (create {EV_COORDINATE}.make_precise (-64.888888888888687, 2.6666666666669698))
Result.extend_point (create {EV_COORDINATE}.make_precise (-66.222222222222285, -0.88888888888891415))
Result.extend_point (create {EV_COORDINATE}.make_precise (-72, -5.3333333333330302))
Result.extend_point (create {EV_COORDINATE}.make_precise (-73.333333333333144, -8.4444444444442297))
Result.extend_point (create {EV_COORDINATE}.make_precise (-76.44444444444423, -7.5555555555555429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-76.888888888888687, -9.7777777777777146))
Result.extend_point (create {EV_COORDINATE}.make_precise (-74.666666666666515, -12.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-72, -10.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-68.888888888888687, -8.4444444444442297))
Result.extend_point (create {EV_COORDINATE}.make_precise (-72, -13.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-70.666666666666515, -16.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-73.777777777777828, -19.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-72.888888888888687, -24))
Result.extend_point (create {EV_COORDINATE}.make_precise (-77.777777777777828, -30.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-83.555555555555316, -33.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (-82.222222222222285, -38.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-83.1111111111112, -42.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-88.44444444444423, -45.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-95.1111111111112, -45.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (-95.555555555555316, -49.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-98.222222222222285, -50.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-97.333333333333144, -52))
Result.extend_point (create {EV_COORDINATE}.make_precise (-101.33333333333314, -53.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (-99.555555555555316, -55.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-100.44444444444423, -59.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-96.44444444444423, -58.666666666666401))
Result.extend_point (create {EV_COORDINATE}.make_precise (-96, -63.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-98.666666666666515, -66.666666666666401))
Result.extend_point (create {EV_COORDINATE}.make_precise (-101.77777777777783, -64.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-105.77777777777783, -64))
Result.extend_point (create {EV_COORDINATE}.make_precise (-104, -69.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-107.1111111111112, -71.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-108.44444444444423, -74.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-112.44444444444423, -70.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-109.33333333333314, -76))
Result.extend_point (create {EV_COORDINATE}.make_precise (-114.22222222222229, -75.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-119.1111111111112, -72.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-127.55555555555532, -76.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-130.22222222222229, -80.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-136, -80.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-137.33333333333314, -78.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-143.99999999999983, -77.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-152.88888888888869, -85.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-167.11111111111092, -92))
Result.extend_point (create {EV_COORDINATE}.make_precise (-173.77777777777783, -88.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-195.99999999999983, -88.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-215.55555555555532, -86.666666666666401))
Result.extend_point (create {EV_COORDINATE}.make_precise (-231.99999999999989, -78.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-247.99999999999989, -73.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-254.222222222222, -71.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-264.44444444444423, -70.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-275.11111111111092, -70.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-280.88888888888869, -71.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-285.33333333333326, -70.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-289.77777777777771, -67.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-295.11111111111092, -63.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-299.11111111111092, -62.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-305.77777777777771, -58.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-312.44444444444423, -53.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (-320.44444444444423, -52))
Result.extend_point (create {EV_COORDINATE}.make_precise (-326.222222222222, -48.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-328.44444444444423, -43.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-329.33333333333326, -35.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-331.99999999999977, -36))
Result.extend_point (create {EV_COORDINATE}.make_precise (-334.222222222222, -31.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-339.11111111111092, -26.666666666666401))
Result.extend_point (create {EV_COORDINATE}.make_precise (-343.55555555555532, -26.666666666666401))
Result.extend_point (create {EV_COORDINATE}.make_precise (-349.77777777777766, -22.666666666666401))
Result.extend_point (create {EV_COORDINATE}.make_precise (-351.55555555555532, -27.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-355.55555555555532, -26.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-356.8888888888888, -28))
Result.extend_point (create {EV_COORDINATE}.make_precise (-360.8888888888888, -27.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-360.8888888888888, -25.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-364.44444444444423, -25.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (-365.77777777777766, -28))
Result.extend_point (create {EV_COORDINATE}.make_precise (-368.44444444444423, -27.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-368.44444444444423, -24))
Result.extend_point (create {EV_COORDINATE}.make_precise (-372.8888888888888, -24.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-374.222222222222, -28.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-377.33333333333326, -28.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-378.222222222222, -26.666666666666401))
Result.extend_point (create {EV_COORDINATE}.make_precise (-383.11111111111092, -27.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-384.8888888888888, -29.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (-394.222222222222, -28.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-395.55555555555532, -27.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-406.222222222222, -27.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-410.222222222222, -24.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-420.44444444444423, -25.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-424.44444444444423, -24))
Result.extend_point (create {EV_COORDINATE}.make_precise (-431.11111111111097, -19.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-430.222222222222, -13.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-433.33333333333314, -13.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-433.7777777777776, -10.666666666666401))
Result.extend_point (create {EV_COORDINATE}.make_precise (-435.99999999999977, -11.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-436.44444444444429, -8.8888888888889142))
Result.extend_point (create {EV_COORDINATE}.make_precise (-439.55555555555532, -10.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-444.44444444444429, -11.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-447.11111111111097, -10.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (-448.44444444444429, -7.1111111111108585))
Result.extend_point (create {EV_COORDINATE}.make_precise (-455.55555555555532, -3.1111111111108585))
Result.extend_point (create {EV_COORDINATE}.make_precise (-455.99999999999977, 1.7777777777780557))
Result.extend_point (create {EV_COORDINATE}.make_precise (-460.44444444444429, 1.3333333333335986))
Result.extend_point (create {EV_COORDINATE}.make_precise (-462.66666666666652, 3.5555555555557703))
Result.extend_point (create {EV_COORDINATE}.make_precise (-466.66666666666652, 1.7777777777780557))
Result.extend_point (create {EV_COORDINATE}.make_precise (-468.44444444444429, 3.5555555555557703))
Result.extend_point (create {EV_COORDINATE}.make_precise (-465.7777777777776, 6.2222222222222854))
Result.extend_point (create {EV_COORDINATE}.make_precise (-469.7777777777776, 7.1111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-472.88888888888869, 4.4444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-475.11111111111097, 7.1111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (-480.44444444444429, 5.7777777777780557))
Result.extend_point (create {EV_COORDINATE}.make_precise (-482.222222222222, 3.5555555555557703))
Result.extend_point (create {EV_COORDINATE}.make_precise (-484.88888888888869, 4.4444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-489.77777777777754, 3.5555555555557703))
Result.extend_point (create {EV_COORDINATE}.make_precise (-491.11111111111097, 6.2222222222222854))
Result.extend_point (create {EV_COORDINATE}.make_precise (-494.22222222222206, 2.6666666666669698))
Result.extend_point (create {EV_COORDINATE}.make_precise (-495.11111111111097, 4.4444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-498.66666666666652, 4.4444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-501.33333333333314, 4))
Result.extend_point (create {EV_COORDINATE}.make_precise (-503.55555555555532, 0.44444444444445708))
Result.extend_point (create {EV_COORDINATE}.make_precise (-508.44444444444429, -0.4444444444442297))
Result.extend_point (create {EV_COORDINATE}.make_precise (-511.11111111111097, -0.4444444444442297))
Result.extend_point (create {EV_COORDINATE}.make_precise (-515.11111111111097, -5.3333333333330302))
Result.extend_point (create {EV_COORDINATE}.make_precise (-519.99999999999977, -9.7777777777777146))
Result.extend_point (create {EV_COORDINATE}.make_precise (-523.99999999999977, -13.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-526.22222222222206, -14.666666666666401))
Result.extend_point (create {EV_COORDINATE}.make_precise (-531.11111111111097, -16.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-531.55555555555532, -13.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (-533.33333333333314, -16.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-535.11111111111097, -32.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-532.88888888888869, -33.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (-535.55555555555532, -37.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-532.44444444444423, -37.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-529.33333333333314, -33.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (-526.22222222222206, -34.666666666666401))
Result.extend_point (create {EV_COORDINATE}.make_precise (-520.44444444444434, -40.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-518.66666666666652, -44.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-521.33333333333314, -61.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-519.11111111111097, -64.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-519.55555555555532, -72.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-517.7777777777776, -70.666666666666401))
Result.extend_point (create {EV_COORDINATE}.make_precise (-518.22222222222206, -82.666666666666401))
Result.extend_point (create {EV_COORDINATE}.make_precise (-523.99999999999977, -96))
Result.extend_point (create {EV_COORDINATE}.make_precise (-525.33333333333314, -102.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-531.55555555555532, -111.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-535.55555555555532, -129.77777777777754))
Result.extend_point (create {EV_COORDINATE}.make_precise (-534.6666666666664, -145.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-537.7777777777776, -155.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-543.55555555555532, -160.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-544.44444444444423, -168.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (-550.66666666666652, -178.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-553.7777777777776, -179.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-555.55555555555532, -189.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (-553.33333333333314, -190.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-557.7777777777776, -201.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-562.66666666666652, -211.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-567.55555555555532, -218.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-573.33333333333314, -223.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-575.11111111111086, -227.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-576.88888888888869, -229.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (-576.88888888888869, -231.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-578.6666666666664, -234.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-582.22222222222194, -246.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-580.88888888888869, -248.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (-578.6666666666664, -245.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-576.44444444444423, -236.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (-574.22222222222194, -233.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (-571.99999999999977, -235.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-569.33333333333314, -227.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-567.11111111111086, -227.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-567.99999999999977, -223.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-564.88888888888869, -223.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-564.44444444444423, -219.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-561.33333333333314, -220.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (-560.44444444444423, -226.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-567.11111111111086, -231.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-568.44444444444423, -236.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-571.11111111111086, -242.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-568.88888888888869, -247.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-567.99999999999977, -243.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-564.44444444444423, -242.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-563.99999999999977, -232.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-561.7777777777776, -230.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-559.99999999999977, -235.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-558.66666666666652, -228.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-555.11111111111086, -223.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-552.44444444444423, -227.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-553.33333333333314, -229.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (-552.88888888888869, -231.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-554.22222222222194, -235.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-552.44444444444423, -236.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-554.66666666666652, -240.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (-556.88888888888869, -243.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-560.88888888888869, -255.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-563.99999999999977, -257.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-565.7777777777776, -267.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-571.11111111111086, -272.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (-570.6666666666664, -283.55555555555537))
Result.extend_point (create {EV_COORDINATE}.make_precise (-567.99999999999977, -292.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-563.55555555555532, -298.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-562.22222222222194, -303.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-563.99999999999977, -303.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-563.11111111111086, -307.55555555555537))
Result.extend_point (create {EV_COORDINATE}.make_precise (-561.7777777777776, -308.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (-561.7777777777776, -312.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-565.33333333333314, -316.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-566.66666666666652, -322.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (-563.99999999999977, -322.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (-562.22222222222194, -327.55555555555537))
Result.extend_point (create {EV_COORDINATE}.make_precise (-559.99999999999977, -335.55555555555537))
Result.extend_point (create {EV_COORDINATE}.make_precise (-557.33333333333314, -339.55555555555537))
Result.extend_point (create {EV_COORDINATE}.make_precise (-552.88888888888869, -340.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (-554.66666666666652, -331.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-553.33333333333314, -326.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-554.66666666666652, -323.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-549.33333333333314, -324.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (-547.11111111111086, -330.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (-543.99999999999977, -334.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (-543.55555555555532, -338.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-536.44444444444423, -343.55555555555537))
Result.extend_point (create {EV_COORDINATE}.make_precise (-533.7777777777776, -342.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-528.44444444444423, -345.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-524.88888888888869, -345.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-523.99999999999977, -348.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-521.33333333333314, -352.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-516.44444444444434, -353.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-515.11111111111097, -356.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (-512.44444444444434, -359.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-508.44444444444429, -359.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-507.99999999999977, -363.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-502.22222222222206, -364.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-499.11111111111097, -367.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-495.55555555555532, -367.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (-492.88888888888869, -373.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-490.66666666666652, -374.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-492.44444444444429, -369.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-492.44444444444429, -366.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-489.77777777777754, -366.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-485.77777777777754, -368.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (-481.7777777777776, -364.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (-471.55555555555532, -367.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-461.33333333333314, -376.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-455.11111111111097, -375.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-447.99999999999977, -377.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-444.44444444444429, -383.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-439.99999999999977, -386.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-434.66666666666652, -385.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-431.11111111111097, -381.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-427.11111111111092, -383.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-425.7777777777776, -385.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-413.33333333333314, -387.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-399.11111111111092, -393.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-391.11111111111092, -400.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-383.99999999999977, -415.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (-381.77777777777766, -415.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-381.77777777777766, -420.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-378.66666666666657, -421.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-371.55555555555532, -425.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-367.55555555555532, -427.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (-367.11111111111092, -431.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-370.222222222222, -431.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-371.55555555555532, -438.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-372.8888888888888, -447.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-368.44444444444423, -456.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-363.11111111111092, -457.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-363.11111111111092, -461.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-356.8888888888888, -461.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-358.66666666666657, -462.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (-352.44444444444423, -471.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (-351.55555555555532, -469.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-353.33333333333326, -466.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (-349.33333333333326, -461.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-343.55555555555532, -447.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (-338.66666666666657, -442.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-339.55555555555532, -445.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-339.11111111111092, -455.55555555555526))
Result.extend_point (create {EV_COORDINATE}.make_precise (-334.222222222222, -452.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-334.66666666666657, -456.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-337.77777777777766, -462.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (-341.77777777777766, -463.55555555555526))
Result.extend_point (create {EV_COORDINATE}.make_precise (-342.66666666666657, -467.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (-339.99999999999977, -469.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-339.11111111111092, -471.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (-341.77777777777766, -472.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-335.99999999999977, -476.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-334.66666666666657, -473.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-330.66666666666657, -470.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-330.66666666666657, -474.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (-326.222222222222, -472.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-325.33333333333326, -468.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-320.44444444444423, -466.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-321.77777777777766, -471.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-310.222222222222, -469.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-319.55555555555532, -472.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-318.66666666666657, -477.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-315.11111111111092, -475.55555555555526))
Result.extend_point (create {EV_COORDINATE}.make_precise (-315.11111111111092, -480.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (-311.11111111111092, -487.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-319.11111111111092, -479.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (-320.8888888888888, -485.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-320.8888888888888, -489.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-318.66666666666657, -492.44444444444417))
Result.extend_point (create {EV_COORDINATE}.make_precise (-320.44444444444423, -495.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-322.222222222222, -495.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-319.11111111111092, -496.44444444444417))
Result.extend_point (create {EV_COORDINATE}.make_precise (-317.33333333333326, -497.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-315.99999999999977, -494.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-312.44444444444423, -497.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-309.33333333333326, -503.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-305.33333333333326, -503.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-301.77777777777771, -501.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-299.99999999999989, -499.55555555555526))
Result.extend_point (create {EV_COORDINATE}.make_precise (-295.55555555555532, -499.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-298.222222222222, -501.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-295.99999999999989, -503.55555555555526))
Result.extend_point (create {EV_COORDINATE}.make_precise (-301.77777777777771, -503.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-299.99999999999989, -505.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-303.11111111111092, -507.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-303.99999999999989, -509.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-305.77777777777771, -512.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-304.44444444444423, -516.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-302.222222222222, -514.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-300.88888888888869, -511.55555555555526))
Result.extend_point (create {EV_COORDINATE}.make_precise (-298.222222222222, -513.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-295.99999999999989, -511.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-294.222222222222, -514.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-293.33333333333326, -517.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-292.88888888888869, -521.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-290.222222222222, -519.5555555555552))
Result.extend_point (create {EV_COORDINATE}.make_precise (-291.11111111111092, -515.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-291.99999999999989, -511.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-287.99999999999989, -516.44444444444412))
Result.extend_point (create {EV_COORDINATE}.make_precise (-286.222222222222, -509.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-286.222222222222, -513.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-282.66666666666657, -515.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-284.44444444444423, -518.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-280.88888888888869, -521.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-282.222222222222, -523.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (-285.33333333333326, -523.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (-284.88888888888869, -527.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-282.222222222222, -528.88888888888857))
Result.extend_point (create {EV_COORDINATE}.make_precise (-278.66666666666657, -527.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (-278.66666666666657, -524.44444444444412))
Result.extend_point (create {EV_COORDINATE}.make_precise (-277.77777777777771, -521.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-275.99999999999989, -524.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-271.99999999999989, -529.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-273.33333333333326, -524.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-270.222222222222, -520.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-267.55555555555532, -526.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-264.44444444444423, -527.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-266.66666666666657, -527.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (-266.66666666666657, -531.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-262.222222222222, -532.88888888888857))
Result.extend_point (create {EV_COORDINATE}.make_precise (-258.66666666666657, -527.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (-252.44444444444423, -529.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-251.55555555555532, -525.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-246.66666666666657, -523.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-242.222222222222, -517.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-240.88888888888869, -514.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-233.77777777777771, -509.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-236.44444444444423, -505.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-236.88888888888869, -498.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-238.222222222222, -493.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-240.88888888888869, -489.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-234.222222222222, -495.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-232.88888888888869, -493.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-232.88888888888869, -496.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-234.66666666666657, -497.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-235.11111111111092, -501.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-232.44444444444423, -503.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-229.33333333333326, -507.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-223.99999999999989, -509.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-223.99999999999989, -506.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-213.33333333333326, -505.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-212.44444444444423, -503.55555555555526))
Result.extend_point (create {EV_COORDINATE}.make_precise (-212.44444444444423, -499.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-213.77777777777771, -497.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-210.222222222222, -498.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-208.88888888888869, -500.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (-209.33333333333326, -502.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-209.77777777777771, -505.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-205.33333333333326, -505.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-203.55555555555532, -501.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-202.222222222222, -498.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-198.66666666666652, -497.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-197.33333333333314, -493.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-193.77777777777783, -491.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-192.44444444444423, -493.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-195.99999999999983, -495.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-197.48148148148135, -499.55555555555526))
Result.extend_point (create {EV_COORDINATE}.make_precise (-200.74074074074053, -501.62962962962933))
Result.extend_point (create {EV_COORDINATE}.make_precise (-204.59259259259244, -507.55555555555526))
Result.extend_point (create {EV_COORDINATE}.make_precise (-201.03703703703695, -508.74074074074048))
Result.extend_point (create {EV_COORDINATE}.make_precise (-202.51851851851836, -511.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (-205.4814814814813, -515.25925925925901))
Result.extend_point (create {EV_COORDINATE}.make_precise (-208.74074074074053, -517.92592592592564))
Result.extend_point (create {EV_COORDINATE}.make_precise (-206.96296296296288, -522.07407407407379))
Result.extend_point (create {EV_COORDINATE}.make_precise (-202.51851851851836, -524.74074074074042))
Result.extend_point (create {EV_COORDINATE}.make_precise (-200.1481481481481, -528.88888888888857))
Result.extend_point (create {EV_COORDINATE}.make_precise (-197.48148148148135, -538.96296296296271))
Result.extend_point (create {EV_COORDINATE}.make_precise (-194.81481481481467, -540.14814814814781))
Result.extend_point (create {EV_COORDINATE}.make_precise (-194.222222222222, -537.48148148148118))
Result.extend_point (create {EV_COORDINATE}.make_precise (-191.85185185185179, -538.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-187.70370370370358, -542.81481481481455))
Result.extend_point (create {EV_COORDINATE}.make_precise (-187.40740740740722, -539.25925925925901))
Result.extend_point (create {EV_COORDINATE}.make_precise (-183.85185185185179, -538.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-186.222222222222, -540.74074074074042))
Result.extend_point (create {EV_COORDINATE}.make_precise (-186.222222222222, -543.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (-191.25925925925912, -546.07407407407379))
Result.extend_point (create {EV_COORDINATE}.make_precise (-190.37037037037027, -552.29629629629596))
Result.extend_point (create {EV_COORDINATE}.make_precise (-185.92592592592575, -552.59259259259227))
Result.extend_point (create {EV_COORDINATE}.make_precise (-185.33333333333314, -558.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-181.77777777777783, -559.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (-180.29629629629613, -564.14814814814781))
Result.extend_point (create {EV_COORDINATE}.make_precise (-174.96296296296288, -564.74074074074042))
Result.extend_point (create {EV_COORDINATE}.make_precise (-168.44444444444423, -565.62962962962933))
Result.extend_point (create {EV_COORDINATE}.make_precise (-171.70370370370358, -570.07407407407379))
Result.extend_point (create {EV_COORDINATE}.make_precise (-164.88888888888869, -570.96296296296271))
Result.extend_point (create {EV_COORDINATE}.make_precise (-161.92592592592575, -567.70370370370347))
Result.extend_point (create {EV_COORDINATE}.make_precise (-157.18518518518511, -567.40740740740716))
Result.extend_point (create {EV_COORDINATE}.make_precise (-150.96296296296288, -569.18518518518488))
Result.extend_point (create {EV_COORDINATE}.make_precise (-147.70370370370358, -566.51851851851825))
Result.extend_point (create {EV_COORDINATE}.make_precise (-142.96296296296293, -569.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-138.22222222222229, -570.96296296296271))
Result.extend_point (create {EV_COORDINATE}.make_precise (-130.51851851851848, -570.3703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (-133.48148148148141, -570.96296296296271))
Result.extend_point (create {EV_COORDINATE}.make_precise (-133.77777777777783, -575.40740740740716))
Result.extend_point (create {EV_COORDINATE}.make_precise (-136.44444444444423, -580.14814814814781))
Result.extend_point (create {EV_COORDINATE}.make_precise (-134.66666666666652, -583.40740740740716))
Result.extend_point (create {EV_COORDINATE}.make_precise (-139.1111111111112, -585.48148148148118))
Result.extend_point (create {EV_COORDINATE}.make_precise (-142.96296296296293, -585.18518518518488))
Result.extend_point (create {EV_COORDINATE}.make_precise (-144.1481481481481, -581.92592592592564))
Result.extend_point (create {EV_COORDINATE}.make_precise (-145.62962962962945, -584.29629629629596))
Result.extend_point (create {EV_COORDINATE}.make_precise (-147.11111111111092, -584.88888888888857))
Result.extend_point (create {EV_COORDINATE}.make_precise (-146.222222222222, -586.96296296296271))
Result.extend_point (create {EV_COORDINATE}.make_precise (-148.59259259259244, -586.96296296296271))
Result.extend_point (create {EV_COORDINATE}.make_precise (-147.99999999999983, -589.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-152.74074074074053, -588.74074074074042))
Result.extend_point (create {EV_COORDINATE}.make_precise (-151.85185185185179, -592.29629629629596))
Result.extend_point (create {EV_COORDINATE}.make_precise (-148.88888888888869, -592.59259259259227))
Result.extend_point (create {EV_COORDINATE}.make_precise (-147.70370370370358, -594.07407407407379))
Result.extend_point (create {EV_COORDINATE}.make_precise (-145.62962962962945, -593.18518518518488))
Result.extend_point (create {EV_COORDINATE}.make_precise (-143.85185185185179, -594.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-142.07407407407391, -591.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (-140.59259259259261, -593.18518518518488))
Result.extend_point (create {EV_COORDINATE}.make_precise (-138.51851851851848, -591.40740740740716))
Result.extend_point (create {EV_COORDINATE}.make_precise (-137.62962962962945, -593.18518518518488))
Result.extend_point (create {EV_COORDINATE}.make_precise (-137.62962962962945, -595.5555555555552))
Result.extend_point (create {EV_COORDINATE}.make_precise (-134.07407407407391, -596.44444444444412))
Result.extend_point (create {EV_COORDINATE}.make_precise (-134.07407407407391, -589.03703703703673))
Result.extend_point (create {EV_COORDINATE}.make_precise (-133.48148148148141, -585.18518518518488))
Result.extend_point (create {EV_COORDINATE}.make_precise (-131.70370370370358, -583.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (-127.85185185185185, -589.03703703703673))
Result.extend_point (create {EV_COORDINATE}.make_precise (-121.33333333333314, -581.03703703703673))
Result.extend_point (create {EV_COORDINATE}.make_precise (-117.77777777777783, -580.44444444444412))
Result.extend_point (create {EV_COORDINATE}.make_precise (-114.51851851851848, -578.3703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (-112.14814814814815, -579.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (-110.37037037037032, -577.48148148148118))
Result.extend_point (create {EV_COORDINATE}.make_precise (-106.51851851851848, -579.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (-103.85185185185185, -579.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (-105.03703703703695, -575.40740740740716))
Result.extend_point (create {EV_COORDINATE}.make_precise (-101.18518518518511, -576.59259259259227))
Result.extend_point (create {EV_COORDINATE}.make_precise (-98.518518518518476, -576.29629629629596))
Result.extend_point (create {EV_COORDINATE}.make_precise (-98.518518518518476, -570.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-95.555555555555316, -574.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-91.703703703703582, -570.96296296296271))
Result.extend_point (create {EV_COORDINATE}.make_precise (-87.259259259259125, -572.14814814814781))
Result.extend_point (create {EV_COORDINATE}.make_precise (-85.185185185185105, -575.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-81.037037037036953, -572.14814814814781))
Result.extend_point (create {EV_COORDINATE}.make_precise (-76.888888888888687, -567.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-74.518518518518476, -568.88888888888857))
Result.extend_point (create {EV_COORDINATE}.make_precise (-72.148148148148152, -572.14814814814781))
Result.extend_point (create {EV_COORDINATE}.make_precise (-67.407407407407391, -572.14814814814781))
Result.extend_point (create {EV_COORDINATE}.make_precise (-66.518518518518476, -575.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-63.555555555555316, -575.40740740740716))
Result.extend_point (create {EV_COORDINATE}.make_precise (-60, -578.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-57.629629629629449, -578.3703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (-59.407407407407391, -576.29629629629596))
Result.extend_point (create {EV_COORDINATE}.make_precise (-57.925925925925753, -575.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-64.148148148148152, -569.48148148148118))
Result.extend_point (create {EV_COORDINATE}.make_precise (-64.148148148148152, -566.51851851851825))
Result.extend_point (create {EV_COORDINATE}.make_precise (-61.185185185185105, -569.18518518518488))
Result.extend_point (create {EV_COORDINATE}.make_precise (-58.222222222222285, -569.48148148148118))
Result.extend_point (create {EV_COORDINATE}.make_precise (-55.851851851851848, -572.14814814814781))
Result.extend_point (create {EV_COORDINATE}.make_precise (-54.666666666666515, -567.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (-55.851851851851848, -563.85185185185151))
Result.extend_point (create {EV_COORDINATE}.make_precise (-52.296296296296191, -563.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (-49.037037037036953, -566.51851851851825))
Result.extend_point (create {EV_COORDINATE}.make_precise (-52.296296296296191, -569.18518518518488))
Result.extend_point (create {EV_COORDINATE}.make_precise (-51.1111111111112, -571.25925925925901))
Result.extend_point (create {EV_COORDINATE}.make_precise (-53.777777777777828, -572.14814814814781))
Result.extend_point (create {EV_COORDINATE}.make_precise (-49.629629629629449, -573.92592592592564))
Result.extend_point (create {EV_COORDINATE}.make_precise (-47.851851851851848, -573.92592592592564))
Result.extend_point (create {EV_COORDINATE}.make_precise (-49.037037037036953, -575.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (-46.074074074073906, -575.70370370370347))
Result.extend_point (create {EV_COORDINATE}.make_precise (-44, -576.88888888888857))
Result.extend_point (create {EV_COORDINATE}.make_precise (-43.407407407407391, -573.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-44.296296296296191, -568.59259259259227))
Result.extend_point (create {EV_COORDINATE}.make_precise (-41.037037037036953, -569.48148148148118))
Result.extend_point (create {EV_COORDINATE}.make_precise (-39.259259259259125, -571.85185185185151))
Result.extend_point (create {EV_COORDINATE}.make_precise (-38.370370370370324, -569.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-35.1111111111112, -568.59259259259227))
Result.extend_point (create {EV_COORDINATE}.make_precise (-35.407407407407391, -564.44444444444412))
Result.extend_point (create {EV_COORDINATE}.make_precise (-39.851851851851848, -558.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-43.703703703703582, -553.18518518518488))
Result.extend_point (create {EV_COORDINATE}.make_precise (-41.333333333333144, -551.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-44.296296296296191, -549.03703703703673))
Result.extend_point (create {EV_COORDINATE}.make_precise (-48.740740740740534, -542.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-48.740740740740534, -546.07407407407379))
Result.extend_point (create {EV_COORDINATE}.make_precise (-52.296296296296191, -543.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-53.185185185185105, -544.59259259259227))
Result.extend_point (create {EV_COORDINATE}.make_precise (-55.259259259259125, -543.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-57.037037037036953, -543.70370370370347))
Result.extend_point (create {EV_COORDINATE}.make_precise (-58.518518518518476, -541.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-56.44444444444423, -540.74074074074042))
Result.extend_point (create {EV_COORDINATE}.make_precise (-59.1111111111112, -538.07407407407379))
Result.extend_point (create {EV_COORDINATE}.make_precise (-58.518518518518476, -534.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-54.962962962962933, -535.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-54.962962962962933, -532.74074074074042))
Result.extend_point (create {EV_COORDINATE}.make_precise (-56.148148148148152, -527.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (-58.518518518518476, -525.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-58.518518518518476, -521.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (-62.370370370370324, -520.59259259259227))
Result.extend_point (create {EV_COORDINATE}.make_precise (-63.555555555555316, -516.44444444444412))
Result.extend_point (create {EV_COORDINATE}.make_precise (-65.333333333333144, -515.5555555555552))
Result.extend_point (create {EV_COORDINATE}.make_precise (-66.518518518518476, -510.81481481481455))
Result.extend_point (create {EV_COORDINATE}.make_precise (-69.48148148148141, -509.62962962962933))
Result.extend_point (create {EV_COORDINATE}.make_precise (-70.074074074073906, -504.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (-66.518518518518476, -501.92592592592564))
Result.extend_point (create {EV_COORDINATE}.make_precise (-64.148148148148152, -502.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-52.592592592592609, -494.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-50.814814814814667, -494.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-50.518518518518476, -490.3703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (-46.370370370370324, -488.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-45.48148148148141, -491.25925925925901))
Result.extend_point (create {EV_COORDINATE}.make_precise (-42.518518518518476, -491.25925925925901))
Result.extend_point (create {EV_COORDINATE}.make_precise (-42.518518518518476, -488.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-38.666666666666515, -488.29629629629602))
Result.extend_point (create {EV_COORDINATE}.make_precise (-36.296296296296191, -491.55555555555526))
Result.extend_point (create {EV_COORDINATE}.make_precise (-35.407407407407391, -489.48148148148124))
Result.extend_point (create {EV_COORDINATE}.make_precise (-37.777777777777828, -486.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-40.148148148148152, -484.74074074074048))
Result.extend_point (create {EV_COORDINATE}.make_precise (-38.074074074073906, -482.3703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (-33.925925925925753, -483.85185185185156))
Result.extend_point (create {EV_COORDINATE}.make_precise (-35.407407407407391, -485.92592592592564))
Result.extend_point (create {EV_COORDINATE}.make_precise (-33.333333333333144, -488.59259259259233))
Result.extend_point (create {EV_COORDINATE}.make_precise (-30.962962962962933, -487.70370370370347))
Result.extend_point (create {EV_COORDINATE}.make_precise (-30.962962962962933, -483.25925925925901))
Result.extend_point (create {EV_COORDINATE}.make_precise (-33.629629629629449, -481.18518518518493))
Result.extend_point (create {EV_COORDINATE}.make_precise (-28.592592592592609, -479.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (-22.666666666666515, -476.14814814814787))
Result.extend_point (create {EV_COORDINATE}.make_precise (-17.629629629629449, -475.55555555555526))
Result.extend_point (create {EV_COORDINATE}.make_precise (-10.222222222222285, -466.3703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (4, -461.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (12.444444444444684, -457.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (16.8888888888888, -449.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (21.777777777777715, -447.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (25.333333333333485, -443.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (32.8888888888888, -442.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (33.333333333333485, -438.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (44.444444444444684, -440.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (50.666666666666856, -444.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (53.777777777777942, -446.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (55.111111111111313, -456.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (62.222222222222172, -466.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (62.666666666666856, -470.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (66.666666666666856, -479.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (65.333333333333485, -482.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.333333333333485, -498.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (72.444444444444684, -499.55555555555526))
Result.extend_point (create {EV_COORDINATE}.make_precise (71.555555555555543, -504.44444444444417))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.333333333333485, -506.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.333333333333485, -517.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (70.666666666666856, -522.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.777777777777942, -525.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (67.111111111111313, -526.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (68.8888888888888, -535.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (71.555555555555543, -541.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (74.666666666666856, -540.44444444444412))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.777777777777942, -550.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (74.222222222222172, -553.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.999999999999886, -556.44444444444412))
Result.extend_point (create {EV_COORDINATE}.make_precise (78.666666666666856, -551.5555555555552))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.555555555555543, -559.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (79.111111111111313, -559.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (70.666666666666856, -559.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.999999999999886, -573.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (85.333333333333485, -573.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (78.666666666666856, -574.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (82.666666666666856, -587.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (83.111111111111313, -592.44444444444412))
Result.extend_point (create {EV_COORDINATE}.make_precise (83.555555555555543, -598.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (86.666666666666856, -598.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (88.8888888888888, -603.5555555555552))
Result.extend_point (create {EV_COORDINATE}.make_precise (95.111111111111313, -603.5555555555552))
Result.extend_point (create {EV_COORDINATE}.make_precise (92.444444444444684, -598.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (95.555555555555543, -599.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (98.222222222222172, -594.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (97.333333333333485, -590.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (99.999999999999886, -589.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (97.777777777777942, -582.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (99.555555555555543, -577.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (101.77777777777794, -575.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (104.8888888888888, -576.44444444444412))
Result.extend_point (create {EV_COORDINATE}.make_precise (108.8888888888888, -574.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (103.99999999999989, -569.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (104.8888888888888, -564.44444444444412))
Result.extend_point (create {EV_COORDINATE}.make_precise (108.44444444444468, -565.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (108.44444444444468, -560.88888888888857))
Result.extend_point (create {EV_COORDINATE}.make_precise (112.44444444444468, -560.44444444444412))
Result.extend_point (create {EV_COORDINATE}.make_precise (109.77777777777794, -551.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (115.11111111111131, -554.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (114.22222222222217, -543.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (116.44444444444468, -541.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (115.11111111111131, -532.44444444444412))
Result.extend_point (create {EV_COORDINATE}.make_precise (118.22222222222217, -527.5555555555552))
Result.extend_point (create {EV_COORDINATE}.make_precise (119.55555555555554, -521.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (121.77777777777794, -515.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (126.22222222222217, -515.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (129.33333333333348, -519.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (129.77777777777794, -521.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (133.77777777777794, -519.99999999999966))
Result.extend_point (create {EV_COORDINATE}.make_precise (137.33333333333348, -523.5555555555552))
Result.extend_point (create {EV_COORDINATE}.make_precise (138.66666666666686, -521.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (139.99999999999989, -514.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (147.55555555555554, -511.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (147.55555555555554, -507.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (153.77777777777794, -508.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (153.77777777777794, -504.44444444444417))
Result.extend_point (create {EV_COORDINATE}.make_precise (157.77777777777794, -503.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (153.77777777777794, -500.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (154.66666666666686, -496.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (156.8888888888888, -497.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (153.33333333333348, -492.44444444444417))
Result.extend_point (create {EV_COORDINATE}.make_precise (155.99999999999989, -489.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (157.33333333333348, -479.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (159.55555555555554, -478.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (159.99999999999989, -471.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (158.66666666666686, -468.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (162.22222222222217, -463.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (166.66666666666686, -459.99999999999977))
Result.extend_point (create {EV_COORDINATE}.make_precise (170.66666666666686, -458.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (168.8888888888888, -454.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (172.44444444444468, -447.55555555555526))
Result.extend_point (create {EV_COORDINATE}.make_precise (174.22222222222217, -442.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (174.22222222222217, -433.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (171.99999999999989, -428.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (172.44444444444468, -424.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (178.22222222222217, -426.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (179.55555555555554, -418.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (177.77777777777794, -412.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (179.99999999999989, -408.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (187.11111111111131, -403.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (190.22222222222217, -406.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (189.33333333333348, -402.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (191.99999999999989, -400.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (194.22222222222217, -403.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (195.11111111111131, -398.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (202.66666666666686, -397.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (202.22222222222217, -400.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (207.55555555555554, -391.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (204.44444444444468, -391.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (211.11111111111131, -388.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (211.55555555555554, -391.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (214.22222222222217, -386.222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (222.66666666666686, -384.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (221.77777777777794, -381.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (226.66666666666686, -379.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (227.55555555555554, -382.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (232.44444444444468, -378.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (237.77777777777794, -371.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (235.11111111111131, -373.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (232.44444444444468, -371.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (232.8888888888888, -365.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (237.33333333333348, -362.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (241.77777777777794, -359.55555555555532))
Result.extend_point (create {EV_COORDINATE}.make_precise (245.33333333333348, -357.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (244.8888888888888, -351.55555555555537))
Result.extend_point (create {EV_COORDINATE}.make_precise (245.33333333333348, -347.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (250.22222222222217, -346.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (247.99999999999989, -338.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (252.8888888888888, -327.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (256.44444444444468, -325.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (253.33333333333348, -321.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (258.22222222222229, -324.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (263.11111111111131, -318.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (260.88888888888903, -324.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (259.11111111111131, -331.55555555555537))
Result.extend_point (create {EV_COORDINATE}.make_precise (262.66666666666686, -331.55555555555537))
Result.extend_point (create {EV_COORDINATE}.make_precise (266.66666666666686, -324.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (274.66666666666686, -321.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (274.66666666666686, -325.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (271.99999999999966, -327.55555555555537))
Result.extend_point (create {EV_COORDINATE}.make_precise (274.22222222222229, -329.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (275.99999999999966, -327.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (279.55555555555566, -323.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (281.33333333333348, -318.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (279.99999999999966, -305.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (282.66666666666686, -296.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (284.88888888888903, -298.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (290.22222222222229, -298.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (292.88888888888903, -291.55555555555537))
Result.extend_point (create {EV_COORDINATE}.make_precise (293.33333333333348, -286.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (299.55555555555566, -284.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (301.33333333333348, -285.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (305.77777777777794, -281.77777777777749))
Result.extend_point (create {EV_COORDINATE}.make_precise (311.11111111111131, -268.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (317.77777777777794, -265.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (322.66666666666686, -255.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (329.33333333333348, -253.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (333.77777777777794, -259.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (335.11111111111131, -262.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (331.99999999999966, -265.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (337.33333333333348, -268.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (335.99999999999966, -264.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (338.66666666666686, -260.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (333.33333333333348, -245.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (332.44444444444468, -237.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (335.99999999999966, -237.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (331.11111111111131, -227.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (334.22222222222229, -227.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (333.33333333333348, -210.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (335.55555555555566, -207.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (332.44444444444468, -207.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (332.88888888888903, -199.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (338.22222222222229, -196.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (337.33333333333348, -192.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (340.44444444444468, -199.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (338.22222222222229, -208.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (340.88888888888903, -208.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (340.44444444444468, -202.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (342.66666666666686, -197.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (339.99999999999966, -188.44444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (340.44444444444468, -182.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (343.55555555555566, -178.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (343.11111111111131, -171.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (344.88888888888903, -166.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (344.44444444444468, -159.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (340.88888888888903, -157.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (341.77777777777794, -152.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (338.22222222222229, -150.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (336.88888888888903, -135.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (331.55555555555566, -118.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (330.22222222222229, -111.99999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (329.77777777777794, -108.44444444444423))
Result.extend_point (create {EV_COORDINATE}.make_precise (332.44444444444468, -108.88888888888863))
Result.extend_point (create {EV_COORDINATE}.make_precise (331.11111111111131, -101.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (328.88888888888903, -98.222222222221944))
Result.extend_point (create {EV_COORDINATE}.make_precise (329.33333333333348, -92))
Result.extend_point (create {EV_COORDINATE}.make_precise (325.33333333333348, -85.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (325.33333333333348, -81.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (321.33333333333348, -80))
Result.extend_point (create {EV_COORDINATE}.make_precise (320.44444444444468, -76))
Result.extend_point (create {EV_COORDINATE}.make_precise (320.44444444444468, -67.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (315.55555555555566, -65.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (312.44444444444468, -59.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (309.77777777777794, -57.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (304.44444444444468, -56))
Result.extend_point (create {EV_COORDINATE}.make_precise (298.66666666666686, -45.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (291.99999999999966, -37.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (290.66666666666686, -28))
end
melville_island_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-183.85185185185173, -592.88888888888857))
Result.extend_point (create {EV_COORDINATE}.make_precise (-180.29629629629613, -589.92592592592564))
Result.extend_point (create {EV_COORDINATE}.make_precise (-178.222222222222, -589.33333333333303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-174.96296296296282, -583.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-176.44444444444423, -587.25925925925901))
Result.extend_point (create {EV_COORDINATE}.make_precise (-172.88888888888869, -589.62962962962933))
Result.extend_point (create {EV_COORDINATE}.make_precise (-170.81481481481467, -588.44444444444412))
Result.extend_point (create {EV_COORDINATE}.make_precise (-168.74074074074053, -590.51851851851825))
Result.extend_point (create {EV_COORDINATE}.make_precise (-166.07407407407391, -589.03703703703673))
Result.extend_point (create {EV_COORDINATE}.make_precise (-164.88888888888869, -592.29629629629596))
Result.extend_point (create {EV_COORDINATE}.make_precise (-161.33333333333314, -591.11111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-158.07407407407391, -587.25925925925901))
Result.extend_point (create {EV_COORDINATE}.make_precise (-159.55555555555532, -584.29629629629596))
Result.extend_point (create {EV_COORDINATE}.make_precise (-158.96296296296282, -582.22222222222194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-161.33333333333314, -581.92592592592564))
Result.extend_point (create {EV_COORDINATE}.make_precise (-163.40740740740722, -578.6666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-169.03703703703695, -576.29629629629596))
Result.extend_point (create {EV_COORDINATE}.make_precise (-171.11111111111092, -574.51851851851825))
Result.extend_point (create {EV_COORDINATE}.make_precise (-177.92592592592575, -577.48148148148118))
Result.extend_point (create {EV_COORDINATE}.make_precise (-180.29629629629613, -576.59259259259227))
Result.extend_point (create {EV_COORDINATE}.make_precise (-185.92592592592575, -578.07407407407379))
Result.extend_point (create {EV_COORDINATE}.make_precise (-191.85185185185173, -576.88888888888857))
Result.extend_point (create {EV_COORDINATE}.make_precise (-193.33333333333314, -578.3703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (-192.14814814814804, -579.85185185185151))
Result.extend_point (create {EV_COORDINATE}.make_precise (-192.14814814814804, -581.62962962962933))
Result.extend_point (create {EV_COORDINATE}.make_precise (-188.29629629629613, -580.74074074074042))
Result.extend_point (create {EV_COORDINATE}.make_precise (-188.59259259259244, -584.59259259259227))
Result.extend_point (create {EV_COORDINATE}.make_precise (-190.37037037037027, -585.48148148148118))
Result.extend_point (create {EV_COORDINATE}.make_precise (-190.07407407407391, -587.25925925925901))
Result.extend_point (create {EV_COORDINATE}.make_precise (-185.92592592592575, -588.44444444444412))
end
invariant
correct_port: attached target_imp implies port = game.australia
end

View File

@@ -0,0 +1,111 @@
note
description: "[
The widget representing this port
]"
author: "Jimmy J. Johnson"
class
CEYLON_WIDGET
inherit
-- RED_PORT_WIDGET
-- undefine
-- paint
-- redefine
-- create_interface_objects,
-- initialize,
-- extend_widgets,
-- position_widgets
-- end
ISLAND_PORT_WIDGET
redefine
create_interface_objects,
extend_widgets,
-- initialize,
set_fonts_and_colors,
position_widgets,
rotation_amount
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Create widgets
do
create not_allowed_text_mt.make_with_text ("(No U.S. Allowed)")
create reinforcements_text_mt.make_with_text ("British Reinforcements%Nexcept the Victorious")
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {RED_PORT_WIDGET}
end
extend_widgets
-- Put widgets into Current. This cannot be done
-- in `create_interface_object', because cannot call
-- `extend' feature until all objects [in descendants]
-- are also created.
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {RED_PORT_WIDGET}
text_group.extend (not_allowed_text_mt)
text_group.extend (reinforcements_text_mt)
end
set_fonts_and_colors
-- Set the default fonts for any text widgets and set
-- the default colors for any contained widgets.
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {RED_PORT_WIDGET}
not_allowed_text_mt.set_font (Subtext_font)
reinforcements_text_mt.set_font (Subtext_font)
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {RED_PORT_WIDGET}
center_on (22, 178)
-- center_on (50, 200)
text_group.set_x_y (inner_circle.x + 2, inner_circle.y + 6)
anchor.set_x_y (inner_circle.x + 1, inner_circle.y - 2)
not_allowed_text_mt.set_x_y (inner_circle.x + 19, inner_circle.y - 10)
reinforcements_text_mt.set_x_y (inner_circle.x + 17, inner_circle.y + 17)
marker.set_x_y (inner_circle.x - 6, inner_circle.y - 6)
-- text_widget.center_on_dot (dot)
-- translate_widget (name_mt, 0, 6)
-- translate_widget (not_allowed_text, 58, 41)
-- translate_widget (reinforcements_text, 55, 70)
-- marker.center_on_dot (dot)
-- marker.set_x_y (dot.x, dot.y)
-- anchor.center_on_dot (dot)
-- anchor.set_x_y (dot.x, dot.y)
-- translate_widget (marker, -7, -6)
-- translate_widget (anchor, -1, -4)
end
feature -- Status report
is_red: BOOLEAN = True
-- Does Current represent a red (i.e. major) port?
feature {NONE} -- Implementation
not_allowed_text_mt: EV_MODEL_TEXT
-- Extra text on some Red ports (e.g. "No British Allowed").
reinforcements_text_mt: EV_MODEL_TEXT
-- Extra text about reinforcement placement
rotation_amount: REAL_64 = 150.0
-- Make the arrow point north-east
end

View File

@@ -0,0 +1,493 @@
note
description: "[
The widget representing this port
]"
author: "Jimmy J. Johnson"
class
DUTCH_HARBOR_WIDGET
inherit
-- GREEN_PORT_WIDGET
-- undefine
-- paint
-- redefine
-- create_interface_objects,
-- initialize,
-- position_widgets,
-- build_land
-- end
ISLAND_PORT_WIDGET
redefine
create_interface_objects,
-- initialize,
position_widgets,
build_land,
rotation_amount
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
unalaska_island := unalaska_island_imp
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
end
-- initialize
-- -- Set up the widgets in Current.
-- do
-- Precursor {ISLAND_PORT_WIDGET}
---- Precursor {GREEN_PORT_WIDGET}
-- end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
center_on (666, 67)
bring_to_front (land)
translate_widget (land, -4, -7)
scale_widget (land, 0.3)
rotate_widget (land, 13.0)
translate_widget (name_mt, 0, -1)
-- marker.center_on_dot (dot)
marker.set_x_y (dot.x, dot.y)
translate_widget (marker, 0, 7)
end
build_land
-- Add widgets to Current
do
Precursor {ISLAND_PORT_WIDGET}
land.extend (unalaska_island)
end
feature -- Status report
is_red: BOOLEAN = False
-- Does Current represent a red (i.e. major) port?
feature {NONE} -- Implementation
unalaska_island: EV_MODEL_POLYGON
feature {NONE} -- Implementation
unalaska_island_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (3.5555555555556566, -0.59259259259255259))
Result.extend_point (create {EV_COORDINATE}.make_precise (4.148148148148266, -2.6666666666666288))
Result.extend_point (create {EV_COORDINATE}.make_precise (8.5925925925921547, -6.8148148148147811))
Result.extend_point (create {EV_COORDINATE}.make_precise (11.851851851851734, -7.7037037037036953))
Result.extend_point (create {EV_COORDINATE}.make_precise (11.555555555555657, -9.185185185185162))
Result.extend_point (create {EV_COORDINATE}.make_precise (16.296296296296305, -11.851851851851848))
Result.extend_point (create {EV_COORDINATE}.make_precise (16.888888888889142, -10.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (18.962962962963047, -11.259259259259238))
Result.extend_point (create {EV_COORDINATE}.make_precise (23.407407407407391, -10.370370370370324))
Result.extend_point (create {EV_COORDINATE}.make_precise (22.518518518518249, -12.740740740740705))
Result.extend_point (create {EV_COORDINATE}.make_precise (25.185185185184991, -13.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (26.370370370370438, -14.518518518518476))
Result.extend_point (create {EV_COORDINATE}.make_precise (27.259259259258897, -11.851851851851848))
Result.extend_point (create {EV_COORDINATE}.make_precise (30.518518518518249, -12.740740740740705))
Result.extend_point (create {EV_COORDINATE}.make_precise (32, -12.148148148148096))
Result.extend_point (create {EV_COORDINATE}.make_precise (32, -14.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (29.92592592592564, -15.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (33.481481481481524, -18.370370370370324))
Result.extend_point (create {EV_COORDINATE}.make_precise (34.666666666666742, -21.03703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (38.518518518518249, -19.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (41.777777777778056, -15.703703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (42.074074074073906, -18.074074074074019))
Result.extend_point (create {EV_COORDINATE}.make_precise (41.185185185184991, -21.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (47.111111111111313, -15.703703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (48.296296296296305, -16.296296296296305))
Result.extend_point (create {EV_COORDINATE}.make_precise (46.518518518518249, -21.629629629629676))
Result.extend_point (create {EV_COORDINATE}.make_precise (47.703703703703923, -22.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (51.851851851851734, -18.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (51.555555555555657, -21.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (53.92592592592564, -22.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (50.962962962963047, -23.703703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (50.370370370370438, -26.370370370370324))
Result.extend_point (create {EV_COORDINATE}.make_precise (58.962962962963047, -24))
Result.extend_point (create {EV_COORDINATE}.make_precise (59.259259259258897, -25.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (61.03703703703718, -25.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (61.629629629629562, -23.407407407407391))
Result.extend_point (create {EV_COORDINATE}.make_precise (64, -26.074074074074019))
Result.extend_point (create {EV_COORDINATE}.make_precise (61.03703703703718, -27.851851851851848))
Result.extend_point (create {EV_COORDINATE}.make_precise (62.518518518518249, -28.148148148148096))
Result.extend_point (create {EV_COORDINATE}.make_precise (62.518518518518249, -30.814814814814781))
Result.extend_point (create {EV_COORDINATE}.make_precise (60.444444444444798, -31.407407407407391))
Result.extend_point (create {EV_COORDINATE}.make_precise (60.444444444444798, -33.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (70.222222222222399, -30.814814814814781))
Result.extend_point (create {EV_COORDINATE}.make_precise (72.592592592592155, -32.592592592592553))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.851851851851734, -33.185185185185162))
Result.extend_point (create {EV_COORDINATE}.make_precise (77.333333333333485, -34.370370370370324))
Result.extend_point (create {EV_COORDINATE}.make_precise (79.407407407407391, -33.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (78.814814814814781, -35.851851851851848))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.851851851851734, -34.96296296296299))
Result.extend_point (create {EV_COORDINATE}.make_precise (73.481481481481524, -34.96296296296299))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.92592592592564, -32.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (68.740740740740648, -34.96296296296299))
Result.extend_point (create {EV_COORDINATE}.make_precise (66.370370370370438, -35.851851851851848))
Result.extend_point (create {EV_COORDINATE}.make_precise (65.185185185184991, -37.925925925925867))
Result.extend_point (create {EV_COORDINATE}.make_precise (66.074074074073906, -40))
Result.extend_point (create {EV_COORDINATE}.make_precise (64.592592592592155, -40))
Result.extend_point (create {EV_COORDINATE}.make_precise (64, -43.259259259259238))
Result.extend_point (create {EV_COORDINATE}.make_precise (62.518518518518249, -45.03703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (63.407407407407391, -47.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (66.666666666666742, -48.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (68.740740740740648, -49.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (70.222222222222399, -47.703703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (72, -48))
Result.extend_point (create {EV_COORDINATE}.make_precise (73.481481481481524, -44.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (74.666666666666742, -46.518518518518476))
Result.extend_point (create {EV_COORDINATE}.make_precise (73.185185185184991, -49.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (76.148148148148266, -47.703703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (77.333333333333485, -49.185185185185162))
Result.extend_point (create {EV_COORDINATE}.make_precise (76.444444444444798, -50.96296296296299))
Result.extend_point (create {EV_COORDINATE}.make_precise (74.962962962963047, -53.03703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (72.888888888889142, -53.03703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (71.407407407407391, -56.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (73.185185185184991, -60.444444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (76.444444444444798, -62.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (83.259259259258897, -61.925925925925867))
Result.extend_point (create {EV_COORDINATE}.make_precise (86.814814814814781, -62.518518518518476))
Result.extend_point (create {EV_COORDINATE}.make_precise (87.407407407407391, -59.851851851851819))
Result.extend_point (create {EV_COORDINATE}.make_precise (90.666666666666742, -56.296296296296305))
Result.extend_point (create {EV_COORDINATE}.make_precise (90.370370370370438, -52.740740740740705))
Result.extend_point (create {EV_COORDINATE}.make_precise (89.777777777778056, -49.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (92.148148148148266, -51.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (93.03703703703718, -53.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (94.518518518518249, -50.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (97.481481481481524, -49.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (96.296296296296305, -53.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (94.814814814814781, -56.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (93.333333333333485, -57.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (93.629629629629562, -59.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (92.740740740740648, -60.740740740740705))
Result.extend_point (create {EV_COORDINATE}.make_precise (94.518518518518249, -61.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (98.370370370370438, -57.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (101.03703703703718, -60.444444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (98.962962962963047, -60.148148148148096))
Result.extend_point (create {EV_COORDINATE}.make_precise (97.481481481481524, -60.740740740740705))
Result.extend_point (create {EV_COORDINATE}.make_precise (96.592592592592155, -62.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (99.851851851851734, -62.518518518518476))
Result.extend_point (create {EV_COORDINATE}.make_precise (104, -62.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (105.77777777777806, -63.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (101.92592592592564, -63.999999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (97.777777777778056, -65.185185185185162))
Result.extend_point (create {EV_COORDINATE}.make_precise (94.222222222222399, -65.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (89.481481481481524, -65.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (90.370370370370438, -67.25925925925921))
Result.extend_point (create {EV_COORDINATE}.make_precise (88.888888888889142, -68.740740740740705))
Result.extend_point (create {EV_COORDINATE}.make_precise (84.740740740740648, -68.444444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (81.185185185184991, -71.703703703703667))
Result.extend_point (create {EV_COORDINATE}.make_precise (78.518518518518249, -69.03703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (74.666666666666742, -68.444444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (74.370370370370438, -70.814814814814753))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.851851851851734, -73.185185185185162))
Result.extend_point (create {EV_COORDINATE}.make_precise (74.370370370370438, -73.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (73.481481481481524, -72.296296296296305))
Result.extend_point (create {EV_COORDINATE}.make_precise (71.111111111111313, -73.185185185185162))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.333333333333485, -74.370370370370324))
Result.extend_point (create {EV_COORDINATE}.make_precise (72.592592592592155, -74.96296296296299))
Result.extend_point (create {EV_COORDINATE}.make_precise (72.592592592592155, -76.444444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (70.814814814814781, -76.444444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.333333333333485, -78.814814814814753))
Result.extend_point (create {EV_COORDINATE}.make_precise (66.666666666666742, -79.407407407407362))
Result.extend_point (create {EV_COORDINATE}.make_precise (64, -79.407407407407362))
Result.extend_point (create {EV_COORDINATE}.make_precise (63.111111111111313, -85.03703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (64.592592592592155, -85.925925925925867))
Result.extend_point (create {EV_COORDINATE}.make_precise (66.370370370370438, -85.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (68.444444444444798, -87.999999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.03703703703718, -90.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.333333333333485, -93.03703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (71.407407407407391, -95.407407407407362))
Result.extend_point (create {EV_COORDINATE}.make_precise (73.185185185184991, -95.407407407407362))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.555555555555657, -97.185185185185162))
Result.extend_point (create {EV_COORDINATE}.make_precise (74.962962962963047, -98.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (77.03703703703718, -100.1481481481481))
Result.extend_point (create {EV_COORDINATE}.make_precise (79.407407407407391, -99.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (81.777777777778056, -101.03703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (82.666666666666742, -102.51851851851848))
Result.extend_point (create {EV_COORDINATE}.make_precise (84.444444444444798, -101.92592592592587))
Result.extend_point (create {EV_COORDINATE}.make_precise (85.03703703703718, -103.99999999999997))
Result.extend_point (create {EV_COORDINATE}.make_precise (88.296296296296305, -104.29629629629628))
Result.extend_point (create {EV_COORDINATE}.make_precise (90.666666666666742, -102.51851851851848))
Result.extend_point (create {EV_COORDINATE}.make_precise (93.03703703703718, -103.11111111111106))
Result.extend_point (create {EV_COORDINATE}.make_precise (93.333333333333485, -104.59259259259255))
Result.extend_point (create {EV_COORDINATE}.make_precise (96.592592592592155, -105.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (99.259259259258897, -107.25925925925921))
Result.extend_point (create {EV_COORDINATE}.make_precise (100.74074074074065, -108.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (101.92592592592564, -106.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (101.62962962962956, -103.70370370370367))
Result.extend_point (create {EV_COORDINATE}.make_precise (102.51851851851825, -101.92592592592587))
Result.extend_point (create {EV_COORDINATE}.make_precise (104, -103.11111111111106))
Result.extend_point (create {EV_COORDINATE}.make_precise (104.59259259259215, -106.07407407407402))
Result.extend_point (create {EV_COORDINATE}.make_precise (107.85185185185173, -109.03703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (111.40740740740739, -107.25925925925921))
Result.extend_point (create {EV_COORDINATE}.make_precise (113.77777777777806, -104.29629629629628))
Result.extend_point (create {EV_COORDINATE}.make_precise (114.96296296296305, -99.25925925925921))
Result.extend_point (create {EV_COORDINATE}.make_precise (111.70370370370392, -98.962962962962933))
Result.extend_point (create {EV_COORDINATE}.make_precise (111.70370370370392, -96.888888888888886))
Result.extend_point (create {EV_COORDINATE}.make_precise (109.03703703703718, -94.518518518518476))
Result.extend_point (create {EV_COORDINATE}.make_precise (110.81481481481478, -91.851851851851819))
Result.extend_point (create {EV_COORDINATE}.make_precise (112.2962962962963, -90.074074074074019))
Result.extend_point (create {EV_COORDINATE}.make_precise (110.51851851851825, -87.999999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (112.2962962962963, -86.518518518518476))
Result.extend_point (create {EV_COORDINATE}.make_precise (114.66666666666674, -87.703703703703667))
Result.extend_point (create {EV_COORDINATE}.make_precise (114.96296296296305, -83.851851851851819))
Result.extend_point (create {EV_COORDINATE}.make_precise (112.2962962962963, -80.296296296296305))
Result.extend_point (create {EV_COORDINATE}.make_precise (114.66666666666674, -80.296296296296305))
Result.extend_point (create {EV_COORDINATE}.make_precise (116.4444444444448, -82.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (118.51851851851825, -85.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (117.62962962962956, -86.518518518518476))
Result.extend_point (create {EV_COORDINATE}.make_precise (118.81481481481478, -88.592592592592553))
Result.extend_point (create {EV_COORDINATE}.make_precise (118.81481481481478, -91.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (122.66666666666674, -93.629629629629619))
Result.extend_point (create {EV_COORDINATE}.make_precise (120.88888888888914, -89.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (120.59259259259215, -86.814814814814753))
Result.extend_point (create {EV_COORDINATE}.make_precise (122.96296296296305, -88.592592592592553))
Result.extend_point (create {EV_COORDINATE}.make_precise (123.55555555555566, -90.370370370370324))
Result.extend_point (create {EV_COORDINATE}.make_precise (125.92592592592564, -91.25925925925921))
Result.extend_point (create {EV_COORDINATE}.make_precise (128, -91.25925925925921))
Result.extend_point (create {EV_COORDINATE}.make_precise (128.88888888888914, -93.925925925925867))
Result.extend_point (create {EV_COORDINATE}.make_precise (128.88888888888914, -98.370370370370324))
Result.extend_point (create {EV_COORDINATE}.make_precise (130.96296296296305, -97.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (131.2592592592589, -101.03703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (131.85185185185173, -103.70370370370367))
Result.extend_point (create {EV_COORDINATE}.make_precise (134.2222222222224, -105.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (134.51851851851825, -106.96296296296293))
Result.extend_point (create {EV_COORDINATE}.make_precise (136.2962962962963, -104.29629629629628))
Result.extend_point (create {EV_COORDINATE}.make_precise (134.2222222222224, -100.7407407407407))
Result.extend_point (create {EV_COORDINATE}.make_precise (134.51851851851825, -97.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (138.37037037037044, -98.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (139.55555555555566, -99.851851851851819))
Result.extend_point (create {EV_COORDINATE}.make_precise (141.62962962962956, -100.1481481481481))
Result.extend_point (create {EV_COORDINATE}.make_precise (142.51851851851825, -103.11111111111106))
Result.extend_point (create {EV_COORDINATE}.make_precise (144.2962962962963, -103.40740740740736))
Result.extend_point (create {EV_COORDINATE}.make_precise (144.88888888888914, -99.25925925925921))
Result.extend_point (create {EV_COORDINATE}.make_precise (146.07407407407391, -97.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (145.48148148148152, -95.111111111111057))
Result.extend_point (create {EV_COORDINATE}.make_precise (142.81481481481478, -93.629629629629619))
Result.extend_point (create {EV_COORDINATE}.make_precise (143.70370370370392, -92.740740740740705))
Result.extend_point (create {EV_COORDINATE}.make_precise (146.07407407407391, -93.629629629629619))
Result.extend_point (create {EV_COORDINATE}.make_precise (147.55555555555566, -96.592592592592553))
Result.extend_point (create {EV_COORDINATE}.make_precise (149.03703703703718, -95.407407407407362))
Result.extend_point (create {EV_COORDINATE}.make_precise (149.33333333333348, -91.851851851851819))
Result.extend_point (create {EV_COORDINATE}.make_precise (146.37037037037044, -91.25925925925921))
Result.extend_point (create {EV_COORDINATE}.make_precise (147.55555555555566, -88.592592592592553))
Result.extend_point (create {EV_COORDINATE}.make_precise (142.51851851851825, -86.518518518518476))
Result.extend_point (create {EV_COORDINATE}.make_precise (139.85185185185173, -86.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (137.18518518518499, -88.592592592592553))
Result.extend_point (create {EV_COORDINATE}.make_precise (136, -84.148148148148096))
Result.extend_point (create {EV_COORDINATE}.make_precise (133.92592592592564, -82.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (133.92592592592564, -80.296296296296305))
Result.extend_point (create {EV_COORDINATE}.make_precise (129.77777777777806, -79.703703703703667))
Result.extend_point (create {EV_COORDINATE}.make_precise (130.96296296296305, -76.444444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (128.88888888888914, -75.851851851851819))
Result.extend_point (create {EV_COORDINATE}.make_precise (126.51851851851825, -75.851851851851819))
Result.extend_point (create {EV_COORDINATE}.make_precise (127.40740740740739, -73.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (121.48148148148152, -75.25925925925921))
Result.extend_point (create {EV_COORDINATE}.make_precise (121.18518518518499, -73.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (118.51851851851825, -73.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (122.66666666666674, -71.999999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (124.14814814814827, -70.814814814814753))
Result.extend_point (create {EV_COORDINATE}.make_precise (119.70370370370392, -68.740740740740705))
Result.extend_point (create {EV_COORDINATE}.make_precise (116.74074074074065, -68.148148148148096))
Result.extend_point (create {EV_COORDINATE}.make_precise (113.77777777777806, -66.96296296296299))
Result.extend_point (create {EV_COORDINATE}.make_precise (115.55555555555566, -65.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (117.62962962962956, -65.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (117.92592592592564, -63.703703703703667))
Result.extend_point (create {EV_COORDINATE}.make_precise (114.66666666666674, -61.925925925925867))
Result.extend_point (create {EV_COORDINATE}.make_precise (114.07407407407391, -60.740740740740705))
Result.extend_point (create {EV_COORDINATE}.make_precise (117.03703703703718, -60.740740740740705))
Result.extend_point (create {EV_COORDINATE}.make_precise (118.81481481481478, -62.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (118.81481481481478, -57.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (120.59259259259215, -60.148148148148096))
Result.extend_point (create {EV_COORDINATE}.make_precise (121.48148148148152, -63.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (122.37037037037044, -64.592592592592553))
Result.extend_point (create {EV_COORDINATE}.make_precise (124.74074074074065, -62.518518518518476))
Result.extend_point (create {EV_COORDINATE}.make_precise (124.14814814814827, -60.148148148148096))
Result.extend_point (create {EV_COORDINATE}.make_precise (125.62962962962956, -61.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (125.92592592592564, -64.888888888888886))
Result.extend_point (create {EV_COORDINATE}.make_precise (126.2222222222224, -66.96296296296299))
Result.extend_point (create {EV_COORDINATE}.make_precise (130.96296296296305, -69.629629629629648))
Result.extend_point (create {EV_COORDINATE}.make_precise (132.14814814814827, -67.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (131.85185185185173, -65.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (133.92592592592564, -65.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (134.81481481481478, -63.999999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (134.81481481481478, -67.25925925925921))
Result.extend_point (create {EV_COORDINATE}.make_precise (135.40740740740739, -71.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (136.59259259259215, -72.888888888888886))
Result.extend_point (create {EV_COORDINATE}.make_precise (139.2592592592589, -71.999999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (140.14814814814827, -68.740740740740705))
Result.extend_point (create {EV_COORDINATE}.make_precise (139.2592592592589, -66.074074074074019))
Result.extend_point (create {EV_COORDINATE}.make_precise (141.92592592592564, -65.185185185185162))
Result.extend_point (create {EV_COORDINATE}.make_precise (142.2222222222224, -66.96296296296299))
Result.extend_point (create {EV_COORDINATE}.make_precise (141.62962962962956, -69.925925925925867))
Result.extend_point (create {EV_COORDINATE}.make_precise (141.03703703703718, -75.25925925925921))
Result.extend_point (create {EV_COORDINATE}.make_precise (142.81481481481478, -72.888888888888886))
Result.extend_point (create {EV_COORDINATE}.make_precise (144.2962962962963, -74.96296296296299))
Result.extend_point (create {EV_COORDINATE}.make_precise (146.66666666666674, -77.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (146.96296296296305, -72.888888888888886))
Result.extend_point (create {EV_COORDINATE}.make_precise (149.03703703703718, -73.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (149.33333333333348, -79.407407407407362))
Result.extend_point (create {EV_COORDINATE}.make_precise (151.11111111111131, -81.185185185185162))
Result.extend_point (create {EV_COORDINATE}.make_precise (152.59259259259215, -79.999999999999972))
Result.extend_point (create {EV_COORDINATE}.make_precise (152.88888888888914, -82.074074074074019))
Result.extend_point (create {EV_COORDINATE}.make_precise (155.2592592592589, -82.074074074074019))
Result.extend_point (create {EV_COORDINATE}.make_precise (157.62962962962956, -83.851851851851819))
Result.extend_point (create {EV_COORDINATE}.make_precise (160, -82.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (156.4444444444448, -78.518518518518476))
Result.extend_point (create {EV_COORDINATE}.make_precise (155.55555555555566, -76.740740740740705))
Result.extend_point (create {EV_COORDINATE}.make_precise (158.2222222222224, -75.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (156.4444444444448, -73.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (157.62962962962956, -71.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (151.70370370370392, -71.407407407407362))
Result.extend_point (create {EV_COORDINATE}.make_precise (153.48148148148152, -66.96296296296299))
Result.extend_point (create {EV_COORDINATE}.make_precise (152.2962962962963, -65.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (148.4444444444448, -65.185185185185162))
Result.extend_point (create {EV_COORDINATE}.make_precise (149.92592592592564, -62.518518518518476))
Result.extend_point (create {EV_COORDINATE}.make_precise (146.96296296296305, -62.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (145.18518518518499, -64.888888888888886))
Result.extend_point (create {EV_COORDINATE}.make_precise (143.40740740740739, -64.296296296296305))
Result.extend_point (create {EV_COORDINATE}.make_precise (144.88888888888914, -61.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (142.81481481481478, -59.851851851851819))
Result.extend_point (create {EV_COORDINATE}.make_precise (144, -57.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (141.33333333333348, -57.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (141.03703703703718, -56.296296296296305))
Result.extend_point (create {EV_COORDINATE}.make_precise (137.77777777777806, -58.074074074074019))
Result.extend_point (create {EV_COORDINATE}.make_precise (136.88888888888914, -55.407407407407391))
Result.extend_point (create {EV_COORDINATE}.make_precise (133.92592592592564, -58.370370370370324))
Result.extend_point (create {EV_COORDINATE}.make_precise (133.62962962962956, -56.296296296296305))
Result.extend_point (create {EV_COORDINATE}.make_precise (130.96296296296305, -56.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (132.4444444444448, -53.03703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (130.37037037037044, -53.629629629629676))
Result.extend_point (create {EV_COORDINATE}.make_precise (127.40740740740739, -50.370370370370324))
Result.extend_point (create {EV_COORDINATE}.make_precise (122.96296296296305, -52.740740740740705))
Result.extend_point (create {EV_COORDINATE}.make_precise (123.2592592592589, -49.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (120, -53.03703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (119.70370370370392, -49.185185185185162))
Result.extend_point (create {EV_COORDINATE}.make_precise (116.4444444444448, -48.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (120.2962962962963, -46.814814814814781))
Result.extend_point (create {EV_COORDINATE}.make_precise (122.37037037037044, -42.074074074074019))
Result.extend_point (create {EV_COORDINATE}.make_precise (120.2962962962963, -44.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (117.62962962962956, -45.629629629629676))
Result.extend_point (create {EV_COORDINATE}.make_precise (116.74074074074065, -42.370370370370324))
Result.extend_point (create {EV_COORDINATE}.make_precise (117.33333333333348, -39.703703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (116.4444444444448, -38.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (114.37037037037044, -39.703703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (115.85185185185173, -34.074074074074019))
Result.extend_point (create {EV_COORDINATE}.make_precise (113.48148148148152, -36.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (112, -37.925925925925867))
Result.extend_point (create {EV_COORDINATE}.make_precise (111.70370370370392, -42.96296296296299))
Result.extend_point (create {EV_COORDINATE}.make_precise (110.51851851851825, -41.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (109.03703703703718, -44.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (108.4444444444448, -40.592592592592553))
Result.extend_point (create {EV_COORDINATE}.make_precise (109.62962962962956, -37.03703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (110.2222222222224, -33.185185185185162))
Result.extend_point (create {EV_COORDINATE}.make_precise (107.55555555555566, -34.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (105.18518518518499, -35.259259259259238))
Result.extend_point (create {EV_COORDINATE}.make_precise (104.2962962962963, -38.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (103.11111111111131, -34.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (105.77777777777806, -33.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (108.14814814814827, -30.518518518518476))
Result.extend_point (create {EV_COORDINATE}.make_precise (109.92592592592564, -29.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (108.14814814814827, -27.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (106.37037037037044, -27.851851851851848))
Result.extend_point (create {EV_COORDINATE}.make_precise (105.77777777777806, -30.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (104.2962962962963, -29.629629629629676))
Result.extend_point (create {EV_COORDINATE}.make_precise (101.03703703703718, -31.703703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (101.03703703703718, -33.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (99.555555555555657, -34.074074074074019))
Result.extend_point (create {EV_COORDINATE}.make_precise (98.666666666666742, -36.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (98.666666666666742, -39.407407407407391))
Result.extend_point (create {EV_COORDINATE}.make_precise (95.703703703703923, -37.629629629629676))
Result.extend_point (create {EV_COORDINATE}.make_precise (97.777777777778056, -34.074074074074019))
Result.extend_point (create {EV_COORDINATE}.make_precise (97.185185185184991, -31.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (98.074074074073906, -29.925925925925867))
Result.extend_point (create {EV_COORDINATE}.make_precise (98.666666666666742, -27.851851851851848))
Result.extend_point (create {EV_COORDINATE}.make_precise (101.03703703703718, -26.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (100.74074074074065, -23.407407407407391))
Result.extend_point (create {EV_COORDINATE}.make_precise (98.962962962963047, -23.407407407407391))
Result.extend_point (create {EV_COORDINATE}.make_precise (100.14814814814827, -20.740740740740705))
Result.extend_point (create {EV_COORDINATE}.make_precise (97.185185185184991, -22.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (95.703703703703923, -25.185185185185162))
Result.extend_point (create {EV_COORDINATE}.make_precise (94.518518518518249, -21.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (92.148148148148266, -21.925925925925867))
Result.extend_point (create {EV_COORDINATE}.make_precise (92.148148148148266, -25.185185185185162))
Result.extend_point (create {EV_COORDINATE}.make_precise (90.962962962963047, -23.703703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (89.185185185184991, -26.96296296296299))
Result.extend_point (create {EV_COORDINATE}.make_precise (88.888888888889142, -24.296296296296305))
Result.extend_point (create {EV_COORDINATE}.make_precise (89.777777777778056, -21.629629629629676))
Result.extend_point (create {EV_COORDINATE}.make_precise (89.777777777778056, -18.96296296296299))
Result.extend_point (create {EV_COORDINATE}.make_precise (88.296296296296305, -20.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (87.407407407407391, -23.703703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (86.814814814814781, -20.148148148148096))
Result.extend_point (create {EV_COORDINATE}.make_precise (84.740740740740648, -21.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (84.740740740740648, -24))
Result.extend_point (create {EV_COORDINATE}.make_precise (82.666666666666742, -25.185185185185162))
Result.extend_point (create {EV_COORDINATE}.make_precise (81.481481481481524, -23.703703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (81.777777777778056, -21.03703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (79.703703703703923, -18.074074074074019))
Result.extend_point (create {EV_COORDINATE}.make_precise (78.518518518518249, -18.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (79.111111111111313, -22.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.851851851851734, -22.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (77.03703703703718, -24.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.259259259258897, -25.185185185185162))
Result.extend_point (create {EV_COORDINATE}.make_precise (72.888888888889142, -23.407407407407391))
Result.extend_point (create {EV_COORDINATE}.make_precise (72.592592592592155, -18.96296296296299))
Result.extend_point (create {EV_COORDINATE}.make_precise (66.666666666666742, -17.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (64.888888888889142, -19.259259259259238))
Result.extend_point (create {EV_COORDINATE}.make_precise (62.814814814814781, -14.518518518518476))
Result.extend_point (create {EV_COORDINATE}.make_precise (59.259259259258897, -13.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (57.777777777778056, -11.851851851851848))
Result.extend_point (create {EV_COORDINATE}.make_precise (55.407407407407391, -11.851851851851848))
Result.extend_point (create {EV_COORDINATE}.make_precise (54.814814814814781, -10.370370370370324))
Result.extend_point (create {EV_COORDINATE}.make_precise (50.370370370370438, -10.370370370370324))
Result.extend_point (create {EV_COORDINATE}.make_precise (49.777777777778056, -4.740740740740705))
Result.extend_point (create {EV_COORDINATE}.make_precise (43.851851851851734, -4.1481481481480955))
Result.extend_point (create {EV_COORDINATE}.make_precise (42.666666666666742, -5.925925925925867))
Result.extend_point (create {EV_COORDINATE}.make_precise (37.333333333333485, -2.9629629629629903))
Result.extend_point (create {EV_COORDINATE}.make_precise (37.333333333333485, -0.59259259259255259))
Result.extend_point (create {EV_COORDINATE}.make_precise (32.592592592592155, 4.7407407407407618))
Result.extend_point (create {EV_COORDINATE}.make_precise (33.481481481481524, 6.814814814814838))
Result.extend_point (create {EV_COORDINATE}.make_precise (31.703703703703923, 7.4074074074074474))
Result.extend_point (create {EV_COORDINATE}.make_precise (29.629629629629562, 5.6296296296296759))
Result.extend_point (create {EV_COORDINATE}.make_precise (26.666666666666742, 4.7407407407407618))
Result.extend_point (create {EV_COORDINATE}.make_precise (24.592592592592155, 3.8518518518519045))
Result.extend_point (create {EV_COORDINATE}.make_precise (22.518518518518249, 2.6666666666666856))
Result.extend_point (create {EV_COORDINATE}.make_precise (21.03703703703718, 4.1481481481481524))
Result.extend_point (create {EV_COORDINATE}.make_precise (21.333333333333485, 7.7037037037036953))
Result.extend_point (create {EV_COORDINATE}.make_precise (21.333333333333485, 9.4814814814815236))
Result.extend_point (create {EV_COORDINATE}.make_precise (19.555555555555657, 8.5925925925926094))
Result.extend_point (create {EV_COORDINATE}.make_precise (18.370370370370438, 10.96296296296299))
Result.extend_point (create {EV_COORDINATE}.make_precise (17.185185185184991, 8.2962962962963047))
Result.extend_point (create {EV_COORDINATE}.make_precise (14.222222222222399, 6.814814814814838))
Result.extend_point (create {EV_COORDINATE}.make_precise (9.1851851851849915, 6.2222222222222285))
Result.extend_point (create {EV_COORDINATE}.make_precise (8, 4.4444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (5.6296296296295623, 5.6296296296296759))
Result.extend_point (create {EV_COORDINATE}.make_precise (4.4444444444447981, 2.6666666666666856))
Result.extend_point (create {EV_COORDINATE}.make_precise (1.7777777777780557, 1.7777777777777715))
end
feature {NONE} -- Implementation
rotation_amount: REAL_64 = -50.0
-- Make the arrow point north-east
end

View File

@@ -0,0 +1,47 @@
note
description: "[
Widget representing a non-major port.
]"
author: "Jimmy J. Johnson"
date: "$Date$"
revision: "$Revision$"
deferred class
GREEN_PORT_WIDGET
inherit
PORT_WIDGET
redefine
build_widgets,
set_fonts_and_colors,
position_widgets
end
feature {NONE} -- Initialization
build_widgets
-- Set up the widgets in Current.
do
Precursor {PORT_WIDGET}
marker.hide_anchor
anchor.hide
end
set_fonts_and_colors
-- Set the default fonts for any text widgets and set
-- the default colors for any contained widgets.
do
Precursor {PORT_WIDGET}
land_color := Green_port_color
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {PORT_WIDGET}
scale_widget (marker, 0.06)
end
end

View File

@@ -0,0 +1,122 @@
note
description: "[
The widget representing this port
]"
author: "Jimmy J. Johnson"
class
GUADALCANAL_WIDGET
inherit
-- GREEN_PORT_WIDGET
-- undefine
-- paint
-- redefine
-- create_interface_objects,
-- initialize,
-- position_widgets,
-- build_land
-- end
ISLAND_PORT_WIDGET
redefine
create_interface_objects,
-- initialize,
position_widgets,
build_land,
rotation_amount
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
mainland := mainland_imp
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
end
-- initialize
-- -- Set up the widgets in Current.
-- do
-- Precursor {ISLAND_PORT_WIDGET}
---- Precursor {GREEN_PORT_WIDGET}
-- end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
-- marker.center_on_dot (dot)
marker.set_x_y (dot.x, dot.y)
center_on (404, 458)
translate_widget (land, 5, -18)
scale_widget (land, 0.6)
rotate_widget (land, 14.0)
translate_widget (name_mt, 0, 0)
translate_widget (marker, 5, -8)
end
build_land
-- Add widgets to Current
do
Precursor {ISLAND_PORT_WIDGET}
land.extend (mainland)
end
feature -- Status report
is_red: BOOLEAN = False
-- Does Current represent a red (i.e. major) port?
feature {NONE} -- Implementation
mainland: EV_MODEL_POLYGON
feature {NONE} -- Implementation
mainland_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (5.925925925925867, -2.6666666666666856))
Result.extend_point (create {EV_COORDINATE}.make_precise (11.259259259259238, 0.88888888888891415))
Result.extend_point (create {EV_COORDINATE}.make_precise (16, 4.740740740740705))
Result.extend_point (create {EV_COORDINATE}.make_precise (26.074074074074019, 4.1481481481480955))
Result.extend_point (create {EV_COORDINATE}.make_precise (38.222222222222285, 5.6296296296296191))
Result.extend_point (create {EV_COORDINATE}.make_precise (45.037037037037067, 6.8148148148147811))
Result.extend_point (create {EV_COORDINATE}.make_precise (45.925925925925867, 11.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (49.185185185185219, 13.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (50.370370370370438, 17.777777777777828))
Result.extend_point (create {EV_COORDINATE}.make_precise (54.814814814814781, 20.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (55.703703703703695, 24))
Result.extend_point (create {EV_COORDINATE}.make_precise (57.777777777777828, 25.777777777777828))
Result.extend_point (create {EV_COORDINATE}.make_precise (47.111111111111086, 29.629629629629619))
Result.extend_point (create {EV_COORDINATE}.make_precise (42.370370370370438, 26.370370370370324))
Result.extend_point (create {EV_COORDINATE}.make_precise (37.925925925925867, 27.259259259259238))
Result.extend_point (create {EV_COORDINATE}.make_precise (29.925925925925867, 23.703703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (21.629629629629562, 24))
Result.extend_point (create {EV_COORDINATE}.make_precise (13.333333333333371, 25.185185185185219))
Result.extend_point (create {EV_COORDINATE}.make_precise (8.2962962962963047, 20.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (5.3333333333333712, 19.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (4.4444444444444571, 16))
Result.extend_point (create {EV_COORDINATE}.make_precise (0.88888888888891415, 10.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (1.4814814814815236, 8.2962962962963047))
Result.extend_point (create {EV_COORDINATE}.make_precise (0.29629629629630472, 5.6296296296296191))
end
feature {NONE} -- Implementation
rotation_amount: REAL_64 = -50.0
-- Make the arrow point north-east
end

View File

@@ -0,0 +1,249 @@
note
description: "[
Widget to reprensent the "island" ports in VITP.
Island ports are drawn with a circle and usually has an arrow
pointing the the `mainland'
]"
author: "Jimmy J. Johnson"
deferred class
ISLAND_PORT_WIDGET
inherit
PORT_WIDGET
redefine
create_interface_objects,
-- initialize,
build_widgets,
set_fonts_and_colors,
position_widgets,
-- defining_figure,
paint
end
feature {NONE} -- Initialization
create_interface_objects
-- Create the attributes
do
Precursor {PORT_WIDGET}
create arrow_world
create outer_circle
create inner_circle
create outer_arrow
create inner_arrow
create masking_box
create bogus_arrow -- to be removed later
extend (outer_circle)
extend (inner_circle)
extend (arrow_world)
-- The `arrow_world' contains the arrows and box
-- (see `build_circle')
end
build_widgets
-- Now that widgets were created in `create_interface_objects'
-- and added to Current in `extend_widgets', build up the
-- widgets by adding internal structure to each widget.
do
Precursor {PORT_WIDGET}
build_circle
end
set_fonts_and_colors
-- Set the default fonts for any text widgets and set
-- the default colors for any contained widgets.
do
Precursor {PORT_WIDGET}
dot.set_foreground_color (Cyan)
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {PORT_WIDGET}
-- Because Current is built big and scaled down,
-- the font ends up being too small. Therefore,
-- the size of the font must be scaled back up to
-- make it appear the same size as the text on
-- non-island ports.
scale_widget (Current, 0.25)
scale_widget (text_group, 4.0)
-- scale_widget (marker, 4.0)
-- scale_widget (anchor, 4.0)
-- Center the widgets on x and y.
text_group.set_x_y (inner_circle.x, inner_circle.y)
anchor.set_x_y (inner_circle.x, inner_circle.y)
marker.set_x_y (inner_circle.x, inner_circle.y)
-- -- Green widgets have smaller markers
-- if not is_red then
-- scale_widget (marker, 0.06)
-- end
if is_red then
scale_widget (marker, 0.32)
anchor.scale (0.27)
else
scale_widget (marker, 0.25)
end
end
-- set_widget_order
-- -- Ensure the widgets are ordered properly
-- -- (i.e. whose on top?)
-- do
-- Precursor {LOCATION_WIDGET}
-- end
frozen build_circle
-- Create the circle that represents the port
do
-- build the circle big; scale it later
-- rad := 50
-- Build two circles (and four arrows), placing a
-- smaller figure inside another corresponding one
-- to give the appearance of a green/red circle
-- inside a white circle.
outer_circle.set_radius1 (50)
outer_circle.set_radius2 (50)
inner_circle.set_radius1 (47)
inner_circle.set_radius2 (47)
-- center the smaller circle on the larger
-- Because we may want to rotate the circle, we build it with a
-- symetrical (arrow going oposite directions) and perform the
-- rotation on this. After the rotation the extraneous arrow
-- is removed.
arrow_world.extend (outer_arrow)
arrow_world.extend (inner_arrow)
arrow_world.extend (masking_box)
arrow_world.extend (bogus_arrow)
-- start at point of arrow
outer_arrow.extend_point (create {EV_COORDINATE}.make (66, 0))
outer_arrow.extend_point (create {EV_COORDINATE}.make (47, 40))
outer_arrow.extend_point (create {EV_COORDINATE}.make (47, -40))
inner_arrow.extend_point (create {EV_COORDINATE}.make (63, 0))
inner_arrow.extend_point (create {EV_COORDINATE}.make (50, 27))
inner_arrow.extend_point (create {EV_COORDINATE}.make (50, -27))
masking_box.extend_point (create {EV_COORDINATE}.make (0, -15))
masking_box.extend_point (create {EV_COORDINATE}.make (52, -15))
masking_box.extend_point (create {EV_COORDINATE}.make (52, 15))
masking_box.extend_point (create {EV_COORDINATE}.make (0, 15))
-- reflect `outer_arrow' for the `bogus_arrow_1'
bogus_arrow.extend_point (create {EV_COORDINATE}.make (-66, 0))
bogus_arrow.extend_point (create {EV_COORDINATE}.make (-47, 40))
bogus_arrow.extend_point (create {EV_COORDINATE}.make (-47, -40))
-- rotate the arrow only
rotate_arrow
arrow_world.prune_all (bogus_arrow)
-- Move all the pieces so the center of the circle is more in line
-- with the way the rest of the game pieces are defined
-- create t.make_zero
-- t.translate (66, 66)
-- outer_circle.transform (t)
-- inner_circle.transform (t)
-- outer_arrow.transform (t)
-- inner_arrow.transform (t)
-- masking_box.transform (t)
-- bogus_arrow.transform (t)
ensure
has_circles: has (arrow_world)
has_outer_circle: has (outer_circle)
has_inner_circle: has (inner_circle)
end
-- defining_figure: EV_MODEL
-- -- The figure to be used to determine if other figures
-- -- overlap this one or for capturing mouse events
-- do
-- Result := outer_circle
-- end
feature -- Basic operations
paint
-- Color the widgets
local
c, cw: EV_COLOR
do
Precursor {PORT_WIDGET}
cw := adjusted_color (White)
c := adjusted_color (land_color)
outer_circle.set_background_color (cw)
outer_circle.set_foreground_color (cw)
outer_arrow.set_background_color (cw)
outer_arrow.set_foreground_color (cw)
inner_circle.set_background_color (c)
inner_circle.set_foreground_color (c)
inner_arrow.set_background_color (c)
inner_arrow.set_foreground_color (c)
masking_box.set_background_color (c)
masking_box.set_foreground_color (c)
end
feature {NONE} -- Implementation
frozen center_on (ax, ay: INTEGER)
-- Translate Current so that the `dot' is at position (`ax', `ay')
local
t: EV_MODEL_TRANSFORMATION
do
create t.make_zero
t.translate (ax - inner_circle.x, ay - inner_circle.y)
transform (t)
end
frozen hide_arrow
-- Remove the arrow from Current
do
outer_arrow.hide
inner_arrow.hide
masking_box.hide
end
frozen rotate_arrow
-- Rotate only the arrow; the circle does not rotate correctly
do
-- This rotates around (0, 0), because this is called
-- before the completed port widget is translated.
-- rotate_widget (outer_arrow, rotation_amount)
-- rotate_widget (inner_arrow, rotation_amount)
-- rotate_widget (masking_box, rotation_amount)
rotate_widget (arrow_world, rotation_amount)
end
rotation_amount: REAL_64
-- The number of degrees to rotate the `circle' in order to make the
-- arrow point the correct dirction
do
Result := 0
end
arrow_world: EV_MODEL_WORLD
-- Holds the circles and arrows as a group, so
-- rotations will be relative to center at [0,0].
outer_circle: EV_MODEL_ELLIPSE
-- The larger (white) circle representing the `port'
inner_circle: EV_MODEL_ELLIPSE
-- The smaller (red/green) circle representing the `port'
outer_arrow: EV_MODEL_POLYGON
-- The larger (white) triangle that make an arrow coming out of the `circle'
inner_arrow: EV_MODEL_POLYGON
-- The smaller (red/green) triangle that is inside the `outer_triangle'
masking_box: EV_MODEL_POLYGON
-- A rectangle that is the same color as the `inner_circle', used to
-- visually connect the `inner_arrow' to the `inner_circle'.
bogus_arrow: EV_MODEL_POLYGON
-- Arrow built on opposite side of circle from
-- `outer_arrow' in order to keep the `dot' in
-- the middle of the circle. It is removed after
-- the `arrow' is rotated and the `dot' is built.
end

View File

@@ -0,0 +1,68 @@
note
description: "[
The widget representing this port
]"
author: "Jimmy J. Johnson"
class
JOHNSTON_ISLAND_WIDGET
inherit
-- GREEN_PORT_WIDGET
-- undefine
-- paint
-- redefine
-- initialize,
-- create_interface_objects,
-- position_widgets
-- end
ISLAND_PORT_WIDGET
redefine
create_interface_objects,
-- initialize,
position_widgets
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
end
-- initialize
-- -- Set up the widgets in Current.
-- do
-- Precursor {ISLAND_PORT_WIDGET}
---- Precursor {GREEN_PORT_WIDGET}
-- hide_arrow
-- dot.show
-- end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
center_on (639, 370)
center_widget_on_other (marker, dot)
translate_widget (name_mt, -1, 1)
translate_widget (marker, -2, -5)
dot.set_foreground_color (Cyan)
dot.show
end
feature -- Status report
is_red: BOOLEAN = False
-- Does Current represent a red (i.e. major) port?
end

View File

@@ -0,0 +1,125 @@
note
description: "[
The widget representing this port
]"
author: "Jimmy J. Johnson"
class
KWAJALEIN_WIDGET
inherit
-- GREEN_PORT_WIDGET
-- undefine
-- paint
-- redefine
-- create_interface_objects,
-- initialize,
-- position_widgets,
-- build_land
-- end
ISLAND_PORT_WIDGET
redefine
create_interface_objects,
-- initialize,
position_widgets,
build_land,
rotation_amount
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
kwajalein_atoll := kwajalein_atoll_imp
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
end
-- initialize
-- -- Set up the widgets in Current.
-- do
-- Precursor {ISLAND_PORT_WIDGET}
---- Precursor {GREEN_PORT_WIDGET}
-- end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
center_on (469, 350)
scale_widget (land, 0.27)
rotate_widget (land, 13.0)
translate_widget (land, 0, -20)
translate_widget (name_mt, 0, 2)
translate_widget (dot, 2, -2)
-- marker.center_on_dot (dot)
marker.set_x_y (dot.x, dot.y)
end
build_land
-- Add widgets to Current
do
Precursor {ISLAND_PORT_WIDGET}
land.extend (kwajalein_atoll)
end
feature -- Status report
is_red: BOOLEAN = False
-- Does Current represent a red (i.e. major) port?
feature {NONE} -- Implementation
kwajalein_atoll: EV_MODEL_POLYGON
feature {NONE} -- Implementation
kwajalein_atoll_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (14.222222222222229, 0.59259259259272312))
Result.extend_point (create {EV_COORDINATE}.make_precise (24.888888888888914, -2.9629629629630472))
Result.extend_point (create {EV_COORDINATE}.make_precise (43.259259259259068, 2.074074074074133))
Result.extend_point (create {EV_COORDINATE}.make_precise (52.148148148147982, -0.88888888888902784))
Result.extend_point (create {EV_COORDINATE}.make_precise (55.407407407407334, -0.59259259259249575))
Result.extend_point (create {EV_COORDINATE}.make_precise (62.222222222222229, -6.8148148148146674))
Result.extend_point (create {EV_COORDINATE}.make_precise (64.296296296296248, 2.074074074074133))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.5555555555556, 13.333333333333258))
Result.extend_point (create {EV_COORDINATE}.make_precise (85.92592592592581, 23.111111111110972))
Result.extend_point (create {EV_COORDINATE}.make_precise (83.851851851851791, 28.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (87.999999999999716, 39.703703703703582))
Result.extend_point (create {EV_COORDINATE}.make_precise (83.851851851851791, 44.740740740740875))
Result.extend_point (create {EV_COORDINATE}.make_precise (84.148148148147982, 58.37037037037021))
Result.extend_point (create {EV_COORDINATE}.make_precise (72.296296296296248, 51.259259259259352))
Result.extend_point (create {EV_COORDINATE}.make_precise (66.666666666666686, 44.148148148148266))
Result.extend_point (create {EV_COORDINATE}.make_precise (65.185185185185162, 35.851851851851507))
Result.extend_point (create {EV_COORDINATE}.make_precise (67.5555555555556, 31.111111111110972))
Result.extend_point (create {EV_COORDINATE}.make_precise (59.5555555555556, 24.592592592592723))
Result.extend_point (create {EV_COORDINATE}.make_precise (50.370370370370381, 21.62962962962979))
Result.extend_point (create {EV_COORDINATE}.make_precise (39.703703703703525, 24))
Result.extend_point (create {EV_COORDINATE}.make_precise (32.88888888888863, 19.555555555555657))
Result.extend_point (create {EV_COORDINATE}.make_precise (27.259259259259125, 20.740740740740875))
Result.extend_point (create {EV_COORDINATE}.make_precise (26.074074074073962, 14.814814814814895))
Result.extend_point (create {EV_COORDINATE}.make_precise (24.296296296296248, 17.185185185185333))
Result.extend_point (create {EV_COORDINATE}.make_precise (15.407407407407334, 11.259259259259352))
Result.extend_point (create {EV_COORDINATE}.make_precise (8.5925925925924389, 7.4074074074075043))
Result.extend_point (create {EV_COORDINATE}.make_precise (2.9629629629628198, 4.4444444444444571))
end
feature {NONE} -- Implementation
rotation_amount: REAL_64 = -45.0
-- Make the arrow point north-east
end

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,117 @@
note
description: "[
The widget representing this port
]"
author: "Jimmy J. Johnson"
class
MALOELAP_WIDGET
inherit
-- GREEN_PORT_WIDGET
-- undefine
-- paint
-- redefine
-- create_interface_objects,
-- initialize,
-- position_widgets,
-- build_land
-- end
ISLAND_PORT_WIDGET
redefine
create_interface_objects,
-- initialize,
position_widgets,
build_land,
rotation_amount
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
taroa_island := taroa_island_imp
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
end
-- initialize
-- -- Set up the widgets in Current.
-- do
-- Precursor {ISLAND_PORT_WIDGET}
---- Precursor {GREEN_PORT_WIDGET}
-- end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
scale_widget (land, 0.21)
rotate_widget (land, 13.0)
center_on (521, 345)
translate_widget (land, -26, -8)
-- text_widget.center_on_dot (dot)
-- translate_widget (name_mt, 0, 1)
translate_widget (dot, 2, 5)
-- marker.center_on_dot (dot)
marker.set_x_y (dot.x, dot.y)
end
build_land
-- Add widgets to Current
do
Precursor {ISLAND_PORT_WIDGET}
land.extend (taroa_island)
end
feature -- Status report
is_red: BOOLEAN = False
-- Does Current represent a red (i.e. major) port?
feature {NONE} -- Implementation
taroa_island: EV_MODEL_POLYGON
feature {NONE} -- Implementation
taroa_island_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (19.999999999999773, -1.3333333333332575))
Result.extend_point (create {EV_COORDINATE}.make_precise (35.111111111111086, 2.6666666666665151))
Result.extend_point (create {EV_COORDINATE}.make_precise (47.555555555555429, 14.222222222222399))
Result.extend_point (create {EV_COORDINATE}.make_precise (55.111111111111086, 16.444444444444343))
Result.extend_point (create {EV_COORDINATE}.make_precise (61.333333333333258, 27.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (53.333333333333258, 39.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (52.444444444444116, 52))
Result.extend_point (create {EV_COORDINATE}.make_precise (54.222222222221944, 57.333333333333485))
Result.extend_point (create {EV_COORDINATE}.make_precise (48, 59.111111111110858))
Result.extend_point (create {EV_COORDINATE}.make_precise (35.111111111111086, 57.333333333333485))
Result.extend_point (create {EV_COORDINATE}.make_precise (29.333333333333258, 48.444444444444343))
Result.extend_point (create {EV_COORDINATE}.make_precise (28, 40.888888888889142))
Result.extend_point (create {EV_COORDINATE}.make_precise (16.888888888888914, 20.888888888889142))
Result.extend_point (create {EV_COORDINATE}.make_precise (9.3333333333332575, 14.222222222222399))
end
feature {NONE} -- Implementation
rotation_amount: REAL_64 = 180.0
-- Make the arrow point north-east
invariant
corrrect_port: attached target_imp implies port = game.maloelap
end

View File

@@ -0,0 +1,152 @@
note
description: "[
The widget representing this port
]"
author: "Jimmy J. Johnson"
class
MIDWAY_WIDGET
inherit
-- GREEN_PORT_WIDGET
-- undefine
-- paint
-- redefine
-- create_interface_objects,
-- initialize,
-- position_widgets,
-- build_land
-- end
ISLAND_PORT_WIDGET
redefine
create_interface_objects,
-- initialize,
position_widgets,
build_land,
rotation_amount
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
henderson_field := henderson_field_imp
aux_field := aux_field_imp
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
end
-- initialize
-- -- Set up the widgets in Current.
-- do
-- Precursor {ISLAND_PORT_WIDGET}
---- Precursor {GREEN_PORT_WIDGET}
-- end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
center_on (565, 217)
translate_widget (land, -24, 0)
translate_widget (name_mt, 1, 1)
translate_widget (dot, 3, 3)
scale_widget (land, 0.07)
rotate_widget (land, 13.0)
-- marker.center_on_dot (dot)
marker.set_x_y (dot.x, dot.y)
translate_widget (marker, 5, 7)
end
build_land
-- Add widgets to Current
do
Precursor {ISLAND_PORT_WIDGET}
land.extend (henderson_field)
land.extend (aux_field)
end
feature -- Status report
is_red: BOOLEAN = False
-- Does Current represent a red (i.e. major) port?
feature {NONE} -- Implementation
henderson_field: EV_MODEL_POLYGON
aux_field: EV_MODEL_POLYGON
feature {NONE} -- Implementation
henderson_field_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (18, -15))
Result.extend_point (create {EV_COORDINATE}.make_precise (55, -15))
Result.extend_point (create {EV_COORDINATE}.make_precise (91, -24))
Result.extend_point (create {EV_COORDINATE}.make_precise (110, -11))
Result.extend_point (create {EV_COORDINATE}.make_precise (127, -6))
Result.extend_point (create {EV_COORDINATE}.make_precise (144, -9))
Result.extend_point (create {EV_COORDINATE}.make_precise (153, -5))
Result.extend_point (create {EV_COORDINATE}.make_precise (152, 6))
Result.extend_point (create {EV_COORDINATE}.make_precise (138, 8))
Result.extend_point (create {EV_COORDINATE}.make_precise (130, 7))
Result.extend_point (create {EV_COORDINATE}.make_precise (111, 14))
Result.extend_point (create {EV_COORDINATE}.make_precise (106, 31))
Result.extend_point (create {EV_COORDINATE}.make_precise (127, 34))
Result.extend_point (create {EV_COORDINATE}.make_precise (139, 35))
Result.extend_point (create {EV_COORDINATE}.make_precise (152, 32))
Result.extend_point (create {EV_COORDINATE}.make_precise (155, 44))
Result.extend_point (create {EV_COORDINATE}.make_precise (79, 80))
Result.extend_point (create {EV_COORDINATE}.make_precise (80, 104))
Result.extend_point (create {EV_COORDINATE}.make_precise (70, 86))
Result.extend_point (create {EV_COORDINATE}.make_precise (48, 92))
Result.extend_point (create {EV_COORDINATE}.make_precise (43, 99))
Result.extend_point (create {EV_COORDINATE}.make_precise (-44, 131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-54, 125))
Result.extend_point (create {EV_COORDINATE}.make_precise (-54, 119))
Result.extend_point (create {EV_COORDINATE}.make_precise (-14, 67))
Result.extend_point (create {EV_COORDINATE}.make_precise (-6, 41))
Result.extend_point (create {EV_COORDINATE}.make_precise (-2, 19))
end
aux_field_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (237, 53))
Result.extend_point (create {EV_COORDINATE}.make_precise (277, 40))
Result.extend_point (create {EV_COORDINATE}.make_precise (306, 26))
Result.extend_point (create {EV_COORDINATE}.make_precise (340, -9))
Result.extend_point (create {EV_COORDINATE}.make_precise (344, -23))
Result.extend_point (create {EV_COORDINATE}.make_precise (351, -16))
Result.extend_point (create {EV_COORDINATE}.make_precise (366, 30))
Result.extend_point (create {EV_COORDINATE}.make_precise (373, 37))
Result.extend_point (create {EV_COORDINATE}.make_precise (370, 51))
Result.extend_point (create {EV_COORDINATE}.make_precise (348, 57))
Result.extend_point (create {EV_COORDINATE}.make_precise (342, 55))
Result.extend_point (create {EV_COORDINATE}.make_precise (333, 61))
Result.extend_point (create {EV_COORDINATE}.make_precise (310, 64))
Result.extend_point (create {EV_COORDINATE}.make_precise (298, 62))
Result.extend_point (create {EV_COORDINATE}.make_precise (284, 68))
Result.extend_point (create {EV_COORDINATE}.make_precise (267, 62))
end
feature {NONE} -- Implementation
rotation_amount: REAL_64 = 45.0
-- Make the arrow point north-east
end

View File

@@ -0,0 +1,264 @@
note
description: "[
The widget representing this port
]"
author: "Jimmy J. Johnson"
class
NEW_HEBRIDES_WIDGET
inherit
-- GREEN_PORT_WIDGET
-- undefine
-- paint
-- redefine
-- create_interface_objects,
-- initialize,
-- position_widgets,
-- build_land
-- end
ISLAND_PORT_WIDGET
redefine
create_interface_objects,
position_widgets,
build_land,
rotation_amount
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
vanuatu := vanuatu_imp
malekula := malekula_imp
ambrym := ambrym_imp
pentecost := pentecost_imp
maewo := maewo_imp
ambae := ambae_imp
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
-- Precursor {GREEN_PORT_WIDGET}
Precursor {ISLAND_PORT_WIDGET}
-- marker.center_on_dot (dot)
marker.set_x_y (dot.x, dot.y)
scale_widget (land, 0.55)
rotate_widget (land, 13.0)
center_on (450, 511)
translate_widget (land, -10, -32)
translate_widget (name_mt, -1, -3)
translate_widget (marker, 0, 7)
bring_to_front (marker)
end
build_land
-- Add widgets to Current
do
Precursor {ISLAND_PORT_WIDGET}
land.extend (vanuatu)
land.extend (malekula)
land.extend (ambrym)
land.extend (pentecost)
land.extend (maewo)
land.extend (ambae)
end
feature -- Status report
is_red: BOOLEAN = False
-- Does Current represent a red (i.e. major) port?
feature {NONE} -- Implementation
vanuatu: EV_MODEL_POLYGON
malekula: EV_MODEL_POLYGON
ambrym: EV_MODEL_POLYGON
pentecost: EV_MODEL_POLYGON
maewo: EV_MODEL_POLYGON
ambae: EV_MODEL_POLYGON
feature {NONE} -- Implementation
vanuatu_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (0, -7.4074074074075043))
Result.extend_point (create {EV_COORDINATE}.make_precise (2.9629629629630472, -11.259259259259238))
Result.extend_point (create {EV_COORDINATE}.make_precise (4.7407407407408755, -9.7777777777778283))
Result.extend_point (create {EV_COORDINATE}.make_precise (8.8888888888889142, -4.7407407407407618))
Result.extend_point (create {EV_COORDINATE}.make_precise (11.851851851851961, 0.29629629629630472))
Result.extend_point (create {EV_COORDINATE}.make_precise (11.851851851851961, 5.925925925925867))
Result.extend_point (create {EV_COORDINATE}.make_precise (13.925925925925981, 13.037037037036953))
Result.extend_point (create {EV_COORDINATE}.make_precise (18.074074074074247, 13.037037037036953))
Result.extend_point (create {EV_COORDINATE}.make_precise (20.444444444444343, 10.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (19.851851851851961, 8.2962962962963047))
Result.extend_point (create {EV_COORDINATE}.make_precise (21.333333333333371, 4.1481481481481524))
Result.extend_point (create {EV_COORDINATE}.make_precise (19.851851851851961, 2.3703703703703241))
Result.extend_point (create {EV_COORDINATE}.make_precise (23.407407407407618, 2.3703703703703241))
Result.extend_point (create {EV_COORDINATE}.make_precise (29.03703703703718, 5.0370370370369528))
Result.extend_point (create {EV_COORDINATE}.make_precise (24.888888888888914, 4.4444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (25.777777777777715, 7.4074074074073906))
Result.extend_point (create {EV_COORDINATE}.make_precise (24.592592592592609, 9.1851851851852189))
Result.extend_point (create {EV_COORDINATE}.make_precise (26.370370370370438, 12.148148148148152))
Result.extend_point (create {EV_COORDINATE}.make_precise (29.925925925925981, 11.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (32, 18.370370370370324))
Result.extend_point (create {EV_COORDINATE}.make_precise (30.814814814814781, 21.629629629629676))
Result.extend_point (create {EV_COORDINATE}.make_precise (34.074074074074247, 28.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (31.703703703703809, 31.407407407407391))
Result.extend_point (create {EV_COORDINATE}.make_precise (34.666666666666742, 31.703703703703582))
Result.extend_point (create {EV_COORDINATE}.make_precise (33.777777777777715, 34.962962962962933))
Result.extend_point (create {EV_COORDINATE}.make_precise (33.481481481481524, 38.222222222222172))
Result.extend_point (create {EV_COORDINATE}.make_precise (31.407407407407618, 41.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (26.666666666666742, 40))
Result.extend_point (create {EV_COORDINATE}.make_precise (25.481481481481524, 37.333333333333371))
Result.extend_point (create {EV_COORDINATE}.make_precise (28.148148148148152, 34.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (31.111111111111086, 34.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (26.962962962963047, 33.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (24, 34.370370370370324))
Result.extend_point (create {EV_COORDINATE}.make_precise (17.481481481481524, 34.074074074074019))
Result.extend_point (create {EV_COORDINATE}.make_precise (16.592592592592609, 36.148148148148152))
Result.extend_point (create {EV_COORDINATE}.make_precise (14.814814814814781, 35.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (14.814814814814781, 37.333333333333371))
Result.extend_point (create {EV_COORDINATE}.make_precise (10.370370370370438, 36.740740740740762))
Result.extend_point (create {EV_COORDINATE}.make_precise (10.666666666666742, 34.370370370370324))
Result.extend_point (create {EV_COORDINATE}.make_precise (7.4074074074076179, 30.51851851851859))
Result.extend_point (create {EV_COORDINATE}.make_precise (5.9259259259259807, 25.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (3.8518518518519613, 24.296296296296305))
Result.extend_point (create {EV_COORDINATE}.make_precise (3.8518518518519613, 15.407407407407391))
Result.extend_point (create {EV_COORDINATE}.make_precise (3.8518518518519613, 9.1851851851852189))
Result.extend_point (create {EV_COORDINATE}.make_precise (1.7777777777777146, 4.4444444444444571))
end
malekula_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (29.03703703703718, 58.962962962962933))
Result.extend_point (create {EV_COORDINATE}.make_precise (29.62962962962979, 54.51851851851859))
Result.extend_point (create {EV_COORDINATE}.make_precise (28.444444444444343, 50.074074074074019))
Result.extend_point (create {EV_COORDINATE}.make_precise (32, 46.814814814814781))
Result.extend_point (create {EV_COORDINATE}.make_precise (34.370370370370438, 49.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (35.555555555555543, 48.296296296296305))
Result.extend_point (create {EV_COORDINATE}.make_precise (37.925925925925981, 53.037037037036953))
Result.extend_point (create {EV_COORDINATE}.make_precise (39.703703703703809, 52.148148148148152))
Result.extend_point (create {EV_COORDINATE}.make_precise (39.703703703703809, 55.703703703703582))
Result.extend_point (create {EV_COORDINATE}.make_precise (42.962962962963047, 61.037037037036953))
Result.extend_point (create {EV_COORDINATE}.make_precise (44.740740740740875, 57.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (45.333333333333371, 61.629629629629562))
Result.extend_point (create {EV_COORDINATE}.make_precise (51.555555555555543, 66.074074074074019))
Result.extend_point (create {EV_COORDINATE}.make_precise (57.185185185185219, 70.814814814814781))
Result.extend_point (create {EV_COORDINATE}.make_precise (60.148148148148152, 74.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (59.555555555555543, 77.925925925925753))
Result.extend_point (create {EV_COORDINATE}.make_precise (57.481481481481524, 76.444444444444343))
Result.extend_point (create {EV_COORDINATE}.make_precise (57.481481481481524, 78.51851851851859))
Result.extend_point (create {EV_COORDINATE}.make_precise (53.925925925925981, 78.222222222222172))
Result.extend_point (create {EV_COORDINATE}.make_precise (51.851851851851961, 76.444444444444343))
Result.extend_point (create {EV_COORDINATE}.make_precise (48, 77.333333333333371))
Result.extend_point (create {EV_COORDINATE}.make_precise (49.185185185185219, 79.703703703703582))
Result.extend_point (create {EV_COORDINATE}.make_precise (43.259259259259352, 81.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (40.296296296296418, 78.51851851851859))
Result.extend_point (create {EV_COORDINATE}.make_precise (42.074074074074247, 75.851851851851848))
Result.extend_point (create {EV_COORDINATE}.make_precise (37.925925925925981, 70.51851851851859))
Result.extend_point (create {EV_COORDINATE}.make_precise (39.407407407407618, 63.407407407407391))
Result.extend_point (create {EV_COORDINATE}.make_precise (36.148148148148152, 59.851851851851848))
Result.extend_point (create {EV_COORDINATE}.make_precise (34.074074074074247, 61.037037037036953))
end
ambrym_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (63.407407407407618, 64.296296296296191))
Result.extend_point (create {EV_COORDINATE}.make_precise (66.962962962963047, 62.814814814814781))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.333333333333371, 61.925925925925753))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.259259259259352, 56.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (77.03703703703718, 62.814814814814781))
Result.extend_point (create {EV_COORDINATE}.make_precise (81.185185185185219, 66.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (81.777777777777715, 69.037037037036953))
Result.extend_point (create {EV_COORDINATE}.make_precise (78.814814814814781, 70.51851851851859))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.851851851851961, 70.222222222222172))
Result.extend_point (create {EV_COORDINATE}.make_precise (73.185185185185219, 72))
Result.extend_point (create {EV_COORDINATE}.make_precise (68.444444444444343, 70.222222222222172))
Result.extend_point (create {EV_COORDINATE}.make_precise (65.481481481481524, 67.555555555555543))
end
pentecost_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (73.481481481481524, 28.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.555555555555543, 27.259259259259238))
Result.extend_point (create {EV_COORDINATE}.make_precise (76.740740740740875, 31.407407407407391))
Result.extend_point (create {EV_COORDINATE}.make_precise (77.03703703703718, 36.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (79.111111111111086, 46.222222222222172))
Result.extend_point (create {EV_COORDINATE}.make_precise (81.185185185185219, 50.370370370370324))
Result.extend_point (create {EV_COORDINATE}.make_precise (76.740740740740875, 54.51851851851859))
Result.extend_point (create {EV_COORDINATE}.make_precise (74.666666666666742, 53.629629629629562))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.555555555555543, 48.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (73.777777777777715, 43.851851851851848))
Result.extend_point (create {EV_COORDINATE}.make_precise (73.481481481481524, 41.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (71.111111111111086, 38.814814814814781))
Result.extend_point (create {EV_COORDINATE}.make_precise (72.888888888888914, 33.185185185185219))
end
maewo_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (67.851851851851961, 1.7777777777777146))
Result.extend_point (create {EV_COORDINATE}.make_precise (71.111111111111086, 0.59259259259249575))
Result.extend_point (create {EV_COORDINATE}.make_precise (73.777777777777715, 7.7037037037035816))
Result.extend_point (create {EV_COORDINATE}.make_precise (74.074074074074247, 13.629629629629676))
Result.extend_point (create {EV_COORDINATE}.make_precise (76.740740740740875, 16))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.259259259259352, 18.074074074074019))
Result.extend_point (create {EV_COORDINATE}.make_precise (76.740740740740875, 21.333333333333371))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.555555555555543, 24.296296296296305))
Result.extend_point (create {EV_COORDINATE}.make_precise (72, 24.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (71.407407407407618, 20.148148148148152))
Result.extend_point (create {EV_COORDINATE}.make_precise (72, 16.8888888888888))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.62962962962979, 8.5925925925924957))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.03703703703718, 4.7407407407407618))
end
ambae_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (52.148148148148152, 26.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (55.111111111111086, 23.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (60.444444444444343, 20.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (65.185185185185219, 18.962962962962933))
Result.extend_point (create {EV_COORDINATE}.make_precise (68.444444444444343, 19.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (66.074074074074247, 21.925925925925867))
Result.extend_point (create {EV_COORDINATE}.make_precise (63.407407407407618, 24.592592592592496))
Result.extend_point (create {EV_COORDINATE}.make_precise (60.740740740740875, 28.740740740740762))
Result.extend_point (create {EV_COORDINATE}.make_precise (56.592592592592609, 28.148148148148152))
Result.extend_point (create {EV_COORDINATE}.make_precise (54.222222222222172, 28.740740740740762))
end
feature {NONE} -- Implementation
rotation_amount: REAL_64 = -90.0
-- Make the arrow point north-east
end

View File

@@ -0,0 +1,387 @@
note
description: "[
The widget representing this port
]"
author: "Jimmy J. Johnson"
class
OKINAWA_WIDGET
inherit
-- GREEN_PORT_WIDGET
-- undefine
-- paint
-- redefine
-- create_interface_objects,
-- initialize,
-- position_widgets,
-- build_land
-- end
ISLAND_PORT_WIDGET
redefine
create_interface_objects,
-- initialize,
position_widgets,
build_land,
rotation_amount
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
mainland := mainland_imp
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
end
-- initialize
-- -- Set up the widgets in Current.
-- do
-- Precursor {ISLAND_PORT_WIDGET}
---- Precursor {GREEN_PORT_WIDGET}
-- end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
center_on (295, 174)
translate_widget (land, 28, -80)
translate_widget (name_mt, 0, 0)
-- translate_widget (dot, -30, -30)
-- marker.center_on_dot (dot)
marker.set_x_y (dot.x, dot.y)
translate_widget (marker, 2, 5)
scale_widget (land, 0.04)
rotate_widget (land, 13.0)
bring_to_front (marker)
end
build_land
-- Add widgets to Current
do
Precursor {ISLAND_PORT_WIDGET}
land.extend (mainland)
end
feature -- Status report
is_red: BOOLEAN = False
-- Does Current represent a red (i.e. major) port?
feature {NONE} -- Implementation
mainland: EV_MODEL_POLYGON
feature {NONE} -- Implementation
mainland_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (8, 1))
Result.extend_point (create {EV_COORDINATE}.make_precise (6, 7))
Result.extend_point (create {EV_COORDINATE}.make_precise (19, 15))
Result.extend_point (create {EV_COORDINATE}.make_precise (18, 21))
Result.extend_point (create {EV_COORDINATE}.make_precise (24, 22))
Result.extend_point (create {EV_COORDINATE}.make_precise (26, 29))
Result.extend_point (create {EV_COORDINATE}.make_precise (32, 23))
Result.extend_point (create {EV_COORDINATE}.make_precise (37, 25))
Result.extend_point (create {EV_COORDINATE}.make_precise (39, 37))
Result.extend_point (create {EV_COORDINATE}.make_precise (48, 52))
Result.extend_point (create {EV_COORDINATE}.make_precise (47, 66))
Result.extend_point (create {EV_COORDINATE}.make_precise (53, 77))
Result.extend_point (create {EV_COORDINATE}.make_precise (51, 85))
Result.extend_point (create {EV_COORDINATE}.make_precise (49, 96))
Result.extend_point (create {EV_COORDINATE}.make_precise (53, 101))
Result.extend_point (create {EV_COORDINATE}.make_precise (47, 105))
Result.extend_point (create {EV_COORDINATE}.make_precise (49, 114))
Result.extend_point (create {EV_COORDINATE}.make_precise (39, 117))
Result.extend_point (create {EV_COORDINATE}.make_precise (37, 124))
Result.extend_point (create {EV_COORDINATE}.make_precise (31, 124))
Result.extend_point (create {EV_COORDINATE}.make_precise (32, 133))
Result.extend_point (create {EV_COORDINATE}.make_precise (29, 135))
Result.extend_point (create {EV_COORDINATE}.make_precise (28, 142))
Result.extend_point (create {EV_COORDINATE}.make_precise (22, 147))
Result.extend_point (create {EV_COORDINATE}.make_precise (19, 161))
Result.extend_point (create {EV_COORDINATE}.make_precise (10, 167))
Result.extend_point (create {EV_COORDINATE}.make_precise (9, 175))
Result.extend_point (create {EV_COORDINATE}.make_precise (3, 176))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1, 181))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1, 186))
Result.extend_point (create {EV_COORDINATE}.make_precise (-4, 189))
Result.extend_point (create {EV_COORDINATE}.make_precise (-14, 199))
Result.extend_point (create {EV_COORDINATE}.make_precise (-21, 199))
Result.extend_point (create {EV_COORDINATE}.make_precise (-37, 202))
Result.extend_point (create {EV_COORDINATE}.make_precise (-53, 203))
Result.extend_point (create {EV_COORDINATE}.make_precise (-65, 200))
Result.extend_point (create {EV_COORDINATE}.make_precise (-76, 200))
Result.extend_point (create {EV_COORDINATE}.make_precise (-75, 207))
Result.extend_point (create {EV_COORDINATE}.make_precise (-71, 217))
Result.extend_point (create {EV_COORDINATE}.make_precise (-75, 227))
Result.extend_point (create {EV_COORDINATE}.make_precise (-85, 224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-91, 223))
Result.extend_point (create {EV_COORDINATE}.make_precise (-89, 233))
Result.extend_point (create {EV_COORDINATE}.make_precise (-83, 237))
Result.extend_point (create {EV_COORDINATE}.make_precise (-80, 247))
Result.extend_point (create {EV_COORDINATE}.make_precise (-75, 249))
Result.extend_point (create {EV_COORDINATE}.make_precise (-83, 251))
Result.extend_point (create {EV_COORDINATE}.make_precise (-82, 261))
Result.extend_point (create {EV_COORDINATE}.make_precise (-88, 260))
Result.extend_point (create {EV_COORDINATE}.make_precise (-103, 263))
Result.extend_point (create {EV_COORDINATE}.make_precise (-110, 273))
Result.extend_point (create {EV_COORDINATE}.make_precise (-117, 274))
Result.extend_point (create {EV_COORDINATE}.make_precise (-112, 281))
Result.extend_point (create {EV_COORDINATE}.make_precise (-123, 276))
Result.extend_point (create {EV_COORDINATE}.make_precise (-129, 270))
Result.extend_point (create {EV_COORDINATE}.make_precise (-138, 264))
Result.extend_point (create {EV_COORDINATE}.make_precise (-148, 267))
Result.extend_point (create {EV_COORDINATE}.make_precise (-155, 263))
Result.extend_point (create {EV_COORDINATE}.make_precise (-157, 267))
Result.extend_point (create {EV_COORDINATE}.make_precise (-152, 276))
Result.extend_point (create {EV_COORDINATE}.make_precise (-147, 288))
Result.extend_point (create {EV_COORDINATE}.make_precise (-159, 289))
Result.extend_point (create {EV_COORDINATE}.make_precise (-160, 295))
Result.extend_point (create {EV_COORDINATE}.make_precise (-164, 296))
Result.extend_point (create {EV_COORDINATE}.make_precise (-175, 295))
Result.extend_point (create {EV_COORDINATE}.make_precise (-181, 295))
Result.extend_point (create {EV_COORDINATE}.make_precise (-182, 301))
Result.extend_point (create {EV_COORDINATE}.make_precise (-186, 299))
Result.extend_point (create {EV_COORDINATE}.make_precise (-191, 301))
Result.extend_point (create {EV_COORDINATE}.make_precise (-185, 310))
Result.extend_point (create {EV_COORDINATE}.make_precise (-188, 321))
Result.extend_point (create {EV_COORDINATE}.make_precise (-199, 329))
Result.extend_point (create {EV_COORDINATE}.make_precise (-209, 331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-213, 325))
Result.extend_point (create {EV_COORDINATE}.make_precise (-223, 326))
Result.extend_point (create {EV_COORDINATE}.make_precise (-220, 330))
Result.extend_point (create {EV_COORDINATE}.make_precise (-224, 335))
Result.extend_point (create {EV_COORDINATE}.make_precise (-222, 341))
Result.extend_point (create {EV_COORDINATE}.make_precise (-227, 345))
Result.extend_point (create {EV_COORDINATE}.make_precise (-223, 355))
Result.extend_point (create {EV_COORDINATE}.make_precise (-233, 353))
Result.extend_point (create {EV_COORDINATE}.make_precise (-241, 355))
Result.extend_point (create {EV_COORDINATE}.make_precise (-248, 351))
Result.extend_point (create {EV_COORDINATE}.make_precise (-256, 348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-264, 346))
Result.extend_point (create {EV_COORDINATE}.make_precise (-276, 343))
Result.extend_point (create {EV_COORDINATE}.make_precise (-285, 344))
Result.extend_point (create {EV_COORDINATE}.make_precise (-296, 354))
Result.extend_point (create {EV_COORDINATE}.make_precise (-299, 364))
Result.extend_point (create {EV_COORDINATE}.make_precise (-307, 363))
Result.extend_point (create {EV_COORDINATE}.make_precise (-310, 369))
Result.extend_point (create {EV_COORDINATE}.make_precise (-302, 371))
Result.extend_point (create {EV_COORDINATE}.make_precise (-300, 378))
Result.extend_point (create {EV_COORDINATE}.make_precise (-290, 386))
Result.extend_point (create {EV_COORDINATE}.make_precise (-280, 396))
Result.extend_point (create {EV_COORDINATE}.make_precise (-274, 398))
Result.extend_point (create {EV_COORDINATE}.make_precise (-274, 407))
Result.extend_point (create {EV_COORDINATE}.make_precise (-275, 415))
Result.extend_point (create {EV_COORDINATE}.make_precise (-269, 431))
Result.extend_point (create {EV_COORDINATE}.make_precise (-255, 442))
Result.extend_point (create {EV_COORDINATE}.make_precise (-246, 450))
Result.extend_point (create {EV_COORDINATE}.make_precise (-240, 450))
Result.extend_point (create {EV_COORDINATE}.make_precise (-234, 458))
Result.extend_point (create {EV_COORDINATE}.make_precise (-242, 454))
Result.extend_point (create {EV_COORDINATE}.make_precise (-244, 457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-239, 464))
Result.extend_point (create {EV_COORDINATE}.make_precise (-245, 473))
Result.extend_point (create {EV_COORDINATE}.make_precise (-252, 468))
Result.extend_point (create {EV_COORDINATE}.make_precise (-259, 467))
Result.extend_point (create {EV_COORDINATE}.make_precise (-269, 454))
Result.extend_point (create {EV_COORDINATE}.make_precise (-278, 446))
Result.extend_point (create {EV_COORDINATE}.make_precise (-291, 447))
Result.extend_point (create {EV_COORDINATE}.make_precise (-303, 444))
Result.extend_point (create {EV_COORDINATE}.make_precise (-304, 449))
Result.extend_point (create {EV_COORDINATE}.make_precise (-296, 453))
Result.extend_point (create {EV_COORDINATE}.make_precise (-302, 457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-309, 458))
Result.extend_point (create {EV_COORDINATE}.make_precise (-310, 465))
Result.extend_point (create {EV_COORDINATE}.make_precise (-317, 464))
Result.extend_point (create {EV_COORDINATE}.make_precise (-321, 473))
Result.extend_point (create {EV_COORDINATE}.make_precise (-318, 481))
Result.extend_point (create {EV_COORDINATE}.make_precise (-321, 489))
Result.extend_point (create {EV_COORDINATE}.make_precise (-329, 495))
Result.extend_point (create {EV_COORDINATE}.make_precise (-333, 504))
Result.extend_point (create {EV_COORDINATE}.make_precise (-339, 510))
Result.extend_point (create {EV_COORDINATE}.make_precise (-340, 527))
Result.extend_point (create {EV_COORDINATE}.make_precise (-352, 545))
Result.extend_point (create {EV_COORDINATE}.make_precise (-350, 554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-348, 568))
Result.extend_point (create {EV_COORDINATE}.make_precise (-339, 571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-339, 565))
Result.extend_point (create {EV_COORDINATE}.make_precise (-336, 559))
Result.extend_point (create {EV_COORDINATE}.make_precise (-315, 554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-315, 563))
Result.extend_point (create {EV_COORDINATE}.make_precise (-307, 568))
Result.extend_point (create {EV_COORDINATE}.make_precise (-307, 577))
Result.extend_point (create {EV_COORDINATE}.make_precise (-315, 579))
Result.extend_point (create {EV_COORDINATE}.make_precise (-325, 588))
Result.extend_point (create {EV_COORDINATE}.make_precise (-331, 595))
Result.extend_point (create {EV_COORDINATE}.make_precise (-338, 605))
Result.extend_point (create {EV_COORDINATE}.make_precise (-351, 608))
Result.extend_point (create {EV_COORDINATE}.make_precise (-365, 614))
Result.extend_point (create {EV_COORDINATE}.make_precise (-371, 623))
Result.extend_point (create {EV_COORDINATE}.make_precise (-381, 634))
Result.extend_point (create {EV_COORDINATE}.make_precise (-387, 640))
Result.extend_point (create {EV_COORDINATE}.make_precise (-398, 640))
Result.extend_point (create {EV_COORDINATE}.make_precise (-410, 643))
Result.extend_point (create {EV_COORDINATE}.make_precise (-418, 652))
Result.extend_point (create {EV_COORDINATE}.make_precise (-423, 650))
Result.extend_point (create {EV_COORDINATE}.make_precise (-435, 646))
Result.extend_point (create {EV_COORDINATE}.make_precise (-435, 627))
Result.extend_point (create {EV_COORDINATE}.make_precise (-432, 621))
Result.extend_point (create {EV_COORDINATE}.make_precise (-431, 614))
Result.extend_point (create {EV_COORDINATE}.make_precise (-428, 605))
Result.extend_point (create {EV_COORDINATE}.make_precise (-432, 604))
Result.extend_point (create {EV_COORDINATE}.make_precise (-435, 602))
Result.extend_point (create {EV_COORDINATE}.make_precise (-438, 608))
Result.extend_point (create {EV_COORDINATE}.make_precise (-442, 605))
Result.extend_point (create {EV_COORDINATE}.make_precise (-440, 597))
Result.extend_point (create {EV_COORDINATE}.make_precise (-442, 592))
Result.extend_point (create {EV_COORDINATE}.make_precise (-429, 588))
Result.extend_point (create {EV_COORDINATE}.make_precise (-440, 585))
Result.extend_point (create {EV_COORDINATE}.make_precise (-442, 576))
Result.extend_point (create {EV_COORDINATE}.make_precise (-438, 568))
Result.extend_point (create {EV_COORDINATE}.make_precise (-445, 571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-445, 565))
Result.extend_point (create {EV_COORDINATE}.make_precise (-447, 557))
Result.extend_point (create {EV_COORDINATE}.make_precise (-450, 550))
Result.extend_point (create {EV_COORDINATE}.make_precise (-446, 546))
Result.extend_point (create {EV_COORDINATE}.make_precise (-441, 535))
Result.extend_point (create {EV_COORDINATE}.make_precise (-436, 534))
Result.extend_point (create {EV_COORDINATE}.make_precise (-424, 521))
Result.extend_point (create {EV_COORDINATE}.make_precise (-424, 510))
Result.extend_point (create {EV_COORDINATE}.make_precise (-412, 503))
Result.extend_point (create {EV_COORDINATE}.make_precise (-399, 491))
Result.extend_point (create {EV_COORDINATE}.make_precise (-392, 486))
Result.extend_point (create {EV_COORDINATE}.make_precise (-389, 491))
Result.extend_point (create {EV_COORDINATE}.make_precise (-380, 483))
Result.extend_point (create {EV_COORDINATE}.make_precise (-368, 474))
Result.extend_point (create {EV_COORDINATE}.make_precise (-361, 457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-367, 455))
Result.extend_point (create {EV_COORDINATE}.make_precise (-375, 443))
Result.extend_point (create {EV_COORDINATE}.make_precise (-373, 433))
Result.extend_point (create {EV_COORDINATE}.make_precise (-382, 408))
Result.extend_point (create {EV_COORDINATE}.make_precise (-389, 395))
Result.extend_point (create {EV_COORDINATE}.make_precise (-396, 375))
Result.extend_point (create {EV_COORDINATE}.make_precise (-394, 361))
Result.extend_point (create {EV_COORDINATE}.make_precise (-392, 353))
Result.extend_point (create {EV_COORDINATE}.make_precise (-386, 353))
Result.extend_point (create {EV_COORDINATE}.make_precise (-378, 364))
Result.extend_point (create {EV_COORDINATE}.make_precise (-374, 368))
Result.extend_point (create {EV_COORDINATE}.make_precise (-370, 362))
Result.extend_point (create {EV_COORDINATE}.make_precise (-358, 357))
Result.extend_point (create {EV_COORDINATE}.make_precise (-350, 347))
Result.extend_point (create {EV_COORDINATE}.make_precise (-341, 351))
Result.extend_point (create {EV_COORDINATE}.make_precise (-329, 350))
Result.extend_point (create {EV_COORDINATE}.make_precise (-330, 342))
Result.extend_point (create {EV_COORDINATE}.make_precise (-325, 334))
Result.extend_point (create {EV_COORDINATE}.make_precise (-312, 328))
Result.extend_point (create {EV_COORDINATE}.make_precise (-307, 320))
Result.extend_point (create {EV_COORDINATE}.make_precise (-299, 317))
Result.extend_point (create {EV_COORDINATE}.make_precise (-302, 312))
Result.extend_point (create {EV_COORDINATE}.make_precise (-302, 306))
Result.extend_point (create {EV_COORDINATE}.make_precise (-297, 299))
Result.extend_point (create {EV_COORDINATE}.make_precise (-291, 303))
Result.extend_point (create {EV_COORDINATE}.make_precise (-284, 297))
Result.extend_point (create {EV_COORDINATE}.make_precise (-276, 294))
Result.extend_point (create {EV_COORDINATE}.make_precise (-267, 297))
Result.extend_point (create {EV_COORDINATE}.make_precise (-258, 291))
Result.extend_point (create {EV_COORDINATE}.make_precise (-246, 290))
Result.extend_point (create {EV_COORDINATE}.make_precise (-244, 282))
Result.extend_point (create {EV_COORDINATE}.make_precise (-234, 273))
Result.extend_point (create {EV_COORDINATE}.make_precise (-228, 273))
Result.extend_point (create {EV_COORDINATE}.make_precise (-220, 267))
Result.extend_point (create {EV_COORDINATE}.make_precise (-211, 265))
Result.extend_point (create {EV_COORDINATE}.make_precise (-202, 249))
Result.extend_point (create {EV_COORDINATE}.make_precise (-200, 235))
Result.extend_point (create {EV_COORDINATE}.make_precise (-207, 231))
Result.extend_point (create {EV_COORDINATE}.make_precise (-219, 228))
Result.extend_point (create {EV_COORDINATE}.make_precise (-225, 222))
Result.extend_point (create {EV_COORDINATE}.make_precise (-231, 222))
Result.extend_point (create {EV_COORDINATE}.make_precise (-237, 219))
Result.extend_point (create {EV_COORDINATE}.make_precise (-243, 216))
Result.extend_point (create {EV_COORDINATE}.make_precise (-248, 223))
Result.extend_point (create {EV_COORDINATE}.make_precise (-255, 223))
Result.extend_point (create {EV_COORDINATE}.make_precise (-264, 218))
Result.extend_point (create {EV_COORDINATE}.make_precise (-269, 202))
Result.extend_point (create {EV_COORDINATE}.make_precise (-274, 187))
Result.extend_point (create {EV_COORDINATE}.make_precise (-274, 178))
Result.extend_point (create {EV_COORDINATE}.make_precise (-269, 170))
Result.extend_point (create {EV_COORDINATE}.make_precise (-269, 163))
Result.extend_point (create {EV_COORDINATE}.make_precise (-277, 153))
Result.extend_point (create {EV_COORDINATE}.make_precise (-275, 142))
Result.extend_point (create {EV_COORDINATE}.make_precise (-273, 133))
Result.extend_point (create {EV_COORDINATE}.make_precise (-256, 141))
Result.extend_point (create {EV_COORDINATE}.make_precise (-252, 138))
Result.extend_point (create {EV_COORDINATE}.make_precise (-244, 139))
Result.extend_point (create {EV_COORDINATE}.make_precise (-229, 138))
Result.extend_point (create {EV_COORDINATE}.make_precise (-224, 134))
Result.extend_point (create {EV_COORDINATE}.make_precise (-205, 138))
Result.extend_point (create {EV_COORDINATE}.make_precise (-207, 142))
Result.extend_point (create {EV_COORDINATE}.make_precise (-181, 150))
Result.extend_point (create {EV_COORDINATE}.make_precise (-178, 145))
Result.extend_point (create {EV_COORDINATE}.make_precise (-182, 131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-167, 133))
Result.extend_point (create {EV_COORDINATE}.make_precise (-166, 140))
Result.extend_point (create {EV_COORDINATE}.make_precise (-164, 146))
Result.extend_point (create {EV_COORDINATE}.make_precise (-172, 148))
Result.extend_point (create {EV_COORDINATE}.make_precise (-181, 156))
Result.extend_point (create {EV_COORDINATE}.make_precise (-190, 164))
Result.extend_point (create {EV_COORDINATE}.make_precise (-175, 159))
Result.extend_point (create {EV_COORDINATE}.make_precise (-168, 161))
Result.extend_point (create {EV_COORDINATE}.make_precise (-166, 169))
Result.extend_point (create {EV_COORDINATE}.make_precise (-164, 180))
Result.extend_point (create {EV_COORDINATE}.make_precise (-179, 180))
Result.extend_point (create {EV_COORDINATE}.make_precise (-190, 180))
Result.extend_point (create {EV_COORDINATE}.make_precise (-189, 174))
Result.extend_point (create {EV_COORDINATE}.make_precise (-195, 175))
Result.extend_point (create {EV_COORDINATE}.make_precise (-187, 185))
Result.extend_point (create {EV_COORDINATE}.make_precise (-178, 194))
Result.extend_point (create {EV_COORDINATE}.make_precise (-168, 197))
Result.extend_point (create {EV_COORDINATE}.make_precise (-162, 192))
Result.extend_point (create {EV_COORDINATE}.make_precise (-147, 191))
Result.extend_point (create {EV_COORDINATE}.make_precise (-135, 185))
Result.extend_point (create {EV_COORDINATE}.make_precise (-120, 178))
Result.extend_point (create {EV_COORDINATE}.make_precise (-112, 164))
Result.extend_point (create {EV_COORDINATE}.make_precise (-114, 159))
Result.extend_point (create {EV_COORDINATE}.make_precise (-103, 135))
Result.extend_point (create {EV_COORDINATE}.make_precise (-84, 134))
Result.extend_point (create {EV_COORDINATE}.make_precise (-82, 130))
Result.extend_point (create {EV_COORDINATE}.make_precise (-71, 126))
Result.extend_point (create {EV_COORDINATE}.make_precise (-68, 117))
Result.extend_point (create {EV_COORDINATE}.make_precise (-73, 111))
Result.extend_point (create {EV_COORDINATE}.make_precise (-75, 105))
Result.extend_point (create {EV_COORDINATE}.make_precise (-68, 105))
Result.extend_point (create {EV_COORDINATE}.make_precise (-57, 100))
Result.extend_point (create {EV_COORDINATE}.make_precise (-50, 96))
Result.extend_point (create {EV_COORDINATE}.make_precise (-48, 89))
Result.extend_point (create {EV_COORDINATE}.make_precise (-38, 86))
Result.extend_point (create {EV_COORDINATE}.make_precise (-25, 65))
Result.extend_point (create {EV_COORDINATE}.make_precise (-18, 59))
Result.extend_point (create {EV_COORDINATE}.make_precise (-18, 54))
Result.extend_point (create {EV_COORDINATE}.make_precise (-10, 41))
Result.extend_point (create {EV_COORDINATE}.make_precise (-11, 36))
Result.extend_point (create {EV_COORDINATE}.make_precise (-3, 19))
Result.extend_point (create {EV_COORDINATE}.make_precise (-7, 14))
Result.extend_point (create {EV_COORDINATE}.make_precise (-7, 4))
end
feature {NONE} -- Implementation
rotation_amount: REAL_64 = 180.0
-- Make the arrow point north-east
end

View File

@@ -0,0 +1,513 @@
note
description: "[
The widget representing this port
]"
author: "Jimmy J. Johnson"
class
PEARL_HARBOR_WIDGET
inherit
-- RED_PORT_WIDGET
-- undefine
-- paint
-- redefine
-- create_interface_objects,
-- initialize,
-- extend_widgets,
-- position_widgets,
-- build_land
-- end
ISLAND_PORT_WIDGET
redefine
create_interface_objects,
extend_widgets,
set_fonts_and_colors,
position_widgets,
build_land,
rotation_amount
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
oahu := oahu_imp
kauai := kauai_imp
molokai := molokai_imp
maui := maui_imp
hawaii := hawaii_imp
lanai := lanai_imp
niihau := niihau_imp
create not_allowed_text.make_with_text ("(No British Allowed%Nexcept Victorious)")
create reinforcements_text.make_with_text ("U.S. Reinforcements%Nand the Victorious")
-- Make objects non-Void before calling Precursor,
-- because a qualified call is made in an EV_xx class.
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {RED_PORT_WIDGET}
end
set_fonts_and_colors
-- Set the default fonts for any text widgets and set
-- the default colors for any contained widgets.
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {RED_PORT_WIDGET}
reinforcements_text.set_font (Subtext_font)
not_allowed_text.set_font (Subtext_font)
dot.show
dot.set_foreground_color (Silver)
end
extend_widgets
-- Put widgets into Current. This cannot be done
-- in `create_interface_object', because cannot call
-- `extend' feature until all objects [in descendants]
-- are also created.
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {RED_PORT_WIDGET}
extend (not_allowed_text)
extend (reinforcements_text)
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {RED_PORT_WIDGET}
center_widget_on_other (land, dot)
center_widget_on_other (marker, dot)
scale_widget (land, 0.13)
rotate_widget (land, 13.0)
translate_widget (land, 10, -10)
-- name_mt.center_on_dot (dot)
translate_widget (name_mt, 3, -3)
translate_widget (anchor, -2, -8)
translate_widget (marker, 8, 5)
translate_widget (not_allowed_text, 45, 118)
translate_widget (reinforcements_text, 15, 85)
center_on (670, 315)
end
build_land
-- Add widgets to Current
do
Precursor {ISLAND_PORT_WIDGET}
land.extend (oahu)
land.extend (kauai)
land.extend (molokai)
land.extend (maui)
land.extend (hawaii)
land.extend (lanai)
land.extend (niihau)
end
not_allowed_text: EV_MODEL_TEXT
-- Extra text on some Red ports (e.g. "No British Allowed").
reinforcements_text: EV_MODEL_TEXT
-- Extra text about reinforcement placement
feature -- Status report
is_red: BOOLEAN = True
-- Does Current represent a red (i.e. major) port?
feature {NONE} -- Implementation
oahu: EV_MODEL_POLYGON
kauai: EV_MODEL_POLYGON
molokai: EV_MODEL_POLYGON
maui: EV_MODEL_POLYGON
hawaii: EV_MODEL_POLYGON
lanai: EV_MODEL_POLYGON
niihau: EV_MODEL_POLYGON
feature {NONE} -- Implementation
oahu_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (-2.6666666666666856, 2.2222222222222285))
Result.extend_point (create {EV_COORDINATE}.make_precise (-7.1111111111110858, 0.88888888888891415))
Result.extend_point (create {EV_COORDINATE}.make_precise (-10.222222222222285, -1.7777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (-21.333333333333428, -4.4444444444444287))
Result.extend_point (create {EV_COORDINATE}.make_precise (-25.777777777777771, -4.4444444444444287))
Result.extend_point (create {EV_COORDINATE}.make_precise (-30.222222222222285, -3.5555555555555429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-47.111111111111086, -1.7777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (-51.5555555555556, -8.4444444444444287))
Result.extend_point (create {EV_COORDINATE}.make_precise (-52.888888888888914, -16.444444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-59.111111111111086, -23.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-61.777777777777771, -30.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (-68.888888888888914, -36.444444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-72, -47.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-77.333333333333428, -53.7777777777778))
Result.extend_point (create {EV_COORDINATE}.make_precise (-80, -56.888888888888886))
Result.extend_point (create {EV_COORDINATE}.make_precise (-70.666666666666686, -58.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (-62.222222222222285, -58.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (-53.333333333333428, -58.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (-44.888888888888914, -62.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (-40, -72.444444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-36, -78.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (-28.444444444444457, -82.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (-20.888888888888914, -84))
Result.extend_point (create {EV_COORDINATE}.make_precise (-17.333333333333428, -81.7777777777778))
Result.extend_point (create {EV_COORDINATE}.make_precise (-13.777777777777771, -73.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (-11.111111111111086, -69.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (-9.7777777777777715, -63.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-5.7777777777777715, -59.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (-4, -54.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (-0.44444444444445708, -54.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (4.8888888888889142, -46.222222222222257))
Result.extend_point (create {EV_COORDINATE}.make_precise (5.3333333333333144, -39.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (4, -36.444444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (7.5555555555555429, -33.777777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (11.111111111111086, -31.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (12, -35.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (16, -36))
Result.extend_point (create {EV_COORDINATE}.make_precise (23.111111111111086, -33.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (20.888888888888914, -27.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (15.111111111111086, -26.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (18.222222222222229, -24))
Result.extend_point (create {EV_COORDINATE}.make_precise (22.666666666666572, -21.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (25.777777777777715, -21.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (28.888888888888914, -16.888888888888886))
Result.extend_point (create {EV_COORDINATE}.make_precise (28.888888888888914, -13.333333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (37.333333333333314, -3.5555555555555429))
Result.extend_point (create {EV_COORDINATE}.make_precise (33.333333333333314, 0.44444444444445708))
Result.extend_point (create {EV_COORDINATE}.make_precise (28.4444444444444, 4.8888888888889142))
Result.extend_point (create {EV_COORDINATE}.make_precise (26.666666666666572, 2.2222222222222285))
Result.extend_point (create {EV_COORDINATE}.make_precise (17.777777777777715, 2.2222222222222285))
Result.extend_point (create {EV_COORDINATE}.make_precise (12.888888888888914, 4.8888888888889142))
Result.extend_point (create {EV_COORDINATE}.make_precise (8.8888888888889142, 3.5555555555555713))
Result.extend_point (create {EV_COORDINATE}.make_precise (5.3333333333333144, 0.44444444444445708))
Result.extend_point (create {EV_COORDINATE}.make_precise (2.6666666666665719, 2.6666666666666572))
end
kauai_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-311.11111111111109, -186.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-300.44444444444446, -180.88888888888886))
Result.extend_point (create {EV_COORDINATE}.make_precise (-300.44444444444446, -184))
Result.extend_point (create {EV_COORDINATE}.make_precise (-293.77777777777783, -186.2222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (-287.55555555555554, -183.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-282.66666666666669, -184.88888888888886))
Result.extend_point (create {EV_COORDINATE}.make_precise (-275.55555555555554, -182.2222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (-272, -180.88888888888886))
Result.extend_point (create {EV_COORDINATE}.make_precise (-263.55555555555554, -171.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-262.66666666666669, -160.44444444444443))
Result.extend_point (create {EV_COORDINATE}.make_precise (-265.77777777777777, -155.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-266.66666666666669, -150.2222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (-269.33333333333337, -149.77777777777777))
Result.extend_point (create {EV_COORDINATE}.make_precise (-268.88888888888891, -132))
Result.extend_point (create {EV_COORDINATE}.make_precise (-272.88888888888891, -131.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-270.22222222222229, -128.44444444444443))
Result.extend_point (create {EV_COORDINATE}.make_precise (-276, -126.22222222222221))
Result.extend_point (create {EV_COORDINATE}.make_precise (-280.44444444444446, -119.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-289.77777777777783, -113.77777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (-302.22222222222223, -117.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-316.88888888888891, -119.99999999999999))
Result.extend_point (create {EV_COORDINATE}.make_precise (-318.66666666666669, -116.88888888888889))
Result.extend_point (create {EV_COORDINATE}.make_precise (-323.11111111111109, -120.44444444444443))
Result.extend_point (create {EV_COORDINATE}.make_precise (-329.33333333333331, -129.77777777777777))
Result.extend_point (create {EV_COORDINATE}.make_precise (-337.77777777777777, -130.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (-348.88888888888891, -135.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-349.33333333333331, -138.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (-352.44444444444446, -140.88888888888889))
Result.extend_point (create {EV_COORDINATE}.make_precise (-352.88888888888891, -151.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-351.11111111111109, -154.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (-346.66666666666669, -163.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (-343.11111111111109, -171.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-335.55555555555554, -174.2222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (-332.44444444444446, -171.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-328.88888888888891, -174.2222222222222))
Result.extend_point (create {EV_COORDINATE}.make_precise (-324.44444444444446, -179.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-320, -178.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-318.66666666666669, -182.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-316.44444444444446, -185.77777777777777))
end
molokai_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (109.33333333333326, 12))
Result.extend_point (create {EV_COORDINATE}.make_precise (121.77777777777771, 12))
Result.extend_point (create {EV_COORDINATE}.make_precise (139.11111111111109, 14.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (158.66666666666652, 15.555555555555571))
Result.extend_point (create {EV_COORDINATE}.make_precise (172.44444444444434, 24))
Result.extend_point (create {EV_COORDINATE}.make_precise (182.66666666666652, 23.555555555555571))
Result.extend_point (create {EV_COORDINATE}.make_precise (188.44444444444434, 20.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (202.22222222222206, 20.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (204, 25.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (207.11111111111109, 24.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (207.11111111111109, 28.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (202.66666666666652, 36.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (200, 39.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (192, 44.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (184.88888888888891, 48))
Result.extend_point (create {EV_COORDINATE}.make_precise (176.88888888888891, 49.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (162.66666666666652, 45.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (148.88888888888891, 40.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (136.44444444444434, 39.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (121.33333333333326, 39.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (108, 40.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (101.33333333333326, 37.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (95.555555555555543, 37.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (92.888888888888914, 34.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (96.444444444444343, 28.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (96.444444444444343, 24.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (104, 21.777777777777743))
Result.extend_point (create {EV_COORDINATE}.make_precise (107.55555555555554, 17.333333333333314))
end
maui_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (222.66666666666652, 49.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (231.99999999999989, 49.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (237.33333333333326, 52))
Result.extend_point (create {EV_COORDINATE}.make_precise (243.11111111111109, 56.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (246.22222222222217, 64.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (247.11111111111109, 71.555555555555486))
Result.extend_point (create {EV_COORDINATE}.make_precise (253.33333333333326, 75.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (263.55555555555554, 72))
Result.extend_point (create {EV_COORDINATE}.make_precise (267.55555555555554, 66.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (272.88888888888891, 66.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (274.22222222222217, 63.555555555555486))
Result.extend_point (create {EV_COORDINATE}.make_precise (282.66666666666652, 65.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (283.99999999999989, 63.555555555555486))
Result.extend_point (create {EV_COORDINATE}.make_precise (289.77777777777771, 66.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (297.77777777777771, 68.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (295.99999999999989, 74.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (311.99999999999989, 81.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (315.99999999999989, 86.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (331.11111111111109, 89.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (335.55555555555554, 93.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (342.66666666666652, 97.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (341.33333333333326, 106.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (337.33333333333326, 115.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (331.55555555555554, 120.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (329.33333333333326, 124.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (322.22222222222217, 125.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (315.99999999999989, 129.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (307.55555555555554, 131.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (302.22222222222217, 129.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (287.99999999999989, 136.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (284.88888888888891, 132))
Result.extend_point (create {EV_COORDINATE}.make_precise (284.88888888888891, 138.66666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (274.22222222222217, 137.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (263.11111111111109, 139.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (259.11111111111109, 136.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (255.99999999999989, 130.22222222222223))
Result.extend_point (create {EV_COORDINATE}.make_precise (253.33333333333326, 124.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (253.33333333333326, 108.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (247.99999999999989, 103.55555555555549))
Result.extend_point (create {EV_COORDINATE}.make_precise (247.11111111111109, 98.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (244.88888888888891, 95.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (241.77777777777771, 99.555555555555486))
Result.extend_point (create {EV_COORDINATE}.make_precise (232.44444444444423, 99.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (221.77777777777771, 93.333333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (216, 84.444444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (213.33333333333326, 78.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (210.66666666666652, 72))
Result.extend_point (create {EV_COORDINATE}.make_precise (212.44444444444434, 58.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (216.44444444444434, 51.111111111111086))
end
hawaii_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (357.77777777777771, 200))
Result.extend_point (create {EV_COORDINATE}.make_precise (366.22222222222217, 198.22222222222223))
Result.extend_point (create {EV_COORDINATE}.make_precise (379.55555555555554, 202.22222222222223))
Result.extend_point (create {EV_COORDINATE}.make_precise (384.44444444444423, 206.22222222222223))
Result.extend_point (create {EV_COORDINATE}.make_precise (389.77777777777771, 211.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (399.11111111111109, 214.66666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (406.22222222222217, 222.66666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (413.77777777777771, 225.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (420.44444444444423, 224))
Result.extend_point (create {EV_COORDINATE}.make_precise (425.33333333333326, 226.22222222222223))
Result.extend_point (create {EV_COORDINATE}.make_precise (444.44444444444423, 234.66666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (467.99999999999989, 246.66666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (490.22222222222217, 262.22222222222223))
Result.extend_point (create {EV_COORDINATE}.make_precise (498.66666666666652, 272.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (503.99999999999989, 276.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (505.77777777777771, 284.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (501.33333333333326, 288.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (503.55555555555554, 297.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (505.77777777777771, 303.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (512.44444444444423, 300.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (515.55555555555554, 301.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (519.55555555555554, 300.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (524.44444444444423, 311.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (523.11111111111109, 319.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (529.33333333333326, 323.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (529.77777777777771, 328))
Result.extend_point (create {EV_COORDINATE}.make_precise (538.66666666666652, 334.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (550.66666666666652, 340))
Result.extend_point (create {EV_COORDINATE}.make_precise (554.22222222222217, 345.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (551.55555555555554, 353.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (545.33333333333326, 360))
Result.extend_point (create {EV_COORDINATE}.make_precise (537.33333333333326, 367.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (532.88888888888891, 370.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (527.55555555555554, 373.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (525.33333333333326, 376))
Result.extend_point (create {EV_COORDINATE}.make_precise (517.33333333333326, 381.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (507.11111111111109, 384.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (503.11111111111109, 388))
Result.extend_point (create {EV_COORDINATE}.make_precise (496.88888888888891, 390.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (490.66666666666652, 390.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (483.99999999999989, 396))
Result.extend_point (create {EV_COORDINATE}.make_precise (478.66666666666652, 396))
Result.extend_point (create {EV_COORDINATE}.make_precise (475.99999999999989, 393.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (468.44444444444423, 393.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (462.22222222222217, 396))
Result.extend_point (create {EV_COORDINATE}.make_precise (453.77777777777771, 400))
Result.extend_point (create {EV_COORDINATE}.make_precise (447.55555555555554, 405.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (442.66666666666652, 403.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (440.88888888888891, 409.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (439.55555555555554, 416))
Result.extend_point (create {EV_COORDINATE}.make_precise (432.88888888888891, 417.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (422.22222222222217, 423.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (417.77777777777771, 431.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (416.44444444444423, 439.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (412.44444444444423, 443.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (411.99999999999989, 450.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (406.22222222222217, 452))
Result.extend_point (create {EV_COORDINATE}.make_precise (403.55555555555554, 456.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (396.88888888888891, 462.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (390.66666666666652, 456.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (387.11111111111109, 452))
Result.extend_point (create {EV_COORDINATE}.make_precise (379.55555555555554, 452))
Result.extend_point (create {EV_COORDINATE}.make_precise (377.77777777777771, 448.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (373.33333333333326, 444.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (361.33333333333326, 440.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (356.88888888888891, 434.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (352.88888888888891, 421.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (353.77777777777771, 404))
Result.extend_point (create {EV_COORDINATE}.make_precise (355.99999999999989, 392.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (356.44444444444423, 375.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (354.22222222222217, 366.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (350.22222222222217, 355.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (349.77777777777771, 348.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (346.22222222222217, 349.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (343.99999999999989, 337.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (340.88888888888891, 325.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (330.22222222222217, 318.22222222222206))
Result.extend_point (create {EV_COORDINATE}.make_precise (327.55555555555554, 309.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (325.77777777777771, 301.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (327.55555555555554, 300))
Result.extend_point (create {EV_COORDINATE}.make_precise (327.55555555555554, 295.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (330.22222222222217, 293.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (329.77777777777771, 291.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (336.88888888888891, 287.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (337.77777777777771, 281.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (347.55555555555554, 279.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (350.66666666666652, 277.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (353.77777777777771, 277.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (354.66666666666652, 274.22222222222223))
Result.extend_point (create {EV_COORDINATE}.make_precise (352.44444444444423, 272))
Result.extend_point (create {EV_COORDINATE}.make_precise (355.11111111111109, 268))
Result.extend_point (create {EV_COORDINATE}.make_precise (359.11111111111109, 268.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (355.55555555555554, 264.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (359.99999999999989, 260.4444444444444))
Result.extend_point (create {EV_COORDINATE}.make_precise (361.77777777777771, 256.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (368.44444444444423, 254.66666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (367.55555555555554, 245.77777777777771))
Result.extend_point (create {EV_COORDINATE}.make_precise (365.77777777777771, 242.22222222222223))
Result.extend_point (create {EV_COORDINATE}.make_precise (363.11111111111109, 235.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (358.22222222222217, 231.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (355.99999999999989, 224))
Result.extend_point (create {EV_COORDINATE}.make_precise (355.11111111111109, 211.55555555555554))
Result.extend_point (create {EV_COORDINATE}.make_precise (354.66666666666652, 204.4444444444444))
end
lanai_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (144.44444444444434, 72.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (149.33333333333326, 68.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (158.66666666666652, 68))
Result.extend_point (create {EV_COORDINATE}.make_precise (173.33333333333326, 69.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (181.77777777777771, 76.888888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (182.22222222222206, 81.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (190.66666666666652, 87.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (191.55555555555554, 93.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (188.88888888888891, 97.777777777777715))
Result.extend_point (create {EV_COORDINATE}.make_precise (186.66666666666652, 103.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (180.88888888888891, 104.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (176.44444444444434, 108.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (170.66666666666652, 108.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (163.11111111111109, 108.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (157.77777777777771, 104.44444444444446))
Result.extend_point (create {EV_COORDINATE}.make_precise (155.55555555555554, 98.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (156.88888888888891, 91.555555555555486))
Result.extend_point (create {EV_COORDINATE}.make_precise (154.66666666666652, 91.555555555555486))
Result.extend_point (create {EV_COORDINATE}.make_precise (154.22222222222206, 87.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (146.66666666666652, 86.222222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (142.66666666666652, 80.888888888888914))
end
niihau_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-409.77777777777777, -141.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-402.66666666666663, -140))
Result.extend_point (create {EV_COORDINATE}.make_precise (-399.11111111111109, -135.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-402.66666666666663, -132.88888888888889))
Result.extend_point (create {EV_COORDINATE}.make_precise (-405.77777777777777, -126.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (-402.22222222222217, -119.99999999999999))
Result.extend_point (create {EV_COORDINATE}.make_precise (-408, -115.99999999999999))
Result.extend_point (create {EV_COORDINATE}.make_precise (-408.88888888888886, -113.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-411.55555555555554, -115.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-419.11111111111109, -113.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-421.33333333333331, -107.99999999999999))
Result.extend_point (create {EV_COORDINATE}.make_precise (-424.88888888888886, -102.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (-424, -95.999999999999986))
Result.extend_point (create {EV_COORDINATE}.make_precise (-429.77777777777777, -96.444444444444429))
Result.extend_point (create {EV_COORDINATE}.make_precise (-436.4444444444444, -101.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-437.33333333333331, -108.88888888888889))
Result.extend_point (create {EV_COORDINATE}.make_precise (-435.11111111111109, -112.44444444444443))
Result.extend_point (create {EV_COORDINATE}.make_precise (-434.22222222222217, -119.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-430.22222222222217, -121.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-427.55555555555554, -126.22222222222221))
Result.extend_point (create {EV_COORDINATE}.make_precise (-420.88888888888886, -127.99999999999999))
Result.extend_point (create {EV_COORDINATE}.make_precise (-412.88888888888886, -132))
Result.extend_point (create {EV_COORDINATE}.make_precise (-412.4444444444444, -137.77777777777777))
end
feature {NONE} -- Implementation
rotation_amount: REAL_64 = -60.0
-- Make the arrow point north-east
invariant
correct_location: attached target_imp implies port = game.pearl_harbor
end

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,649 @@
note
description: "[
Widget representing a {PORT}.
]"
author: "Jimmy J. Johnson"
class
PORT_MORESBY_WIDGET
inherit
GREEN_PORT_WIDGET
redefine
create_interface_objects,
position_widgets,
build_land
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
Precursor {GREEN_PORT_WIDGET}
mainland := mainland_imp
dot.set_foreground_color (Chrome)
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {GREEN_PORT_WIDGET}
center_widget_on_other (land, dot)
scale_widget (land, 0.07)
rotate_widget (land, 15)
translate_widget (Current, 311, 399)
translate_widget (name_mt, -7, -1)
translate_widget (marker, -120, -110)
bring_to_front (dot)
end
build_land
-- Add widgets to Current
do
Precursor {GREEN_PORT_WIDGET}
-- Initialize attributes
land.extend (mainland)
end
feature -- Access
defining_figure: EV_MODEL
-- The figure to be used to determine if other figures
-- overlap this one or for capturing mouse events
do
Result := mainland
end
mainland: EV_MODEL_POLYGON
-- The Port Moresby half of the green island
feature -- Status report
is_red: BOOLEAN = False
-- Does Current represent a red (i.e. major) port?
feature {NONE} -- Implementation
mainland_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (-48, -41))
Result.extend_point (create {EV_COORDINATE}.make_precise (-214.99999999999977, -117))
Result.extend_point (create {EV_COORDINATE}.make_precise (-357.99999999999977, -275))
Result.extend_point (create {EV_COORDINATE}.make_precise (-627.99999999999977, -424))
Result.extend_point (create {EV_COORDINATE}.make_precise (-779.99999999999977, -513))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1006.9999999999999, -597))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1225.9999999999998, -628))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1436.9999999999998, -599))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1429.4444444444443, -591))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1421.4444444444443, -587.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1414.7777777777776, -587.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1411.6666666666665, -582.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1399.6666666666665, -575))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1387.6666666666665, -567.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1382.7777777777776, -569.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1372.5555555555554, -570.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1366.3333333333333, -571.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1350.333333333333, -567))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1340.1111111111109, -566.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1321.8888888888887, -566.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1312.5555555555554, -558.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1298.333333333333, -550.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1287.2222222222222, -548.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1285.4444444444443, -550.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1269.8888888888887, -543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1266.333333333333, -538.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1257.4444444444443, -536.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1243.6666666666665, -527.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1236.1111111111111, -528.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1231.6666666666665, -532.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1226.7777777777776, -532.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1230.7777777777776, -528.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1224.9999999999998, -525.22222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1221.8888888888887, -527))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1218.333333333333, -530.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1217.8888888888887, -527))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1217.8888888888887, -523.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1215.6666666666665, -522.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1212.5555555555554, -525.22222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1212.1111111111111, -521.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1208.9999999999998, -521.22222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1205.4444444444443, -519))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1204.1111111111109, -524.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1201.8888888888887, -523.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1201.4444444444443, -519.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1197.8888888888887, -516.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1197.8888888888887, -521.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1195.6666666666665, -517.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1192.1111111111109, -513.22222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1184.9999999999998, -507.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1183.6666666666665, -511.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1180.9999999999998, -508.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1178.333333333333, -505.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1176.5555555555554, -507.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1174.3333333333333, -511.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1173.4444444444443, -508.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1168.9999999999998, -507.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1172.5555555555554, -505.22222222222234))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1173.4444444444443, -503.00000000000006))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1164.5555555555554, -500.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1160.1111111111109, -504.33333333333343))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1159.2222222222222, -501.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1160.9999999999998, -501.22222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1161.4444444444443, -498.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1158.7777777777776, -492.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1154.7777777777776, -493.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1154.7777777777776, -491))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1158.333333333333, -488.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1156.9999999999998, -484.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1153.8888888888889, -488.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1152.1111111111111, -485.22222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1147.2222222222222, -485.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1138.3333333333333, -479))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1130.7777777777776, -475))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1124.9999999999998, -471))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1128.1111111111111, -467.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1126.3333333333333, -454.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1126.3333333333333, -450.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1122.7777777777776, -452.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1119.2222222222222, -454.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1115.2222222222222, -453.22222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1117.8888888888889, -449.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1116.5555555555554, -445.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1107.2222222222222, -441.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1096.9999999999998, -444.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1096.9999999999998, -442.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1109.4444444444443, -439.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1109.8888888888887, -435.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1103.6666666666665, -430.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1102.3333333333333, -419.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1096.9999999999998, -411.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1097.4444444444443, -407.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1095.2222222222222, -397.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1092.9999999999998, -392.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1085, -386.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1077.8888888888889, -378.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1074.3333333333333, -374.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1069.8888888888889, -371.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1057.4444444444443, -363.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1060.5555555555554, -364.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1071.6666666666665, -369.22222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1072.1111111111109, -366.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1071.6666666666665, -362.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1064.1111111111111, -358.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1057.8888888888889, -352.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1050.3333333333333, -352.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1043.2222222222222, -351.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1037.4444444444443, -346.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1032.1111111111111, -342.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1027.6666666666665, -340.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1029.4444444444443, -339))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1034.7777777777776, -343))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1041.8888888888889, -347.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1045.8888888888889, -350.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1052.5555555555557, -350.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1059.2222222222222, -349.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1061.8888888888887, -353.22222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1068.1111111111111, -358.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1071.6666666666665, -358.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1075.6666666666665, -360.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1077.8888888888889, -358.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1073, -352.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1071.2222222222222, -348.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1065.8888888888889, -347.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1062.7777777777778, -350.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1060.5555555555554, -348.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1064.1111111111111, -346.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1067.6666666666665, -345.22222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1072.5555555555554, -345.22222222222229))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1075.2222222222222, -346.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1081.4444444444443, -343.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1081.8888888888889, -339.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1078.3333333333333, -335))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1075.6666666666665, -334.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1064.9999999999998, -325.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1057.4444444444443, -322.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1048.5555555555554, -322.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1039.2222222222222, -317.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1029.4444444444443, -316.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1025, -316.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1021.8888888888889, -323))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1018.3333333333333, -321.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1020.5555555555554, -319.88888888888903))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1022.7777777777776, -316.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1025.4444444444443, -314.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1031.6666666666665, -314.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1038.3333333333333, -314.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1044.1111111111111, -315))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1048.5555555555554, -319))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1054.3333333333333, -316.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1063.6666666666665, -316.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1072.1111111111109, -317.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1072.1111111111109, -315))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1062.3333333333333, -312.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1059.2222222222222, -308.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1053.8888888888889, -307))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1048.5555555555554, -298.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1044.9999999999998, -288.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1037.8888888888887, -288.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1032.1111111111111, -287))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1031.2222222222222, -282.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1035.6666666666665, -277.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1037.4444444444443, -272.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1038.7777777777778, -268.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1040.1111111111111, -264.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1039.6666666666665, -258.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1044.9999999999998, -254.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1049.4444444444443, -251))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1051.6666666666665, -247.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1051.6666666666665, -253.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1048.1111111111109, -256.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1042.3333333333333, -259))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1042.3333333333333, -266.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1040.1111111111111, -271.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1039.2222222222222, -277.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1034.333333333333, -283.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1047.6666666666665, -286.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1051.6666666666665, -289.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1054.3333333333333, -296.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1063.2222222222222, -301.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1073, -302.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1081.4444444444443, -301.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1105.4444444444443, -295.88888888888903))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1118.333333333333, -289.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1128.1111111111111, -279.88888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1136.9999999999998, -269.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1148.1111111111109, -251.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1150.7777777777776, -241.22222222222251))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1156.1111111111109, -233.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1162.3333333333333, -220.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1165.4444444444443, -203.88888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1162.7777777777776, -203.88888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1156.5555555555554, -207.88888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1146.333333333333, -210.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1129.8888888888889, -209.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1116.1111111111111, -209.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1110.333333333333, -208.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1108.9999999999998, -204.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1100.5555555555554, -206.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1091.6666666666665, -211.88888888888903))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1085, -217.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1076.1111111111111, -223.00000000000011))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1071.6666666666665, -232.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1066.3333333333333, -232.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1060.5555555555554, -234.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1057.8888888888889, -238.55555555555577))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1052.9999999999998, -239))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1052.5555555555557, -242.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1052.5555555555557, -244.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1049, -246.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1049.8888888888887, -242.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1049, -239))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1051.6666666666665, -236.77777777777794))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1055.6666666666665, -236.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1056.5555555555554, -232.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1060.5555555555554, -231))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1066.3333333333333, -228.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1069.4444444444443, -229.22222222222251))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1072.1111111111109, -224.77777777777794))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1077.4444444444443, -219.88888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1081.4444444444443, -215.88888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1081.4444444444443, -213.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1078.3333333333333, -211.00000000000011))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1071.6666666666665, -211.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1064.1111111111111, -209.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1057.8888888888889, -210.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1050.3333333333333, -209.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1047.6666666666665, -211.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1044.5555555555554, -212.77777777777794))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1041.8888888888889, -214.55555555555577))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1041.8888888888889, -218.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1044.5555555555554, -220.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1047.2222222222222, -218.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1048.5555555555554, -215))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1049.8888888888887, -219))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1052.9999999999998, -223.00000000000011))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1055.6666666666665, -227))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1055.2222222222222, -229.22222222222251))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1052.9999999999998, -225.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1050.3333333333333, -221.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1046.333333333333, -223.00000000000011))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1043.6666666666665, -225.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1037.8888888888887, -231.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1022.3333333333331, -236.77777777777794))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1020.9999999999998, -242.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1020.9999999999998, -234.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1016.1111111111111, -228.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1010.3333333333331, -226.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-995.66666666666652, -227.88888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-988.99999999999989, -231.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-976.11111111111097, -234.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-961.88888888888891, -233.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-956.55555555555554, -233.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-952.55555555555543, -237.66666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (-947.66666666666652, -238.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-944.99999999999977, -238.55555555555577))
Result.extend_point (create {EV_COORDINATE}.make_precise (-945.44444444444446, -235.88888888888903))
Result.extend_point (create {EV_COORDINATE}.make_precise (-949.44444444444434, -235.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-953.44444444444434, -234.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-955.66666666666663, -230.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-954.77777777777771, -226.55555555555577))
Result.extend_point (create {EV_COORDINATE}.make_precise (-937.44444444444434, -213.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-928.99999999999989, -206.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-920.55555555555554, -200.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-916.99999999999989, -193.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-907.22222222222217, -187.88888888888903))
Result.extend_point (create {EV_COORDINATE}.make_precise (-903.22222222222217, -177.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-894.33333333333326, -165.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-879.66666666666652, -152.77777777777794))
Result.extend_point (create {EV_COORDINATE}.make_precise (-874.33333333333326, -146.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-869.44444444444434, -143.88888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-858.33333333333326, -139.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-852.11111111111109, -136.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-848.55555555555554, -130.55555555555577))
Result.extend_point (create {EV_COORDINATE}.make_precise (-841.44444444444434, -130.55555555555577))
Result.extend_point (create {EV_COORDINATE}.make_precise (-833.44444444444434, -134.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-828.55555555555543, -139.00000000000011))
Result.extend_point (create {EV_COORDINATE}.make_precise (-820.99999999999977, -140.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-816.11111111111109, -137.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-812.99999999999977, -134.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-805.88888888888891, -134.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-803.66666666666652, -131.88888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-796.11111111111109, -135))
Result.extend_point (create {EV_COORDINATE}.make_precise (-787.22222222222217, -135.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-776.55555555555543, -133.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-771.66666666666652, -135.88888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-773.44444444444434, -133.22222222222251))
Result.extend_point (create {EV_COORDINATE}.make_precise (-765.44444444444457, -135))
Result.extend_point (create {EV_COORDINATE}.make_precise (-752.11111111111109, -139.88888888888903))
Result.extend_point (create {EV_COORDINATE}.make_precise (-749.88888888888891, -149.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-747.22222222222217, -154.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-747.22222222222217, -151.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-748.55555555555543, -145.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-748.55555555555543, -141.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-748.55555555555543, -137.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-742.7777777777776, -132.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-735.66666666666652, -133.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-728.55555555555543, -131.44444444444468))
Result.extend_point (create {EV_COORDINATE}.make_precise (-719.66666666666652, -122.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-710.7777777777776, -121.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-702.33333333333326, -125.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-694.7777777777776, -131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-684.99999999999977, -135.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-682.7777777777776, -139.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-672.55555555555543, -145.22222222222251))
Result.extend_point (create {EV_COORDINATE}.make_precise (-663.22222222222217, -146.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-660.99999999999977, -149.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-647.2222222222224, -147.88888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-644.99999999999977, -151.00000000000011))
Result.extend_point (create {EV_COORDINATE}.make_precise (-641.88888888888891, -150.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-638.7777777777776, -149.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-637.44444444444434, -152.77777777777794))
Result.extend_point (create {EV_COORDINATE}.make_precise (-637.44444444444434, -155))
Result.extend_point (create {EV_COORDINATE}.make_precise (-640.55555555555543, -155))
Result.extend_point (create {EV_COORDINATE}.make_precise (-640.11111111111109, -166.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-641.88888888888891, -167.88888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-640.55555555555543, -175.00000000000011))
Result.extend_point (create {EV_COORDINATE}.make_precise (-648.99999999999977, -185.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-655.22222222222217, -192.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-664.99999999999977, -199.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-671.2222222222224, -203.88888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-683.66666666666652, -206.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-694.33333333333326, -212.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-701.88888888888891, -215.44444444444468))
Result.extend_point (create {EV_COORDINATE}.make_precise (-709.44444444444434, -215.44444444444468))
Result.extend_point (create {EV_COORDINATE}.make_precise (-715.66666666666674, -214.55555555555577))
Result.extend_point (create {EV_COORDINATE}.make_precise (-720.55555555555543, -211.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-724.11111111111109, -210.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-729.88888888888891, -212.77777777777794))
Result.extend_point (create {EV_COORDINATE}.make_precise (-732.11111111111109, -217.22222222222251))
Result.extend_point (create {EV_COORDINATE}.make_precise (-734.33333333333326, -223.00000000000011))
Result.extend_point (create {EV_COORDINATE}.make_precise (-736.55555555555543, -227))
Result.extend_point (create {EV_COORDINATE}.make_precise (-742.7777777777776, -227.44444444444468))
Result.extend_point (create {EV_COORDINATE}.make_precise (-739.22222222222217, -230.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-733.88888888888891, -229.22222222222251))
Result.extend_point (create {EV_COORDINATE}.make_precise (-731.66666666666652, -225.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-731.2222222222224, -220.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-729.44444444444457, -215))
Result.extend_point (create {EV_COORDINATE}.make_precise (-723.66666666666652, -214.55555555555577))
Result.extend_point (create {EV_COORDINATE}.make_precise (-720.55555555555543, -215))
Result.extend_point (create {EV_COORDINATE}.make_precise (-715.66666666666674, -218.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-712.11111111111109, -218.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-706.33333333333326, -220.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-697.44444444444434, -218.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-690.33333333333326, -214.55555555555577))
Result.extend_point (create {EV_COORDINATE}.make_precise (-686.7777777777776, -216.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-681.44444444444457, -212.77777777777794))
Result.extend_point (create {EV_COORDINATE}.make_precise (-673.44444444444434, -214.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-664.55555555555543, -217.22222222222251))
Result.extend_point (create {EV_COORDINATE}.make_precise (-652.99999999999977, -220.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-646.7777777777776, -222.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-626.7777777777776, -222.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-623.2222222222224, -222.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-614.7777777777776, -224.77777777777794))
Result.extend_point (create {EV_COORDINATE}.make_precise (-613.44444444444434, -228.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-618.33333333333326, -227))
Result.extend_point (create {EV_COORDINATE}.make_precise (-624.11111111111109, -229.22222222222251))
Result.extend_point (create {EV_COORDINATE}.make_precise (-620.55555555555543, -230.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-616.11111111111109, -230.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-616.11111111111109, -234.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-620.55555555555543, -236.77777777777794))
Result.extend_point (create {EV_COORDINATE}.make_precise (-613.88888888888891, -236.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-616.99999999999977, -240.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-624.11111111111109, -243))
Result.extend_point (create {EV_COORDINATE}.make_precise (-618.7777777777776, -244.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-612.99999999999977, -240.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-607.22222222222217, -241.22222222222251))
Result.extend_point (create {EV_COORDINATE}.make_precise (-599.2222222222224, -240.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-598.7777777777776, -244.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-594.7777777777776, -243.88888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-595.22222222222217, -251.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-598.7777777777776, -256.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-600.11111111111109, -265.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-599.2222222222224, -268.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-593.88888888888891, -261.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-588.55555555555543, -259.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-590.7777777777776, -265.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-595.66666666666674, -268.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-600.99999999999977, -274.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-590.7777777777776, -269.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-585.44444444444457, -266.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-580.11111111111109, -265.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-579.66666666666652, -269.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-576.99999999999977, -264.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-572.55555555555543, -262.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-572.11111111111109, -267))
Result.extend_point (create {EV_COORDINATE}.make_precise (-570.33333333333326, -262.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-563.66666666666652, -264.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-565.44444444444434, -267))
Result.extend_point (create {EV_COORDINATE}.make_precise (-563.66666666666652, -271.88888888888903))
Result.extend_point (create {EV_COORDINATE}.make_precise (-567.22222222222217, -274.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-561.88888888888891, -275.88888888888903))
Result.extend_point (create {EV_COORDINATE}.make_precise (-559.22222222222217, -270.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-556.55555555555543, -270.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-558.33333333333326, -275.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-557.88888888888891, -278.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-554.7777777777776, -274.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-553.44444444444434, -270.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-552.55555555555543, -266.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-549.88888888888891, -266.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-547.22222222222217, -268.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-544.99999999999977, -263.88888888888903))
Result.extend_point (create {EV_COORDINATE}.make_precise (-540.11111111111109, -263))
Result.extend_point (create {EV_COORDINATE}.make_precise (-544.55555555555543, -268.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-545.44444444444434, -271.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-545.44444444444434, -275))
Result.extend_point (create {EV_COORDINATE}.make_precise (-548.11111111111109, -281.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-548.55555555555543, -284.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-545.44444444444434, -282.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-540.99999999999977, -276.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-539.2222222222224, -272.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-536.99999999999977, -275))
Result.extend_point (create {EV_COORDINATE}.make_precise (-540.55555555555543, -279.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-539.2222222222224, -281.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-540.11111111111109, -287.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-536.99999999999977, -291.88888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-536.99999999999977, -286.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-535.22222222222217, -279.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-530.33333333333326, -276.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-525.88888888888891, -276.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-527.66666666666652, -283.88888888888903))
Result.extend_point (create {EV_COORDINATE}.make_precise (-527.66666666666652, -287.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-525.88888888888891, -285.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-523.22222222222217, -287))
Result.extend_point (create {EV_COORDINATE}.make_precise (-523.22222222222217, -281.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-518.33333333333326, -278.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-518.7777777777776, -275.88888888888903))
Result.extend_point (create {EV_COORDINATE}.make_precise (-512.11111111111109, -275.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-510.7777777777776, -280.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-512.11111111111109, -284.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-508.55555555555543, -282.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-508.99999999999977, -279.88888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-508.11111111111109, -276.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-508.11111111111109, -272.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-508.55555555555543, -268.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-512.11111111111109, -270.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-507.66666666666652, -265.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-498.7777777777776, -263))
Result.extend_point (create {EV_COORDINATE}.make_precise (-493.88888888888891, -259))
Result.extend_point (create {EV_COORDINATE}.make_precise (-488.55555555555543, -261.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-481.88888888888891, -259))
Result.extend_point (create {EV_COORDINATE}.make_precise (-473.44444444444457, -258.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-466.33333333333326, -257.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-461.88888888888891, -254.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-457.44444444444457, -249.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-438.77777777777783, -251))
Result.extend_point (create {EV_COORDINATE}.make_precise (-425.44444444444457, -247))
Result.extend_point (create {EV_COORDINATE}.make_precise (-420.11111111111109, -241.22222222222251))
Result.extend_point (create {EV_COORDINATE}.make_precise (-406.33333333333326, -238.55555555555577))
Result.extend_point (create {EV_COORDINATE}.make_precise (-399.22222222222217, -235.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-395.2222222222224, -229.22222222222251))
Result.extend_point (create {EV_COORDINATE}.make_precise (-392.11111111111109, -223.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-383.2222222222224, -220.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-380.55555555555543, -211.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-380.99999999999977, -206.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-373.44444444444457, -193.22222222222251))
Result.extend_point (create {EV_COORDINATE}.make_precise (-366.33333333333326, -187.88888888888903))
Result.extend_point (create {EV_COORDINATE}.make_precise (-360.55555555555543, -183))
Result.extend_point (create {EV_COORDINATE}.make_precise (-357.44444444444457, -175.00000000000011))
Result.extend_point (create {EV_COORDINATE}.make_precise (-355.66666666666674, -170.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-352.99999999999977, -157.22222222222251))
Result.extend_point (create {EV_COORDINATE}.make_precise (-348.99999999999977, -150.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-338.33333333333326, -147))
Result.extend_point (create {EV_COORDINATE}.make_precise (-331.22222222222217, -145.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-324.11111111111109, -140.77777777777794))
Result.extend_point (create {EV_COORDINATE}.make_precise (-317.44444444444457, -146.11111111111131))
Result.extend_point (create {EV_COORDINATE}.make_precise (-315.2222222222224, -149.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-316.99999999999977, -143.44444444444468))
Result.extend_point (create {EV_COORDINATE}.make_precise (-320.55555555555543, -141.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-322.33333333333326, -137.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-321.88888888888891, -132.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-320.55555555555543, -125.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-314.77777777777806, -125.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-311.2222222222224, -113.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-303.2222222222224, -108.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-304.55555555555543, -113.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-301.88888888888891, -114.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-299.66666666666674, -110.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-295.66666666666674, -103.88888888888903))
Result.extend_point (create {EV_COORDINATE}.make_precise (-290.77777777777806, -103.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-292.11111111111131, -108.33333333333348))
Result.extend_point (create {EV_COORDINATE}.make_precise (-288.11111111111109, -107.88888888888914))
Result.extend_point (create {EV_COORDINATE}.make_precise (-286.33333333333326, -100.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-278.33333333333348, -94.111111111111313))
Result.extend_point (create {EV_COORDINATE}.make_precise (-274.33333333333326, -86.111111111111313))
Result.extend_point (create {EV_COORDINATE}.make_precise (-268.99999999999977, -80.777777777777942))
Result.extend_point (create {EV_COORDINATE}.make_precise (-266.77777777777806, -73.222222222222513))
Result.extend_point (create {EV_COORDINATE}.make_precise (-261.4444444444448, -67.000000000000114))
Result.extend_point (create {EV_COORDINATE}.make_precise (-259.22222222222217, -62.555555555555657))
Result.extend_point (create {EV_COORDINATE}.make_precise (-252.99999999999977, -58.55555555555577))
Result.extend_point (create {EV_COORDINATE}.make_precise (-249, -58.55555555555577))
Result.extend_point (create {EV_COORDINATE}.make_precise (-247.66666666666674, -50.111111111111313))
Result.extend_point (create {EV_COORDINATE}.make_precise (-244.99999999999977, -52.777777777777828))
Result.extend_point (create {EV_COORDINATE}.make_precise (-239.66666666666674, -55.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-235.22222222222217, -52.333333333333371))
Result.extend_point (create {EV_COORDINATE}.make_precise (-229.44444444444457, -52.777777777777828))
Result.extend_point (create {EV_COORDINATE}.make_precise (-225.4444444444448, -43.888888888889028))
Result.extend_point (create {EV_COORDINATE}.make_precise (-220.11111111111131, -47))
Result.extend_point (create {EV_COORDINATE}.make_precise (-213.88888888888891, -47.444444444444684))
Result.extend_point (create {EV_COORDINATE}.make_precise (-208.55555555555543, -51.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-203.2222222222224, -58.111111111111313))
Result.extend_point (create {EV_COORDINATE}.make_precise (-204.55555555555566, -54.555555555555657))
Result.extend_point (create {EV_COORDINATE}.make_precise (-204.11111111111109, -51.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-200.55555555555543, -51))
Result.extend_point (create {EV_COORDINATE}.make_precise (-197.44444444444457, -47))
Result.extend_point (create {EV_COORDINATE}.make_precise (-193.88888888888891, -48.333333333333485))
Result.extend_point (create {EV_COORDINATE}.make_precise (-190.77777777777783, -43.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-186.33333333333326, -41.222222222222399))
Result.extend_point (create {EV_COORDINATE}.make_precise (-173.44444444444457, -43.888888888889028))
Result.extend_point (create {EV_COORDINATE}.make_precise (-164.11111111111109, -43.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-159.66666666666652, -47.444444444444684))
Result.extend_point (create {EV_COORDINATE}.make_precise (-156.55555555555566, -45.666666666666856))
Result.extend_point (create {EV_COORDINATE}.make_precise (-158.33333333333348, -43.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-151.22222222222217, -42.555555555555657))
Result.extend_point (create {EV_COORDINATE}.make_precise (-155.2222222222224, -40.777777777777828))
Result.extend_point (create {EV_COORDINATE}.make_precise (-150.33333333333326, -38.111111111111313))
Result.extend_point (create {EV_COORDINATE}.make_precise (-142.33333333333326, -39))
Result.extend_point (create {EV_COORDINATE}.make_precise (-136.11111111111131, -36.333333333333485))
Result.extend_point (create {EV_COORDINATE}.make_precise (-133.88888888888891, -31.888888888889028))
Result.extend_point (create {EV_COORDINATE}.make_precise (-129.4444444444448, -36.333333333333485))
Result.extend_point (create {EV_COORDINATE}.make_precise (-122.77777777777806, -38.111111111111313))
Result.extend_point (create {EV_COORDINATE}.make_precise (-115.22222222222217, -36.777777777777828))
Result.extend_point (create {EV_COORDINATE}.make_precise (-107.2222222222224, -33.666666666666856))
Result.extend_point (create {EV_COORDINATE}.make_precise (-100.99999999999977, -30.555555555555657))
Result.extend_point (create {EV_COORDINATE}.make_precise (-98.333333333333485, -34.55555555555577))
Result.extend_point (create {EV_COORDINATE}.make_precise (-92.555555555555429, -31.000000000000114))
Result.extend_point (create {EV_COORDINATE}.make_precise (-90.777777777778056, -27.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-83.222222222222399, -27))
Result.extend_point (create {EV_COORDINATE}.make_precise (-75.666666666666515, -28.333333333333371))
Result.extend_point (create {EV_COORDINATE}.make_precise (-63.222222222222399, -28.777777777777828))
Result.extend_point (create {EV_COORDINATE}.make_precise (-53.888888888889142, -23.444444444444684))
Result.extend_point (create {EV_COORDINATE}.make_precise (-48.111111111111086, -14.555555555555657))
Result.extend_point (create {EV_COORDINATE}.make_precise (-45.444444444444798, -19.888888888889028))
Result.extend_point (create {EV_COORDINATE}.make_precise (-40.555555555555429, -17.666666666666742))
Result.extend_point (create {EV_COORDINATE}.make_precise (-36.555555555555657, -17.666666666666742))
Result.extend_point (create {EV_COORDINATE}.make_precise (-32.111111111111086, -17.222222222222399))
Result.extend_point (create {EV_COORDINATE}.make_precise (-29.444444444444571, -19.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-29.444444444444571, -15))
Result.extend_point (create {EV_COORDINATE}.make_precise (-33, -15.888888888889142))
Result.extend_point (create {EV_COORDINATE}.make_precise (-35.666666666666742, -14.555555555555657))
Result.extend_point (create {EV_COORDINATE}.make_precise (-39.666666666666515, -12.333333333333485))
Result.extend_point (create {EV_COORDINATE}.make_precise (-43.666666666666742, -12.333333333333485))
Result.extend_point (create {EV_COORDINATE}.make_precise (-45.888888888888914, -12.777777777777828))
Result.extend_point (create {EV_COORDINATE}.make_precise (-48.999999999999773, -11.444444444444684))
Result.extend_point (create {EV_COORDINATE}.make_precise (-52.111111111111313, -14.111111111111313))
Result.extend_point (create {EV_COORDINATE}.make_precise (-55.222222222222172, -15.888888888889142))
Result.extend_point (create {EV_COORDINATE}.make_precise (-55.666666666666742, -12.777777777777828))
Result.extend_point (create {EV_COORDINATE}.make_precise (-52.111111111111313, -10.55555555555577))
Result.extend_point (create {EV_COORDINATE}.make_precise (-49.444444444444571, -8.3333333333334849))
Result.extend_point (create {EV_COORDINATE}.make_precise (-44.111111111111086, -8.777777777777942))
Result.extend_point (create {EV_COORDINATE}.make_precise (-42.777777777778056, -5.6666666666667425))
Result.extend_point (create {EV_COORDINATE}.make_precise (-38.777777777778056, -6.1111111111111995))
Result.extend_point (create {EV_COORDINATE}.make_precise (-38.333333333333485, -3.4444444444445708))
Result.extend_point (create {EV_COORDINATE}.make_precise (-29.888888888889142, 2.3333333333331439))
Result.extend_point (create {EV_COORDINATE}.make_precise (-27.666666666666515, -0.77777777777782831))
Result.extend_point (create {EV_COORDINATE}.make_precise (-23.222222222222399, 0.11111111111085847))
Result.extend_point (create {EV_COORDINATE}.make_precise (-24.111111111111086, 2.7777777777776009))
Result.extend_point (create {EV_COORDINATE}.make_precise (-19.222222222222172, 4.9999999999998863))
Result.extend_point (create {EV_COORDINATE}.make_precise (-16.555555555555429, 2.7777777777776009))
Result.extend_point (create {EV_COORDINATE}.make_precise (-13.888888888888914, 2.7777777777776009))
Result.extend_point (create {EV_COORDINATE}.make_precise (-9.8888888888889142, -0.77777777777782831))
Result.extend_point (create {EV_COORDINATE}.make_precise (-8.5555555555554292, 2.7777777777776009))
Result.extend_point (create {EV_COORDINATE}.make_precise (-3.2222222222223991, 3.222222222222058))
end
invariant
correct_port: attached target_imp implies port = game.port_moresby
end

View File

@@ -0,0 +1,228 @@
note
description: "[
Represents a port in VITP.
]"
author: "Jimmy J. Johnson"
deferred class
PORT_WIDGET
inherit
LOCATION_WIDGET
rename
location as port
redefine
create_interface_objects,
-- initialize,
extend_widgets,
-- build_widgets,
set_fonts_and_colors,
position_widgets,
set_widget_order,
add_actions,
set_target,
paint,
on_button_released,
-- on_pointer_leave,
-- on_pointer_motion,
target_imp
end
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
print ("PORT_WIDGET.create_interface_objects %N")
Precursor {LOCATION_WIDGET}
create anchor
create marker.make (port)
create saved_point
end
extend_widgets
-- Put widgets into Current. This cannot be done
-- in `create_interface_object', because cannot call
-- `extend' feature until all objects [in descendants]
-- are also created.
do
Precursor {LOCATION_WIDGET}
extend (anchor)
extend (marker)
end
-- build_widgets
-- -- Now that widgets were created in `create_interface_objects'
-- -- and added to Current in `extend_widgets', build up the
-- -- widgets by adding internal structure to each widget.
-- do
-- Precursor {LOCATION_WIDGET}
-- build_land
-- end
set_fonts_and_colors
-- Set the default fonts for any text widgets and set
-- the default colors for any contained widgets.
do
Precursor {LOCATION_WIDGET}
if is_red then
name_mt.set_font (Major_port_font)
land_color := Red_port_color
else
name_mt.set_font (Port_font)
land_color := Green_port_color
end
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {LOCATION_WIDGET}
marker.set_x_y (x, y)
anchor.set_x_y (x, y)
if not is_red then
anchor.hide
marker.hide_anchor
end
end
set_widget_order
-- Ensure the widgets are ordered properly
-- (i.e. whose on top?)
do
Precursor {LOCATION_WIDGET}
bring_to_front (land)
bring_to_front (anchor)
bring_to_front (marker)
bring_to_front (text_group)
bring_to_front (dot)
end
add_actions
-- Add actions to the port (really just the marker)
do
Precursor {LOCATION_WIDGET}
pointer_motion_actions.extend (agent on_pointer_motion)
marker.pointer_button_press_actions.extend (agent on_marker_pressed)
-- pointer_leave_actions.extend (agent on_pointer_leave)
jj_defining_figure.pointer_leave_actions.extend (agent on_leave_defining_figure)
end
feature -- Status report
feature -- Status report
is_red: BOOLEAN
-- Does Current represent a red (i.e. major) port?
deferred
end
-- is_port_widget_initialized: BOOLEAN
-- -- Have the initialization rouines been called for Current
-- -- Current through this interface?
-- -- A check statment guards each initialization routine, preventing
-- -- any attempt to call these features a second time. A second call
-- -- could happen in the case of muliple inheritance, which is used
-- -- for descendants that inherit multiply from ISLAND_PORT_WIDGET
-- -- and one of RED_PORT_WIDGET and GREEN_PORT_WIDGET (e.g. ATTU_WIDGET,
-- -- and TRUK_WIDGET).
feature -- Basic operations
set_target (a_target: like port)
-- Change the `port'.
do
Precursor {LOCATION_WIDGET} (a_target)
marker.set_location (port)
end
paint
-- Set the colors for the land and other areas
local
bc, c: EV_COLOR
do
Precursor {LOCATION_WIDGET}
marker.paint
anchor.set_foreground_color (adjusted_color (Black))
anchor.set_background_color (adjusted_color (Black))
end
feature {NONE} -- Implementation (actions)
on_marker_pressed (ax: INTEGER; ay: INTEGER; a_button: INTEGER; x_tilt: DOUBLE; y_tilt: DOUBLE;
pressure: DOUBLE; a_screen_x: INTEGER; a_screen_y: INTEGER)
-- The `marker' was pressed
do
io.put_string ("PORT_WIDGET.on_marker_pressed %N")
is_dragging_marker := True
enable_capture
end
on_button_released (ax: INTEGER; ay: INTEGER; a_button: INTEGER; x_tilt: DOUBLE; y_tilt: DOUBLE;
pressure: DOUBLE; a_screen_x: INTEGER; a_screen_y: INTEGER)
-- React to button release by dropping the `marker' if
-- was `is_dragging_marker'.
local
c: detachable EV_COORDINATE
do
Precursor {LOCATION_WIDGET} (ax, ay, a_button, x_tilt, y_tilt, pressure, a_screen_x, a_screen_y)
if is_dragging_marker then
-- create c.make (ax, ay)
-- marker.center_on_point (c)
marker.set_x_y (ax, ay)
-- disable_capture
end
is_dragging_marker := False
-- Precursor {LOCATION_WIDGET} (ax, ay, a_button, x_tilt, y_tilt, pressure, a_screen_x, a_screen_y)
end
on_leave_defining_figure
-- If pointer leaves `defining_figure', then release the
-- capture and drop the marker
do
io.put_string ("PORT_WIDGET.on_leave_defining_figure %N")
if is_dragging_marker then
-- marker.center_on_point (saved_point)
marker.set_x_y (saved_point.x, saved_point.y)
-- disable_capture
end
is_dragging_marker := False
end
on_pointer_motion (ax: INTEGER; ay: INTEGER; x_tilt: DOUBLE; y_tilt: DOUBLE;
pressure: DOUBLE; a_screen_x: INTEGER; a_screen_y: INTEGER)
-- The pointer is moving
do
io.put_string ("PORT_WIDGET.on_pointer_motion -- is_dragging_marker = " + is_dragging_marker.out + "%N")
saved_point.set (ax, ay)
if is_dragging_marker then
if jj_defining_figure.position_on_figure (ax, ay) then
-- marker.center_on_point (saved_point)
marker.set_x_y (saved_point.x, saved_point.y)
else
-- disable_capture
is_dragging_marker := false
end
end
end
feature {NONE} -- Implementation
target_imp: detachable PORT
-- Anchor for the `target' represented by Current
is_dragging_marker: BOOLEAN
-- Is the marker being moved?
saved_point: EV_COORDINATE
-- The location within Current to where the mouse last moved
marker: CONTROL_MARKER
-- The marker associated with this port
anchor: ANCHOR
-- Image of an anchor for display on some ports
end

View File

@@ -0,0 +1,31 @@
note
description: "[
Widget representing a major port.
]"
author: "Jimmy J. Johnson"
date: "$Date$"
revision: "$Revision$"
deferred class
RED_PORT_WIDGET
inherit
PORT_WIDGET
redefine
position_widgets
end
feature {NONE} -- Initialization
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {PORT_WIDGET}
scale_widget (marker, 0.08)
anchor.scale (0.07)
anchor.set_x_y (x, y)
end
end

View File

@@ -0,0 +1,325 @@
note
description: "[
Widget representing a {PORT}.
]"
author: "Jimmy J. Johnson"
class
SAIGON_WIDGET
inherit
RED_PORT_WIDGET
redefine
create_interface_objects,
position_widgets,
build_land
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
Precursor {RED_PORT_WIDGET}
mainland := mainland_imp
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {RED_PORT_WIDGET}
-- make adjustments
scale_widget (land, 0.27)
rotate_widget (land, 13.0)
translate_widget (Current, 70, 46)
marker.set_x_y (x + 8, y + 65)
text_group.set_x_y (x, y + 80)
anchor.set_x_y (x + 10, y + 88)
dot.set_x_y (x - 5 , y + 90)
end
build_land
-- Add widgets to Current
do
Precursor {RED_PORT_WIDGET}
-- Initialize attributes
land.extend (mainland)
end
feature -- Access
mainland: EV_MODEL_POLYGON
feature -- Status report
is_red: BOOLEAN = True
-- Does Current represent a red (i.e. major) port?
feature {NONE} -- Implementation
mainland_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (14.222222222222172, 8.4444444444445708))
Result.extend_point (create {EV_COORDINATE}.make_precise (20, 0.44444444444457076))
Result.extend_point (create {EV_COORDINATE}.make_precise (24.4444444444444, 4))
Result.extend_point (create {EV_COORDINATE}.make_precise (27.111111111111086, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (33.777777777777715, 7.1111111111111995))
Result.extend_point (create {EV_COORDINATE}.make_precise (36.8888888888888, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (42.222222222222172, -2.2222222222221717))
Result.extend_point (create {EV_COORDINATE}.make_precise (42.666666666666629, 2.2222222222223991))
Result.extend_point (create {EV_COORDINATE}.make_precise (47.555555555555486, -1.7777777777776009))
Result.extend_point (create {EV_COORDINATE}.make_precise (52.4444444444444, -0.44444444444434339))
Result.extend_point (create {EV_COORDINATE}.make_precise (53.777777777777715, -3.5555555555554292))
Result.extend_point (create {EV_COORDINATE}.make_precise (53.777777777777715, -7.5555555555554292))
Result.extend_point (create {EV_COORDINATE}.make_precise (63.555555555555486, -12))
Result.extend_point (create {EV_COORDINATE}.make_precise (64.8888888888888, -14.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.333333333333314, -10.666666666666629))
Result.extend_point (create {EV_COORDINATE}.make_precise (70.666666666666629, -7.5555555555554292))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.111111111111086, -6.6666666666666288))
Result.extend_point (create {EV_COORDINATE}.make_precise (77.333333333333258, -4))
Result.extend_point (create {EV_COORDINATE}.make_precise (84.444444444444343, -5.7777777777776009))
Result.extend_point (create {EV_COORDINATE}.make_precise (88, -3.1111111111109722))
Result.extend_point (create {EV_COORDINATE}.make_precise (93.777777777777715, -4))
Result.extend_point (create {EV_COORDINATE}.make_precise (99.111111111111086, -0.44444444444434339))
Result.extend_point (create {EV_COORDINATE}.make_precise (98.222222222222172, 5.3333333333333712))
Result.extend_point (create {EV_COORDINATE}.make_precise (94.666666666666629, 6.2222222222223991))
Result.extend_point (create {EV_COORDINATE}.make_precise (93.777777777777715, 10.666666666666742))
Result.extend_point (create {EV_COORDINATE}.make_precise (96, 12))
Result.extend_point (create {EV_COORDINATE}.make_precise (96, 20.888888888889028))
Result.extend_point (create {EV_COORDINATE}.make_precise (97.333333333333258, 19.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (104.44444444444434, 20.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (104.8888888888888, 23.555555555555657))
Result.extend_point (create {EV_COORDINATE}.make_precise (111.55555555555543, 25.333333333333371))
Result.extend_point (create {EV_COORDINATE}.make_precise (111.55555555555543, 29.333333333333371))
Result.extend_point (create {EV_COORDINATE}.make_precise (114.22222222222217, 27.555555555555657))
Result.extend_point (create {EV_COORDINATE}.make_precise (117.33333333333326, 30.222222222222399))
Result.extend_point (create {EV_COORDINATE}.make_precise (123.11111111111109, 27.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (128, 31.555555555555657))
Result.extend_point (create {EV_COORDINATE}.make_precise (125.77777777777771, 32.888888888889028))
Result.extend_point (create {EV_COORDINATE}.make_precise (121.77777777777771, 32.888888888889028))
Result.extend_point (create {EV_COORDINATE}.make_precise (118.66666666666663, 36.888888888889028))
Result.extend_point (create {EV_COORDINATE}.make_precise (116.44444444444434, 40.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (112, 44.888888888889028))
Result.extend_point (create {EV_COORDINATE}.make_precise (106.66666666666663, 46.222222222222399))
Result.extend_point (create {EV_COORDINATE}.make_precise (102.22222222222217, 47.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (101.33333333333326, 51.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (100.8888888888888, 56))
Result.extend_point (create {EV_COORDINATE}.make_precise (96.8888888888888, 64.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (92.8888888888888, 65.333333333333371))
Result.extend_point (create {EV_COORDINATE}.make_precise (88.8888888888888, 65.777777777777828))
Result.extend_point (create {EV_COORDINATE}.make_precise (86.222222222222172, 68.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (82.666666666666629, 70.222222222222399))
Result.extend_point (create {EV_COORDINATE}.make_precise (80.444444444444343, 75.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (77.777777777777715, 79.555555555555657))
Result.extend_point (create {EV_COORDINATE}.make_precise (77.777777777777715, 85.333333333333371))
Result.extend_point (create {EV_COORDINATE}.make_precise (76, 90.666666666666742))
Result.extend_point (create {EV_COORDINATE}.make_precise (74.222222222222172, 92))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.555555555555429, 95.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (77.333333333333258, 98.222222222222399))
Result.extend_point (create {EV_COORDINATE}.make_precise (79.111111111111086, 104))
Result.extend_point (create {EV_COORDINATE}.make_precise (84.444444444444343, 110.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (89.777777777777715, 113.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (92.444444444444343, 117.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (92, 121.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (99.111111111111086, 131.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (105.33333333333326, 137.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (113.33333333333326, 147.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (124.44444444444434, 154.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (129.77777777777771, 158.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (134.66666666666663, 164.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (138.66666666666663, 170.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (145.33333333333326, 177.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (147.55555555555543, 184.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (150.22222222222217, 192.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (153.77777777777771, 196.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (155.11111111111109, 207.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (156.8888888888888, 216.88888888888903))
Result.extend_point (create {EV_COORDINATE}.make_precise (156, 220.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (157.33333333333326, 224.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (155.55555555555543, 226.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (158.22222222222217, 234.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (160.8888888888888, 237.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (156.44444444444434, 243.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (156.8888888888888, 248.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (154.66666666666663, 250.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (156, 255.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (156.8888888888888, 259.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (155.11111111111109, 261.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (155.55555555555543, 264.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (153.33333333333326, 268.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (151.11111111111109, 268.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (149.33333333333326, 273.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (146.66666666666663, 273.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (142.22222222222217, 278.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (136.8888888888888, 281.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (130.22222222222217, 283.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (126.66666666666663, 289.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (115.55555555555543, 293.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (111.55555555555543, 293.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (102.22222222222217, 296.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (99.111111111111086, 292.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (100, 298.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (96.8888888888888, 304.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (97.333333333333258, 308.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (96, 312))
Result.extend_point (create {EV_COORDINATE}.make_precise (92.444444444444343, 315.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (88, 317.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (83.111111111111086, 320))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.555555555555429, 323.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.777777777777715, 327.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (66.222222222222172, 333.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (60.8888888888888, 336.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (52.8888888888888, 337.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (52.4444444444444, 320))
Result.extend_point (create {EV_COORDINATE}.make_precise (53.777777777777715, 308.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (57.777777777777715, 305.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (57.777777777777715, 302.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (54.666666666666629, 304))
Result.extend_point (create {EV_COORDINATE}.make_precise (52.8888888888888, 301.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (48.8888888888888, 304))
Result.extend_point (create {EV_COORDINATE}.make_precise (46.666666666666629, 299.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (42.666666666666629, 299.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (39.555555555555486, 293.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (33.777777777777715, 292.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (32.8888888888888, 295.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (36.4444444444444, 295.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (37.777777777777715, 301.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (36, 305.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (33.777777777777715, 300))
Result.extend_point (create {EV_COORDINATE}.make_precise (30.222222222222172, 295.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (25.777777777777715, 293.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (22.666666666666629, 290.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (24.8888888888888, 287.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (27.111111111111086, 286.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (26.222222222222172, 282.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (24.8888888888888, 279.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (22.222222222222172, 285.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (18.666666666666629, 284.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (16.8888888888888, 288.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (14.222222222222172, 284.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (13.333333333333314, 278.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (9.7777777777777146, 272.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (12, 270.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (9.3333333333333144, 267.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (6.2222222222221717, 258.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (5.7777777777777146, 253.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (6.2222222222221717, 248))
Result.extend_point (create {EV_COORDINATE}.make_precise (1.3333333333333144, 244.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (0.44444444444440023, 234.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-3.5555555555555998, 230.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-2.6666666666666856, 221.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (4.4444444444444002, 221.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (2.6666666666666288, 219.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (9.7777777777777146, 210.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (11.111111111111086, 206.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (18.222222222222172, 201.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (27.555555555555486, 200.88888888888903))
Result.extend_point (create {EV_COORDINATE}.make_precise (34.666666666666629, 204))
Result.extend_point (create {EV_COORDINATE}.make_precise (39.555555555555486, 200.88888888888903))
Result.extend_point (create {EV_COORDINATE}.make_precise (45.777777777777715, 202.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (50.222222222222172, 201.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (56.4444444444444, 201.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (59.111111111111086, 205.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (61.333333333333314, 202.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (68.8888888888888, 199.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (70.666666666666629, 195.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.777777777777715, 192.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.333333333333314, 187.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (68, 183.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (70.666666666666629, 176))
Result.extend_point (create {EV_COORDINATE}.make_precise (70.666666666666629, 171.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (68, 170.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (65.333333333333314, 168))
Result.extend_point (create {EV_COORDINATE}.make_precise (66.666666666666629, 163.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (59.111111111111086, 162.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (58.666666666666629, 159.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (52.4444444444444, 153.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (51.555555555555486, 137.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (52.8888888888888, 130.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (44.4444444444444, 124.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (39.111111111111086, 117.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (34.666666666666629, 108.88888888888903))
Result.extend_point (create {EV_COORDINATE}.make_precise (32.8888888888888, 110.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (26.222222222222172, 107.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (20.4444444444444, 106.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (17.777777777777715, 107.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (19.555555555555486, 109.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (15.555555555555486, 110.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (15.111111111111086, 114.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (14.666666666666629, 116.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (9.3333333333333144, 116.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (5.3333333333333144, 121.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (3.1111111111110858, 120.88888888888903))
Result.extend_point (create {EV_COORDINATE}.make_precise (3.1111111111110858, 117.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-0.44444444444451392, 117.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-7.5555555555555998, 111.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-11.5555555555556, 116.44444444444457))
Result.extend_point (create {EV_COORDINATE}.make_precise (-14.666666666666686, 115.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-16, 118.2222222222224))
Result.extend_point (create {EV_COORDINATE}.make_precise (-19.5555555555556, 118.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-19.5555555555556, 121.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-24, 123.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-29.777777777777828, 129.77777777777783))
Result.extend_point (create {EV_COORDINATE}.make_precise (-33.333333333333371, 127.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-32.888888888888914, 119.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-28.888888888888914, 115.55555555555566))
Result.extend_point (create {EV_COORDINATE}.make_precise (-28.444444444444514, 109.33333333333337))
Result.extend_point (create {EV_COORDINATE}.make_precise (-31.5555555555556, 106.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (-27.1111111111112, 100))
Result.extend_point (create {EV_COORDINATE}.make_precise (-28, 95.555555555555657))
Result.extend_point (create {EV_COORDINATE}.make_precise (-25.333333333333371, 91.555555555555657))
Result.extend_point (create {EV_COORDINATE}.make_precise (-27.1111111111112, 88.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-28.444444444444514, 83.555555555555657))
Result.extend_point (create {EV_COORDINATE}.make_precise (-26.222222222222285, 77.777777777777828))
Result.extend_point (create {EV_COORDINATE}.make_precise (-34.666666666666686, 76.888888888889028))
Result.extend_point (create {EV_COORDINATE}.make_precise (-37.333333333333371, 81.777777777777828))
Result.extend_point (create {EV_COORDINATE}.make_precise (-39.5555555555556, 78.666666666666742))
Result.extend_point (create {EV_COORDINATE}.make_precise (-42.666666666666686, 80.888888888889028))
Result.extend_point (create {EV_COORDINATE}.make_precise (-46.666666666666686, 78.222222222222399))
Result.extend_point (create {EV_COORDINATE}.make_precise (-47.1111111111112, 74.666666666666742))
Result.extend_point (create {EV_COORDINATE}.make_precise (-44, 72))
Result.extend_point (create {EV_COORDINATE}.make_precise (-42.666666666666686, 65.333333333333371))
Result.extend_point (create {EV_COORDINATE}.make_precise (-48, 59.1111111111112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-51.5555555555556, 61.333333333333371))
Result.extend_point (create {EV_COORDINATE}.make_precise (-54.222222222222285, 61.333333333333371))
Result.extend_point (create {EV_COORDINATE}.make_precise (-52.888888888888914, 56.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-49.777777777777828, 48.888888888889028))
Result.extend_point (create {EV_COORDINATE}.make_precise (-43.5555555555556, 45.777777777777828))
Result.extend_point (create {EV_COORDINATE}.make_precise (-40.444444444444514, 36.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-34.666666666666686, 36))
Result.extend_point (create {EV_COORDINATE}.make_precise (-29.777777777777828, 30.666666666666742))
Result.extend_point (create {EV_COORDINATE}.make_precise (-27.1111111111112, 32))
Result.extend_point (create {EV_COORDINATE}.make_precise (-28.888888888888914, 34.222222222222399))
Result.extend_point (create {EV_COORDINATE}.make_precise (-26.222222222222285, 34.666666666666742))
Result.extend_point (create {EV_COORDINATE}.make_precise (-28.444444444444514, 38.222222222222399))
Result.extend_point (create {EV_COORDINATE}.make_precise (-26.666666666666686, 40))
Result.extend_point (create {EV_COORDINATE}.make_precise (-21.333333333333371, 37.333333333333371))
Result.extend_point (create {EV_COORDINATE}.make_precise (-16.888888888888914, 40.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-14.666666666666686, 38.222222222222399))
Result.extend_point (create {EV_COORDINATE}.make_precise (-16.888888888888914, 36.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-15.1111111111112, 24.888888888889028))
Result.extend_point (create {EV_COORDINATE}.make_precise (-17.777777777777828, 20.444444444444571))
Result.extend_point (create {EV_COORDINATE}.make_precise (-20.888888888888914, 14.666666666666742))
Result.extend_point (create {EV_COORDINATE}.make_precise (-18.666666666666686, 12))
Result.extend_point (create {EV_COORDINATE}.make_precise (-18.222222222222285, 8.4444444444445708))
Result.extend_point (create {EV_COORDINATE}.make_precise (-15.5555555555556, 8))
Result.extend_point (create {EV_COORDINATE}.make_precise (-12.888888888888914, 10.666666666666742))
Result.extend_point (create {EV_COORDINATE}.make_precise (-10.666666666666686, 8.4444444444445708))
Result.extend_point (create {EV_COORDINATE}.make_precise (-4.4444444444445139, 9.7777777777778283))
end
invariant
correct_port: attached target_imp implies port = game.saigon
end

View File

@@ -0,0 +1,115 @@
note
description: "[
The widget representing this port
]"
author: "Jimmy J. Johnson"
class
SAIPAN_WIDGET
inherit
-- GREEN_PORT_WIDGET
-- undefine
-- paint
-- redefine
-- create_interface_objects,
-- initialize,
-- position_widgets,
-- build_land
-- end
ISLAND_PORT_WIDGET
redefine
create_interface_objects,
position_widgets,
build_land,
rotation_amount
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
mainland := mainland_imp
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
end
-- initialize
-- -- Set up the widgets in Current.
-- do
-- Precursor {ISLAND_PORT_WIDGET}
---- Precursor {GREEN_PORT_WIDGET}
-- end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {GREEN_PORT_WIDGET}
-- scale_widget (land, 0.95)
scale_widget (land, 0.7)
rotate_widget (land, 10.0)
translate_widget (land, -16, 8)
-- name_mt.center_on_dot (dot)
-- translate_widget (name_mt, 0, 0)
-- marker.center_on_dot (dot)
marker.set_x_y (dot.x, dot.y)
translate_widget (marker, 2, 4)
center_on (382, 263)
-- This scaling is slightly bigger than the scale of the other islands
-- in the Marianas islands. There is brown land to scale under this.
dot.show
dot.set_foreground_color (Cyan)
bring_to_front (dot)
end
build_land
-- Add widgets to Current
do
Precursor {ISLAND_PORT_WIDGET}
land.extend (mainland)
end
feature -- Status report
is_red: BOOLEAN = False
-- Does Current represent a red (i.e. major) port?
feature {NONE} -- Implementation
mainland: EV_MODEL_POLYGON
feature {NONE} -- Implementation
mainland_imp: EV_MODEL_POLYGON
-- Build the island poygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0.0, 0.0))
Result.extend_point (create {EV_COORDINATE}.make_precise (-3.8518518518519613, -0.8888888888889142))
Result.extend_point (create {EV_COORDINATE}.make_precise (-7.407407407407504, -4.148148148148152))
Result.extend_point (create {EV_COORDINATE}.make_precise (-6.51851851851859, -6.814814814814781))
Result.extend_point (create {EV_COORDINATE}.make_precise (-4.7407407407408755, -9.48148148148141))
Result.extend_point (create {EV_COORDINATE}.make_precise (-3.5555555555556566, -11.555555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1.1851851851852189, -10.370370370370324))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1.4814814814816373, -7.111111111111086))
Result.extend_point (create {EV_COORDINATE}.make_precise (0.5925925925924957, -5.629629629629562))
Result.extend_point (create {EV_COORDINATE}.make_precise (0.5925925925924957, -3.8518518518518476))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1.4814814814816373, -4.740740740740648))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1.4814814814816373, -2.9629629629629335))
end
feature {NONE} -- Implementation
rotation_amount: REAL_64 = 160.0
-- Make the arrow point north-east
end

View File

@@ -0,0 +1,446 @@
note
description: "[
The widget representing this port
]"
author: "Jimmy J. Johnson"
class
SAMOA_WIDGET
inherit
-- RED_PORT_WIDGET
-- undefine
-- paint
-- redefine
-- create_interface_objects,
-- initialize,
-- extend_widgets,
-- position_widgets,
-- build_land
-- end
ISLAND_PORT_WIDGET
redefine
create_interface_objects,
-- initialize,
extend_widgets,
set_fonts_and_colors,
position_widgets,
build_land,
rotation_amount
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
create not_allowed_text.make_with_text ("(No British Allowed%Nexcept Victorious)")
mainland := mainland_imp
upolu := upolu_imp
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {RED_PORT_WIDGET}
end
extend_widgets
-- Put widgets into Current. This cannot be done
-- in `create_interface_object', because cannot call
-- `extend' feature until all objects [in descendants]
-- are also created.
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {RED_PORT_WIDGET}
extend (not_allowed_text)
end
set_fonts_and_colors
-- Set the default fonts for any text widgets and set
-- the default colors for any contained widgets.
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {RED_PORT_WIDGET}
not_allowed_text.set_font (Subtext_font)
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {RED_PORT_WIDGET}
scale_widget (land, 0.06)
rotate_widget (land, 10.0)
translate_widget (land, -65, -70)
translate_widget (name_mt, -1, -1)
center_on (587, 512)
center_widget_on_other (marker, dot)
center_widget_on_other (anchor, dot)
translate_widget (not_allowed_text, 121, 162)
translate_widget (marker, -7, 5)
translate_widget (anchor, 0, 5)
bring_to_front (anchor)
bring_to_front (marker)
dot.set_foreground_color (Cyan)
dot.show
bring_to_front (dot)
end
build_land
-- Add widgets to Current
do
Precursor {ISLAND_PORT_WIDGET}
land.extend (mainland)
land.extend (upolu)
end
not_allowed_text: EV_MODEL_TEXT
-- Extra text on some Red ports (e.g. "No British Allowed").
feature -- Status report
is_red: BOOLEAN = True
-- Does Current represent a red (i.e. major) port?
feature {NONE} -- Implementation
mainland: EV_MODEL_POLYGON
upolu: EV_MODEL_POLYGON
feature {NONE} -- Implementation
mainland_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (20, 8))
Result.extend_point (create {EV_COORDINATE}.make_precise (22, 4))
Result.extend_point (create {EV_COORDINATE}.make_precise (34, 8))
Result.extend_point (create {EV_COORDINATE}.make_precise (46, 27))
Result.extend_point (create {EV_COORDINATE}.make_precise (55, 43))
Result.extend_point (create {EV_COORDINATE}.make_precise (68, 50))
Result.extend_point (create {EV_COORDINATE}.make_precise (71, 60))
Result.extend_point (create {EV_COORDINATE}.make_precise (86, 76))
Result.extend_point (create {EV_COORDINATE}.make_precise (91, 87))
Result.extend_point (create {EV_COORDINATE}.make_precise (95, 91))
Result.extend_point (create {EV_COORDINATE}.make_precise (95, 98))
Result.extend_point (create {EV_COORDINATE}.make_precise (108, 104))
Result.extend_point (create {EV_COORDINATE}.make_precise (104, 110))
Result.extend_point (create {EV_COORDINATE}.make_precise (111, 114))
Result.extend_point (create {EV_COORDINATE}.make_precise (117, 134))
Result.extend_point (create {EV_COORDINATE}.make_precise (121, 138))
Result.extend_point (create {EV_COORDINATE}.make_precise (118, 142))
Result.extend_point (create {EV_COORDINATE}.make_precise (126, 164))
Result.extend_point (create {EV_COORDINATE}.make_precise (134, 171))
Result.extend_point (create {EV_COORDINATE}.make_precise (125, 184))
Result.extend_point (create {EV_COORDINATE}.make_precise (115, 199))
Result.extend_point (create {EV_COORDINATE}.make_precise (118, 209))
Result.extend_point (create {EV_COORDINATE}.make_precise (114, 214))
Result.extend_point (create {EV_COORDINATE}.make_precise (105, 220))
Result.extend_point (create {EV_COORDINATE}.make_precise (101, 224))
Result.extend_point (create {EV_COORDINATE}.make_precise (102, 229))
Result.extend_point (create {EV_COORDINATE}.make_precise (99, 232))
Result.extend_point (create {EV_COORDINATE}.make_precise (105, 243))
Result.extend_point (create {EV_COORDINATE}.make_precise (105, 258))
Result.extend_point (create {EV_COORDINATE}.make_precise (101, 266))
Result.extend_point (create {EV_COORDINATE}.make_precise (88.333333333333314, 269.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (81.666666666666629, 265.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (78.333333333333314, 263.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (72.333333333333314, 264.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (64.333333333333314, 256))
Result.extend_point (create {EV_COORDINATE}.make_precise (55.666666666666629, 247.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (55.666666666666629, 243.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (53, 238.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (42.333333333333314, 240))
Result.extend_point (create {EV_COORDINATE}.make_precise (37, 238.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (29, 240))
Result.extend_point (create {EV_COORDINATE}.make_precise (25.666666666666629, 245.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (23, 250.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (17, 251.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (13, 250.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (9, 252.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (3.6666666666666288, 250))
Result.extend_point (create {EV_COORDINATE}.make_precise (-15, 254))
Result.extend_point (create {EV_COORDINATE}.make_precise (-18.333333333333371, 252))
Result.extend_point (create {EV_COORDINATE}.make_precise (-19, 255.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-32.333333333333371, 256.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-35.666666666666686, 253.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-51, 260.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-65.666666666666686, 264))
Result.extend_point (create {EV_COORDINATE}.make_precise (-70.333333333333371, 262.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-85, 261.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-93.666666666666686, 268))
Result.extend_point (create {EV_COORDINATE}.make_precise (-111, 269.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-121.66666666666669, 272.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-133.66666666666669, 266))
Result.extend_point (create {EV_COORDINATE}.make_precise (-139, 254.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (-141, 249.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-147.66666666666669, 245.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-155.66666666666669, 244))
Result.extend_point (create {EV_COORDINATE}.make_precise (-161.66666666666669, 227.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-165.66666666666669, 226))
Result.extend_point (create {EV_COORDINATE}.make_precise (-169.66666666666669, 225.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-172.33333333333334, 221.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-170.33333333333334, 212))
Result.extend_point (create {EV_COORDINATE}.make_precise (-183, 196.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (-189.66666666666669, 187.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-196.33333333333334, 185.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-201, 174.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (-208.33333333333334, 168.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (-207.66666666666669, 161.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (-235, 140))
Result.extend_point (create {EV_COORDINATE}.make_precise (-235.66666666666669, 130))
Result.extend_point (create {EV_COORDINATE}.make_precise (-238.33333333333334, 126))
Result.extend_point (create {EV_COORDINATE}.make_precise (-243.66666666666669, 126))
Result.extend_point (create {EV_COORDINATE}.make_precise (-251, 126))
Result.extend_point (create {EV_COORDINATE}.make_precise (-260.33333333333337, 116.66666666666666))
Result.extend_point (create {EV_COORDINATE}.make_precise (-271, 104))
Result.extend_point (create {EV_COORDINATE}.make_precise (-286.33333333333331, 92))
Result.extend_point (create {EV_COORDINATE}.make_precise (-297.66666666666669, 88))
Result.extend_point (create {EV_COORDINATE}.make_precise (-309, 78))
Result.extend_point (create {EV_COORDINATE}.make_precise (-313, 67.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (-320.33333333333331, 56.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (-322.33333333333331, 52.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (-317.66666666666669, 48))
Result.extend_point (create {EV_COORDINATE}.make_precise (-314.33333333333331, 40.666666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-311, 38))
Result.extend_point (create {EV_COORDINATE}.make_precise (-305.66666666666669, 36.666666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-295.66666666666669, 43.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (-295, 38.666666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-291.66666666666669, 36.666666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-288.33333333333331, 38))
Result.extend_point (create {EV_COORDINATE}.make_precise (-286.33333333333331, 43.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (-279.66666666666669, 42))
Result.extend_point (create {EV_COORDINATE}.make_precise (-277, 46))
Result.extend_point (create {EV_COORDINATE}.make_precise (-267.66666666666669, 54))
Result.extend_point (create {EV_COORDINATE}.make_precise (-255.66666666666669, 57.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (-251, 59.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (-247.66666666666669, 54.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (-242.33333333333334, 54.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (-239.66666666666669, 51.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (-235.66666666666669, 51.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (-235, 55.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (-230.33333333333334, 54.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (-227, 51.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (-222.33333333333334, 49.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (-217.66666666666669, 52.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (-215, 58))
Result.extend_point (create {EV_COORDINATE}.make_precise (-205.66666666666669, 57.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (-198.33333333333334, 52))
Result.extend_point (create {EV_COORDINATE}.make_precise (-200.33333333333334, 48.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (-201, 44.666666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-193, 43.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (-186.33333333333334, 36.666666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-179, 40.666666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-177, 38))
Result.extend_point (create {EV_COORDINATE}.make_precise (-167.66666666666669, 40.666666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-155, 34))
Result.extend_point (create {EV_COORDINATE}.make_precise (-144.33333333333334, 30))
Result.extend_point (create {EV_COORDINATE}.make_precise (-136.33333333333334, 24.666666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-127, 22.666666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-115.66666666666669, 25.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (-109.66666666666669, 23.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (-103.66666666666669, 26))
Result.extend_point (create {EV_COORDINATE}.make_precise (-99.666666666666686, 19.333333333333329))
Result.extend_point (create {EV_COORDINATE}.make_precise (-95.666666666666686, 20.666666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-93, 16))
Result.extend_point (create {EV_COORDINATE}.make_precise (-87, 14.666666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-81, 20.666666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-72.333333333333371, 18.666666666666664))
Result.extend_point (create {EV_COORDINATE}.make_precise (-69, 22))
Result.extend_point (create {EV_COORDINATE}.make_precise (-49, 22))
Result.extend_point (create {EV_COORDINATE}.make_precise (-41.666666666666686, 6.6666666666666643))
Result.extend_point (create {EV_COORDINATE}.make_precise (-35.666666666666686, 8.6666666666666643))
Result.extend_point (create {EV_COORDINATE}.make_precise (-19.666666666666686, 2.6666666666666643))
Result.extend_point (create {EV_COORDINATE}.make_precise (-6.3333333333333712, 4.6666666666666643))
end
upolu_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (249.66666666666663, 288))
Result.extend_point (create {EV_COORDINATE}.make_precise (253, 291.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (282.33333333333326, 290))
Result.extend_point (create {EV_COORDINATE}.make_precise (292.33333333333326, 281.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (296.33333333333326, 281.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (302.33333333333326, 276.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (308.33333333333326, 276.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (315, 272.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (323, 272))
Result.extend_point (create {EV_COORDINATE}.make_precise (325.66666666666663, 268))
Result.extend_point (create {EV_COORDINATE}.make_precise (331, 268))
Result.extend_point (create {EV_COORDINATE}.make_precise (333, 270))
Result.extend_point (create {EV_COORDINATE}.make_precise (340.33333333333326, 270))
Result.extend_point (create {EV_COORDINATE}.make_precise (347, 266.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (355.66666666666663, 267.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (357.66666666666663, 265.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (363, 268.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (367.66666666666663, 265.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (369, 270))
Result.extend_point (create {EV_COORDINATE}.make_precise (377, 267.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (383.66666666666663, 263.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (386.33333333333326, 268))
Result.extend_point (create {EV_COORDINATE}.make_precise (395, 272))
Result.extend_point (create {EV_COORDINATE}.make_precise (400.33333333333326, 274.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (399.66666666666663, 280.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (408.33333333333326, 284))
Result.extend_point (create {EV_COORDINATE}.make_precise (410.33333333333326, 288.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (421.66666666666663, 291.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (423.66666666666663, 288))
Result.extend_point (create {EV_COORDINATE}.make_precise (419, 282.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (422.33333333333326, 281.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (430.33333333333326, 291.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (433.66666666666663, 286.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (439, 292))
Result.extend_point (create {EV_COORDINATE}.make_precise (443.66666666666663, 291.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (446.33333333333326, 298))
Result.extend_point (create {EV_COORDINATE}.make_precise (453.66666666666663, 302))
Result.extend_point (create {EV_COORDINATE}.make_precise (459, 299.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (463.66666666666663, 302))
Result.extend_point (create {EV_COORDINATE}.make_precise (464.33333333333326, 306))
Result.extend_point (create {EV_COORDINATE}.make_precise (471, 308))
Result.extend_point (create {EV_COORDINATE}.make_precise (473.66666666666663, 317.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (479.66666666666663, 312.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (489.66666666666663, 317.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (492.33333333333326, 314.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (503.66666666666663, 314))
Result.extend_point (create {EV_COORDINATE}.make_precise (517, 324))
Result.extend_point (create {EV_COORDINATE}.make_precise (521, 322.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (529, 323.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (535.66666666666663, 331.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (546.33333333333326, 322.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (557.66666666666663, 324))
Result.extend_point (create {EV_COORDINATE}.make_precise (564.33333333333326, 329.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (560.33333333333326, 334))
Result.extend_point (create {EV_COORDINATE}.make_precise (563, 338.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (571.66666666666663, 337.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (573.66666666666663, 335.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (575.66666666666663, 346.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (581, 344.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (578.33333333333326, 349.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (580.33333333333326, 352.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (585.66666666666663, 353.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (589.66666666666663, 350.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (592.33333333333326, 354.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (598.33333333333326, 354))
Result.extend_point (create {EV_COORDINATE}.make_precise (591.66666666666663, 362))
Result.extend_point (create {EV_COORDINATE}.make_precise (581.66666666666663, 368))
Result.extend_point (create {EV_COORDINATE}.make_precise (573.66666666666663, 376))
Result.extend_point (create {EV_COORDINATE}.make_precise (586.33333333333326, 376))
Result.extend_point (create {EV_COORDINATE}.make_precise (591.66666666666663, 376.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (592.33333333333326, 373.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (599, 370.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (603, 366))
Result.extend_point (create {EV_COORDINATE}.make_precise (608.33333333333326, 365.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (607.66666666666663, 370.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (614.33333333333326, 381.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (628.33333333333326, 382.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (634.33333333333326, 386.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (637.66666666666663, 384.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (639, 388))
Result.extend_point (create {EV_COORDINATE}.make_precise (657, 400))
Result.extend_point (create {EV_COORDINATE}.make_precise (657, 405.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (661, 399.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (663.66666666666663, 397.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (670.33333333333326, 402))
Result.extend_point (create {EV_COORDINATE}.make_precise (673.66666666666663, 411.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (679, 414))
Result.extend_point (create {EV_COORDINATE}.make_precise (681, 424))
Result.extend_point (create {EV_COORDINATE}.make_precise (677.66666666666652, 440))
Result.extend_point (create {EV_COORDINATE}.make_precise (673, 451.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (665.66666666666663, 450))
Result.extend_point (create {EV_COORDINATE}.make_precise (655, 450))
Result.extend_point (create {EV_COORDINATE}.make_precise (637, 445.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (631.66666666666663, 448.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (619, 451.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (603.66666666666663, 450))
Result.extend_point (create {EV_COORDINATE}.make_precise (597.66666666666663, 453.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (591.66666666666663, 453.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (587.66666666666663, 454))
Result.extend_point (create {EV_COORDINATE}.make_precise (585, 448.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (552.33333333333326, 448))
Result.extend_point (create {EV_COORDINATE}.make_precise (547, 444.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (544.33333333333326, 447.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (545, 442))
Result.extend_point (create {EV_COORDINATE}.make_precise (538.33333333333326, 443.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (524.33333333333326, 446))
Result.extend_point (create {EV_COORDINATE}.make_precise (520.33333333333326, 449.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (513, 448.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (511, 446.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (500.33333333333326, 449.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (480.33333333333326, 440))
Result.extend_point (create {EV_COORDINATE}.make_precise (471, 443.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (463.66666666666663, 448))
Result.extend_point (create {EV_COORDINATE}.make_precise (455.66666666666663, 450))
Result.extend_point (create {EV_COORDINATE}.make_precise (452.33333333333326, 447.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (451, 450.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (445.66666666666663, 450.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (443, 447.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (435.66666666666663, 451.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (431.66666666666663, 447.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (430.33333333333326, 440.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (422.33333333333326, 428))
Result.extend_point (create {EV_COORDINATE}.make_precise (409, 424.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (387, 422))
Result.extend_point (create {EV_COORDINATE}.make_precise (382.33333333333326, 420))
Result.extend_point (create {EV_COORDINATE}.make_precise (381.66666666666663, 415.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (389, 417.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (386.33333333333326, 414))
Result.extend_point (create {EV_COORDINATE}.make_precise (387, 409.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (382.33333333333326, 409.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (379.66666666666663, 413.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (376.33333333333326, 409.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (365, 407.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (355.66666666666663, 411.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (349.66666666666663, 416.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (343.66666666666663, 420.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (335.66666666666663, 421.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (331.66666666666663, 424.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (320.33333333333326, 424.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (315, 416))
Result.extend_point (create {EV_COORDINATE}.make_precise (311, 416))
Result.extend_point (create {EV_COORDINATE}.make_precise (309, 411.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (305.66666666666663, 410.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (299, 406.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (295, 400))
Result.extend_point (create {EV_COORDINATE}.make_precise (292.33333333333326, 394.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (288.33333333333326, 390))
Result.extend_point (create {EV_COORDINATE}.make_precise (290.33333333333326, 381.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (283.66666666666663, 376.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (281.66666666666663, 371.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (277, 369.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (275, 373.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (276.33333333333326, 379.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (271.66666666666663, 382.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (267, 382))
Result.extend_point (create {EV_COORDINATE}.make_precise (268.33333333333326, 375.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (263, 372))
Result.extend_point (create {EV_COORDINATE}.make_precise (259, 372))
Result.extend_point (create {EV_COORDINATE}.make_precise (257.66666666666663, 369.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (254.33333333333326, 365.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (257, 360.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (235.66666666666663, 352))
Result.extend_point (create {EV_COORDINATE}.make_precise (239.66666666666663, 345.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (231.66666666666663, 340))
Result.extend_point (create {EV_COORDINATE}.make_precise (225.66666666666663, 334))
Result.extend_point (create {EV_COORDINATE}.make_precise (225, 326.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (220.33333333333326, 319.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (220.33333333333326, 314))
Result.extend_point (create {EV_COORDINATE}.make_precise (227.66666666666663, 308.66666666666663))
Result.extend_point (create {EV_COORDINATE}.make_precise (236.33333333333326, 298))
Result.extend_point (create {EV_COORDINATE}.make_precise (242.33333333333326, 292))
end
feature {NONE} -- Implementation
rotation_amount: REAL_64 = -150.0
-- Make the arrow point north-east
end

View File

@@ -0,0 +1,401 @@
note
description: "[
Widget representing a {PORT}.
]"
author: "Jimmy J. Johnson"
class
SINGAPORE_WIDGET
inherit
RED_PORT_WIDGET
redefine
create_interface_objects,
position_widgets,
build_land
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
Precursor {RED_PORT_WIDGET}
mainland := mainland_imp
nongsa := nongsa_imp
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {RED_PORT_WIDGET}
scale_widget (land, 0.06)
rotate_widget (land, 13.0)
translate_widget (Current, -129, -8)
-- marker.set_x_y (x + 105, y + 125)
-- text_group.set_x_y (x + 100, y + 140)
-- anchor.set_x_y (x + 115, y + 148)
marker.set_x_y (x + 15, y - 8)
text_group.set_x_y (x + 98, y + 143)
anchor.set_x_y (text_group.x + 10, text_group.y + 5)
dot.set_x_y (x, y)
bring_to_front (dot)
end
build_land
-- Add widgets to Current
do
Precursor {RED_PORT_WIDGET}
-- Initialize attributes
land.extend (mainland)
land.extend (nongsa)
end
feature -- Status report
is_red: BOOLEAN = True
-- Does Current represent a red (i.e. major) port?
feature {NONE} -- Implementation
mainland: EV_MODEL_POLYGON
nongsa: EV_MODEL_POLYGON
feature {NONE} -- Implementation
mainland_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (7.333333333333286, -1.3333333333333144))
Result.extend_point (create {EV_COORDINATE}.make_precise (16, -7.3333333333333144))
Result.extend_point (create {EV_COORDINATE}.make_precise (26.666666666666657, 2.6666666666666856))
Result.extend_point (create {EV_COORDINATE}.make_precise (30, -2.6666666666666572))
Result.extend_point (create {EV_COORDINATE}.make_precise (40.666666666666657, -4.6666666666666572))
Result.extend_point (create {EV_COORDINATE}.make_precise (51.333333333333314, -8))
Result.extend_point (create {EV_COORDINATE}.make_precise (59.333333333333314, -16))
Result.extend_point (create {EV_COORDINATE}.make_precise (72, -16.666666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (79.333333333333314, -8))
Result.extend_point (create {EV_COORDINATE}.make_precise (91.333333333333314, 10.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (98.666666666666572, 16.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (103.33333333333331, 14.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (110.66666666666657, 22.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (119.33333333333331, 26))
Result.extend_point (create {EV_COORDINATE}.make_precise (136, 22))
Result.extend_point (create {EV_COORDINATE}.make_precise (146, 20.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (167.33333333333331, 26))
Result.extend_point (create {EV_COORDINATE}.make_precise (178.66666666666657, 44.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (194, 61.333333333333258))
Result.extend_point (create {EV_COORDINATE}.make_precise (213.33333333333331, 80))
Result.extend_point (create {EV_COORDINATE}.make_precise (226.66666666666663, 83.333333333333258))
Result.extend_point (create {EV_COORDINATE}.make_precise (239.33333333333331, 88.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (242.66666666666663, 96.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (247.33333333333331, 105.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (252.66666666666663, 116))
Result.extend_point (create {EV_COORDINATE}.make_precise (262.66666666666663, 122))
Result.extend_point (create {EV_COORDINATE}.make_precise (276.66666666666663, 136))
Result.extend_point (create {EV_COORDINATE}.make_precise (286.66666666666663, 144.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (292.66666666666663, 144.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (307.33333333333331, 155.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (314.66666666666663, 170))
Result.extend_point (create {EV_COORDINATE}.make_precise (326, 193.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (338, 211.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (340, 227.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (342, 237.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (337.33333333333331, 240))
Result.extend_point (create {EV_COORDINATE}.make_precise (341.33333333333331, 250.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (344, 256))
Result.extend_point (create {EV_COORDINATE}.make_precise (336, 270))
Result.extend_point (create {EV_COORDINATE}.make_precise (334.66666666666663, 283.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (339.33333333333331, 287.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (334, 296.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (334, 301.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (329.33333333333331, 306.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (333.33333333333331, 315.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (338.66666666666663, 321.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (343.33333333333331, 329.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (339.33333333333331, 335.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (337.33333333333331, 340.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (338, 353.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (339.33333333333331, 363.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (338, 384.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (355.33333333333314, 406.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (362, 407.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (370.66666666666663, 411.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (372.66666666666663, 421.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (380.66666666666663, 433.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (386.66666666666663, 443.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (386, 447.99999999999994))
Result.extend_point (create {EV_COORDINATE}.make_precise (396, 465.99999999999994))
Result.extend_point (create {EV_COORDINATE}.make_precise (402.66666666666663, 476.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (399.33333333333314, 475.99999999999994))
Result.extend_point (create {EV_COORDINATE}.make_precise (405.33333333333314, 481.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (412, 498.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (414.66666666666663, 513.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (416, 527.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (411.33333333333314, 533.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (400.66666666666663, 532.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (390, 532))
Result.extend_point (create {EV_COORDINATE}.make_precise (381.33333333333314, 533.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (375.33333333333314, 538.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (363.33333333333314, 540))
Result.extend_point (create {EV_COORDINATE}.make_precise (356.66666666666663, 538))
Result.extend_point (create {EV_COORDINATE}.make_precise (353.33333333333314, 533.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (351.33333333333314, 528.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (348.66666666666663, 530))
Result.extend_point (create {EV_COORDINATE}.make_precise (349.33333333333331, 534))
Result.extend_point (create {EV_COORDINATE}.make_precise (346.66666666666663, 536.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (340.66666666666663, 536.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (334.66666666666663, 532.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (332.66666666666663, 524))
Result.extend_point (create {EV_COORDINATE}.make_precise (334, 518.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (329.33333333333331, 511.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (318, 505.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (307.33333333333331, 501.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (300, 495.99999999999994))
Result.extend_point (create {EV_COORDINATE}.make_precise (296, 493.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (291.33333333333331, 491.99999999999994))
Result.extend_point (create {EV_COORDINATE}.make_precise (286.66666666666663, 485.99999999999994))
Result.extend_point (create {EV_COORDINATE}.make_precise (283.33333333333331, 482.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (271.33333333333331, 483.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (263.33333333333331, 473.99999999999994))
Result.extend_point (create {EV_COORDINATE}.make_precise (256, 467.99999999999994))
Result.extend_point (create {EV_COORDINATE}.make_precise (256, 464.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (248.66666666666663, 460.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (224, 451.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (221.33333333333331, 451.99999999999994))
Result.extend_point (create {EV_COORDINATE}.make_precise (216, 444.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (212.66666666666663, 443.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (208.66666666666663, 437.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (203.33333333333331, 435.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (202.66666666666663, 433.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (198, 431.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (195.33333333333331, 433.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (192.66666666666663, 425.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (190.66666666666663, 423.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (187.33333333333331, 423.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (188.66666666666663, 419.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (185.33333333333331, 414.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (176.66666666666657, 414.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (168.66666666666657, 411.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (159.33333333333331, 413.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (156.66666666666657, 409.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (155.33333333333331, 401.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (152, 396.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (147.33333333333331, 395.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (142.66666666666657, 393.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (140.66666666666657, 389.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (136, 383.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (132, 375.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (135.33333333333331, 371.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (142.66666666666657, 370.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (144.66666666666657, 368.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (141.33333333333331, 361.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (136.66666666666657, 345.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (134, 347.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (128, 340.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (124.66666666666657, 337.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (120, 323.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (116.66666666666657, 319.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (108, 319.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (106, 311.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (99.333333333333314, 307.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (98, 302.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (108.66666666666657, 298.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (94.666666666666572, 300.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (87.333333333333314, 298.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (87.333333333333314, 286.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (94, 287.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (102, 282.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (94, 284.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (92, 278.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (85.333333333333314, 270))
Result.extend_point (create {EV_COORDINATE}.make_precise (81.333333333333314, 272.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (76.666666666666657, 266.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (76.666666666666657, 260))
Result.extend_point (create {EV_COORDINATE}.make_precise (74, 258.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (76, 247.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (80.666666666666657, 248.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (79.333333333333314, 239.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (85.333333333333314, 231.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (79.333333333333314, 235.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (75.333333333333314, 235.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (77.333333333333314, 229.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (86, 218.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (77.333333333333314, 224))
Result.extend_point (create {EV_COORDINATE}.make_precise (74.666666666666657, 214.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (72.666666666666657, 204))
Result.extend_point (create {EV_COORDINATE}.make_precise (69.333333333333314, 208.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (68, 201.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (64.666666666666657, 203.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (63.333333333333314, 196))
Result.extend_point (create {EV_COORDINATE}.make_precise (56.666666666666657, 186))
Result.extend_point (create {EV_COORDINATE}.make_precise (59.333333333333314, 178))
Result.extend_point (create {EV_COORDINATE}.make_precise (61.333333333333314, 170.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (59.333333333333314, 162.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (55.333333333333314, 165.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (50, 172))
Result.extend_point (create {EV_COORDINATE}.make_precise (46.666666666666657, 169.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (41.333333333333314, 169.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (38.666666666666657, 162.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (40, 156))
Result.extend_point (create {EV_COORDINATE}.make_precise (39.333333333333314, 150.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (47.333333333333314, 152.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (53.333333333333314, 154.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (56, 159.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (58, 156.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (58.666666666666657, 149.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (54, 134.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (59.333333333333314, 134.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (54.666666666666657, 129.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (56, 118.66666666666669))
Result.extend_point (create {EV_COORDINATE}.make_precise (54, 103.33333333333331))
Result.extend_point (create {EV_COORDINATE}.make_precise (50.666666666666657, 96))
Result.extend_point (create {EV_COORDINATE}.make_precise (45.333333333333314, 88))
Result.extend_point (create {EV_COORDINATE}.make_precise (36.666666666666657, 82.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (33.333333333333314, 66))
Result.extend_point (create {EV_COORDINATE}.make_precise (28, 55.333333333333258))
Result.extend_point (create {EV_COORDINATE}.make_precise (22.666666666666657, 50))
Result.extend_point (create {EV_COORDINATE}.make_precise (20, 51.333333333333258))
Result.extend_point (create {EV_COORDINATE}.make_precise (21.333333333333314, 47.333333333333258))
Result.extend_point (create {EV_COORDINATE}.make_precise (20, 43.333333333333258))
Result.extend_point (create {EV_COORDINATE}.make_precise (12.666666666666657, 36.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (9.3333333333333144, 32))
Result.extend_point (create {EV_COORDINATE}.make_precise (6.6666666666666572, 33.333333333333258))
Result.extend_point (create {EV_COORDINATE}.make_precise (4.6666666666666572, 26.666666666666686))
Result.extend_point (create {EV_COORDINATE}.make_precise (-4.666666666666714, 24))
Result.extend_point (create {EV_COORDINATE}.make_precise (-6.666666666666714, 6))
Result.extend_point (create {EV_COORDINATE}.make_precise (-2.666666666666714, 4))
end
nongsa_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (409.11111111111109, 556.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (407.33333333333326, 554.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (405.55555555555543, 548.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (415.77777777777771, 545.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (415.33333333333326, 542.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (422.8888888888888, 539.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (430.44444444444434, 541.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (434.8888888888888, 542.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (439.77777777777771, 537.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (442.8888888888888, 540))
Result.extend_point (create {EV_COORDINATE}.make_precise (444.22222222222217, 544.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (447.77777777777771, 546.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (448.66666666666663, 552.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (450, 558.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (448.66666666666663, 560))
Result.extend_point (create {EV_COORDINATE}.make_precise (450.44444444444434, 564.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (452.66666666666663, 568.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (452.22222222222217, 573.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (447.77777777777771, 576.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (454, 578.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (455.33333333333326, 584.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (448.66666666666663, 580.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (446.8888888888888, 583.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (444.22222222222217, 581.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (439.33333333333326, 581.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (434.8888888888888, 581.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (434.44444444444434, 578.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (441.11111111111109, 578.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (439.77777777777771, 576))
Result.extend_point (create {EV_COORDINATE}.make_precise (430.8888888888888, 572.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (426.8888888888888, 571.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (430, 568.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (426.44444444444434, 566.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (428.66666666666663, 563.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (427.33333333333326, 561.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (428.66666666666663, 558.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (431.33333333333326, 557.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (426.8888888888888, 556.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (425.55555555555543, 559.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (422, 560.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (420.22222222222217, 559.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (418.8888888888888, 561.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (413.55555555555543, 562.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (411.33333333333326, 566.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (413.11111111111109, 571.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (412.66666666666663, 576.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (409.11111111111109, 577.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (413.11111111111109, 579.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (414.44444444444434, 583.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (415.77777777777771, 587.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (414.44444444444434, 594.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (410.8888888888888, 590.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (405.55555555555543, 582.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (400.22222222222217, 572))
Result.extend_point (create {EV_COORDINATE}.make_precise (388.66666666666663, 571.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (381.55555555555543, 566.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (378, 566.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (378.44444444444434, 571.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (382, 576))
Result.extend_point (create {EV_COORDINATE}.make_precise (382.8888888888888, 581.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (378, 580))
Result.extend_point (create {EV_COORDINATE}.make_precise (375.33333333333326, 575.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (370.44444444444434, 570.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (366.8888888888888, 570.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (370.44444444444434, 573.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (373.55555555555543, 579.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (372.66666666666663, 582.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (369.11111111111109, 580))
Result.extend_point (create {EV_COORDINATE}.make_precise (363.77777777777771, 577.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (359.33333333333326, 573.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (359.33333333333326, 567.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (364.22222222222217, 560.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (366, 557.33333333333326))
Result.extend_point (create {EV_COORDINATE}.make_precise (369.11111111111109, 556))
Result.extend_point (create {EV_COORDINATE}.make_precise (371.33333333333326, 560.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (372.66666666666663, 558.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (374.8888888888888, 558.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (373.11111111111109, 552.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (376.22222222222217, 554.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (379.33333333333326, 558.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (379.33333333333326, 554.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (378, 551.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (381.11111111111109, 552.88888888888891))
Result.extend_point (create {EV_COORDINATE}.make_precise (381.55555555555543, 549.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (380.66666666666663, 546.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (386, 546.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (387.33333333333326, 542.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (390, 542.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (392.66666666666663, 546.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (395.33333333333326, 547.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (395.33333333333326, 544.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (394, 543.11111111111109))
Result.extend_point (create {EV_COORDINATE}.make_precise (396.66666666666663, 541.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (401.55555555555543, 543.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (401.11111111111109, 548))
Result.extend_point (create {EV_COORDINATE}.make_precise (402, 552))
Result.extend_point (create {EV_COORDINATE}.make_precise (400.66666666666663, 555.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (394.8888888888888, 556))
Result.extend_point (create {EV_COORDINATE}.make_precise (397.11111111111109, 558.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (396.66666666666663, 560.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (392.22222222222217, 561.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (388.66666666666663, 563.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (389.11111111111109, 567.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (394.44444444444434, 565.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (397.55555555555543, 562.66666666666674))
Result.extend_point (create {EV_COORDINATE}.make_precise (401.55555555555543, 562.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (403.33333333333326, 555.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (404.22222222222217, 558.22222222222217))
Result.extend_point (create {EV_COORDINATE}.make_precise (406, 561.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (408.66666666666663, 559.55555555555543))
end
invariant
correct_port: attached target_imp implies port = game.singapore
end

View File

@@ -0,0 +1,118 @@
note
description: "[
The widget representing this port
]"
author: "Jimmy J. Johnson"
class
TRUK_WIDGET
inherit
-- RED_PORT_WIDGET
-- undefine
-- paint
-- redefine
-- create_interface_objects,
-- initialize,
-- extend_widgets,
-- position_widgets,
-- build_land
-- end
ISLAND_PORT_WIDGET
redefine
create_interface_objects,
-- initialize,
extend_widgets,
build_widgets,
position_widgets,
build_land
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
mainland := mainland_imp
create not_allowed_text.make_with_text ("(No British Allowed)")
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {RED_PORT_WIDGET}
dot.show
end
build_widgets
-- Now that widgets were created in `create_interface_objects'
-- and added to Current in `extend_widgets', build up the
-- widgets by adding internal structure to each widget.
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {RED_PORT_WIDGET}
hide_arrow
end
extend_widgets
-- Put widgets into Current. This cannot be done
-- in `create_interface_object', because cannot call
-- `extend' feature until all objects [in descendants]
-- are also created.
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {RED_PORT_WIDGET}
extend (not_allowed_text)
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {ISLAND_PORT_WIDGET}
-- Precursor {RED_PORT_WIDGET}
-- make adjustments
translate_widget (Current, 330, 260)
-- marker.set_x_y (dot.x, dot.y)
-- anchor.set_x_y (dot.x, dot.y)
-- translate_widget (name_mt, 0, 4)
-- translate_widget (marker, -6, -6)
-- translate_widget (anchor, -1, -3)
-- translate_widget (not_allowed_text, 48, 72)
end
build_land
-- Add widgets to Current
do
Precursor {ISLAND_PORT_WIDGET}
-- land.extend (mainland)
end
not_allowed_text: EV_MODEL_TEXT
-- Extra text on some Red ports (e.g. "No British Allowed").
feature -- Status report
is_red: BOOLEAN = True
-- Does Current represent a red (i.e. major) port?
feature {NONE} -- Implementation
mainland: EV_MODEL_POLYGON
feature {NONE} -- Implementation
mainland_imp: EV_MODEL_POLYGON
-- Put something in the `land' so it can be better positioned, otherwise
-- clicking in unrelated locations seems to pull up this widget.
-- This triangle is hidden under the port circle.
do
create Result
Result.extend_point (create {EV_COORDINATE}.make_precise (0.0, 0.0))
Result.extend_point (create {EV_COORDINATE}.make_precise (2.0, 2.0))
Result.extend_point (create {EV_COORDINATE}.make_precise (-2.0, -2.0))
end
end

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,82 @@
note
description: "[
Widget that represents the Bay of Bengal in VITP
]"
author: "Jimmy J. Johnson"
class
BAY_OF_BENGAL_WIDGET
inherit
SEA_AREA_WIDGET
redefine
position_widgets,
build_ocean
-- build_bounding_figure
end
create
make
feature {NONE} -- Initialization
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {SEA_AREA_WIDGET}
-- translate_widget (text_widget, -10, 150)
-- text_widget.set_x_y (70, 150)
-- translate_widget (dot, -20, 80)
-- name_mt.set_point_position (15, 345)
text_group.set_x_y (15, 345)
flag.set_point_position (20, 320)
dot.set_point_position (20, 310)
end
build_ocean
-- Create the polygon representing the `ocean' here
-- Redefined to add the points
do
Precursor {SEA_AREA_WIDGET}
-- Start at top left of board, going to point north of Saigon
ocean.extend_point (create {EV_COORDINATE}.make (0, 0))
ocean.extend_point (create {EV_COORDINATE}.make (98, 190)) -- measured to west point of Siagon
ocean.extend_point (create {EV_COORDINATE}.make (72, 244)) -- estimated
ocean.extend_point (create {EV_COORDINATE}.make (40, 257))
ocean.extend_point (create {EV_COORDINATE}.make (83, 355))
ocean.extend_point (create {EV_COORDINATE}.make (0, 392))
end
-- build_bounding_figure
-- -- Add points to the `jj_bounding_figure'.
-- -- Redefined to use the tile edges as the bounding area
-- do
-- if has (jj_bounding_figure) then
-- prune_all (jj_bounding_figure)
-- end
-- create jj_bounding_figure
-- extend (jj_bounding_figure)
---- bounding_figure.extend_point (ocean.point_array.item (0))
---- bounding_figure.extend_point (create {EV_COORDINATE}.make (0, 167))
---- bounding_figure.extend_point (create {EV_COORDINATE}.make (20, 155))
---- bounding_figure.extend_point (create {EV_COORDINATE}.make (50, 152))
---- bounding_figure.extend_point (create {EV_COORDINATE}.make (60, 190))
---- bounding_figure.extend_point (create {EV_COORDINATE}.make (77, 195))
-- jj_bounding_figure.extend_point (ocean.point_array.item (1))
-- jj_bounding_figure.extend_point (ocean.point_array.item (2))
-- jj_bounding_figure.extend_point (ocean.point_array.item (3))
-- jj_bounding_figure.extend_point (ocean.point_array.item (4))
-- jj_bounding_figure.extend_point (ocean.point_array.item (5))
-- jj_bounding_figure.extend_point (ocean.point_array.item (0))
-- jj_bounding_figure.enable_closed
-- jj_bounding_figure.set_line_width (2)
---- show_bounding_figure
-- end
invariant
is_valid_sea_area: attached target_imp implies sea_area = game.bay_of_bengal
end

View File

@@ -0,0 +1,79 @@
note
description: "[
Widget that represents this VITP sea area
]"
author: "Jimmy J. Johnson"
class
CENTRAL_PACIFIC_OCEAN_WIDGET
inherit
SEA_AREA_WIDGET
redefine
position_widgets,
build_ocean
-- build_bounding_figure
end
create
make
feature {NONE} -- Initialization
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {SEA_AREA_WIDGET}
translate_widget (text_group, -30, 50)
translate_widget (dot, 20, 80)
-- flag.center_on_dot (dot)
flag.set_x_y (dot.x, dot.y)
translate_widget (flag, -10, -2)
translate_widget (dot, -20, 30)
translate_widget (Current, 526, 101)
end
build_ocean
-- Create the polygon representing the `ocean' here
-- Redefined to add the points
do
Precursor {SEA_AREA_WIDGET}
-- start at northern most point
ocean.extend_point (create {EV_COORDINATE}.make (0, 0))
ocean.extend_point (create {EV_COORDINATE}.make (79, 32))
ocean.extend_point (create {EV_COORDINATE}.make (112, 136))
ocean.extend_point (create {EV_COORDINATE}.make (74, 200))
ocean.extend_point (create {EV_COORDINATE}.make (-41, 146)) -- x may be off
ocean.extend_point (create {EV_COORDINATE}.make (-77, 81))
end
-- build_bounding_figure
-- -- Add points to the `jj_bounding_figure'.
-- -- Redefined to use the tile edges as the bounding area
-- do
-- if has (jj_bounding_figure) then
-- prune_all (jj_bounding_figure)
-- end
-- create jj_bounding_figure
-- extend (jj_bounding_figure)
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (0, 0))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (79, 32))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (112, 136))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (74, 200))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (-41, 146)) -- x may be off
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (-77, 81))
-- jj_bounding_figure.enable_closed
-- -- Make adjustments
-- jj_bounding_figure.set_line_width (2)
-- translate_widget (jj_bounding_figure, 526, 101)
---- show_bounding_figure
-- end
invariant
is_valid_sea_area: attached target_imp implies sea_area = game.central_pacific_ocean
has_no_land: land.is_empty
end

View File

@@ -0,0 +1,148 @@
note
description: "[
Widget that represents this VITP sea area
]"
author: "Jimmy J. Johnson"
class
CORAL_SEA_WIDGET
inherit
SEA_AREA_WIDGET
redefine
create_interface_objects,
position_widgets,
build_land,
build_ocean
-- build_bounding_figure
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
Precursor {SEA_AREA_WIDGET}
new_caledonia := new_caledonia_imp
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {SEA_AREA_WIDGET}
translate_widget (Current, 284, 554)
translate_widget (dot, 100, -45)
translate_widget (text_group, 85, -75)
translate_widget (land, 5, 0)
-- flag.center_on_dot (dot)
flag.set_x_y (dot.x, dot.y)
end
build_land
-- Add `land' to Current
do
Precursor {SEA_AREA_WIDGET}
-- This land was used to help position the
-- brown land in the {SOLOMANS_WIDGET} or
-- [or SOUTH_PACIFIC_OCEAN_WIDGET if fixed].
-- land.extend (new_caledonia)
end
build_ocean
-- Create the polygon representing the `ocean' here
-- Redefined to add the points
do
Precursor {SEA_AREA_WIDGET}
-- start at bottom edge of board at west end measuring from bottom
-- The first two points are hidden by Australia, but should still be
-- close to those points, 3mm away.
ocean.extend_point (create {EV_COORDINATE}.make (0, 0))
-- Under Lae
ocean.extend_point (create {EV_COORDINATE}.make (28, -165)) -- estimated
ocean.extend_point (create {EV_COORDINATE}.make (66, -123)) --
-- Under Guadalcanale
ocean.extend_point (create {EV_COORDINATE}.make (114, -100)) -- estimated
-- x is 39 left of bottom (measured from right)
ocean.extend_point (create {EV_COORDINATE}.make (123, -109)) -- estimate
-- x is 5 more than bottom (measured from right)
ocean.extend_point (create {EV_COORDINATE}.make (167, -112))
-- 704, board width, - 258 measured from bottom/right = 446
-- 446 - (281, Indian Ocean point, + 3) = 162
ocean.extend_point (create {EV_COORDINATE}.make (162, 1)) --0))
end
-- build_bounding_figure
-- -- Add points to the `jj_bounding_figure'.
-- -- Redefined to use the tile edges as the bounding area
-- local
-- t: EV_MODEL_TRANSFORMATION
-- do
-- if has (jj_bounding_figure) then
-- prune_all (jj_bounding_figure)
-- end
-- create jj_bounding_figure
-- extend (jj_bounding_figure)
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (60, 0))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (65, -40))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (30, -90))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (23, -140))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (120, -80))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (167, -112))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (162, 0))
-- jj_bounding_figure.enable_closed
-- jj_bounding_figure.set_line_width (2)
-- -- Make adjustments
-- translate_widget (jj_bounding_figure, 284, 553)
---- show_bounding_figure
-- end
feature -- Access
new_caledonia: EV_MODEL_POLYGON
-- Island (brown on the board) south-west of New Heberdies
feature {NONE} -- Implementation
new_caledonia_imp: EV_MODEL_POLYGON
-- Create the polygon island north of Australia
local
t: EV_MODEL_TRANSFORMATION
do
create Result
-- Start at north-west tip
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (1, 0.5))
Result.extend_point (create {EV_COORDINATE}.make_precise (1.5, 1))
Result.extend_point (create {EV_COORDINATE}.make_precise (5, 3))
Result.extend_point (create {EV_COORDINATE}.make_precise (5.5, 5))
Result.extend_point (create {EV_COORDINATE}.make_precise (7, 5.5))
Result.extend_point (create {EV_COORDINATE}.make_precise (9, 9))
Result.extend_point (create {EV_COORDINATE}.make_precise (12.5, 11))
-- South-east tip
Result.extend_point (create {EV_COORDINATE}.make_precise (17, 19))
Result.extend_point (create {EV_COORDINATE}.make_precise (16, 19.5))
Result.extend_point (create {EV_COORDINATE}.make_precise (14, 19))
Result.extend_point (create {EV_COORDINATE}.make_precise (10, 16))
Result.extend_point (create {EV_COORDINATE}.make_precise (7, 15))
Result.extend_point (create {EV_COORDINATE}.make_precise (6, 16))
Result.extend_point (create {EV_COORDINATE}.make_precise (6, 15))
Result.extend_point (create {EV_COORDINATE}.make_precise (2, 8))
Result.extend_point (create {EV_COORDINATE}.make_precise (1, 3))
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 2))
create t.make_zero
t.translate (130, -48) -- 553 is the board height (not including black boarder)
Result.transform (t)
end
invariant
is_valid_sea_area: attached target_imp implies sea_area = game.coral_sea
end

View File

@@ -0,0 +1,77 @@
note
description: "[
Widget that represents this VITP sea area
]"
author: "Jimmy J. Johnson"
class
HAWAIIAN_ISLANDS_WIDGET
inherit
SEA_AREA_WIDGET
redefine
position_widgets,
build_ocean
-- build_bounding_figure
end
create
make
feature {NONE} -- Initialization
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {SEA_AREA_WIDGET}
translate_widget (name_mt, -75, -85)
translate_widget (dot, -45, -60)
-- flag.center_on_dot (dot)
-- flag.set_x_y (dot.x, dot.y)
flag.set_x_y (-45, -60)
translate_widget (dot, -60, -40)
translate_widget (Current, 704, 553 - 72)
end
build_ocean
-- Create the polygon representing the `ocean' here
-- Redefined to add the points
do
Precursor {SEA_AREA_WIDGET}
-- start at bottom south-west corner
ocean.extend_point (create {EV_COORDINATE}.make (0, 0))
ocean.extend_point (create {EV_COORDINATE}.make (-150, -95))
ocean.extend_point (create {EV_COORDINATE}.make (-62, -244))
ocean.extend_point (create {EV_COORDINATE}.make (0, -242))
end
-- build_bounding_figure
-- -- Add points to the `jj_bounding_figure'.
-- -- Redefined to use the tile edges as the bounding area
-- local
-- t: EV_MODEL_TRANSFORMATION
-- do
-- if has (jj_bounding_figure) then
-- prune_all (jj_bounding_figure)
-- end
-- create jj_bounding_figure
-- extend (jj_bounding_figure)
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (0, 0))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (-150, -95))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (-62, -244))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (0, -242))
-- jj_bounding_figure.enable_closed
-- -- Make adjustments
-- translate_widget (jj_bounding_figure, 704, 553 - 72)
-- jj_bounding_figure.set_line_width (2)
---- show_bounding_figure
-- end
invariant
is_valid_sea_area: attached target_imp implies sea_area = game.hawaiian_islands
no_land: land.is_empty
end

View File

@@ -0,0 +1,342 @@
note
description: "[
Widget that represents the Indian Ocean in VITP
]"
author: "Jimmy J. Johnson"
class
INDIAN_OCEAN_WIDGET
inherit
SEA_AREA_WIDGET
redefine
create_interface_objects,
position_widgets,
build_land,
build_ocean
-- build_bounding_figure
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
Precursor {SEA_AREA_WIDGET}
yamdena := yamdena_imp
pulau := pulau_imp
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {SEA_AREA_WIDGET}
-- make adjustments
scale_widget (land, 0.04)
rotate_widget (land, 13.0)
-- translate_widget (Current, 0, 553)
-- translate_widget (land, 10, -20)
-- translate_widget (text_widget, -80, -20)
-- translate_widget (dot, -75, 50)
-- flag.center_on_dot (dot)
land.set_point_position (240, -165)
dot.set_point_position (80, -100)
set_point_position (0, 553)
flag.set_point_position (60, 410)
name_mt.set_point_position (30, 440)
end
build_land
-- Build any land in Current
do
Precursor {SEA_AREA_WIDGET}
land.extend (yamdena)
land.extend (Pulau)
end
build_ocean
-- Create the polygon representing the `ocean' here
-- Redefined to add the points
do
Precursor {SEA_AREA_WIDGET}
-- start at bottom-left edge of board, measuring from bottom
ocean.extend_point (create {EV_COORDINATE}.make (0, 0))
ocean.extend_point (create {EV_COORDINATE}.make (0, -158))
ocean.extend_point (create {EV_COORDINATE}.make (84, -195))
ocean.extend_point (create {EV_COORDINATE}.make (195, -151))
ocean.extend_point (create {EV_COORDINATE}.make (278, -185)) -- estimated
ocean.extend_point (create {EV_COORDINATE}.make (308, -161))
ocean.extend_point (create {EV_COORDINATE}.make (281, 0))
end
-- build_bounding_figure
-- -- Add points to the `jj_bounding_figure'.
-- -- Redefined to use the tile edges as the bounding area
-- local
-- t: EV_MODEL_TRANSFORMATION
-- do
-- if has (jj_bounding_figure) then
-- prune_all (jj_bounding_figure)
-- end
-- create jj_bounding_figure
-- extend (jj_bounding_figure)
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (0, 0))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (0, -158))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (84, -195))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (195, -151))
---- bounding_figure.extend_point (create {EV_COORDINATE}.make (278, -185))
---- bounding_figure.extend_point (create {EV_COORDINATE}.make (308, -161))
---- bounding_figure.extend_point (create {EV_COORDINATE}.make (281, 0))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (130, -90))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (130, 0))
-- jj_bounding_figure.enable_closed
-- jj_bounding_figure.set_line_width (2)
-- create t.make_zero
-- t.translate (0, 553) -- 553 is the board height (not including black boarder)
-- jj_bounding_figure.transform (t)
---- show_bounding_figure
-- end
feature -- Access
yamdena: EV_MODEL_POLYGON
pulau: EV_MODEL_POLYGON
feature {NONE} -- Implementatio
yamdena_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1, -11))
Result.extend_point (create {EV_COORDINATE}.make_precise (8, -14))
Result.extend_point (create {EV_COORDINATE}.make_precise (14, -18))
Result.extend_point (create {EV_COORDINATE}.make_precise (25, -18))
Result.extend_point (create {EV_COORDINATE}.make_precise (27, -12))
Result.extend_point (create {EV_COORDINATE}.make_precise (39, -19))
Result.extend_point (create {EV_COORDINATE}.make_precise (51, -19))
Result.extend_point (create {EV_COORDINATE}.make_precise (68, -21))
Result.extend_point (create {EV_COORDINATE}.make_precise (87, -43))
Result.extend_point (create {EV_COORDINATE}.make_precise (83, -32))
Result.extend_point (create {EV_COORDINATE}.make_precise (74, -19))
Result.extend_point (create {EV_COORDINATE}.make_precise (83, -8))
Result.extend_point (create {EV_COORDINATE}.make_precise (83, 3))
Result.extend_point (create {EV_COORDINATE}.make_precise (69, 3))
Result.extend_point (create {EV_COORDINATE}.make_precise (68, -5))
Result.extend_point (create {EV_COORDINATE}.make_precise (39, -8))
Result.extend_point (create {EV_COORDINATE}.make_precise (39, -1))
Result.extend_point (create {EV_COORDINATE}.make_precise (23, 3))
Result.extend_point (create {EV_COORDINATE}.make_precise (21, 11))
Result.extend_point (create {EV_COORDINATE}.make_precise (27, 32))
Result.extend_point (create {EV_COORDINATE}.make_precise (31, 36))
Result.extend_point (create {EV_COORDINATE}.make_precise (30, 41))
Result.extend_point (create {EV_COORDINATE}.make_precise (24, 61))
Result.extend_point (create {EV_COORDINATE}.make_precise (18, 80))
Result.extend_point (create {EV_COORDINATE}.make_precise (3, 95))
Result.extend_point (create {EV_COORDINATE}.make_precise (-6, 95))
Result.extend_point (create {EV_COORDINATE}.make_precise (-6, 103))
Result.extend_point (create {EV_COORDINATE}.make_precise (-15, 110))
Result.extend_point (create {EV_COORDINATE}.make_precise (-27, 119))
Result.extend_point (create {EV_COORDINATE}.make_precise (-26, 127))
Result.extend_point (create {EV_COORDINATE}.make_precise (-31, 132))
Result.extend_point (create {EV_COORDINATE}.make_precise (-31, 143))
Result.extend_point (create {EV_COORDINATE}.make_precise (-43, 153))
Result.extend_point (create {EV_COORDINATE}.make_precise (-40, 137))
Result.extend_point (create {EV_COORDINATE}.make_precise (-41, 130))
Result.extend_point (create {EV_COORDINATE}.make_precise (-47, 138))
Result.extend_point (create {EV_COORDINATE}.make_precise (-53, 148))
Result.extend_point (create {EV_COORDINATE}.make_precise (-60, 144))
Result.extend_point (create {EV_COORDINATE}.make_precise (-67, 144))
Result.extend_point (create {EV_COORDINATE}.make_precise (-74, 144))
Result.extend_point (create {EV_COORDINATE}.make_precise (-72, 128))
Result.extend_point (create {EV_COORDINATE}.make_precise (-78, 125))
Result.extend_point (create {EV_COORDINATE}.make_precise (-79, 118))
Result.extend_point (create {EV_COORDINATE}.make_precise (-76, 112))
Result.extend_point (create {EV_COORDINATE}.make_precise (-72, 114))
Result.extend_point (create {EV_COORDINATE}.make_precise (-68, 109))
Result.extend_point (create {EV_COORDINATE}.make_precise (-72, 105))
Result.extend_point (create {EV_COORDINATE}.make_precise (-71, 99))
Result.extend_point (create {EV_COORDINATE}.make_precise (-79, 95))
Result.extend_point (create {EV_COORDINATE}.make_precise (-75, 86))
Result.extend_point (create {EV_COORDINATE}.make_precise (-82, 91))
Result.extend_point (create {EV_COORDINATE}.make_precise (-84, 86))
Result.extend_point (create {EV_COORDINATE}.make_precise (-89, 87))
Result.extend_point (create {EV_COORDINATE}.make_precise (-88, 94))
Result.extend_point (create {EV_COORDINATE}.make_precise (-100, 96))
Result.extend_point (create {EV_COORDINATE}.make_precise (-100, 86))
Result.extend_point (create {EV_COORDINATE}.make_precise (-75, 78))
Result.extend_point (create {EV_COORDINATE}.make_precise (-71, 89))
Result.extend_point (create {EV_COORDINATE}.make_precise (-64, 93))
Result.extend_point (create {EV_COORDINATE}.make_precise (-54, 93))
Result.extend_point (create {EV_COORDINATE}.make_precise (-60, 89))
Result.extend_point (create {EV_COORDINATE}.make_precise (-67, 82))
Result.extend_point (create {EV_COORDINATE}.make_precise (-63, 76))
Result.extend_point (create {EV_COORDINATE}.make_precise (-62, 70))
Result.extend_point (create {EV_COORDINATE}.make_precise (-56, 62))
Result.extend_point (create {EV_COORDINATE}.make_precise (-53, 50))
Result.extend_point (create {EV_COORDINATE}.make_precise (-40, 40))
Result.extend_point (create {EV_COORDINATE}.make_precise (-36, 33))
Result.extend_point (create {EV_COORDINATE}.make_precise (-32, 42))
Result.extend_point (create {EV_COORDINATE}.make_precise (-28, 35))
Result.extend_point (create {EV_COORDINATE}.make_precise (-27, 29))
Result.extend_point (create {EV_COORDINATE}.make_precise (-24, 21))
Result.extend_point (create {EV_COORDINATE}.make_precise (-14, 22))
Result.extend_point (create {EV_COORDINATE}.make_precise (-15, 17))
Result.extend_point (create {EV_COORDINATE}.make_precise (-11, 8))
Result.extend_point (create {EV_COORDINATE}.make_precise (-12, 4))
end
pulau_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (537, -323))
Result.extend_point (create {EV_COORDINATE}.make_precise (547, -339))
Result.extend_point (create {EV_COORDINATE}.make_precise (558, -345))
Result.extend_point (create {EV_COORDINATE}.make_precise (563, -337))
Result.extend_point (create {EV_COORDINATE}.make_precise (570, -328))
Result.extend_point (create {EV_COORDINATE}.make_precise (582, -311))
Result.extend_point (create {EV_COORDINATE}.make_precise (577, -307))
Result.extend_point (create {EV_COORDINATE}.make_precise (581, -294))
Result.extend_point (create {EV_COORDINATE}.make_precise (586, -291))
Result.extend_point (create {EV_COORDINATE}.make_precise (591, -280))
Result.extend_point (create {EV_COORDINATE}.make_precise (585, -279))
Result.extend_point (create {EV_COORDINATE}.make_precise (587, -268))
Result.extend_point (create {EV_COORDINATE}.make_precise (592, -257))
Result.extend_point (create {EV_COORDINATE}.make_precise (582, -257))
Result.extend_point (create {EV_COORDINATE}.make_precise (593, -249))
Result.extend_point (create {EV_COORDINATE}.make_precise (594, -241))
Result.extend_point (create {EV_COORDINATE}.make_precise (588, -240))
Result.extend_point (create {EV_COORDINATE}.make_precise (583, -241))
Result.extend_point (create {EV_COORDINATE}.make_precise (589, -234))
Result.extend_point (create {EV_COORDINATE}.make_precise (589, -227))
Result.extend_point (create {EV_COORDINATE}.make_precise (585, -223))
Result.extend_point (create {EV_COORDINATE}.make_precise (585, -216))
Result.extend_point (create {EV_COORDINATE}.make_precise (590, -209))
Result.extend_point (create {EV_COORDINATE}.make_precise (596, -206))
Result.extend_point (create {EV_COORDINATE}.make_precise (590, -197))
Result.extend_point (create {EV_COORDINATE}.make_precise (592, -191))
Result.extend_point (create {EV_COORDINATE}.make_precise (585, -168))
Result.extend_point (create {EV_COORDINATE}.make_precise (579, -160))
Result.extend_point (create {EV_COORDINATE}.make_precise (567, -157))
Result.extend_point (create {EV_COORDINATE}.make_precise (564, -152))
Result.extend_point (create {EV_COORDINATE}.make_precise (564, -141))
Result.extend_point (create {EV_COORDINATE}.make_precise (558, -133))
Result.extend_point (create {EV_COORDINATE}.make_precise (567, -138))
Result.extend_point (create {EV_COORDINATE}.make_precise (577, -141))
Result.extend_point (create {EV_COORDINATE}.make_precise (587, -136))
Result.extend_point (create {EV_COORDINATE}.make_precise (592, -130))
Result.extend_point (create {EV_COORDINATE}.make_precise (597, -138))
Result.extend_point (create {EV_COORDINATE}.make_precise (597, -148))
Result.extend_point (create {EV_COORDINATE}.make_precise (594, -157))
Result.extend_point (create {EV_COORDINATE}.make_precise (601, -167))
Result.extend_point (create {EV_COORDINATE}.make_precise (607, -171))
Result.extend_point (create {EV_COORDINATE}.make_precise (614, -169))
Result.extend_point (create {EV_COORDINATE}.make_precise (617, -159))
Result.extend_point (create {EV_COORDINATE}.make_precise (610, -150))
Result.extend_point (create {EV_COORDINATE}.make_precise (609, -139))
Result.extend_point (create {EV_COORDINATE}.make_precise (604, -135))
Result.extend_point (create {EV_COORDINATE}.make_precise (599, -122))
Result.extend_point (create {EV_COORDINATE}.make_precise (592, -123))
Result.extend_point (create {EV_COORDINATE}.make_precise (588, -118))
Result.extend_point (create {EV_COORDINATE}.make_precise (589, -111))
Result.extend_point (create {EV_COORDINATE}.make_precise (597, -105))
Result.extend_point (create {EV_COORDINATE}.make_precise (589, -103))
Result.extend_point (create {EV_COORDINATE}.make_precise (586, -92))
Result.extend_point (create {EV_COORDINATE}.make_precise (575, -79))
Result.extend_point (create {EV_COORDINATE}.make_precise (569, -82))
Result.extend_point (create {EV_COORDINATE}.make_precise (566, -84))
Result.extend_point (create {EV_COORDINATE}.make_precise (568, -90))
Result.extend_point (create {EV_COORDINATE}.make_precise (566, -93))
Result.extend_point (create {EV_COORDINATE}.make_precise (573, -95))
Result.extend_point (create {EV_COORDINATE}.make_precise (574, -103))
Result.extend_point (create {EV_COORDINATE}.make_precise (577, -115))
Result.extend_point (create {EV_COORDINATE}.make_precise (581, -117))
Result.extend_point (create {EV_COORDINATE}.make_precise (575, -118))
Result.extend_point (create {EV_COORDINATE}.make_precise (572, -127))
Result.extend_point (create {EV_COORDINATE}.make_precise (567, -131))
Result.extend_point (create {EV_COORDINATE}.make_precise (556, -121))
Result.extend_point (create {EV_COORDINATE}.make_precise (545, -125))
Result.extend_point (create {EV_COORDINATE}.make_precise (539, -123))
Result.extend_point (create {EV_COORDINATE}.make_precise (542, -120))
Result.extend_point (create {EV_COORDINATE}.make_precise (541, -114))
Result.extend_point (create {EV_COORDINATE}.make_precise (546, -117))
Result.extend_point (create {EV_COORDINATE}.make_precise (549, -108))
Result.extend_point (create {EV_COORDINATE}.make_precise (545, -105))
Result.extend_point (create {EV_COORDINATE}.make_precise (537, -99))
Result.extend_point (create {EV_COORDINATE}.make_precise (532, -101))
Result.extend_point (create {EV_COORDINATE}.make_precise (535, -94))
Result.extend_point (create {EV_COORDINATE}.make_precise (527, -87))
Result.extend_point (create {EV_COORDINATE}.make_precise (526, -83))
Result.extend_point (create {EV_COORDINATE}.make_precise (518, -77))
Result.extend_point (create {EV_COORDINATE}.make_precise (522, -73))
Result.extend_point (create {EV_COORDINATE}.make_precise (510, -65))
Result.extend_point (create {EV_COORDINATE}.make_precise (490, -53))
Result.extend_point (create {EV_COORDINATE}.make_precise (490, -47))
Result.extend_point (create {EV_COORDINATE}.make_precise (485, -52))
Result.extend_point (create {EV_COORDINATE}.make_precise (478, -66))
Result.extend_point (create {EV_COORDINATE}.make_precise (470, -65))
Result.extend_point (create {EV_COORDINATE}.make_precise (463, -70))
Result.extend_point (create {EV_COORDINATE}.make_precise (460, -80))
Result.extend_point (create {EV_COORDINATE}.make_precise (465, -92))
Result.extend_point (create {EV_COORDINATE}.make_precise (469, -136))
Result.extend_point (create {EV_COORDINATE}.make_precise (473, -144))
Result.extend_point (create {EV_COORDINATE}.make_precise (472, -151))
Result.extend_point (create {EV_COORDINATE}.make_precise (475, -164))
Result.extend_point (create {EV_COORDINATE}.make_precise (474, -177))
Result.extend_point (create {EV_COORDINATE}.make_precise (468, -189))
Result.extend_point (create {EV_COORDINATE}.make_precise (469, -194))
Result.extend_point (create {EV_COORDINATE}.make_precise (476, -191))
Result.extend_point (create {EV_COORDINATE}.make_precise (488, -196))
Result.extend_point (create {EV_COORDINATE}.make_precise (486, -199))
Result.extend_point (create {EV_COORDINATE}.make_precise (479, -196))
Result.extend_point (create {EV_COORDINATE}.make_precise (473, -204))
Result.extend_point (create {EV_COORDINATE}.make_precise (474, -209))
Result.extend_point (create {EV_COORDINATE}.make_precise (474, -215))
Result.extend_point (create {EV_COORDINATE}.make_precise (481, -223))
Result.extend_point (create {EV_COORDINATE}.make_precise (485, -215))
Result.extend_point (create {EV_COORDINATE}.make_precise (490, -218))
Result.extend_point (create {EV_COORDINATE}.make_precise (495, -212))
Result.extend_point (create {EV_COORDINATE}.make_precise (505, -217))
Result.extend_point (create {EV_COORDINATE}.make_precise (509, -230))
Result.extend_point (create {EV_COORDINATE}.make_precise (505, -236))
Result.extend_point (create {EV_COORDINATE}.make_precise (503, -239))
Result.extend_point (create {EV_COORDINATE}.make_precise (511, -245))
Result.extend_point (create {EV_COORDINATE}.make_precise (508, -250))
Result.extend_point (create {EV_COORDINATE}.make_precise (516, -251))
Result.extend_point (create {EV_COORDINATE}.make_precise (517, -256))
Result.extend_point (create {EV_COORDINATE}.make_precise (521, -260))
Result.extend_point (create {EV_COORDINATE}.make_precise (519, -263))
Result.extend_point (create {EV_COORDINATE}.make_precise (512, -260))
Result.extend_point (create {EV_COORDINATE}.make_precise (509, -266))
Result.extend_point (create {EV_COORDINATE}.make_precise (501, -265))
Result.extend_point (create {EV_COORDINATE}.make_precise (497, -258))
Result.extend_point (create {EV_COORDINATE}.make_precise (494, -253))
Result.extend_point (create {EV_COORDINATE}.make_precise (489, -252))
Result.extend_point (create {EV_COORDINATE}.make_precise (488, -266))
Result.extend_point (create {EV_COORDINATE}.make_precise (496, -264))
Result.extend_point (create {EV_COORDINATE}.make_precise (498, -268))
Result.extend_point (create {EV_COORDINATE}.make_precise (489, -276))
Result.extend_point (create {EV_COORDINATE}.make_precise (497, -284))
Result.extend_point (create {EV_COORDINATE}.make_precise (509, -278))
Result.extend_point (create {EV_COORDINATE}.make_precise (514, -274))
Result.extend_point (create {EV_COORDINATE}.make_precise (515, -282))
Result.extend_point (create {EV_COORDINATE}.make_precise (527, -295))
Result.extend_point (create {EV_COORDINATE}.make_precise (530, -307))
Result.extend_point (create {EV_COORDINATE}.make_precise (540, -302))
Result.extend_point (create {EV_COORDINATE}.make_precise (543, -309))
end
invariant
is_valid_sea_area: attached target_imp implies sea_area = game.indian_ocean
end

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,281 @@
note
description: "[
Widget that represents this VITP sea area
]"
author: "Jimmy J. Johnson"
class
MARIANAS_ISLANDS_WIDGET
inherit
SEA_AREA_WIDGET
redefine
create_interface_objects,
position_widgets,
build_land,
build_ocean
-- build_bounding_figure
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
Precursor {SEA_AREA_WIDGET}
iwo_jima := iwo_jima_imp
tinian := tinian_imp
saipan_mainland := saipan_mainland_imp
rota := rota_imp
guam := guam_imp
colonia := colonia_imp
palau := palau_imp
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {SEA_AREA_WIDGET}
scale_widget (land, 0.15)
rotate_widget (land, 13.0)
-- translate_widget (Current, 446, 183)
-- translate_widget (text_widget, 0, -20)
-- translate_widget (dot, 0, 30)
-- translate_widget (land, -21, 2)
set_point_position (446, 183)
land.set_point_position (351, 195)
name_mt.set_point_position (285, 220)
dot.set_point_position (315, 247)
-- flag.center_on_dot (dot)
flag.set_x_y (dot.x, dot.y)
dot.set_point_position (310, 270)
dot.set_foreground_color (Yellow)
dot.show
end
build_land
-- Add widgets to Current
do
Precursor {SEA_AREA_WIDGET}
-- Initialize attributes
land.extend (iwo_jima)
land.extend (tinian)
land.extend (saipan_mainland)
land.extend (rota)
land.extend (guam)
land.extend (colonia)
land.extend (palau)
end
build_ocean
-- Create the polygon representing the `ocean' here
-- Redefined to add the points
do
Precursor {SEA_AREA_WIDGET}
-- start at north-east point
ocean.extend_point (create {EV_COORDINATE}.make (0, 0))
ocean.extend_point (create {EV_COORDINATE}.make (36, 66))
ocean.extend_point (create {EV_COORDINATE}.make (-57, 132)) -- under Truk
ocean.extend_point (create {EV_COORDINATE}.make (-193, 132))
ocean.extend_point (create {EV_COORDINATE}.make (-226, 95)) -- under Philippines
ocean.extend_point (create {EV_COORDINATE}.make (-229, 68)) -- under Philippines
ocean.extend_point (create {EV_COORDINATE}.make (-221, 20))
end
-- build_bounding_figure
-- -- Add points to the `jj_bounding_figure'.
-- -- Redefined to use the tile edges as the bounding area
-- local
-- t: EV_MODEL_TRANSFORMATION
-- do
-- if has (jj_bounding_figure) then
-- prune_all (jj_bounding_figure)
-- end
-- create jj_bounding_figure
-- extend (jj_bounding_figure)
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (0, 0))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (36, 66))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (-57, 132)) -- under Truk
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (-193, 132))
---- bounding_figure.extend_point (create {EV_COORDINATE}.make (-226, 95)) -- under Philippines
---- bounding_figure.extend_point (create {EV_COORDINATE}.make (-229, 68)) -- under Philippines
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (-221, 20))
-- jj_bounding_figure.enable_closed
-- create t.make_zero
-- t.translate (446, 183)
-- jj_bounding_figure.transform (t)
-- jj_bounding_figure.set_line_width (2)
---- show_bounding_figure
-- end
feature -- Access
iwo_jima: EV_MODEL_POLYGON
tinian: EV_MODEL_POLYGON
saipan_mainland: EV_MODEL_POLYGON
rota: EV_MODEL_POLYGON
guam: EV_MODEL_POLYGON
colonia: EV_MODEL_POLYGON
palau: EV_MODEL_POLYGON
feature {NONE} -- Implementation
iwo_jima_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (1.1851851851852189, -5.3333333333333286))
Result.extend_point (create {EV_COORDINATE}.make_precise (0.59259259259260944, -8.8888888888888928))
Result.extend_point (create {EV_COORDINATE}.make_precise (-1.7777777777778283, -10.962962962962976))
Result.extend_point (create {EV_COORDINATE}.make_precise (2.3703703703703241, -11.259259259259252))
Result.extend_point (create {EV_COORDINATE}.make_precise (5.9259259259259807, -8.8888888888888928))
Result.extend_point (create {EV_COORDINATE}.make_precise (8.296296296296191, -8.8888888888888928))
Result.extend_point (create {EV_COORDINATE}.make_precise (8.296296296296191, -5.9259259259259309))
Result.extend_point (create {EV_COORDINATE}.make_precise (5.6296296296296759, -5.3333333333333286))
Result.extend_point (create {EV_COORDINATE}.make_precise (3.259259259259295, -2.0740740740740762))
end
tinian_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (198.81481481481478, 481.48148148148147))
Result.extend_point (create {EV_COORDINATE}.make_precise (198.22222222222217, 478.51851851851842))
Result.extend_point (create {EV_COORDINATE}.make_precise (196.14814814814815, 477.03703703703701))
Result.extend_point (create {EV_COORDINATE}.make_precise (196.14814814814815, 474.66666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (194.37037037037032, 474.66666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (194.96296296296293, 472.29629629629625))
Result.extend_point (create {EV_COORDINATE}.make_precise (196.74074074074076, 468.7407407407407))
Result.extend_point (create {EV_COORDINATE}.make_precise (197.92592592592587, 471.11111111111103))
Result.extend_point (create {EV_COORDINATE}.make_precise (198.22222222222217, 473.48148148148147))
Result.extend_point (create {EV_COORDINATE}.make_precise (200.2962962962963, 476.7407407407407))
end
saipan_mainland_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (206.51851851851859, 470.22222222222211))
Result.extend_point (create {EV_COORDINATE}.make_precise (202.66666666666663, 469.3333333333332))
Result.extend_point (create {EV_COORDINATE}.make_precise (199.11111111111109, 466.07407407407396))
Result.extend_point (create {EV_COORDINATE}.make_precise (200, 463.40740740740733))
Result.extend_point (create {EV_COORDINATE}.make_precise (201.77777777777771, 460.7407407407407))
Result.extend_point (create {EV_COORDINATE}.make_precise (202.96296296296293, 458.66666666666657))
Result.extend_point (create {EV_COORDINATE}.make_precise (205.33333333333337, 459.85185185185179))
Result.extend_point (create {EV_COORDINATE}.make_precise (205.03703703703695, 463.11111111111103))
Result.extend_point (create {EV_COORDINATE}.make_precise (207.11111111111109, 464.59259259259255))
Result.extend_point (create {EV_COORDINATE}.make_precise (207.11111111111109, 466.37037037037027))
Result.extend_point (create {EV_COORDINATE}.make_precise (205.03703703703695, 465.48148148148147))
Result.extend_point (create {EV_COORDINATE}.make_precise (205.03703703703695, 467.25925925925918))
end
rota_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (175.11111111111109, 515.25925925925912))
Result.extend_point (create {EV_COORDINATE}.make_precise (174.51851851851859, 512.5925925925925))
Result.extend_point (create {EV_COORDINATE}.make_precise (176.8888888888888, 511.99999999999983))
Result.extend_point (create {EV_COORDINATE}.make_precise (178.37037037037032, 510.51851851851842))
Result.extend_point (create {EV_COORDINATE}.make_precise (181.33333333333337, 510.81481481481484))
Result.extend_point (create {EV_COORDINATE}.make_precise (181.92592592592587, 512.5925925925925))
Result.extend_point (create {EV_COORDINATE}.make_precise (179.85185185185185, 512.5925925925925))
Result.extend_point (create {EV_COORDINATE}.make_precise (180.14814814814815, 514.07407407407391))
Result.extend_point (create {EV_COORDINATE}.make_precise (177.77777777777771, 514.96296296296282))
end
guam_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (160.8888888888888, 538.07407407407391))
Result.extend_point (create {EV_COORDINATE}.make_precise (162.96296296296293, 536.29629629629619))
Result.extend_point (create {EV_COORDINATE}.make_precise (164.74074074074076, 538.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (166.51851851851859, 539.25925925925912))
Result.extend_point (create {EV_COORDINATE}.make_precise (165.33333333333337, 542.51851851851836))
Result.extend_point (create {EV_COORDINATE}.make_precise (166.22222222222217, 546.07407407407391))
Result.extend_point (create {EV_COORDINATE}.make_precise (163.85185185185185, 547.85185185185173))
Result.extend_point (create {EV_COORDINATE}.make_precise (163.55555555555554, 549.92592592592587))
Result.extend_point (create {EV_COORDINATE}.make_precise (159.11111111111109, 551.40740740740728))
Result.extend_point (create {EV_COORDINATE}.make_precise (158.22222222222217, 553.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (157.62962962962968, 555.25925925925912))
Result.extend_point (create {EV_COORDINATE}.make_precise (154.96296296296293, 555.55555555555543))
Result.extend_point (create {EV_COORDINATE}.make_precise (153.18518518518522, 554.07407407407391))
Result.extend_point (create {EV_COORDINATE}.make_precise (152.2962962962963, 551.40740740740728))
Result.extend_point (create {EV_COORDINATE}.make_precise (153.77777777777771, 548.74074074074065))
Result.extend_point (create {EV_COORDINATE}.make_precise (151.70370370370358, 548.44444444444434))
Result.extend_point (create {EV_COORDINATE}.make_precise (153.77777777777771, 546.96296296296282))
Result.extend_point (create {EV_COORDINATE}.make_precise (157.03703703703695, 545.18518518518499))
Result.extend_point (create {EV_COORDINATE}.make_precise (159.70370370370358, 543.70370370370358))
Result.extend_point (create {EV_COORDINATE}.make_precise (159.11111111111109, 540.44444444444434))
end
colonia_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-147.25925925925921, 733.62962962962956))
Result.extend_point (create {EV_COORDINATE}.make_precise (-147.55555555555554, 730.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (-146.37037037037032, 726.51851851851836))
Result.extend_point (create {EV_COORDINATE}.make_precise (-144.29629629629628, 725.62962962962956))
Result.extend_point (create {EV_COORDINATE}.make_precise (-143.11111111111109, 722.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (-142.51851851851848, 724.74074074074053))
Result.extend_point (create {EV_COORDINATE}.make_precise (-140.1481481481481, 726.51851851851836))
Result.extend_point (create {EV_COORDINATE}.make_precise (-142.22222222222223, 728.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-143.70370370370367, 728.29629629629619))
Result.extend_point (create {EV_COORDINATE}.make_precise (-145.18518518518516, 730.37037037037021))
end
palau_imp: EV_MODEL_POLYGON
-- Make the polygon
do
create Result
-- Points generated by Grabber application
Result.extend_point (create {EV_COORDINATE}.make_precise (-306.37037037037032, 811.25925925925912))
Result.extend_point (create {EV_COORDINATE}.make_precise (-304.29629629629625, 809.7777777777776))
Result.extend_point (create {EV_COORDINATE}.make_precise (-303.11111111111109, 811.25925925925912))
Result.extend_point (create {EV_COORDINATE}.make_precise (-302.51851851851848, 813.33333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (-302.51851851851848, 817.18518518518499))
Result.extend_point (create {EV_COORDINATE}.make_precise (-301.03703703703695, 818.37037037037021))
Result.extend_point (create {EV_COORDINATE}.make_precise (-302.22222222222217, 819.85185185185173))
Result.extend_point (create {EV_COORDINATE}.make_precise (-301.62962962962956, 823.40740740740716))
Result.extend_point (create {EV_COORDINATE}.make_precise (-304.29629629629625, 826.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (-305.48148148148141, 827.85185185185173))
Result.extend_point (create {EV_COORDINATE}.make_precise (-308.1481481481481, 829.62962962962956))
Result.extend_point (create {EV_COORDINATE}.make_precise (-309.92592592592587, 831.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-311.40740740740733, 832.59259259259238))
Result.extend_point (create {EV_COORDINATE}.make_precise (-312.8888888888888, 832.88888888888869))
Result.extend_point (create {EV_COORDINATE}.make_precise (-313.77777777777771, 834.66666666666652))
Result.extend_point (create {EV_COORDINATE}.make_precise (-313.48148148148141, 837.03703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (-316.4444444444444, 837.03703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (-314.96296296296288, 832.59259259259238))
Result.extend_point (create {EV_COORDINATE}.make_precise (-312.29629629629625, 831.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-311.40740740740733, 828.14814814814804))
Result.extend_point (create {EV_COORDINATE}.make_precise (-309.03703703703695, 826.37037037037021))
Result.extend_point (create {EV_COORDINATE}.make_precise (-309.62962962962956, 823.70370370370358))
Result.extend_point (create {EV_COORDINATE}.make_precise (-310.51851851851848, 821.33333333333314))
Result.extend_point (create {EV_COORDINATE}.make_precise (-308.74074074074065, 821.03703703703695))
Result.extend_point (create {EV_COORDINATE}.make_precise (-309.03703703703695, 818.96296296296282))
Result.extend_point (create {EV_COORDINATE}.make_precise (-306.96296296296293, 816.29629629629619))
Result.extend_point (create {EV_COORDINATE}.make_precise (-304.5925925925925, 815.11111111111097))
Result.extend_point (create {EV_COORDINATE}.make_precise (-304.5925925925925, 812.14814814814804))
end
invariant
is_valid_sea_area: attached target_imp implies sea_area = game.Marianas_islands
end

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,117 @@
note
description: "[
Widget that represents this VITP sea area
]"
author: "Jimmy J. Johnson"
class
NORTH_PACIFIC_OCEAN_WIDGET
inherit
SEA_AREA_WIDGET
redefine
create_interface_objects,
position_widgets,
build_land,
build_ocean
-- build_bounding_figure
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
do
Precursor {SEA_AREA_WIDGET}
aleutians_east := aleutians_east_imp
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {SEA_AREA_WIDGET}
translate_widget (Current, 704, 236)
translate_widget (name_mt, -80, -110)
translate_widget (dot, -40, -80)
-- flag.center_on_dot (dot)
flag.set_x_y (dot.x, dot.y)
end
build_land
-- Build the `land'
do
Precursor {SEA_AREA_WIDGET}
-- Initialize attributes
land.extend (aleutians_east)
end
build_ocean
-- Create the polygon representing the `ocean' here
-- Redefined to add the points
do
Precursor {SEA_AREA_WIDGET}
-- start at bottom south-west corner
ocean.extend_point (create {EV_COORDINATE}.make (0, 0))
ocean.extend_point (create {EV_COORDINATE}.make (-63, -2))
ocean.extend_point (create {EV_COORDINATE}.make (-96, -105))
ocean.extend_point (create {EV_COORDINATE}.make (0, -210))
end
-- build_bounding_figure
-- -- Add points to the `jj_bounding_figure'.
-- -- Redefined to use the tile edges as the bounding area
-- do
-- if has (jj_bounding_figure) then
-- prune_all (jj_bounding_figure)
-- end
-- create jj_bounding_figure
-- extend (jj_bounding_figure)
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (0, 0))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (-63, -2))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (-96, -105))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (0, -210))
-- jj_bounding_figure.enable_closed
-- translate_widget (jj_bounding_figure, 704, 236)
-- jj_bounding_figure.set_line_width (2)
-- end
feature -- Access
aleutians_east: EV_MODEL_POLYGON
-- The one brown island in the {NORTH_PACIFIC_OCEAN_WIDGET}.
feature {NONE} -- Implementation
aleutians_east_imp: EV_MODEL_POLYGON
-- Create the polygon for theisland north of Australia
local
t: EV_MODEL_TRANSFORMATION
do
create Result
-- Start at north point
Result.extend_point (create {EV_COORDINATE}.make_precise (0, 0))
Result.extend_point (create {EV_COORDINATE}.make_precise (1, 0.5))
Result.extend_point (create {EV_COORDINATE}.make_precise (2, 1))
Result.extend_point (create {EV_COORDINATE}.make_precise (2, 5))
Result.extend_point (create {EV_COORDINATE}.make_precise (1.5, 5.5))
Result.extend_point (create {EV_COORDINATE}.make_precise (0.5, 5))
Result.extend_point (create {EV_COORDINATE}.make_precise (-0.5, 6))
Result.extend_point (create {EV_COORDINATE}.make_precise (-4, 4))
Result.extend_point (create {EV_COORDINATE}.make_precise (-5, 3))
Result.extend_point (create {EV_COORDINATE}.make_precise (-7, 3))
create t.make_zero
t.translate (-2, -200)
Result.transform (t)
end
invariant
is_valid_sea_area: attached target_imp implies sea_area = game.north_pacific_ocean
end

View File

@@ -0,0 +1,367 @@
note
description: "[
Widget representing a {SEA_AREA}.
]"
author: "Jimmy J. Johnson"
deferred class
SEA_AREA_WIDGET
inherit
LOCATION_WIDGET
rename
location as sea_area
redefine
create_interface_objects,
-- initialize,
extend_widgets,
build_widgets,
set_fonts_and_colors,
position_widgets,
set_widget_order,
add_actions,
set_target,
set_dimming_level,
-- set_font,
paint,
on_button_released,
-- on_pointer_motion,
target_imp
end
feature {NONE} -- Initialization
create_interface_objects
-- Set up the widgets in Current.
do
Precursor {LOCATION_WIDGET}
create ships_to_mt
create japan_poc_mt
create allies_poc_mt
create ocean
create flag.make (sea_area)
create saved_point
end
extend_widgets
-- Put widgets into Current. This cannot be done
-- in `create_interface_object', because cannot call
-- `extend' feature until all objects [in descendants]
-- are also created.
do
text_group.extend (ships_to_mt)
text_group.extend (japan_poc_mt)
text_group.extend (allies_poc_mt)
extend (ocean)
extend (flag)
Precursor {LOCATION_WIDGET}
end
build_widgets
-- Now that widgets were created in `create_interface_objects'
-- and added to Current in `extend_widgets', build up the
-- widgets by adding internal structure to each widget.
do
Precursor {LOCATION_WIDGET}
build_ocean
end
set_fonts_and_colors
-- Set the default fonts for any text widgets and set
-- the default colors for any contained widgets.
do
Precursor {LOCATION_WIDGET}
background_color := Sea_area_color
name_mt.set_font (Sea_area_font)
ships_to_mt.set_font (Subtext_font)
japan_poc_mt.set_font (POC_font)
allies_poc_mt.set_font (POC_font)
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
local
px, py: INTEGER
do
Precursor {LOCATION_WIDGET}
-- Use the first point in the sea area as the reference
-- The sea area was centered on the dot which is at 0, 0
-- We now need to move the sea area so its reference point (the zero-zero
-- point that was the starting point measured on the map) is at the
-- origin instead of the `dot' at the origin.
-- We can't really physically measure the center point of the ocean
-- on the game board, because it is determined by the computer; there
-- is no physical point on the actual game board that marks the center.
check
ocean_was_defined: ocean.point_count >= 1
-- because of the call to `build_ocean'
end
px := ocean.i_th_point_x (1)
py := ocean.i_th_point_y (1)
translate_widget (Current, -px, -py)
-- translate_widget (flag, 40, 180)
-- translate_widget (text_widget, 20, 150)
end
set_widget_order
-- Ensure the widgets are ordered properly
-- (i.e. whose on top?)
do
Precursor {LOCATION_WIDGET}
-- Bring all the text to front
-- bring_to_front (name_mt)
-- bring_to_front (ships_to_mt)
-- bring_to_front (japan_poc_mt)
-- bring_to_front (allies_poc_mt)
-- Set order for other widgets
bring_to_front (ocean)
bring_to_front (land)
bring_to_front (text_group)
bring_to_front (flag)
bring_to_front (dot)
end
build_ocean
-- Add defining points to the `ocean'.
do
end
add_actions
-- Add actions to the port (really just the marker)
do
Precursor {LOCATION_WIDGET}
-- drop_actions.extend (agent on_drop_unit)
flag.pointer_button_press_actions.extend (agent on_flag_pressed)
-- pointer_button_release_actions.extend (agent on_button_released)
-- pointer_motion_actions.extend (agent on_pointer_moved)
jj_defining_figure.pointer_leave_actions.extend (agent on_leave_bounding_figure)
end
position_text
-- Set the position of the text inside Current
local
nh: REAL_64
n_mid: REAL_64
x_mid: REAL_64
ax, ay: INTEGER
d: REAL_64
t: EV_MODEL_TRANSFORMATION
do
nh := name_mt.height
ships_to_mt.set_x_y (name_mt.x, name_mt.y + name_mt.height // 2)
japan_poc_mt.set_y (ships_to_mt.y + ships_to_mt.height)
allies_poc_mt.set_y (ships_to_mt.y + ships_to_mt.height)
japan_poc_mt.set_x (name_mt.x - japan_poc_mt.width)
allies_poc_mt.set_x (name_mt.x + allies_poc_mt.width)
end
feature -- Element change
set_target (a_target: like sea_area)
-- Change the `target'.
local
s, s1, s2: STRING
pos: INTEGER
do
Precursor {LOCATION_WIDGET} (a_target)
flag.set_location (sea_area)
ships_to_mt.set_text (ships_to_text)
japan_poc_mt.set_text (japan_poc_text)
allies_poc_mt.set_text (allies_poc_text)
position_text
end
set_dimming_level (a_level: like dimming_level)
-- Change the `dimming_level'
do
Precursor {LOCATION_WIDGET} (a_level)
flag.set_dimming_level (a_level)
paint
end
-- set_font (a_font: EV_FONT)
-- -- Change the appearance of the `font' from which
-- -- the fonts (height, weight, etc.) of any text
-- -- widgets in Current can be based.
-- local
-- f: EV_FONT
-- do
-- font := a_font
-- name_mt.set_font (font)
-- -- Set the other text models based on `font'
-- f := font.twin
-- f.set_height (f.height // 2)
-- ships_to_mt.set_font (f)
-- f := font.twin
-- f.set_height (f.height // 2)
-- japan_poc_mt.set_font (f)
-- allies_poc_mt.set_font (f)
-- end
feature -- Basic operations
-- on_drop_unit (a_unit: ATTACK_UNIT)
-- -- React to `a_unit' dropped into Current
-- do
-- io.put_string ("SEA_AREA_WIDGET.on_drop_unit: " + a_unit.name + " dropped on " + Current.sea_area.name + "%N")
-- end
restore_flag_position
-- Reset the `flag' to its default position (i.e. centered on `dot')
do
flag.set_x_y (dot.x, dot.y)
end
paint
-- Set the colors for all widgets in Current
do
Precursor {LOCATION_WIDGET}
print ("SEA_AREA_WIDGET.paint: dimming level = " + dimming_level.out + "%N")
ships_to_mt.set_foreground_color (adjusted_color (foreground_color))
japan_poc_mt.set_foreground_color (adjusted_color (foreground_color))
allies_poc_mt.set_foreground_color (adjusted_color (foreground_color))
ocean.set_foreground_color (adjusted_color (background_color))
ocean.set_background_color (adjusted_color (background_color))
flag.paint
end
feature {NONE} -- Implementation (actions)
on_flag_pressed (ax: INTEGER; ay: INTEGER; a_button: INTEGER; x_tilt: DOUBLE; y_tilt: DOUBLE;
pressure: DOUBLE; a_screen_x: INTEGER; a_screen_y: INTEGER)
-- The `flag' was pressed
do
io.put_string ("SEA_AREA_WIDGET.on_flag_pressed: button " + a_button.out + " released at (" + ax.out + ", " + ay.out + ") %N")
is_dragging_flag := True
saved_point.set (ax, ay)
enable_capture
end
on_button_released (ax: INTEGER; ay: INTEGER; a_button: INTEGER; x_tilt: DOUBLE; y_tilt: DOUBLE;
pressure: DOUBLE; a_screen_x: INTEGER; a_screen_y: INTEGER)
local
c: detachable EV_COORDINATE
do
Precursor {LOCATION_WIDGET} (ax, ay, a_button, x_tilt, y_tilt, pressure, a_screen_x, a_screen_y)
io.put_string ("SEA_AREA_WIDGET.on_button_release: button " + a_button.out + " released at (" + ax.out + ", " + ay.out + ") %N")
-- Precursor {LOCATION_WIDGET} (ax, ay, a_button, x_tilt, y_tilt, pressure, a_screen_x, a_screen_y)
if is_dragging_flag then
create c.make (ax, ay)
-- flag.center_on_point (c)
flag.set_x_y (c.x, c.y)
disable_capture
end
is_dragging_flag := False
end
on_leave_bounding_figure
-- If pointer leaves `jj_bounding_figure', then release the capture and drop the flag
do
if is_dragging_flag then
-- flag.center_on_point (saved_point)
flag.set_x_y (saved_point.x, saved_point.y)
disable_capture
end
is_dragging_flag := False
end
on_pointer_motion (ax: INTEGER; ay: INTEGER; x_tilt: DOUBLE; y_tilt: DOUBLE;
pressure: DOUBLE; a_screen_x: INTEGER; a_screen_y: INTEGER)
-- The pointer is moving
do
-- Precursor {LOCATION_WIDGET} (ax, ay, x_tilt, y_tilt, pressure, a_screen_x, a_screen_y)
saved_point.set (ax, ay)
if is_dragging_flag then
-- flag.center_on_point (saved_point)
flag.set_x_y (saved_point.x, saved_point.y)
end
end
feature {NONE} -- Implementation
ships_to_text: STRING
-- The line of text that is under the sea area name, begining with "Ships to..."
do
Result := "Ships to (if friendly) " + adjacent_ports_text + " or any RED port"
-- Look up the list of adjacent ports in the game graph?
end
japan_poc_text: STRING
-- The line of text for the Japanese POC
do
Result := "JAPAN " + sea_area.japanese_poc.out + " POC"
end
allies_poc_text: STRING
-- The line of text for the Japanese POC
do
Result := "ALLIES " + sea_area.allied_poc.out + " POC"
end
adjacent_ports_text: STRING
-- The names of green ports touching this sea area.
local
lin: LINEAR [PORT]
i, n: INTEGER
p: PORT
do
Result := ""
lin := sea_area.adjoining_ports
-- Count green ports
from lin.start
until lin.exhausted
loop
if attached {GREEN_PORT} lin.item then
n := n + 1
end
lin.forth
end
from lin.start
until lin.exhausted
loop
p := lin.item
lin.forth
if attached {GREEN_PORT} p then
Result := Result + p.name
i := i + 1
if n >= 3 and i < n then
Result := Result + ", "
elseif n >= 2 and i < n then
Result := Result + " or "
end
end
end
end
feature {NONE} -- Implementation
ships_to_mt: EV_MODEL_TEXT
-- Displays the "Ships to ..." text
japan_poc_mt: EV_MODEL_TEXT
-- Displays the Japanese poc text
allies_poc_mt: EV_MODEL_TEXT
-- Displays the Allies poc text
ocean: EV_MODEL_POLYGON
-- To draw the blue sea
flag: FLAG
-- The control marker for this sea area
is_dragging_flag: BOOLEAN
-- Is the `flag' being moved?
saved_point: EV_COORDINATE
-- The location withing Currenty to where the mouse last moved
target_imp: detachable SEA_AREA
-- Anchor for the `target' represented by Current
invariant
end

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,81 @@
note
description: "[
Widget that represents this VITP sea area
]"
author: "Jimmy J. Johnson"
class
US_MANDATE_WIDGET
inherit
SEA_AREA_WIDGET
redefine
position_widgets,
build_ocean
-- build_bounding_figure
end
create
make
feature {NONE} -- Initialization
position_widgets
-- Move Current and contained widgets to correct
-- location and set their their sizes
do
Precursor {SEA_AREA_WIDGET}
translate_widget (Current, 449, 553)
translate_widget (name_mt, 50, -95)
translate_widget (dot, 70, -70)
-- flag.center_on_dot (dot)
flag.set_x_y (dot.x, dot.y)
translate_widget (dot, 40, -40)
end
build_ocean
-- Create the polygon representing the `ocean' here
-- Redefined to add the points
do
Precursor {SEA_AREA_WIDGET}
-- start at bottom south-west corner
ocean.extend_point (create {EV_COORDINATE}.make (0, 0))
ocean.extend_point (create {EV_COORDINATE}.make (5, -112))
ocean.extend_point (create {EV_COORDINATE}.make (77, -116)) -- y ~116
ocean.extend_point (create {EV_COORDINATE}.make (104, -164))
ocean.extend_point (create {EV_COORDINATE}.make (255, -69))
ocean.extend_point (create {EV_COORDINATE}.make (255, 0))
end
-- build_bounding_figure
-- -- Add points to the `jj_bounding_figure'.
-- -- Redefined to use the tile edges as the bounding area
-- local
-- t: EV_MODEL_TRANSFORMATION
-- do
-- if has (jj_bounding_figure) then
-- prune_all (jj_bounding_figure)
-- end
-- create jj_bounding_figure
-- extend (jj_bounding_figure)
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (0, 0))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (5, -112))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (77, -116)) -- y ~116
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (104, -164))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (255, -69))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (255, 0))
-- jj_bounding_figure.enable_closed
-- create t.make_zero
-- t.translate (449, 553) -- 553 is the board height (not including black boarder)
-- jj_bounding_figure.transform (t)
-- jj_bounding_figure.set_line_width (2)
---- show_bounding_figure
-- end
invariant
is_valid_sea_area: attached target_imp implies sea_area = game.us_mandate
no_land: land.is_empty
end

View File

@@ -0,0 +1,56 @@
note
description: "[
A widget connecting interface to an AIR_UNIT for use in Victory in the Pacific.
]"
author: "Jimmy J. Johnson"
class
AIR_UNIT_WIDGET
inherit
ATTACK_UNIT_WIDGET
redefine
position_widgets,
unit_color,
target_imp
end
create
make
feature {NONE} -- Initialization
position_widgets
-- Redefined to make smaller than the attack widget
do
Precursor {ATTACK_UNIT_WIDGET}
scale (0.7)
end
feature -- Access
feature {NONE} -- Implementation
unit_color: EV_COLOR
-- Get the color to paint the tile based on the unit's nationality
do
if unit.nationality = {NATIONALITY_CONSTANTS}.Japanese then
Result := Japanese_air_unit_color
elseif unit.nationality = {NATIONALITY_CONSTANTS}.us then
Result := US_air_unit_color
else
check
should_not_happen: False
end
Result := Green
end
end
feature {NONE} -- Implementation
target_imp: detachable AIR_UNIT
-- Anchor for the `target' represented by Current
end

View File

@@ -0,0 +1,111 @@
note
description: "[
An {VITP_WIDGET} representing the Allied air units.
Redefined from {AIR_UNIT_WIDGET} in order to add, color,
and position the pictures for the other aircraft
on the tile.
]"
author: "Jimmy J. Johnson"
date: "3/3/24"
copyright: "Copyright (c) 2021, Jimmy J. Johnson"
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
class
ALLIED_AIR_UNIT_WIDGET
inherit
AIR_UNIT_WIDGET
redefine
create_interface_objects,
extend_widgets,
position_widgets,
set_widget_order,
paint
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Create attributes
do
Precursor {AIR_UNIT_WIDGET}
-- create empty polygons for the extra plane
create picture_2
end
extend_widgets
-- Put widgets into Current. This cannot be done
-- in `create_interface_object', because cannot call
-- `extend' feature until all objects [in descendants]
-- are also created.
local
list: ARRAYED_LIST [EV_COORDINATE]
do
Precursor {AIR_UNIT_WIDGET}
extend (picture_2)
-- Precursor adds points to `picture', not do other one
list := silhouette_coordinates (unit)
from list.start
until list.after
loop
-- `extend_point' adds a copy of the point
picture_2.extend_point (list.item)
list.forth
end
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their sizes
do
Precursor {AIR_UNIT_WIDGET}
-- The scale coming through the Precursor from
-- {ATTACK_UNIT_WIDGET} is "scale (0.1)" which makes
-- placement of the planes too fine, therefore, this
-- feature scales the widget back up, moves the sub-
-- widgets, then scales back down.
scale (10)
picture.scale (0.07) -- lead
picture_2.scale (0.07) -- right wingman
-- Rotate the planes 90 degrees
picture.rotate (Pi/2)
picture_2.rotate (Pi/2)
-- Position the planes
picture.set_x_y (tile.x - 28, tile.y - 5)
picture_2.set_x_y (tile.x + 28, tile.y - 5)
-- Scale back down
scale (0.1)
end
set_widget_order
-- Ensure the widgets are ordered properly
-- (i.e. whose on top?)
do
Precursor {AIR_UNIT_WIDGET}
bring_to_front (picture_2)
end
feature -- Basic operations
paint
-- Set the colors for the `tile'
do
Precursor
-- Cyan so I could tell which plane was which
picture.set_foreground_color (adjusted_color (Black))
picture.set_background_color (adjusted_color (Black))
picture_2.set_foreground_color (adjusted_color (Black))
picture_2.set_background_color (adjusted_color (Black))
end
feature {NONE} -- Implementation
picture_2: EV_MODEL_POLYGON
-- The silhouette (or shape) of the 2nd airplane
-- on the tile
end

View File

@@ -0,0 +1,65 @@
note
description: "[
A widget connecting interface to an AMPHIBIOUS_UNIT for use in VITP.
]"
author: "Jimmy J. Johnson"
class
AMPHIBIOUS_UNIT_WIDGET
inherit
ATTACK_UNIT_WIDGET
redefine
position_widgets,
-- build_picture,
unit_color,
target_imp
end
create
make
feature {NONE} -- Initialization
position_widgets
-- Redefined to make smaller than the attack widget
do
Precursor {ATTACK_UNIT_WIDGET}
scale (0.7)
picture.scale (0.13)
picture.set_x_y (tile.x, tile.y)
end
-- build_picture
-- -- Build the `picture'.
-- do
-- -- The `silhouette_table' contains a function for
-- -- the `Amphibious_symbol' indexed by the Yokosuka.
---- picture.copy (silhouette (game.yokosuka))
---- picture.add_points (game.yokosuka)
-- end
feature {NONE} -- Implementation
unit_color: EV_COLOR
-- Get the color to paint the tile based on the unit's nationality
do
if unit.nationality = {NATIONALITY_CONSTANTS}.japanese then
Result := Japanese_air_unit_color
elseif unit.nationality = {NATIONALITY_CONSTANTS}.us then
Result := US_air_unit_color
else
Result := Green
check
should_not_happen: False
end
end
end
feature {NONE} -- Implementation
target_imp: detachable AMPHIBIOUS_UNIT
-- Anchor for the `target' represented by Current
end

View File

@@ -0,0 +1,569 @@
note
description: "[
Connects an attack unit to a Eiffel Vision widget.
]"
author: "Jimmy J. Johnson"
deferred class
ATTACK_UNIT_WIDGET
inherit
VITP_WIDGET
rename
target as unit
redefine
create_interface_objects,
extend_widgets,
build_widgets,
set_fonts_and_colors,
position_widgets,
set_widget_order,
-- build_bounding_figure,
add_actions,
-- position_sub_widgets,
set_target,
paint,
position_on_figure,
target_imp
end
inherit {NONE}
SILHOUETTE_CONSTANTS
undefine
default_create
end
feature {NONE} -- Initialization
create_interface_objects
-- Create attributes
do
Precursor {VITP_WIDGET}
create tile
create border.make (default_tile_size, default_tile_size, border_size)
create bonus_circle
create air_bonus_circle
create anchor
create gunnery_factor_mt
create defense_factor_mt
create speed_factor_mt
create air_strike_factor_mt
-- create picture.make_with_coordinates (silhouette_coordinates (unit))
create picture
end
extend_widgets
-- Put widgets into Current. This cannot be done
-- in `create_interface_object', because cannot call
-- `extend' feature until all objects [in descendants]
-- are also created.
local
list: ARRAYED_LIST [EV_COORDINATE]
do
Precursor {VITP_WIDGET}
extend (tile)
extend (border)
extend (bonus_circle)
extend (air_bonus_circle)
extend (anchor)
extend (picture)
text_group.extend (gunnery_factor_mt)
text_group.extend (defense_factor_mt)
text_group.extend (speed_factor_mt)
text_group.extend (air_strike_factor_mt)
-- Add points to the `tile'
tile.extend_point (create {EV_COORDINATE}.make (0, 0))
tile.extend_point (create {EV_COORDINATE}.make (default_tile_size.rounded, 0))
tile.extend_point (create {EV_COORDINATE}.make (default_tile_size.rounded, default_tile_size.rounded))
tile.extend_point (create {EV_COORDINATE}.make (0, default_tile_size.rounded))
-- Add points to `picture'
list := silhouette_coordinates (unit)
from list.start
until list.after
loop
-- `extend_point' adds a copy of the point
picture.extend_point (list.item)
list.forth
end
end
build_widgets
-- Now that widgets were created in `create_interface_objects'
-- and added to Current in `extend_widgets', build up the
-- widgets by adding internal structure to each widget.
do
Precursor {VITP_WIDGET}
end
set_fonts_and_colors
-- Set the default fonts for any text widgets and set
-- the default colors for any contained widgets.
do
Precursor {VITP_WIDGET}
name_mt.set_font (Unit_name_font)
gunnery_factor_mt.set_font (Unit_speed_font)
defense_factor_mt.set_font (Unit_speed_font)
speed_factor_mt.set_font (Unit_speed_font)
air_strike_factor_mt.set_font (unit_air_font)
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their sizes
do
Precursor {VITP_WIDGET}
-- center_widget_on_other (picture, tile)
picture.set_x_y (tile.x, tile.y)
-- Set size and position for circles
bonus_circle.set_point_a_position (tile.x - 70, tile.y + 30)
bonus_circle.set_point_b_position (tile.x - 30, tile.y + 70)
air_bonus_circle.set_point_a_position (tile.x + 45, tile.y - 55)
air_bonus_circle.set_point_b_position (tile.x + 85, tile.y - 15)
-- -- Center name and defense factor to start
name_mt.set_text (unit.name)
name_mt.set_x_y (tile.x, tile.y - 77)
gunnery_factor_mt.set_x_y (tile.x - 75, tile.y + 70)
defense_factor_mt.set_x_y (tile.x - 5, tile.y + 70)
speed_factor_mt.set_x_y (tile.x + 60, tile.y + 70)
air_strike_factor_mt.set_x_y (tile.x + 65, tile.y - 40)
anchor.scale (0.5)
anchor.set_x_y (tile.x - 60, tile.y - 60)
text_group.scale (0.80)
scale (0.1)
end
set_widget_order
-- Ensure the widgets are ordered properly
-- (i.e. whose on top?)
do
Precursor {VITP_WIDGET}
bring_to_front (anchor)
bring_to_front (text_group)
bring_to_front (picture)
-- dot.hide
end
build_tile
-- Create the `tile
do
tile.extend_point (create {EV_COORDINATE}.make (0, 0))
tile.extend_point (create {EV_COORDINATE}.make (default_tile_size.rounded, 0))
tile.extend_point (create {EV_COORDINATE}.make (default_tile_size.rounded, default_tile_size.rounded))
tile.extend_point (create {EV_COORDINATE}.make (0, default_tile_size.rounded))
ensure
correct_point_count: tile.point_count = 4
end
-- build_bounding_figure
-- -- Add points to the `jj_bounding_figure'.
-- -- Redefined to use the tile edges as the bounding area
-- do
-- if has (jj_bounding_figure) then
-- prune_all (jj_bounding_figure)
-- end
-- create jj_bounding_figure
-- extend (jj_bounding_figure)
-- jj_bounding_figure.extend_point (tile.point_array.item (0))
-- jj_bounding_figure.extend_point (tile.point_array.item (1))
-- jj_bounding_figure.extend_point (tile.point_array.item (2))
-- jj_bounding_figure.extend_point (tile.point_array.item (3))
-- jj_bounding_figure.enable_closed
-- jj_bounding_figure.set_line_width (2)
-- jj_bounding_figure.hide
-- end
add_actions
-- Add delayed function calls to the widgets
do
Precursor {VITP_WIDGET}
set_pebble (unit)
set_accept_cursor ((create {EV_STOCK_PIXMAPS}).hyperlink_cursor)
-- set_pebble_function (agent on_get_pebble)
-- pick_actions.extend (agent on_picked)
-- pointer_button_press_actions.extend (agent on_clicked)
-- tile.pick_actions.extend (agent on_picked (unit, ?, ?))
-- picture.pick_actions.extend (agent on_picked (unit, ?, ?))
end
on_clicked (a_x, a_y, button: INTEGER;
a_x_tilt, a_y_tilt, a_pressure: DOUBLE;
a_screen_x, a_screen_y: INTEGER)
-- React to a button click for testing
do
io.put_string ("ATTACK_UNIT_WIDGET.on_clicked: on " + unit.name + "%N")
if attached vitp_world as bw then
-- bw.on_notify_button_pressed (a_unit, a_x, a_y, button)
end
end
feature -- Access
default_tile_size: REAL_64 = 200.0
-- Size used for building Current, resizing after built
tile_size: REAL_64
-- The size of the `tile' after finished scaling Current
do
Result := tile.i_th_point_x (2) - tile.i_th_point_x (1)
end
color: EV_COLOR
-- The color of the `tile'
do
if attached tile.background_color as c then
Result := c
else
Result := Green
end
end
feature -- Element change
set_target (a_target: like unit)
-- Set up Current based on `a_target'
local
s: REAL_64
ax, ay, o_set: REAL_64
t: EV_MODEL_TRANSFORMATION
do
Precursor {VITP_WIDGET} (a_target)
gunnery_factor_mt.set_text (unit.gunnery_factor.out)
defense_factor_mt.set_text (unit.defense_factor.out)
speed_factor_mt.set_text (unit.speed_factor.out)
air_strike_factor_mt.set_text (unit.airstrike_factor.out)
paint
-- pick_actions.wipe_out
-- pointer_button_press_actions.extend (agent on_clicked (unit, ?,?,?,?,?,?,?,?))
-- pick_actions.extend (agent on_picked (unit, ?, ?))
end
feature -- Basic operations
paint
-- Set the colors for the `tile'
local
c: EV_COLOR
bc: EV_COLOR
ac: EV_COLOR
do
Precursor {VITP_WIDGET}
c := unit_color
bc := border_color
bonus_circle.hide
air_bonus_circle.hide
if unit.attack_bonus then
if unit.airstrike_factor > 0 then
air_bonus_circle.show
else
bonus_circle.show
end
end
if is_flipped then
ac := adjusted_color (white)
tile.set_background_color (ac)
border.set_color (ac)
if is_flat then
border.hide
tile.set_foreground_color (bc)
else
border.show
border.paint
end
picture.set_foreground_color (bc)
picture.set_background_color (bc)
-- paint the circle even if it is not shown
bonus_circle.set_foreground_color (bc)
bonus_circle.remove_background_color
air_bonus_circle.set_foreground_color (bc)
air_bonus_circle.remove_background_color
else
ac := adjusted_color (c)
tile.set_background_color (ac)
border.set_color (ac)
if is_flat then
border.hide
else
border.show
border.paint
end
-- picture.set_color (adjusted_color (Dark_grey))
picture.set_foreground_color (adjusted_color (Black))
picture.set_background_color (adjusted_color (Black))
bonus_circle.set_foreground_color (adjusted_color (White))
bonus_circle.set_background_color (adjusted_color (White))
air_bonus_circle.set_foreground_color (adjusted_color (White))
air_bonus_circle.set_background_color (adjusted_color (White))
end
paint_text
-- Remove the line from around the polygon
tile.set_line_width (0)
-- Draw the anchor if the ship is in port
if game.ports.has (unit.location.name) then
anchor.show
anchor.set_foreground_color (adjusted_color (Silver))
anchor.set_background_color (adjusted_color (Silver))
-- anchor.set_color (Silver)
-- anchor.set_color (Green)
-- anchor.set_color (Yellow)
-- anchor.set_color (Steel)
-- anchor.set_color (Cyan)
-- anchor.set_color (Chrome)
-- anchor.set_color (Bronze)
else
anchor.hide
end
end
paint_text
-- Set the color of the text fields
local
c: EV_COLOR
do
c := adjusted_color (foreground_color)
if is_flipped then
c := adjusted_color (background_color)
c := adjusted_color (Black)
else
c := adjusted_color (Black)
end
name_mt.set_foreground_color (c)
gunnery_factor_mt.set_foreground_color (c)
defense_factor_mt.set_foreground_color (c)
speed_factor_mt.set_foreground_color (c)
air_strike_factor_mt.set_foreground_color (c)
if unit.attack_bonus and unit.airstrike_factor > 0 then
air_strike_factor_mt.show
else
air_strike_factor_mt.hide
end
end
feature -- Status report
is_flipped: BOOLEAN
-- Is the back of the tile showing?
is_flat: BOOLEAN
-- Should Current be drawn as a flat tile?
feature -- Status setting
flip
-- Toggle the flip status
do
io.put_string ("ATTACK_UNIT_WIDGET.flip_tile %N")
if is_flipped then
set_unflipped
else
set_flipped
end
paint
end
set_flipped
-- Show the back of the tile
do
is_flipped := True
paint
end
set_unflipped
-- Show the front of the tile
do
is_flipped := False
paint
end
set_flat
-- Cause the widget to be painted as a flat tile
do
is_flat := True
paint
end
set_raised
-- Cause the widget to be painted as a 3-d tile
do
is_flat := False
paint
end
feature -- Query
position_on_figure (ax, ay: INTEGER_32): BOOLEAN
-- Is the point on (`ax', `ay') on this figure?
do
-- Result := ax >= tile.i_th_point_x (1) and ax <= tile.i_th_point_x (2) and
-- ay >= tile.i_th_point_y (1) and ay <= tile.i_th_point_y (3)
Result := tile.position_on_figure (ax, ay)
end
feature {NONE} -- Actions
-- prepick_operations
-- -- Feature called by `on_picked' when a pick-and-put (PNP)
-- -- operation starts (i.e. when a right-click occurs).
-- -- Because the operations must have started in Current, the
-- -- pebble in transport must be `unit' which is from Current.
-- local
-- sop: VITP_SEQUENCE_OF_PLAY
-- s: LINKED_SET [PORT]
-- v: VIEW
-- lin: LINEAR [VIEW]
-- do
-- print ("{ATTACK_UNIT_WIDGET}.prepick_operations %N")
--print ("%T {ATTACK_UNIT_WIDGET}.prepick_operations: unit = " + unit.name + "%N")
-- sop := game.sequence_of_play
-- if sop.is_reinforcement_step then
-- -- Get ports to which `unit' may move ...
-- s := unit.reinforceable_ports
-- -- ... and add drop agent for the widgets
-- lin := linear_with_set (s)
--print ("%T {ATTACK_UNIT_WIDGET}.prepick_operations: lin.is_empty = " + lin.is_empty.out + "%N")
-- from lin.start
-- until lin.after
-- loop
-- v := lin.item
-- check attached {PORT_WIDGET} v as pw then
--print ("%T {ATTACK_UNIT_WIDGET}.prepick_operations: " + pw.generating_type.name + " }.port.name = " + pw.port.name + "%N")
-- end
--print ("%T {ATTACK_UNIT_WIDGET}.prepick_operations: about to dim view %N")
-- v.set_completely_dimmed
-- if attached {JJ_PICK_AND_DROPABLE} v as d then
-- d.drop_actions.extend (agent on_drop_target)
-- end
---- v.paint add feature to VIEW; call when dimmed
-- lin.forth
-- end
-- end
-- end
-- on_drop_target (a_unit: ATTACK_UNIT)
-- -- React when `a_unit' is dropped on Current
-- do
-- print ("{ATTACK_UNIT_WIDGET}.on_drop_target %N")
-- end
feature {NONE} -- Implementation
gunnery_text: STRING
do
if attached {AIR_UNIT} unit then
Result := unit.airstrike_factor.out
else
Result := unit.gunnery_factor.out
end
end
defense_text: STRING
do
Result := unit.defense_factor.out
end
speed_text: STRING
do
if attached {AIR_UNIT} unit or attached {SUBMARINE} unit then
Result := "*"
else
Result := unit.speed_factor.out
end
end
air_text: STRING
do
if attached {AIR_UNIT} unit then
Result := ""
elseif unit.airstrike_factor < 1 then
Result := ""
else
Result := unit.airstrike_factor.out
end
end
feature {NONE} -- Implementation
unit_color: EV_COLOR
-- Get the color to paint the tile based on the unit's nationality
do
if unit.nationality = game.japanese then
Result := Japanese_unit_color
elseif unit.nationality = game.us then
Result := US_unit_color
elseif unit.nationality = game.british then
Result := British_unit_color
elseif unit.nationality = game.dutch or unit.nationality = game.australian then
Result := Dutch_unit_color
else
check
should_not_happen: False
end
Result := Green
end
end
border_color: EV_COLOR
-- Get the color to paint the boarder of the tile
do
if unit.nationality = game.japanese then
Result := Japanese_unit_boarder_color
elseif unit.nationality = game.us then
Result := US_unit_color
elseif unit.nationality = game.british then
Result := British_unit_color
elseif unit.nationality = game.dutch or unit.nationality = game.australian then
Result := Dutch_unit_color
else
check
should_not_happen: False
end
Result := Green
end
end
feature {NONE} -- Implementation
target_imp: detachable ATTACK_UNIT
-- Anchor for the `target' represented by Current
tile: EV_MODEL_POLYGON
-- The square on which to place other widgets
picture: SILHOUETTE --EV_MODEL_POLYGON
-- The polygon (or shape) of the unit on the tile
bonus_circle: EV_MODEL_ELLIPSE
-- The circle around the gunnery factor if unit has a bonus
air_bonus_circle: EV_MODEL_ELLIPSE
-- The circle around the air factor if unit has a bonus
border: BORDER
-- The borders of the tile, giving a raised appearance
border_size: REAL_64
-- The size to make the boarder
do
Result := Default_tile_size / 10
end
anchor: ANCHOR -- attribute create Result.make (unit) end
-- Indicates if a unit is in port
gunnery_factor_mt: EV_MODEL_TEXT
-- Widget for the `gunnery_factor' of the `unit' text
defense_factor_mt: EV_MODEL_TEXT
-- Widget for the `defense_factor' of the `unit' text
speed_factor_mt: EV_MODEL_TEXT
-- Widget for the `speed' of the `unit' text
air_strike_factor_mt: EV_MODEL_TEXT
-- Widget for the `air_strike_factor' of the `unit' text
end

View File

@@ -0,0 +1,126 @@
note
description: "[
An {VITP_WIDGET} representing the Japanese air units.
Redefined from {AIR_UNIT_WIDGET} in order to add, color,
and position the pictures for the two other aircraft
on the tile.
]"
author: "Jimmy J. Johnson"
date: "3/3/24"
copyright: "Copyright (c) 2021, Jimmy J. Johnson"
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
class
JAPANESE_AIR_UNIT_WIDGET
inherit
AIR_UNIT_WIDGET
redefine
create_interface_objects,
extend_widgets,
position_widgets,
set_widget_order,
paint
end
create
make
feature {NONE} -- Initialization
create_interface_objects
-- Create attributes
do
Precursor {AIR_UNIT_WIDGET}
-- create empty polygons for the extra two picturs
create picture_2
create picture_3
end
extend_widgets
-- Put widgets into Current. This cannot be done
-- in `create_interface_object', because cannot call
-- `extend' feature until all objects [in descendants]
-- are also created.
local
list: ARRAYED_LIST [EV_COORDINATE]
do
Precursor {AIR_UNIT_WIDGET}
extend (picture_2)
extend (picture_3)
-- Precursor adds points to `picture', not do other two
list := silhouette_coordinates (unit)
from list.start
until list.after
loop
-- `extend_point' adds a copy of the point
picture_2.extend_point (list.item)
picture_3.extend_point (list.item)
list.forth
end
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their sizes
do
Precursor {AIR_UNIT_WIDGET}
-- The scale coming through the Precursor from
-- {ATTACK_UNIT_WIDGET} is "scale (0.1)" which makes
-- placement of the planes too fine, therefore, this
-- feature scales the widget back up, moves the sub-
-- widgets, then scales back down.
scale (10)
-- Scale the planes
picture.scale (0.06) -- lead
picture_2.scale (0.06) -- left wingman
picture_3.scale (0.06) -- right wingman
-- Rotate the planes 90 degrees
picture.rotate (Pi/2)
picture_2.rotate (Pi/2)
picture_3.rotate (Pi/2)
-- Position the planes
picture.set_x_y (tile.x, tile.y - 8)
picture_2.set_x_y (tile.x - 36, tile.y + 5)
picture_3.set_x_y (tile.x + 36, tile.y + 5)
-- Scale back down
scale (0.1)
end
set_widget_order
-- Ensure the widgets are ordered properly
-- (i.e. whose on top?)
do
Precursor {AIR_UNIT_WIDGET}
bring_to_front (picture_2)
bring_to_front (picture_3)
end
feature -- Basic operations
paint
-- Set the colors for the `tile'
do
Precursor
-- Cyan so I could tell which plane was which
picture.set_foreground_color (adjusted_color (Black))
picture.set_background_color (adjusted_color (Black))
picture_2.set_foreground_color (adjusted_color (Black))
picture_2.set_background_color (adjusted_color (Black))
picture_3.set_foreground_color (adjusted_color (Black))
picture_3.set_background_color (adjusted_color (Black))
end
feature {NONE} -- Implementation
picture_2: SILHOUETTE --EV_MODEL_POLYGON
-- The silhouette (or shape) of the 2nd airplane
-- on the tile
picture_3: SILHOUETTE --EV_MODEL_POLYGON
-- The silhouette (or shape) of the 3rd airplane
-- on the tile
end

View File

@@ -0,0 +1,74 @@
note
description: "[
A widget connecting interface to a SHIP for use in Victory
in the Pacific.
]"
author: "Jimmy J. Johnson"
class
SHIP_WIDGET
inherit
ATTACK_UNIT_WIDGET
rename
unit as ship
redefine
position_widgets,
add_actions,
target_imp
end
create
make
feature {NONE} -- Initialization
position_widgets
-- Move Current and contained widgets to correct
-- location and set their sizes
do
Precursor {ATTACK_UNIT_WIDGET}
picture.scale (0.1)
end
feature -- Status setting
set_raiding
-- Change status of this `ship' to `is_raiding'.
do
ship.set_raiding
draw_views (ship)
end
set_patrolling
-- Change the status of the `ship' to not `is_raiding'
do
ship.set_patrolling
draw_views (ship)
end
feature -- Basic operations
feature {NONE} -- Implementation
add_actions
-- Add agent (i.e. actions) to the ship widget
do
Precursor {ATTACK_UNIT_WIDGET}
-- set_pebble_function (agent on_get_pebble)
-- No, do not add action to flip raider here,
-- do it in the {BOARD_VIEW}
-- pointer_double_press_actions.force_extend (agent flip_tile)
end
target_imp: detachable SHIP
-- Anchor for the `target' represented by Current
invariant
-- is_flipped_implication: is_flipped implies ship.is_raiding
end

View File

@@ -0,0 +1,65 @@
note
description: "[
A widget connecting interface to a {SUBMARINE} for use in VITP.
]"
author: "Jimmy J. Johnson"
class
SUBMARINE_WIDGET
inherit
ATTACK_UNIT_WIDGET
rename
unit as submarine
redefine
position_widgets,
unit_color,
paint,
target_imp
end
create
make
feature {NONE} -- Initialization
position_widgets
-- Move Current and contained widgets to correct
-- location and set their sizes
do
Precursor {ATTACK_UNIT_WIDGET}
picture.scale (0.1)
end
feature -- Basic operations
paint
-- Set the colors for the `tile'
do
Precursor {ATTACK_UNIT_WIDGET}
bonus_circle.set_foreground_color (japanese_unit_color)
bonus_circle.set_background_color (japanese_unit_color)
end
feature {NONE} -- Implementation
unit_color: EV_COLOR
-- Get the color to paint the tile based on the unit's nationality
do
if submarine.nationality = {NATIONALITY_CONSTANTS}.Japanese then
Result := Japanese_submarine_color
elseif submarine.nationality = {NATIONALITY_CONSTANTS}.us then
Result := US_submarine_color
else
check
should_not_happen: False
end
Result := Green
end
end
target_imp: detachable SUBMARINE
-- Anchor for the `target' represented by Current
end

View File

@@ -0,0 +1,590 @@
note
description: "[
A widget that holds and displays a set of {ATTACK_UNIT}
moving as a single unit contained in the `task_force'.
It allows the units to be arrange in various ways.
]"
author: "Jimmy J. Johnson"
class
TASK_FORCE_WIDGET
inherit
VITP_WIDGET
rename
target as task_force
redefine
create_interface_objects,
build_widgets,
-- build_bounding_figure,
add_actions,
set_dimming_level,
set_target,
show,
center_on_dot,
paint,
-- on_pointer_enter,
-- on_pointer_leave,
wipe_out,
target_imp
end
create
default_create
feature {NONE} -- Initialization
create_interface_objects
-- Create attributes
do
Precursor {VITP_WIDGET}
create unit_widgets.make (10)
column_count := 12
end
build_widgets
-- Set up the widgets in Current.
do
Precursor {VITP_WIDGET}
-- build_arrows
-- build_south_arrow
-- build_east_arrow
-- build_west_arrow
-- build_north_east_arrow
-- prune_all (dot)
end
-- build_bounding_figure
-- -- Add points to the `jj_bounding_figure'.
-- -- The default builds a polygon from the `bounding_box'.
-- do
-- Precursor {VITP_WIDGET}
-- -- Add points to the `jj_bounding_figure' to give it six points
-- -- which can later be set to coincide with points from the
-- -- contained units
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (0, 0))
-- jj_bounding_figure.extend_point (create {EV_COORDINATE}.make (0, 0))
-- jj_bounding_figure.disable_events_sended_to_group
-- end
add_actions
-- Add callbacks to Current
do
Precursor {VITP_WIDGET}
pointer_double_press_actions.extend (agent on_double_press)
jj_defining_figure.pointer_enter_actions.extend (agent on_enter_bounding_figure)
jj_defining_figure.pointer_leave_actions.extend (agent on_leave_bounding_figure)
-- bounding_figure.pointer_double_press_actions.extend (agent on_pointer_double_pressed_bounding_figure)
jj_defining_figure.pointer_button_press_actions.extend (agent on_button_press_bounding_figure)
-- bounding_figure.pointer_motion_actions.extend (agent on_pointer_motion_bounding_figure)
-- bounding_figure.pointer_button_release_actions.extend (agent on_button_release_actions_bounding_figure)
end
feature -- Status report
is_stacked: BOOLEAN
-- Are the units to be arranged [with some offset] on top \
-- of each other? If not they will be tiled.
-- Set by `stack' and `tile'
is_expanded: BOOLEAN
-- Should the units be overlapped less [greater offset]
-- when `is_stacked'?
-- Set by `expand' and `collapse'.
expected_rows: INTEGER
-- The number of rows in which Current tries to arrange its widgets
feature -- Status seting
stack
-- Stack units on top of each other
do
is_stacked := True
jj_defining_figure.hide
position_attack_unit_widgets
end
tile
-- Do not stack the units
do
is_stacked := False
jj_defining_figure.show
position_attack_unit_widgets
end
expand
-- Spead stacked units a little more
do
is_expanded := True
position_attack_unit_widgets
end
collapse
-- Stack the units a little closer together
do
is_expanded := False
position_attack_unit_widgets
end
feature -- Query
point_on_bounding_figure (ax, ay: INTEGER): BOOLEAN
-- Is this point on the `jj_bounding_figure'?
-- Can be used to prevent actions intended only for Current
do
Result := jj_defining_figure.position_on_figure (ax, ay)
end
has_widget (a_widget: ATTACK_UNIT_WIDGET): BOOLEAN
-- Does Current contain `a_widget'?
do
Result := unit_widgets.has_item (a_widget)
end
feature -- Basic operations
set_target (a_task_force: like task_force)
-- Change `task_force' to `a_task_force'
do
Precursor {VITP_WIDGET} (a_task_force)
populate
end
prune_widget (a_widget: ATTACK_UNIT_WIDGET)
-- Remove `a_widget' from Current.
do
unit_widgets.start
unit_widgets.prune (a_widget)
end
wipe_out
-- Move all unit_widgets back to the `board_world';
-- Current removes itself from the `board_world'
local
w: ATTACK_UNIT_WIDGET
do
unit_widgets.wipe_out
-- Clean widgets from Current and put back in board
-- check attached {BOARD_VIEW} board_world as bw then
-- from unit_widgets.start
-- until unit_widgets.after
-- loop
-- w := unit_widgets.item_for_iteration
-- prune_all (w)
-- bw.extend (w)
-- unit_widgets.forth
-- end
-- unit_widgets.wipe_out
-- bw.task_force_widgets.remove (task_force)
-- bw.prune_all (Current)
-- end
end
populate
-- Ensure the widgets corresponding to the `task_force' units
-- and none others are in Current
local
w: ATTACK_UNIT_WIDGET
u: ATTACK_UNIT
-- bw: VITP_WORLD
do
check attached vitp_world as bw then
---- check attached {BOARD_TOOL} parent_tool as bt then
---- bw := bt.board_view.world
-- from bw.attack_widgets.start
-- until bw.attack_widgets.after
-- loop
-- w := bw.attack_widgets.item_for_iteration
-- u := w.unit
-- if task_force.has (u) and not unit_widgets.has (u)then
-- -- world.place_widget_at_units_location (w)
-- unit_widgets.extend (w, u)
-- bw.prune_all (w)
-- extend (w)
-- end
-- if not task_force.has (u) and unit_widgets.has (u) then
-- unit_widgets.remove (u)
-- prune_all (w)
-- bw.extend (w)
-- end
-- bw.attack_widgets.forth
-- end
-- if task_force.count = 1 then
-- w := unit_widgets.widget (task_force.first)
-- prune_all (w)
-- bw.extend (w)
-- end
end
end
show
-- Ensure show is requested for each widget in Current
do
from unit_widgets.start
until unit_widgets.after
loop
unit_widgets.item_for_iteration.show
unit_widgets.forth
end
end
center_on_dot (a_dot: EV_MODEL_DOT)
-- Place the center of the first ship on `a_dot'
local
-- u: ATTACK_UNIT_WIDGET
do
check attached {ATTACK_UNIT_WIDGET} unit_widgets.item (task_force.i_th (1)) as u then
u.center_on_dot (a_dot)
end
position_attack_unit_widgets
end
position_attack_unit_widgets
-- Position the widgets in a stack or tiled
local
w, prev_w: ATTACK_UNIT_WIDGET
i: INTEGER
p: EV_COORDINATE
r, c, n: INTEGER
a2: ARRAY2 [detachable ATTACK_UNIT_WIDGET]
do
io.put_string ("TASK_FORCE_WIDGET.position_widgets: %N")
-- populate
-- Place widgets in stack or tiled
if is_stacked then
from
unit_widgets.start
prev_w := unit_widgets.item_for_iteration
unit_widgets.forth
until unit_widgets.after
loop
w := unit_widgets.item_for_iteration
w.align_midpoints_with_offset (prev_w, 0.1, -0.1)
prev_w := w
unit_widgets.forth
end
else
column_count := column_count.min (task_force.count)
expected_rows := task_force.count // column_count
if task_force.count \\ column_count > 0 then
expected_rows := expected_rows + 1
end
-- Use `a2' to memoize the widgets as they are accessed
create a2.make_filled (Void, expected_rows, column_count)
from
c := 1
r := 1
n := 2
w := unit_widgets.widget (task_force.i_th (1))
a2.put (w, 1, 1)
until n > task_force.count
loop
-- Get the widget to place
w := unit_widgets.widget (task_force.i_th (n))
c := c + 1
if c > column_count then
c := 1
r := r + 1
end
-- Get widget with which to align `w'
if c = 1 then
check attached a2.item (r - 1, c) as pw then
prev_w := pw
w.align_lefts (prev_w)
w.align_top_to_others_bottom (prev_w)
end
else
check attached a2.item (r, c - 1) as pw then
prev_w := pw
w.align_tops (prev_w)
w.align_left_to_others_right (prev_w)
end
end
a2.put (w, r, c)
n := n + 1
end
end
-- Position the `jj_bounding_figure' based on the widget positions
position_bounding_figure
end
position_bounding_figure
-- Size the box to just fit around the positioned widgets
local
w: ATTACK_UNIT_WIDGET
p: EV_COORDINATE
bb: like bounding_box
min_x, max_x: REAL_64
min_y, max_y: REAL_64
o_set: REAL_64
do
-- Find the extend of the widgets
min_x := {REAL_32}.Max_value
max_x := {REAL_32}.Min_value
min_y := {REAL_32}.Max_value
max_y := {REAL_32}.Min_value
from unit_widgets.start
until unit_widgets.after
loop
w := unit_widgets.item_for_iteration
bb := w.bounding_box
if bb.upper_left.x_precise < min_x then
min_x := bb.upper_left.x_precise
end
if bb.upper_left.y_precise < min_y then
min_y := bb.upper_left.y_precise
end
if bb.lower_right.x_precise > max_x then
max_x := bb.lower_right.x_precise
end
if bb.lower_right.y_precise > max_y then
max_y := bb.lower_right.y_precise
end
unit_widgets.forth
end
-- Position the `jj_bounding_figure' based on the contained widgets
-- Remember, point_array is a {SPECIAL} indexed from zero.
-- Set point 1
o_set := jj_defining_figure.line_width / 2
w := top_left_unit_widget
p := jj_defining_figure.point_array.at (0)
p.set_precise (w.point.x_precise - o_set, w.point.y_precise - o_set)
-- point 2
w := top_right_unit_widget
p := jj_defining_figure.point_array.at (1)
p.set_precise (w.point.x_precise, w.point.y_precise - o_set)
-- point 3
p := jj_defining_figure.point_array.at (2)
p.set_precise (w.point.x_precise + w.size_values.x_precise + o_set, w.point.y_precise - o_set)
-- point 4
w := bottom_right_unit_widget
p := jj_defining_figure.point_array.at (3)
p.set_precise (w.point.x_precise + w.size_values.x_precise + o_set, w.point.y_precise + w.size_values.y_precise + o_set)
-- point 5
w := last_unit_widget
p := jj_defining_figure.point_array.at (4)
p.set_precise (w.point.x_precise + w.size_values.x_precise + o_set, w.point.y_precise + w.size_values.y_precise + o_set)
-- point 6
w := bottom_left_unit_widget
p := jj_defining_figure.point_array.at (5)
p.set_precise (w.point.x_precise - o_set, w.point.y_precise + w.size_values.y_precise + o_set)
-- -- Also place the text at top left
-- create p.make_precise (min_x, min_y)
-- text_widget.center_on_point (p)
end
top_left_unit_widget: ATTACK_UNIT_WIDGET
-- The widget positioned at the top left when `is_tiled' and the bottom widget
-- when `is_stacked'. (It corresponds to the first unit in the `task_force'.)
do
-- check attached {WIDGET_FACTORY} board_world as bw then
-- Result := bw.attack_widgets.widget (task_force.i_th (1))
-- end
Result := unit_widgets.widget (task_force.i_th (1))
end
top_right_unit_widget: ATTACK_UNIT_WIDGET
-- The widget positioned at the top-right when `is_tiled' and `is_stacked'.
do
-- check attached {WIDGET_FACTORY} board_world as bw then
-- if is_stacked then
-- Result := bw.attack_widgets.widget (task_force.i_th (task_force.count))
-- else
-- Result := bw.attack_widgets.widget (task_force.i_th (column_count))
-- end
-- end
if is_stacked then
Result := unit_widgets.widget (task_force.i_th (task_force.count))
else
Result := unit_widgets.widget (task_force.i_th (column_count))
end
end
bottom_right_unit_widget: ATTACK_UNIT_WIDGET
-- The widget positioned at the bottom-right.
local
r: INTEGER
i: INTEGER
do
-- check attached {WIDGET_FACTORY} board_world as bw then
-- if is_stacked then
-- Result := bw.attack_widgets.widget (task_force.i_th (1))
-- else
-- r := task_force.count // column_count
-- i := r * column_count
-- Result := bw.attack_widgets.widget (task_force.i_th (i))
-- end
-- end
if is_stacked then
Result := unit_widgets.widget (task_force.i_th (1))
else
r := task_force.count // column_count
i := r * column_count
Result := unit_widgets.widget (task_force.i_th (i))
end
end
bottom_left_unit_widget: ATTACK_UNIT_WIDGET
-- The widget positioned at the bottom-left
local
i: INTEGER
do
-- check attached {WIDGET_FACTORY} board_world as bw then
-- if is_stacked then
-- Result := bw.attack_widgets.widget (task_force.i_th (1))
-- else
-- i := (expected_rows - 1) * column_count + 1
-- if i > task_force.count then
-- i := 1
-- end
-- Result := bw.attack_widgets.widget (task_force.i_th (i))
-- end
-- end
if is_stacked then
Result := unit_widgets.widget (task_force.i_th (1))
else
i := (expected_rows - 1) * column_count + 1
if i > task_force.count then
i := 1
end
Result := unit_widgets.widget (task_force.i_th (i))
end
end
last_unit_widget: ATTACK_UNIT_WIDGET
-- The widget at the bottom
do
-- check attached {WIDGET_FACTORY} board_world as bw then
-- if is_stacked then
-- Result := bw.attack_widgets.widget (task_force.i_th (1))
-- else
-- Result := bw.attack_widgets.widget (task_force.i_th (task_force.count))
-- end
-- end
if is_stacked then
Result := unit_widgets.widget (task_force.i_th (1))
else
Result := unit_widgets.widget (task_force.i_th (task_force.count))
end
end
feature -- Basic operations
paint
-- Set the colors for the widgets in Current
do
Precursor {VITP_WIDGET}
from unit_widgets.start
until unit_widgets.after
loop
unit_widgets.item_for_iteration.paint
unit_widgets.forth
end
end
set_dimming_level (a_level: like dimming_level)
-- Change the `dimming_level'
do
-- Precursor {MOVEABLE_WIDGET} (a_level)
if is_stacked then
from unit_widgets.start
until unit_widgets.after
loop
unit_widgets.item_for_iteration.set_dimming_level (a_level)
unit_widgets.forth
end
end
end
fill_widgets
-- Nothing to do here.
do
end
feature -- Actions
on_double_press (ax: INTEGER; ay: INTEGER; a_button: INTEGER;
x_tilt: DOUBLE; y_tilt: DOUBLE; pressure: DOUBLE;
a_screen_x: INTEGER; a_screen_y: INTEGER)
-- React to a double press on Current, toggling `is_stacked'.
do
if is_stacked then
tile
else
stack
end
end
-- on_pointer_enter
-- -- React to the pointer entering Current by showing
-- -- the `jj_bounding_figure' if not `is_stacked'
-- do
-- io.put_string ("TASK_FORCE_WIDGET.on_enter %N")
-- if not is_stacked then
-- jj_bounding_figure.show
-- end
-- Precursor {VITP_WIDGET}
-- end
-- on_pointer_leave
-- -- React to the pointer leaving Current by hiding
-- -- the `jj_bounding_figure'
-- do
-- io.put_string ("TASK_FORCE_WIDGET.on_leave %N")
-- jj_bounding_figure.hide
-- Precursor {VITP_WIDGET}
-- end
on_enter_bounding_figure
-- React to the pointer entering the bounding figure
do
io.put_string ("TASK_FORCE_WIDGET.on_enter_bounding_figure %N")
if not is_stacked then
jj_defining_figure.show
bring_to_front (jj_defining_figure)
end
end
on_leave_bounding_figure
-- React to the pointer leaving the bounding figure
do
io.put_string ("TASK_FORCE_WIDGET.on_leave_bounding_figure %N")
-- bounding_figure.hide
end
on_button_press_bounding_figure (ax: INTEGER; ay: INTEGER; a_button: INTEGER; x_tilt: DOUBLE; y_tilt: DOUBLE;
pressure: DOUBLE; a_screen_x: INTEGER; a_screen_y: INTEGER)
-- React to a button press on the `jj_bounding_figure'
do
io.put_string ("TASK_FORCE_WIDGET}.on_button_pressed_bounding_figure: button = " + a_button.out)
if a_button = 1 then
column_count := (column_count - 1).max (1)
position_widgets
elseif a_button = 3 then
column_count := (column_count + 1)
position_widgets
else
io.put_string (" reacting to button ??? %N")
end
end
feature {NONE} -- Implementation
column_count: INTEGER
-- The number of columns in which Current tries to arrange its widgets
target_imp: detachable TASK_FORCE
-- Anchor for `target'
unit_widgets: VITP_WIDGET_TABLE [ATTACK_UNIT_WIDGET, ATTACK_UNIT]
-- Table to associate a widget with a unit
invariant
-- in_this_view: not unit_widgets.is_empty implies across unit_widgets as uw all view.has (uw.item_for_iteration) end
-- same_widget_and_unit_counts: attached item_imp implies task_force.count = unit_widgets.count
end

Some files were not shown because too many files have changed in this diff Show More