8686function test .render_existing_notes ()
8787 local notes_overlay = install_notes_overlay ()
8888
89- local pos_1 = {x = 10 , y = 20 , z = 0 }
90- local pos_2 = {x = 10 , y = 20 , z = 0 }
91- local pos_3 = {x = 10 , y = 20 , z = 0 }
89+ local viewport = guidm .Viewport .get ()
90+
91+ local half_x = math.floor ((viewport .x1 + viewport .x2 ) / 2 )
92+ local half_y = math.floor ((viewport .y1 + viewport .y2 ) / 2 )
93+
94+ local pos_1 = {x = half_x , y = viewport .y1 , z = viewport .z }
95+ local pos_2 = {x = viewport .x1 , y = half_y , z = viewport .z }
96+ local pos_3 = {x = half_x , y = half_y , z = viewport .z }
9297
9398 add_note (notes_overlay , pos_1 , ' note 1' , ' first note' )
9499 add_note (notes_overlay , pos_2 , ' note 2' , ' second note' )
95100 add_note (notes_overlay , pos_3 , ' note 3' , ' last note' )
96101
97102 reload_notes ()
98103
99- local viewport = guidm .Viewport .get ()
100-
101104 local pin_textpos = dfhack .textures .getTexposByHandle (
102105 notes_textures .green_pin [1 ]
103106 )
104107
105108 for _ , pos in ipairs ({pos_1 , pos_2 , pos_3 }) do
106- dfhack .gui .revealInDwarfmodeMap (pos )
107-
108- -- TODO: find better way to wait for overlay re-render
109- delay (10 )
109+ notes_overlay :render (gui .Painter .new ())
110110
111111 local screen_pos = viewport :tileToScreen (pos )
112112 local pen = dfhack .screen .readTile (screen_pos .x , screen_pos .y , true )
@@ -119,22 +119,22 @@ end
119119function test .edit_clicked_note ()
120120 local notes_overlay = install_notes_overlay ()
121121
122- local pos = {x = 10 , y = 20 , z = 0 }
123- add_note (notes_overlay , pos , ' note 1' , ' note to edit' )
124- add_note (notes_overlay , {x = 20 , y = 10 , z = 2 }, ' note 2' , ' other note' )
125- add_note (notes_overlay , {x = 0 , y = 10 , z = 5 }, ' note 3' , ' another note' )
122+ local viewport = guidm .Viewport .get ()
126123
127- reload_notes ()
128- dfhack .screen .invalidate ()
129- dfhack .gui .revealInDwarfmodeMap (pos )
124+ local half_x = math.floor ((viewport .x1 + viewport .x2 ) / 2 )
125+ local half_y = math.floor ((viewport .y1 + viewport .y2 ) / 2 )
130126
131- -- TODO: find better way to wait for overlay re-render
132- delay (10 )
127+ local pos_1 = {x = half_x , y = viewport .y1 , z = viewport .z }
128+ local pos_2 = {x = viewport .x1 , y = half_y , z = viewport .z }
129+ local pos_3 = {x = half_x , y = half_y , z = viewport .z }
133130
134- notes_overlay :updateLayout ()
131+ add_note (notes_overlay , pos_1 , ' note 1' , ' note to edit' )
132+ add_note (notes_overlay , pos_2 , ' note 2' , ' other note' )
133+ add_note (notes_overlay , pos_3 , ' note 3' , ' another note' )
135134
136- local viewport = guidm .Viewport .get ()
137- local screen_pos = viewport :tileToScreen (pos )
135+ reload_notes ()
136+
137+ local screen_pos = viewport :tileToScreen (pos_1 )
138138
139139 local rect = gui .ViewRect {rect = notes_overlay .frame_rect }
140140
@@ -167,19 +167,23 @@ end
167167function test .delete_clicked_note ()
168168 local notes_overlay = install_notes_overlay ()
169169
170- local pos = {x = 10 , y = 20 , z = 0 }
171- add_note (notes_overlay , {x = 20 , y = 10 , z = 2 }, ' note 1' , ' note to edit' )
172- add_note (notes_overlay , pos , ' note 2' , ' other note' )
173- add_note (notes_overlay , {x = 0 , y = 10 , z = 5 }, ' note 3' , ' another note' )
174170
175- reload_notes ()
176- dfhack .screen .invalidate ()
177- dfhack .gui .revealInDwarfmodeMap (pos )
171+ local viewport = guidm .Viewport .get ()
178172
179- notes_overlay :updateLayout ()
173+ local half_x = math.floor ((viewport .x1 + viewport .x2 ) / 2 )
174+ local half_y = math.floor ((viewport .y1 + viewport .y2 ) / 2 )
180175
181- local viewport = guidm .Viewport .get ()
182- local screen_pos = viewport :tileToScreen (pos )
176+ local pos_1 = {x = half_x , y = viewport .y1 , z = viewport .z }
177+ local pos_2 = {x = viewport .x1 , y = half_y , z = viewport .z }
178+ local pos_3 = {x = half_x , y = half_y , z = viewport .z }
179+
180+ add_note (notes_overlay , pos_1 , ' note 1' , ' note to edit' )
181+ add_note (notes_overlay , pos_2 , ' note 2' , ' other note' )
182+ add_note (notes_overlay , pos_3 , ' note 3' , ' another note' )
183+
184+ reload_notes ()
185+
186+ local screen_pos = viewport :tileToScreen (pos_2 )
183187
184188 local rect = gui .ViewRect {rect = notes_overlay .frame_rect }
185189
0 commit comments