###################################################################
LATEST EMAIL UPDATE: 06 Mar 2015
###################################################################

A few new functions, interface improvements, docs,
bug fixes.  See UPDATES.txt excerpt below for details.

ASCII surfaces

Reading and writing of ASCII surfaces (e.g., ASCII
GIFTI export) is minimally supported.  The expected
ASCII file format is:

 ASCII Triangle Surface File Format (ASCII):
  -------------- header ---------------------
    #!ascii ... [triangles] ...
    vertexcount facecount
  ---------- vertex positions ---------------
    [vertex triples are implicitly numbered]
    x y z
    x y z
    ... [x,y,z triples up to vertex count]
  ---- vertex numbers around each face ------
    [faces are implicitly numbered]
    corner1  corner2  corner3
    corner1  corner2  corner3
    ... [triples up to face count]
  -------------------------------------------

Reading MGH annotation files (*.annot)

The "label:" line "D" button now reads MGH annotation
files.  These combine a vertexwise color overlay
with a color-to-brain-structure lookup table that MGH
freesurfer characteristically uses in reverse -- that
is, for a given unique color at a vertex, look up the
structure name and ID number.

These multi-labels can now be used to extract
surface data (real or complex) for one of the
labels inside it as follows:

  1) load vertex data of interest to .val(.val2)
  2) select MGH annotation file in "label:" dropdown
  3) left-click the "D" (label display) button
  4) click vertex in colored label to load r,g,b color
  5) reset name in "label:" entry to output label file
  6) Shift-left-click-"W"

Once an annotation is loaded, the csurf log will
report the brain structure of each vertex.  The
transparency of the MGH labels can be controlled
with "tran" at upper left.

Morph target

In recon-all, buckner40 is the default spherical
morph target.  For hand reconstructed surfaces
(e.g., hi-res) the MGHTools -> Register Surface
now defaults to buckner40 (there was a bug preventing
its use, now fixed; can select old FreeSurfer0.8
target instead in Expert Preferences -> SphereReg).

F5 tkmedit interface

For editing large complex surfaces (think cerebellum)
it helps to have a tkmedit interface that doesn't take
up much screen space.  [fn]-F5 makes tkmedit have a
long thin horizontal interface useful for this purpose.

### 06 Mar 2015 (read/write ASCII surf, disp/use MGH annotation)
 1) read/write GIFTI ASCII surface (e.g., export from MIPAV)
 2) display MGH annotation file, can use to extract labelwise surfdata
 3) MGHTools->RegisterSurf default morph target now buckner40 (recon-all)
 4) longthin F5 tkmedit interface + many sm interface, R-click-help updates

###################################################################

To install the new csurf:

cd <dir-where-csurf-currently-installed>
  mv csurf csurf-YYMMDD
  tar xvfz csurf0.8-{mac,linux}-YYMMDD.tgz

cheers,
marty

#########################################
Latest addition to $CSURF_DIR/UPDATES.txt
#########################################

---------------- 06Mar2015 FreeSurfer0.8/csurf0.8 tarballs -------------------
--lib/help/tksurfer/{label,label_read,label_readcut,label_clear,label_write}
--lib/help/tksurfer/{meshr,meshg,meshb,smooth_steps,cuts}
--tksurfer.tcl: label buttons chk suff, then setfile, check{read,write}labeldir
--tksurfer.tcl: shift-left-"W" overload to get: write_val_annotedcol_vertices
--tksurfer.c: recog subj root if cmdline started in label dir, better indents
--wrappers.tcl: use join to flatten list of args passed by testreplace
--tksurfer.c: write_val_annoted{col}_vertices write complex if complexvalflag
--tksurfer.c: write_annoted_vertices renamed to write_val_annoted_vertices
--tksurfer.c: clear_annot also clears/frees brainregions
--tksurfer.c: if MGH annot loaded, update r/g/b entries with current annot col
--tksurfer.tcl: add $anlabel to setfile list (rm unused $annot)
--tksurfer.tcl: labelentry/D now also load/use .annot files as well as .label
--tksurfer.c: write_val_annotedcol_vertices: dump out vtx data from 1 MGH annot
--tksurfer.c: click prints annotname by rev lookup annot color in MGH 'LUT'
--tksurfer.c: read_mgh_annot: read MGH .annot to brainregion struct, load color
--tkmedit.tcl dup "surf" tick F5 panel (N.B.: must load surf before goto F5)
--tksurfer.tcl: scroll entry to useful end of filename after select val/val3d
--tksurfer.c: fix funct name: rightclick_vertex -> middleclick_vertex (!)
--lib/help/tksurfer/{label,val3d_read,val3d_clust}: update
--tksurfer.tcl: add copy of S/V button to val3d for read/paint/swap 3d stats
--tkregister.tcl: bigger Linux putbelowtkwin gap startup interface size change
--tkregister.c: add 10 to Linux TKGL_YGAP avoid Ubuntu startup overlap problem
--tksurfer.tcl: val3d: warn/fix colscale mismatch, help (PNT to see, samp ctrls)
--lib/help/csurf/tkmedit: document F5 interface, rm stale cmdline example
--tkmedit.tcl: add long/thin fn-F5 micro interface
--lib/help/tksurfer/isocont: thicken isocont hot key
--lib/help/tksurfer/val_ltw: new file (update help list in mk0)
--lib/help/tksurfer/val2rgb: update complex phase vs. amp color LUT
--lib/help/tksurfer/val_jt: emphasize jet scale limits set by truncphase
--tksurfer.c: rm JET colscale return/cache so parallel to other colscale cases
--tksurfer.c: make read_ascii_surface tcl synonym for read_binary_surface
--csurf: change def morphtarg to buckner40 (MGHTools->Reg) to match recon-all
--csurf: load surf combo with orig? for import hacking (was orig,orig1,orig2)
--tksurfer.tcl: add "R" button on F3 "insurf:" for consistency
--copy surface format specs from lib/help/csurf/csurf to lib/help/tksurfer/surf
--lib/help/csurf/csurf: document ASCII surface format
--lib/help/tksurfer/{surf,hemisurf}: cleanup after interface code untangle
--tksurfer.tcl: allow full path in F2 "surf:" surface extension entry
--tksurfer.tcl: fix/rename/untangle select_surfext from fullpath F3 entry
--tksurfer.c: read_binary_surface detects/accepts #!ascii tri/quad/quad2tri
--csurf: fix inflate's'cycles typo blocking non-hi-res smooth/inflate
--mk0: add outsurfasc_write helpfile to list
--lib/help/tksurfer/outsurfasc_write: new helpfile
--tksurfer.tcl: add W-ASCII button on F3 interface for write_ascii_surface
--tksurfer.c: write_ascii_surface (tri or quad depending on ExpertPref flags)
--tkmedit.c: rm Tcl_Eval sendupdate (was no longer defined in tkmedit.tcl!)
--tksurfer.c: flush remaining queued click-drag xforms by lookahead to up-click
--tksurfer.tcl: expose phase LUT (lutw) in fn-F3
--tksurfer.c: glFlush in openglx to start w/black window (2x glFinish ignored)

---------------- 20Feb2015 FreeSurfer0.8/csurf0.8 tarballs -------------------
--tksurfer.tcl: shift-mid-click on "w1" -> switch to "w3" without needing fn-F3
--csurf: allow config/save 'w2' RGBY wheel colscale View Functional Data panel
--tksurfer.tcl: label combo listcmd live reread labeldir (man reabbrev->sm log)
--tksurfer.tcl: clear rgb combo on listcmd live re-read rgbdir (was appending!)
...




