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,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

View File

@@ -0,0 +1,985 @@
note
description: "[
Root class for widgets in VITP where `item' represents some {VITP_ITEM}.
This also has features for aligning a widget with another.
]"
author: "Jimmy J. Johnson"
deferred class
VITP_WIDGET
inherit
-- EV_WIDGET
JJ_MODEL_WORLD_VIEW
-- See newgroup message 20398. Concrete descendants must
-- re-implement `new_filled_list' (from ARRAYED_LIST) as:
-- new_filled_list (n: INTEGER): like Current
-- -- New list with `n' elements.
-- do
-- create Result.make (n)
-- end
-- undefine
-- new_filled_list
redefine
create_interface_objects,
initialize,
set_target,
set_dimming_level,
target_imp,
add_actions,
new_filled_list
-- Let's try redefining with an empty body; this feature
-- may be inapplicable anyway.
-- select
-- default_create
end
-- DIMABLE
-- rename
-- default_create as initialize_dimable
-- redefine
-- set_dimming_level
-- end
FONT_AND_COLOR_CONSTANTS
export
{NONE}
all
undefine
default_create
end
feature {NONE} -- Initialization
create_interface_objects
-- Initialize attributes
require else
not_initialized: not is_initialized
local
i: INTEGER
c: EV_COORDINATE
do
accept_cursor := Default_accept_cursor
deny_cursor := Default_accept_cursor
foreground_color := Black
create font
create text_group
create name_mt
create dot
Precursor {JJ_MODEL_WORLD_VIEW}
end
frozen initialize
-- Set up the widgets in Current.
require else
not_initialized: not is_initialized
do
-- set_font (Default_font)
-- initialize_defining_figure
extend_widgets
build_widgets
set_fonts_and_colors
position_widgets
set_widget_order
-- add_actions
dot.set_line_width (10)
-- The Precursor from {VIEW} calls `add_actions'
Precursor {JJ_MODEL_WORLD_VIEW}
set_pebble (target)
is_initialized := True
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
extend (dot)
extend (text_group)
text_group.extend (name_mt)
-- Cannot put `jj_defining_figure' in yet, because
-- descendants may not have finished creation and
-- `jj_defining_figure' is self-initializing.
-- extend (jj_defining_figure)
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
end
set_fonts_and_colors
-- Set the default fonts for any text widgets and set
-- the default colors for any contained widgets.
do
end
position_widgets
-- Move Current and contained widgets to correct
-- location and set their sizes
require
not_initialized: not is_initialized
do
-- Center text on Current
text_group.set_x_y (x, y)
end
set_widget_order
-- Ensure the widgets are ordered properly
-- (i.e. whose on top?)
do
bring_to_front (text_group)
bring_to_front (dot)
-- Next line is okay, I think
extend (jj_defining_figure)
bring_to_front (jj_defining_figure)
end
add_actions
-- Add actions to Current
do
check not is_view_initialized then
-- pointer_enter_actions.extend (agent on_pointer_enter)
-- pointer_leave_actions.extend (agent on_pointer_leave)
-- pointer_motion_actions.extend (agent on_pointer_motion)
-- pointer_button_press_actions.extend (agent on_button_pressed)
-- pointer_double_press_actions.extend (agent on_pointer_double_pressed)
-- pointer_button_release_actions.extend (agent on_button_released)
-- pointer_motion_actions.extend (agent on_pointer_motion)
-- pointer_enter_actions.extend (agent on_pointer_enter)
-- pointer_leave_actions.extend (agent on_pointer_leave)
end
Precursor {JJ_MODEL_WORLD_VIEW}
end
-- build_bounding_figure
-- -- Add points to the `jj_bounding_figure'.
-- -- The default builds a polygon from the `bounding_box'.
-- require
-- not_initialized: not is_initialized
-- local
-- bb: like bounding_box
-- do
-- jj_bounding_figure.set_point_count (4)
-- bb := bounding_box
-- jj_bounding_figure.set_i_th_point_position (1, bb.lower_left.x, bb.lower_left.y)
-- jj_bounding_figure.set_i_th_point_position (2, bb.upper_left.x, bb.upper_left.y)
-- jj_bounding_figure.set_i_th_point_position (3, bb.upper_right.x, bb.upper_right.y)
-- jj_bounding_figure.set_i_th_point_position (4, bb.lower_right.x, bb.lower_right.y)
-- bring_to_front (jj_bounding_figure)
-- jj_bounding_figure.hide
-- jj_bounding_figure.enable_closed
-- ensure
-- has_enough_points: jj_bounding_figure.point_count >= 1
-- has_bounding_figure: has (jj_bounding_figure)
-- end
set_initialized
-- Make `is_initialized'
do
is_initialized := true
end
feature -- Access
game: VITP_GAME
-- The game for which this widget provides an interface.
do
Result := target.game
end
foreground_color: EV_COLOR
-- Can be used to `paint' contained widgets
-- background_color: EV_COLOR
-- -- Can be used to `paint' contained widgets.
-- defined in EV_MODEL_WORLD
font: EV_FONT
-- The base font from which the size, weight, etc
-- of the fonts for any texts in Current can be based.
dot: EV_MODEL_DOT
-- A point on Current used for positioning child widgets
jj_defining_figure: EV_MODEL_CLOSED
-- A shape to mark the boundary of Current, used
-- to determine if widgets overlap or depart an area.
attribute
create {EV_MODEL_RECTANGLE} Result.make_with_points (bounding_box.upper_left, bounding_box.lower_right)
Result.set_line_width (5)
end
midpoint: EV_COORDINATE
-- The point that is the center of the `jj_bounding_figure'
-- relative to Current's containing group
local
p: EV_COORDINATE
mid: EV_COORDINATE
do
p := point_relative
mid := points_middle (min_values, max_values)
create Result.make_precise (p.x + mid.x, p.y + mid.y)
end
feature -- Element change
set_target (a_item: like target)
-- Associate `a_item' with Current.
local
s, s1, s2: STRING
pos: INTEGER
do
Precursor {JJ_MODEL_WORLD_VIEW} (a_item)
-- Set text, handling a couple of {PORT} names specially
if target = game.Pearl_harbor or
target = game.Johnston_island or
target = game.New_hebrides or
target = game.dutch_harbor or
target = game.Andaman_islands then
-- split into two lines
s := target.name
pos := s.index_of (' ', 1)
s1 := s.substring (1, pos - 1)
s2 := s.substring (pos + 1, s.count)
-- Add spaces to better center text on circles
if target = game.pearl_harbor or target = game.dutch_harbor then
s1 := " " + s1
elseif target = game.johnston_island then
s2 := " " + s2
elseif target = game.new_hebrides then
s1 := " " + s1
elseif target = game.andaman_islands then
s2 := " " + s2
end
name_mt.set_text (s1 + "%N" + s2)
else
name_mt.set_text (target.name)
end
-- Set the color of and draw the contained widgets
paint
end
set_foreground_color (a_color: EV_COLOR)
-- Change the color in which the text is drawn
require
color_exists: a_color /= Void
do
foreground_color := a_color
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.
-- do
-- font := a_font
-- name_mt.set_font (font)
-- end
feature -- Basic operations
set_dimming_level (a_level: INTEGER)
-- Change the `dimming_level'
do
Precursor {JJ_MODEL_WORLD_VIEW} (a_level)
from start
until exhausted
loop
if attached {VITP_WIDGET} item as v then
-- io.put_string (" VITP_WIDGET.set_dimming_level - widget is a {" + v.generating_type + "} %N" )
v.set_dimming_level (a_level)
end
forth
end
paint
end
paint
-- Set the color of items in this widget and hide/show figures
do
if is_defining_figure_shown then
jj_defining_figure.show
else
jj_defining_figure.hide
end
name_mt.set_foreground_color (adjusted_color (foreground_color))
end
-- center_on (a_x, a_y: INTEGER_32)
-- -- Move Current so its center point is on (a_x, a_y).
-- local
-- bb: EV_RECTANGLE
-- do
-- bb := bounding_box
-- set_x_y (a_x - (bb.x + bb.width // 2), a_y - (bb.y + bb.height // 2))
-- end
center_on_point (a_point: EV_COORDINATE)
-- Transform Current so its center point is on `a_point'
require
point_exists: a_point /= Void
local
t: EV_MODEL_TRANSFORMATION
ax, ay: REAL_64
bb: EV_RECTANGLE
do
bb := bounding_box
ax := a_point.x_precise - (bb.x + bb.width / 2)
ay := a_point.y_precise - (bb.y + bb.height / 2)
create t.make_id
t.translate (ax, ay)
transform (t)
end
center_on_dot (a_dot: EV_MODEL_DOT)
-- Place the center of `a_widget' on `a_dot'
require
dot_exists: a_dot /= Void
local
bb: EV_RECTANGLE
cx, cy: REAL_64
dif_x, dif_y: REAL_64
t: EV_MODEL_TRANSFORMATION
do
bb := bounding_box
cx := bb.width / 2
cy := bb.height / 2
dif_x := (bb.x + cx) - a_dot.point.x_precise
dif_y := (bb.y + cy) - a_dot.point.y_precise
-- dif_x := (bb.x + cx) - dot.point_x
-- dif_y := (bb.y + cy) - dot.point_y
create t.make_zero
t.translate (-dif_x, -dif_y)
transform (t)
end
center_on_origin
-- Place the center of the widget at (0,0)
local
t: EV_MODEL_TRANSFORMATION
ax, ay: REAL_64
bb: EV_RECTANGLE
do
bb := bounding_box
ax := bb.x + bb.width / 2
ay := bb.y + bb.height / 2
create t.make_id
t.translate (-ax, -ay)
transform (t)
end
center_widget_on_dot (a_widget: EV_MODEL; a_dot: EV_MODEL_DOT)
-- Place the center of `a_widget' on `a_dot'
local
bb: EV_RECTANGLE
cx, cy: REAL_64
dif_x, dif_y: REAL_64
t: EV_MODEL_TRANSFORMATION
do
bb := a_widget.bounding_box
cx := bb.width / 2
cy := bb.height / 2
dif_x := (bb.x + cx) - dot.point.x_precise
dif_y := (bb.y + cy) - dot.point.y_precise
create t.make_zero
t.translate (-dif_x, -dif_y)
a_widget.transform (t)
end
center_widget_on_other (a_widget: EV_MODEL; a_other: EV_MODEL)
-- Place the center of `a_widget' on `a_other'
local
bb, bb_other: EV_RECTANGLE
bb_center_x, bb_center_y: REAL_64
bb_other_center_x, bb_other_center_y: REAL_64
cx, cy: REAL_64
dif_x, dif_y: REAL_64
t: EV_MODEL_TRANSFORMATION
do
bb := a_widget.bounding_box
bb_other := a_other.bounding_box
bb_center_x := bb.left + bb.width / 2
bb_center_y := bb.top + bb.height / 2
bb_other_center_x := bb_other.left + bb_other.width / 2
bb_other_center_y := bb_other.top + bb_other.height / 2
dif_x := bb_other_center_x - bb_center_x
dif_y := bb_other_center_y - bb_center_y
-- cx := bb.width / 2
-- cy := bb.height / 2
-- dif_x := (bb.x + cx) - dot.point.x_precise
-- dif_y := (bb.y + cy) - dot.point.y_precise
-- dif_x := (bb.x + cx) - a_other.point_array.item (0).x_precise
-- dif_y := (bb.x + cx) - a_other.point_array.item (0).x_precise
create t.make_zero
t.translate (dif_x, dif_y)
a_widget.transform (t)
-- Check for identical centers
bb := a_widget.bounding_box
bb_other := a_other.bounding_box
bb_center_x := bb.left + bb.width / 2
bb_center_y := bb.top + bb.height / 2
bb_other_center_x := bb_other.left + bb_other.width / 2
bb_other_center_y := bb_other.top + bb_other.height / 2
dif_x := bb_other_center_x - bb_center_x
dif_y := bb_other_center_y - bb_center_y
end
translate_widget (a_widget: EV_MODEL; a_x, a_y: INTEGER_32)
-- Move `a_widget' in x and y directions.
local
t: EV_MODEL_TRANSFORMATION
do
create t.make_zero
t.translate (a_x, a_y)
-- a_widget.transform (t)
a_widget.set_x_y (a_widget.x + a_x, a_widget.y + a_y)
end
rotate_widget (a_widget: EV_MODEL; a_degrees: REAL_64)
-- Rotate `a_widget' `a_degrees' clockwise.
local
rad: REAL_64
do
rad := degrees_to_radians (a_degrees)
a_widget.rotate (rad)
end
scale_widget (a_widget: EV_MODEL; a_scale: REAL_64)
-- Resize `a_widget' by `a_scale' factor.
do
a_widget.scale (a_scale)
end
align_midpoints (a_other: VITP_WIDGET)
-- Move Current so its `midpoint' is over the `midpoint' of `a_other'
local
t: EV_MODEL_TRANSFORMATION
po: EV_COORDINATE
do
po := points_offset (midpoint, a_other.midpoint)
create t.make_zero
t.translate (po.x_precise, po.y_precise)
transform (t)
end
align_midpoints_with_offset (a_other: VITP_WIDGET; a_x_offset, a_y_offset: REAL_64)
-- Move Current so its `midpoint' is offset from the `midpoint'
-- of `a_other' by the offsets (as percentages of the size of
-- Current in that direction).
local
t: EV_MODEL_TRANSFORMATION
s: EV_COORDINATE
xx, yy: REAL_64
do
s := a_other.size_values
align_midpoints (a_other)
xx := s.x_precise * a_x_offset
yy := s.y_precise * a_y_offset
create t.make_zero
t.translate (xx, yy)
transform (t)
end
align_vertical (a_other: VITP_WIDGET)
-- Move Current horizontally until it's `midpoint.x' is aligned
-- with the `midpoint.x' of `a_other'.
local
t: EV_MODEL_TRANSFORMATION
po: EV_COORDINATE
do
po := points_offset (midpoint, a_other.midpoint)
create t.make_zero
t.translate (po.x_precise, 0.0)
transform (t)
end
align_horizontal (a_other: VITP_WIDGET)
-- Move Current vertically until it's `midpoint.y' is aligned
-- with the `midpoint.y' of `a_other'.
local
t: EV_MODEL_TRANSFORMATION
po: EV_COORDINATE
do
po := points_offset (midpoint, a_other.midpoint)
create t.make_zero
t.translate (0.0, po.y_precise)
transform (t)
end
align_lefts (a_other: VITP_WIDGET)
-- Move Current so its left side is aligned with
-- the left side of `a_other'
local
t: EV_MODEL_TRANSFORMATION
c, o: REAL_64 -- current's value; other's value
do
c := min_values.x
o := a_other.min_values.x
create t.make_zero
t.translate (o - c, 0.0)
transform (t)
end
align_rights (a_other: VITP_WIDGET)
-- Move Current so its right side is aligned with
-- the right side of `a_other'
local
t: EV_MODEL_TRANSFORMATION
c, o: REAL_64
do
c := max_values.x
o := a_other.max_values.x
create t.make_zero
t.translate (o - c, 0.0)
transform (t)
end
align_tops (a_other: VITP_WIDGET)
-- Move Current so its top side is aligned with
-- the top side of `a_other'
local
t: EV_MODEL_TRANSFORMATION
c, o: REAL_64
do
c := max_values.y
o := a_other.max_values.y
create t.make_zero
t.translate (0.0, o - c)
transform (t)
end
align_bottoms (a_other: VITP_WIDGET)
-- Move Current so its bottom side is aligned with
-- the bottom side of `a_other'
local
t: EV_MODEL_TRANSFORMATION
c, o: REAL_64
do
c := min_values.y
o := a_other.min_values.y
create t.make_zero
t.translate (o - c, 0.0)
transform (t)
end
align_left_to_others_right (a_other: VITP_WIDGET)
-- Move Current so its left side is aligned with the
-- left side of `a_other'
local
t: EV_MODEL_TRANSFORMATION
o, c: REAL_64
do
c := min_values.x
o := a_other.max_values.x
create t.make_zero
t.translate (o - c, 0.0)
transform (t)
end
align_right_to_others_left (a_other: VITP_WIDGET)
-- Move Current so its right side is aligned with the
-- left side of `a_other'
local
t: EV_MODEL_TRANSFORMATION
c, o: REAL_64
do
c := max_values.x
o := a_other.min_values.x
create t.make_zero
t.translate (o - c, 0.0)
transform (t)
end
align_top_to_others_bottom (a_other: VITP_WIDGET)
-- Move Current so its top side is aligned with the
-- bottom side of `a_other'
local
t: EV_MODEL_TRANSFORMATION
c, o: REAL_64
do
c := min_values.y
o := a_other.max_values.y
create t.make_zero
t.translate (0.0, o - c)
transform (t)
end
align_bottom_to_others_top (a_other: VITP_WIDGET)
-- Move Current so its top side is aligned with the
-- bottom side of `a_other'
local
t: EV_MODEL_TRANSFORMATION
c, o: REAL_64
do
c := min_values.y
o := a_other.max_values.y
create t.make_zero
t.translate (o - c, 0.0)
transform (t)
end
feature -- Actions
-- timer: TIME
-- on_pointer_enter
-- -- React to the mouse pointer entering Current
-- do
-- io.put_string ("VITP_WIDGET.on_enter " + vitp_item.name + "%N")
-- -- Start timer; after delay with no movement show status dialog
-- end
-- on_pointer_leave
-- -- React to the mouse pointer leaving Current
-- do
-- io.put_string ("VITP_WIDGET.on_leave " + vitp_item.name + "%N")
-- end
-- on_pointer_motion (ax, ay: INTEGER; ax_tilt, ay_tilt, apressure: DOUBLE;
-- a_screen_x, a_screen_y: INTEGER)
-- -- React to the mouse moving within Current
-- do
-- io.put_string ("VITP_WIDGET.on_move " + vitp_item.name + "%N")
-- end
feature -- Status report
is_initialized: BOOLEAN
-- Has Curent been initialized? (I.e. all all widgets built?)
-- Used to prevent calling `initialize' more than once.
is_defining_figure_shown: BOOLEAN
-- Can be used by descendants to determine if the `jj_bounding_figure'
-- should be visible or not.
feature -- Query
contains_point (a_point: EV_COORDINATE): BOOLEAN
-- Is `a_point' on or in Current's `jj_defining_figure'?
local
pts: SPECIAL [EV_COORDINATE] -- for convenience
i, j: INTEGER
do
-- pts := jj_bounding_figure.point_array
-- -- Remember SPECIAL is zero-based
-- from
-- i := 0
-- j := pts.count - 1
-- until i > pts.count - 1
-- loop
-- if ( ((pts[i].y_precise >= a_point.y_precise) /= (pts[j].y_precise >= a_point.y_precise)) and
-- (a_point.x_precise <= (pts[j].x_precise - pts[i].x_precise) *
-- (a_point.y_precise - pts[i].y_precise) /
-- (pts[j].y_precise - pts[i].y_precise) + pts[i].x_precise) ) then
-- Result := not Result
-- end
-- j := i
-- i := i + 1
-- end
Result := jj_defining_figure.position_on_figure (a_point.x, a_point.y)
end
overlaps (a_other: VITP_WIDGET): BOOLEAN
-- Does Current occupy any space occupied by a_other
local
pts: SPECIAL [EV_COORDINATE]
i: INTEGER
do
if Current /= a_other then
pts := jj_defining_figure.point_array
-- Remember SPECIAL is zero-based
from i := 0
until i > pts.count - 1 or Result
loop
Result := a_other.contains_point (pts[i])
i := i + 1
end
-- Check the other way around
if not Result then
pts := a_other.jj_defining_figure.point_array
from i := 0
until i > pts.count - 1 or Result
loop
Result := contains_point (pts[i])
i := i + 1
end
end
end
end
touches (a_other: VITP_WIDGET): BOOLEAN
-- Does Current touch `a_other'?
do
end
is_touched_by (a_other: VITP_WIDGET): BOOLEAN
-- Is Current touched by `a_other'?
do
end
contains (a_other: VITP_WIDGET): BOOLEAN
-- Does Current contain *all* of `a_other'?
do
end
is_contained_by (a_other: VITP_WIDGET): BOOLEAN
-- Is *all* of Current within `a_other'?
do
end
diverges_from (a_other: VITP_WIDGET): BOOLEAN
-- Does Current `intersects' `a_other' while having any
-- point outside `a_other'
do
end
feature {NONE} -- Inapplicable
new_filled_list (n: INTEGER): like Current
-- Redefined to get past void-safety issues
do
check
do_not_call: False then
-- Because this was redefined to appease void-safety, nothing else.
end
end
feature -- Actions
activate_drop_action
-- Allow Current to react to the drop of a unit, moving
-- that unit to the `location' in Current.
do
drop_actions.extend (drop_unit_agent)
end
deactivate_drop_action
-- Remove the agent added by `activate_drop_actions
do
drop_actions.start
drop_actions.prune (drop_unit_agent)
end
frozen drop_unit_agent: PROCEDURE [TUPLE [ATTACK_UNIT]]
-- Create an agent out of `on_drop_unit' which will be added
-- to Current when a pick is started and the Sequence of Play
-- allows for the unit to be dropped here.
once ("OBJECT")
Result := agent on_drop_unit
end
on_drop_unit (a_unit: ATTACK_UNIT)
-- Move `a_unit' to `locaiton'
do
print ("{LOCATION_WIDGET}.on_drop_unit: dropped " + a_unit.name + " on " + target.name + "%N")
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)
-- 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.
do
io.put_string ("VITP_WIDGET.on_button_pressed on " + target.name + "%N")
-- if attached board_world as bw then
-- bw.on_notify_button_pressed (Current, ax, ay, a_button)
-- end
end
-- on_pointer_double_pressed (ax: INTEGER; ay: INTEGER; a_button: INTEGER; x_tilt: DOUBLE; y_tilt: DOUBLE;
-- pressure: DOUBLE; a_screen_x: INTEGER; a_screen_y: INTEGER)
-- -- Notify `board_world' that Current was double-clicked
-- -- This allows the `board_world' to handle the click *and* to know the
-- -- widget on which the click occurred.
-- do
-- if attached board_world as bw then
-- bw.on_notify_button_double_pressed (Current, ax, ay, a_button)
-- 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)
-- -- Notify `board_world' that `a_button' was released on it
-- do
-- if attached board_world as bw then
-- bw.on_notify_button_released (Current, ax, ay, a_button)
-- end
-- end
-- on_pointer_motion (ax: INTEGER; ay: INTEGER; x_tilt: DOUBLE; y_tilt: DOUBLE;
-- pressure: DOUBLE; a_screen_x: INTEGER; a_screen_y: INTEGER)
-- -- Notify `board_world' that mouse was moved on Current
-- local
-- c: EV_COORDINATE
-- do
-- if attached board_world as bw then
-- bw.on_notify_pointer_motion (Current, ax, ay)
-- end
-- end
-- on_pointer_enter
-- -- React to the mouse entering the `dot'
-- do
-- if attached board_world as bw then
-- bw.on_notify_pointer_enter (Current)
-- end
-- end
-- on_pointer_leave
-- -- React to mouse leaving Current
-- do
-- if attached board_world as bw then
-- bw.on_notify_pointer_leave (Current)
-- end
-- end
feature {VITP_WIDGET} -- Implementation
vitp_world: detachable WIDGET_FACTORY
-- The VITP {WIDGET_FACTORY} if any in which Current recursively resides
do
if attached {WIDGET_FACTORY} world as w then
Result := w
elseif attached {WIDGET_FACTORY} group as w then
Result := w
elseif attached {VITP_WIDGET} group as g then
Result := g.vitp_world
end
end
size_values: EV_COORDINATE
-- The difference between the min_values and max_values.
-- The "width" and "height" of the `jj_defining_figure' as a tuple.
local
po: EV_COORDINATE
do
po := points_offset (max_values, min_values)
create Result.make_precise (po.x_precise.abs, po.y_precise.abs)
end
min_values: EV_COORDINATE
-- The smallest values of both the x & y coordinates of all
-- the points in `jj_bounding_figure'
local
i: INTEGER
xx, yy: REAL_64
c: EV_COORDINATE
rect: EV_RECTANGLE
do
-- create c
-- xx := {REAL_64}.Max_value
-- yy := {REAL_64}.Max_value
-- from i := 1
-- until i > jj_bounding_figure.point_count
-- loop
-- c.set_precise (jj_bounding_figure.i_th_point_x (i), jj_bounding_figure.i_th_point_y (i))
-- if c.x_precise < xx then
-- xx := c.x_precise
-- end
-- if c.y_precise < yy then
-- yy := c.y_precise
-- end
-- i := i + 1
-- end
-- create Result.make_precise (xx, yy)
create Result.make_precise (bounding_box.left, bounding_box.top)
end
max_values: EV_COORDINATE
-- The largest values of both the x & y coordinates of all
-- the points in `jj_bounding_figure'
local
i: INTEGER
xx, yy: REAL_64
c: EV_COORDINATE
do
create c
-- xx := {REAL_64}.Min_value
-- yy := {REAL_64}.Min_value
-- from i := 1
-- until i > jj_bounding_figure.point_count
-- loop
-- c.set_precise (jj_bounding_figure.i_th_point_x (i), jj_bounding_figure.i_th_point_y (i))
-- if c.x_precise > xx then
-- xx := c.x_precise
-- end
-- if c.y_precise > yy then
-- yy := c.y_precise
-- end
-- i := i + 1
-- end
-- create Result.make_precise (xx, yy)
create Result.make_precise (bounding_box.right, bounding_box.bottom)
end
points_middle (a_point, a_other_point: EV_COORDINATE): EV_COORDINATE
-- The point midway between the two points
local
xx, yy: REAL_64
do
xx := (a_other_point.x_precise - a_point.x_precise) / 2
yy := (a_other_point.y_precise - a_point.y_precise) / 2
create Result.make_precise (xx, yy)
end
points_offset (a_point, a_other_point: EV_COORDINATE): EV_COORDINATE
-- The offset of `a_other_point' from `a_point'
local
xx, yy: REAL_64
do
xx := a_other_point.x_precise - a_point.x_precise
yy := a_other_point.y_precise - a_point.y_precise
create Result.make_precise (xx, yy)
end
feature {NONE} -- Implementation
degrees_to_radians (degrees: DOUBLE): DOUBLE
-- Convert degrees to radians.
-- Helper function for convienence if need to rotate the widget.
require
degrees_big_enough: degrees >= -360
degrees_small_enough: degrees <= 360
do
Result := degrees * Pi / 180
ensure
-- definition: very_close (Result, degrees * (2 * Pi) / 360)
result_in_range: Result >= -2 * Pi and Result <= 2 * Pi
end
feature {VITP_WIDGET} -- Implementation
name_mt: EV_MODEL_TEXT
-- The name of the object in Current
text_group: EV_MODEL_GROUP
-- Hold any text widgets in Current so they can
-- be positioned and resized as a group
target_imp: detachable VITP_ITEM
-- Detachable implementation of `target' for void safety
invariant
not_empty: target_imp /= Void
end

View File

@@ -0,0 +1,163 @@
note
description: "[
Support class for holding coordinates for the definition
of all widgets for the VITP game.
Each POINT_LIST represents the definition of an area such
as a sea area or land mass or the corners of a tile in
a widget for an attack unit.
The points defining the widgets may be larger than required,
so we provide scaling factors to be used after the widget
is built.
]"
author: "Jimmy J. Johnson"
class
ITEM_DEFINITION
inherit
LINKED_LIST [POINT_LIST]
redefine
make
end
create
make
feature {NONE} -- Initialization
make
-- Initialize Current with a `control_point' at the origin
do
Precursor
create dot_offset
create lines.make
factor_x := 1.0
factor_y := 1.0
end
anchor_type: REAL_64
-- Anchor scales and offsets to this numeric type
feature -- Access
factor_x: like anchor_type
-- Amount to scale widget in x direction (after it is built)
factor_y: like anchor_type
-- Amount to scale widget in x direction (after it is built)
offset_x: like anchor_type
-- Amount to x translate the widget to get it in to its initial
-- position on the board (after the widget is built)
offset_y: like anchor_type
-- Amount to y translate the widget to get it in to its initial
-- position on the board (after the widget is built)
dot_offset_x: like anchor_type
-- Amount to translate the `dot' in the described {VITP_WIDGET}
-- This offset is relative to the center point of the widget
dot_offset: EV_COORDINATE
-- dot_offset_y: like anchor_type
-- Amount to translate the `dot' in the described {VITP_WIDGET}
-- This offset is relative to the center point of the widget
line_count: INTEGER
-- The number of text lines
do
Result := lines.count
end
line (a_index: INTEGER): STRING
-- The line at `a_index'
require
has_lines: has_lines
index_large_enough: a_index >= 1
index_small_enough: a_index <= line_count
do
Result := lines [a_index]
end
feature -- Element change
set_offset (ax, ay: like anchor_type)
-- The amount by which the widget defined by Current should be translated
do
offset_x := ax
offset_y := ay
end
set_dot_offset (a_offset: like dot_offset)
-- Change the `dot_offset
do
dot_offset := a_offset
end
set_offset_x (ax: like anchor_type)
-- Change the `offset_x'
do
offset_x := ax
end
set_offset_y (ay: like anchor_type)
-- Change the `offset_y'
do
offset_y := ay
end
set_factors (ax, ay: like anchor_type)
-- Change both x and y scale factors
require
x_factor_large_enough: ax > 0.0
y_factor_large_enough: ay > 0.0
do
factor_x := ax
factor_y := ay
end
set_factor_x (ax: like anchor_type)
-- Change the `factor_x'
require
factor_large_enough: ax > 0.0
do
factor_x := ax
end
set_factor_y (ay: like anchor_type)
-- Change the `factor_y'
require
factor_large_enough: ay > 0.0
do
factor_y := ay
end
add_line (a_line: STRING)
-- Add a line of text
require
line_exists: a_line /= Void
do
lines.extend (a_line)
end
feature -- Status report
has_lines: BOOLEAN
-- Does Current have at least one line?
do
Result := not lines.is_empty
end
feature {NONE} -- Implementation
lines: LINKED_LIST [STRING]
-- All the lines of text that belong in the represented area
invariant
dot_offset_exists: dot_offset /= Void
lines_exists: lines /= Void
end

View File

@@ -0,0 +1,18 @@
note
description: "[
Support class for holding coordinates for the definition
of areas for the VITP game.
]"
author: "Jimmy J. Johnson"
class
POINT_LIST
inherit
LINKED_LIST [EV_COORDINATE]
create
make
end

View File

@@ -0,0 +1,56 @@
note
description: "[
Provides functions to clip one polygon against another.
]"
author: "Jimmy J. Johnson"
class
POLYGON_CLIPPER
inherit
ANY
redefine
default_create
end
create
default_create
feature {NONE} -- Initialization
default_create
-- Set up Current
do
create clipping_results.make
end
feature -- Query
clipped (polygon, other: EV_MODEL_POLYGON): LINKED_LIST [EV_MODEL_POLYGON]
-- The polygon representing the intersection of `polygon' and `other'
local
e_count, other_e_count: INTEGER
i, j: INTEGER
do
create Result.make
e_count := polygon.point_count - 1
other_e_count := other.point_count - 1
from i := 1
until i > e_count
loop
from j := 1
until j > other_e_count
loop
j := j + 1
end
i := i + 1
end
end
feature {NONE} -- Implementation
clipping_results: LINKED_LIST [EV_MODEL_POLYGON]
-- Holds intermediate calculations
end

View File

@@ -0,0 +1,23 @@
note
description: "[
Class used in {VITP_GAME}, Victory in the Pacific, to diplay
the outline of a unit (e.g. {SHIP}, {AMPHIBOUSE_UNIT}, etc.)
on an {ATTACK_UNIT_WIDGET}.
]"
author: "Jimmy J. Johnson"
date: "3/14/24"
copyright: "Copyright (c) 2021, Jimmy J. Johnson"
license: "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"
class
SILHOUETTE
inherit
EV_MODEL_POLYGON
create
default_create,
make_with_coordinates
end

View File

@@ -0,0 +1,30 @@
note
description: "[
A HASH_TABLE pairing widgets with a {VITP_ITEM}.
]"
author: "Jimmy J. Johnson"
class
VITP_WIDGET_TABLE [G -> VITP_WIDGET, K -> VITP_ITEM]
-- VITP_WIDGET_TABLE [G -> VITP_WIDGET, K -> STRING_8]
inherit
HASH_TABLE [G, K]
create
make,
make_equal
feature -- Access
widget (key: K): G
-- Item associated with `key'.
-- Should be present
do
check attached item (key) as v then
Result := v
end
end
end