]> git.street.me.uk Git - andy/viking.git/blob - TODO
Fix ruler to show angle, distance when off-screen
[andy/viking.git] / TODO
1 IMPORTANT STUFF:
2         g_dtostr (??) instead of fprintf in the appropriate places (locale-independentt when reading/writing GPX files -- '.' character)
3         Debugging output shouldn't be printf'd but g_debug'd
4         fix KH maps download
5         'zoom in too much' line drawing (ruler, tracks) bugs. maybe fix coord-to-screen to clip values (or make vik_viewport_coord_to_screen_clip)?
6
7 BEFORE RELEASE:
8         Copy & paste viking data between process & into other programs
9                 copy waypoints, TRWLayers as GPX/GPSPoint. paste TRWLayers as GPX if pasting into text.
10                 copy layers via file.c serialization. paste layers other than TRW into Viking only (for now)
11         Undo function
12         Map licensing issues (?)
13         DND between VikWindows
14         direct GPS support
15         arrows to show track direction
16
17 EASY FIXES:
18         "click to go there" elevation map: average out, not nearest trackpoint.
19         Ruler: calculate degrees by spherical geometry formula ('zoom in too much' bug -- coord_to_screen out of range of double)
20                 for UTM: rotate compass for declination.
21                 
22
23 -----------------------------------------
24
25 RATHER HARD FIXES, SHOULD BE DONE BUT NOT MANDATORY FOR RELEASE:
26         tracks have their own colors, etc.
27         replace HTTP code!!!
28         relative photo pathnames (relative to GPS data file)
29         Optimizations (compare to 0.0.5)
30         SETTABLE OPTIONS: map cache size, alphabetized waypoints/tracks, picture viewer, webbrowser
31         Speed up waypoint drawing; option for faster drawing.
32         what if try to REDOWLOAD while RE/DOWNLOADing?
33         Redraw when becomes available, somehow? Also, show maps in progress a different color.
34         map loading/memory caching in the background? (for zoom out)
35         WHITE UNDER TRACKS! DONE FASTER! CLEAN THIS UP!
36
37 FEATURE WISHLIST (i.e. unlikely to get done):
38         selections (select area of waypoints, trackpoints, etc)
39         funky gpsbabel filter stuff (data sources -- think about, i want something innovative in this release.)
40         elevation plotting is not so pretty if you're moving north, as it overlays stuff uglily. discussion?
41         bicycle runs your track (animation) that tilts depending on slope
42         hover over pic
43         Better annotation for tracks, etc. Fields, etc.
44         Filled polygons
45         New UI: "Track Tool" => just analyze/pick out, right click or button to edit
46                 right click to do new track
47                 or "Track/Waypoint Tool"
48         I18N (das mundo ne parle pas agglika)
49         import from data sources ( gpsbabel (gps device) / google / geocaching.com )
50         Vector/TIGER maps!!! (use Cairo/Roadster code?)
51
52 MISC FIXES (i.e. will never get done):
53         Reid's 23, including waypoints, GPX/XML Viking files.
54         modular plotting styles? just an idea...
55         optimize Lat/Lon performance with its own CE1, CE2 etc.
56         make ce1, cn2 etc for lat/lon & utm; maybe get out the checking code in vik_viewport (see draw_rectange for instance)
57         Progressive Loading (GdkPixbufLoader)
58         CACHING WHOLE CHUNKS? (USEFUL FOR MAP ZOOM TOO!) RELOAD BUTTON?
59         * instead of using "emit"s in tools, do this:
60           * "add-only" return value -- only redraw this layer and layers above it.
61                 OR maybe even more advanced -- only redraw certain portions of screen.
62                 what about ALPHA??? uh oh...
63                 "always redraw" return value -- if layer is visible or not -- e.g. goto wp
64                 "redraw if visible" return value
65         settable defaults for layers (sigh...) OR at least config.h stuff
66
67 --------------
68
69 ROADMAP (old)
70 0.1.2
71   * Data sources: google, gpsbabel
72     * gpsbabel plugin -- wired up to get directions from google maps.
73     * address plugin.
74   * direct GPS support (?)
75     GPS navigation (speed, etc, etc)
76   * advanced downloader?
77 0.1.3
78   * stops
79     whole list: length, max movement, icons. can make more. right click -> stops...
80   * symbols
81   * draw by altitude, altitude side thingy.
82 0.1.4
83   * selections (?)
84   * NASA crazhy maps
85   * scale
86 0.1.6
87   * new UI & documentation
88   * internationalization
89 0.2.0
90   * TIGER data, vector maps
91 0.3.0
92   * altitude stuff, goodies
93   * major UI changes, direct manipulation
94   * sit down for a day or two and design the bestest bestest UI
95   * threads, etc
96   * docs, lots of docs
97 1.0
98   * more sophisticated vector data, almost GIS stuff. garmin maps, whatever
99   * party
100
101 --------------------------------
102
103 0.0.9 / 0.1.0
104  SELECTIONS (?)
105   * square & track-based
106   * select everything in, everything out
107   * download maps in
108  WAYPOINTS
109   * pango for text; text background with settable colors & options
110   * move & edit waypoints!!! auto-select for that
111   * maybe an option to turn on auto-select: off, on, only for same layer (default)
112  MAPS
113   * some of the above optimizations
114  MERGE TRW
115   * auto-rename dupes
116   * delete dupes by name
117   * delete dupes by location; name & location
118  TRACKS
119   * track editing -- everything on that idea sheet on my desk.
120   * insert into track
121   * show list of pics in one location
122   * maybe track-by-elevation
123  MISC
124   * alphabetize waypoints & tracks
125   * d&d layers (not worth it?)
126  FIXES
127   * crazhy-crazhy auto-switch UTM?
128   * figure out save image in background stuff, sigh...
129   * "widget properties set value param data"
130     -> check if has properties params
131     -> in layer_prop_fact: hold value's check if changed.
132     -> return TRUE only if value affects look
133     -> beautify dynamic properties boxes (checkboxes please?)
134     -> groups
135     -> maybe get rid of post_read (use set_param to update gc's -- but maybe not...)
136   * TODOs & FIXMEs
137   * due <= 2004-6-12 (1 yr after 0.0.3)
138
139 DONE:
140   * do alpha _right_ (to see what I mean, try drawing a transparent PNG)
141 -----------------------
142
143 POSSIBLE MAP OPTIMIZATIONS:
144 save conglomerates of shrunken images [to disk]?
145 static cache.c shared between everything -- SHARE MAP CACHES BETWEEN LAYERS AND WINDOWS!!!
146 background loading thread
147 load zoomed out images into conglomerates
148  -or-
149 Sort images by some sort of checksum (maybe sum of all digits) into 10 groups
150 makes finding cached image 10 times faster
151 if we somehow know we're not going to have enough room to store all maps for 1 redraw in cache, don't cache at all.
152 better cache management -- maybe every map in memory?
153 --> cache should fit more small maps than big ones!!!
154     maybe number for cache_size, keep track of it manuall, calculate from shrinkfactor? <-- good idea
155 pixmap (not pixbuf) cache?
156 vikmaplayer.c:520, don't run g_slist_length who-knows-howmany times (only noticable when shrinking cache)
157 stat images to make sure the size isn't zero (vs. trying to load them). then show errors for bad ones (?)
158 don't lookup IP each time (?)
159
160 ------------------------------
161
162
163  Then, focus on Lat/Lon and mapquest maps. (????)
164  Then, focus on Lat/Lon and mapquest maps.
165
166 0.0.9 "260 million maps... I can't hear you at all" release:
167 finalize pthread/map download UI.
168 export to image fix bug
169 viking running -> use this thread ( good luckers !!! )
170 merge trw layers
171
172 0.1.0 "where we're going, we don't need roads" release (concept idea):
173 Select a waypoint, delete to delete it, real tools, a toolbar, etc.
174 Drag and drop layers
175 alphabetatize waypoints & tracks
176 "area selections" -- select tool -> select waypoints in/outside area, download maps in area, etc. etc.
177
178 -/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/
179
180 0.1.0: the "fixes, patches, improvements, and goodies" release
181        "Where we're going, we don't need roads..."
182
183   * move a_dialog_new_track to viktrwlayer.c. Clean up VikTrwLayer, separating into several more-managable functions.
184   * get rids of pass_along, layer_and_vlp junk, just use update signal and track_iters (maybe make waypoint_iters) (?)
185   * TODO longones
186   * general cleanups, what you have time for (vik_trackpoint_free etc, draw_track, etc.)
187     * do we really have to have all those global funcs in vik_trw_layer ?
188 right click->new track here, new waypoint here. general TRWEdit tool with popup on vikviewport, it can be done.
189 general edit->delete to delete whatever is selected. ugly stuff ahead.
190 show human-readable timestamp
191 toolbar/toolbox, tool opts win (for tpwin) like in gimp (?)
192 Maybe fix "private" ref_count in clipboard.c (?)
193 clean up viktrwlayer.c, call track_realize() when adding track with add_track(), del dup. code, esp. in track_draw
194 move/edit by click for wp?
195 toolbar/toolbox, tool opts win (for tpwin) like in gimp (?)
196 only draw if in UTM zone !!!
197 Track color-by-elevation ( go all over an area, make tracks thicker/zoom out to create DEM color map ?! )
198 maps zoomed out
199 Thing to download lotsa maps (script or builtin -- ?)
200 Merge layers (what a say we have 2 layers, one with wp's, one with tracks)
201         merge: auto rename (everything begins with "layer name: ")
202         right click agg -> merge trw children -> super trw
203         or multiple slect/copy & paste
204 picture layer, thumbnails and all...
205 move to  gpsbabel default altitude, reflect it everywhere, include viking-remote
206 gpspoint.c -- use new easy gpsbabel code, abc, 123.
207
208 hard things to think about that need to be done sometime (mainly hard/impossible):
209 1) map downloader process / map download queue
210 2) if viking already running, use that process. cut and paste will work much better.
211
212 EVERYTHING ABOVE THIS LINE SHOULD BE IN 0.1.0! 0.2.0 WILL FOCUS ON LAT/LON AND STREET MAPS
213
214 -----
215
216 0.2.0
217 * Plot as lat/lon
218         For mapquest & georef maps: vikviewport "mode" to draw in (utm or straightened lat/lon), check before drawing, convert for TP, etc.
219 * full georef support, release minnesota/manganese
220 * mapquest maps
221 * smart drawing -- determine if line segment passes thru area, fancy math...
222 * map downloading manager, smarter ways -- e.g. "download maps within polygon"
223 * maybe a gpsbabel plug-in
224 * topos zoomed out if it didn't make it into 0.1.0
225 * maybe better wp drawing
226 * wp's alphabetically (good luckers) or at least when loading
227 * wp editing
228 * direct gps support
229
230 0.3.0 (still here?)
231 * new viking -> not new process
232 * wp icons
233 * routes
234 * improve direct manipulation
235 * bugfixes
236 * smart labeling so we can see 2 wp's (nearly) in the same place
237 * UTM zones (?)
238
239 1.0
240 * DEM maps
241 * mapsource files
242 * anything else possible, plausible and desirable.
243 * lots and lots of docs
244 * UI cleanups
245
246 Uses:
247 * planning
248 * viewing -- showing places/tracks on topo or street maps or scanned maps
249 * map download & printing -- your own, TOPO-thomas guides or city thomas guies
250 * adding coord lines to scanning maps -- print 'em out or see where they are
251 * editing tracks
252 * managing & organizing data
253 * creating maps and gps maps
254
255 SCALING:
256 * maybe downn scaling of higher-quality topos to accommodate odd zoom resolutions. this would also be useful for downloading _only_ high 
257   quality topos, or zooming out and seeing what topos we are missing, or downloading LOTS more topos at once (w/ download all on screen)
258   again, we will have to see how good GTK scaling is.
259 * maybe scaling of weird-scale (georeferenced) maps
260
261 Other
262 * georeferenced raster layer:
263  Optional:
264   - fix off-by-one-pixel bug (probably corner stuff) (?)
265   - utm zones (?)
266   - tool (maybe BUTTON 4,5 thing), and maybe a better zoom tool. but for release it's OK.
267
268 ROTATION/MESSED UP MAPS:
269 * Track/Waypoint Plotting as Lat/Lon (or artificial rotation, maybe preferred) for those kind of maps
270   and/or rotation of maps (not as good)
271 * maybe option "draw as lat long -- UTM center +- 1000 or something to find degrees/pixel (or use some other formula a la odu)
272 * or just rotation in screen_to_utm and utm_to_screen
273 * "anchoring down" one part of a georeferenced map for rotation and scaling.
274
275 * fix coord layer, it is SO horribly broken for high zoom levels.
276
277 * Investigate "chunk already freed"
278 * investigate if layer type doesnt have icon wont start bug
279 * Cleanups and fixes until 0.0.5-final:
280 * at least two of these things
281   * Merge TRW Layers
282   * copy and paste items
283   * MapBlast
284
285 These Cleanups:
286
287 -> These Cleanups
288 maybe "max size" thing for each param
289 --> maybe address within layer (struct offset) so wwe can just do away with set_param (in most cases). put stuff in realize or after_read
290 cleanup interface <---- IMPORTANT
291
292 -> cleanups below
293
294 -> sometime:
295    has_altitude or NO_ALTITUDE -> 999999
296
297 -> 0.0.6
298
299 C*L*E*A*N*U*P*S
300
301 dialog.c -> misc.c, viktrwlayer.c
302 export a layer from the file menu, some how. Export Layer -> choose layer. or Export Selected Layer (disabled as need be
303 ---
304 *MAYBE*
305
306 RGN type and other type in something of its own, not name.
307 that way, we can use the same file for waypoints to gps and for maps.
308
309 solutions to this problem:
310 File->Properties:
311   Position:
312   <R> Save current position
313   <R> Save this position:
314      UTM/LATLON ZOOM
315   <R> Save no position
316
317 -------
318 -------
319 -------
320 -------
321
322 (fixes + cleanups + scaling + rotation + ruler widgets (?) + topos & orthos in one (?) + copy&past items + merge layers) = 0.0.6
323
324 then 0.0.7, 0.0.8, 0.0.9 focus
325
326 things before "major" release:
327 direct manipulation (major feature/use)
328 use current viking (maybe)
329
330 to second "major" release:
331 libgpspoint2 and/or gpsd (show current pos)
332 map ui (rough edge)
333 analyzing stuff better, exact analyzing.
334
335 to 1.0
336 UTM ZONE!!!
337
338 > Although almost all of these are on your todo list I thought I would add my thoughts.
339
340 > 1.  Being able to choose the map units.  The metric system still baffles
341 > some of us. 
342 > 2.  Modular set up for map sources.  The urls tend to change/disapear
343 > when companies get bought up by micro$oft (mapblast).  The ability to
344 > import/export georefrenced maps.
345 > 3. Manipulations of track data...distance, altitude etc.
346 > 4. Export/printing of maps.  
347 > 5. Eyecandy. Colors and symbols for tracks, waypoints and routes.  Shade
348 > topo maps with DEM data.  
349
350 file format + hig compliance + bug fixes + MAYBE track undo = 0.0.4
351 FF2 + ruler widget + topos&orthos in one  +comment field + bugfixes = 0.0.5
352 if viking already running, use that process. + copy and paste layers + merge layers
353         + copy and paste items + bugfixes = 0.0.6
354 Direct manipulation, WYSIWYG moving + track connecting + etc = 0.0.7
355 track segment selection, deletion, track point deletion (create two segments or skip point) +
356         waypoint symbols + bugfixes = 0.0.8
357 toolbar + layer properties boxes changes, etc. + misc = 0.0.9
358 routes + misc + code cleanups = 0.0.10
359 map download ui + code cleanups + bugfixes = 0.0.11
360 other goodies, fixes, break release = 0.0.12
361 misc, etc. fixes, cleanups = 0.0.14
362 autotools, I18n + etc. = 0.0.15
363 fixes = 0.1.0
364
365 (NOT IMPORTANT. FF2 will come.)
366 functions write_utm, read_utm to save space
367 sizeof(Waypoint) != sizeof(components)! try to save disk space
368 len of layer for each layer so older versions can skip over new layers
369 Make it so if layertype >= vik_layer_num_types, skip layer. (in aggregatelayer.c)
370 Use magic numbers, and lengths to better prevent version messing ups (len of layer data, if extra, 
371   rest skip, if not enough, ignore, etc.) 9in layer file themselves)
372 ---
373
374 Viking 0.1.0 "It's been a long road..."
375
376 > 0.1.0: anylyzing speed and time, libgpspoint, misc goodies
377 > 0.2.0: garmap layers, utm zones, etc.
378
379 0.0.4 "Lame Duck Tape"
380 --------------------
381 0.0.6 "Where we're going, we don't need roads..."
382 --------------------
383 --Definitely:
384 UNDO DELETE LAYER!!! Or ask, maybe? For now, ask: later, maybe an undo "stack of commands" where things at the bottom of the stack are done only as new things push them down?
385 more "Forgive the user" kind of stuff.
386
387 FIXES:
388         Acceptable chars in dialog.c & gpspoint.c
389         file check if it's a directory for load & save.
390
391 Route support!
392
393 Toolbar
394 Do something similar with tools. layer_tools func in interface, then a tools structure, array, or add2menu func. humm
395
396 Track Colors -- PROBABLY.
397
398 viktrwlayer_dialog.c -- we MUST do this one.
399         No, even better Idea. framework where properties are stored as RESOURCES for each type of layer.
400         Each type of layer defines it's own resources and the viking layer dialog builder picks it up and draws the dialog.
401         Comments? Format? Fields?
402         Type: check, double/spin (including range, and all other params), string, double/entry, int/entry
403         And then subdivisions (tabs) of that. Track drawing, track colors, waypoints. or Drawing, Colors, ...
404
405 fix layers_menu_add_layers
406         I've made a mess of the add menu stuff. The add submeny is bad.
407         maybe a itemfactory thing in layer interface (for now, it's OK... but...) at the very least a serializedicon thing in 
408         interface so I don't have to serialize it every time... draining resources.
409
410         -- what if i have one menu with the icons and everything already made, and both vlp and wikwindow adds that? no, then i 
411         could't have custom callback data. what if all layer types' itemfactory items were modeled as "Add Layer/TRW Layer" Then 
412         I'd have an add layer menu in each?
413         -- think about it.
414
415
416 MAYBE:
417   MOVE A WAYPOINT
418   Waypoint Symbols, get started. symbols.c where i have a Name->ID mapping, then an ID->icon mapping. Get Started on Icons.
419   Merge 2 TRW Layer
420   Better CoordLayer.
421   Fix Some Bugs, Clean up Some Code.
422   Bulk Map Downloader (maybe another project)
423   renaming waypoints -- overwriting
424
425
426 And There's Your Release.
427
428 Other Ideas:
429 fix editing / move bug (ideas?)
430 copy & paste individual tracks & waypoints
431 tracks & waypoint ordering (?!)
432 don't forget about track SEGMENTs !!! (shoot for 0.0.5; should be in by 0.0.6)
433 vik_trw_layernew_track like waypoint. or maybe not (need starting point?)
434 I18N  -- at least fake ( all strs _() ized)
435 HIG compliance...
436 maybe export all visible trw's (nah, merge)
437 select waypoint; break up a track
438 Coordlayer color chooser
439 Coordlayer: UTM
440 trw_layer centerize: randompoints & average
441 maybe in item_add get visible and name from the layer / track / whatever itself.
442 ALSO, maybe chane set_name to update_name.
443 show tracks and waypoints (dynamic stuff)!! Copying between layers! YEAH
444
445 do some TODOs
446
447 ---------------------------------------
448 |                0.0.5                |
449 ---------------------------------------
450 | "Not all those who wander are lost" |
451 ---------------------------------------
452 Track & Waypoint sorting
453 Convert to GLIB Gobjects for layers
454 I18N
455 AutoTools
456 Track Colors
457 select waypoints; select trackpoints; selet track segments; measuring track & segment length; analyzing trackpoint altitude 
458 & time by selecting it; color by altitude/
459 Copy & Paste Layer (see below)
460 legend (length)
461
462 copying between layers: sublayer_add_menu_items () -> copy -> static pointer for layers panel, or whole process.
463 two ways of doing it: layer2copy & sublayer2copy, or general purpose "cliboard" var. on paste, layer / aggregate layer figures it out.
464 I vote for "layer2copy" and "sublayer2copy". That way, each layer can check if it can paste the sublayer and paste layer will always be there.
465 then you need a duplicate function for each thing you want to copy. shouldn't be too bad.
466
467
468 ~-~-~-~-~-~-~-~
469 0.0.6 "Where no man has gone before"
470 ---------------
471 Map Download Background Thread
472 LibGpsPoint
473 Settabl eFonts
474 UTM zones
475 Waypoint Symbols
476 Edit Timestamps
477 show different fields on side: altitude, time, etc. sort by these. maybe a layer edit dialog box.
478
479 ------
480 0.1.0
481 ------
482 Garmap Layer!
483
484
485 Other:
486 --------------
487 waypoint symbols
488 make your own timestamp
489 CACHE MAP SERVER IP; RETURN ERROR FOR WHY DOESNT WORK
490 MAP DOWNLOAD PROGERESS (!)
491 more g_asserts ... lots more 
492 UTM zones, aye...
493
494 ----------------------------------------
495 ========================================
496 ++++++++++++++++++++++++++++++++++++++++
497 fix tracks thing: STILL BUGS ! and clean up function maybe?
498 start noplace, when open file start in middle of there
499 clarification of new / open ( add to or what?  maybe add to in layer; merge layer stuff )
500 status bar: don't overlap stuff
501
502 i18n!!!
503
504 coordlayer -- ticks only
505 tick marks or lines for utm lines so you can tell where you are (TickLayer)
506
507 Intelligent Map Caching: knows which way you're going ... just something to think about.
508
509 Download all maps
510
511 routes
512 choosable gcs including background
513 Maybe each track has it's own GC? Just a thought.
514 Tools, explore etc. tools menu. tools window / bar
515 save stuff
516 status bar for track info, etc.
517
518 +TODO from otu ...
519
520 glist for routes (pointer directly to string used in ghashtable key? possible?) and tracks.
521
522 "Viking -- can you handle the power?"
523 "Viking -- where do you want to go today?"
524 "Viking -- where have you been today?"
525 "Viking -- where did you go today?"
526
527 "Vikingis Conqueris"
528
529 "The Viking Conquereth"
530 Viking 0.0.1pre15
531
532 Viking "the fake GIS"
533 Viking "the wannabee GIS"
534 Viking "CasiGIS"
535
536 Viking QuasiGIS (tm)
537
538 GPX support, loc.gz
539 So Many Possibilities...
540
541 OTU can do Viking can't:
542  * routes
543  * instant GPS location (sorta)