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