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