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