Caret7:Development/DevelopmentStrategy092011

From Van Essen Lab

(Difference between revisions)
Jump to: navigation, search
Jschindl (Talk | contribs)
(Created page with "== Coding (Complete by September 15, 2011) == # (DONE, JS) STRING (new) The prototype code uses std::string which must be replaced. std::string cannot be used because it does …")
Newer edit →

Revision as of 15:16, 10 October 2011

Coding (Complete by September 15, 2011)

  1. (DONE, JS) STRING (new) The prototype code uses std::string which must be replaced. std::string cannot be used because it does not support unicode. std::wstring does support unicode but it uses a wide character which varies in size and encoding depending upon the platform. In addition, using std::wstring requires all text string be prefaced with the letter L (L"wide string") which is very inconvenient. One option is to use QString but this would scatter QString throughout the source code and present a major problem if the code was ported to a platform that did not support Qt. A better option is to encapsulate QString in a class that contains the same methods as QString and simply calls the identically names methods in QString (Bridge). It would also allow the addition of additional methods and eliminate StringUtilities (Decorator).
  2. (DONE, John) (CommandLine) Commands need to be in a project separate from the command line "main" program so that commands can be called from within Caret at a later time.
  3. (AString, Jon, ETC: 8/24/2011, Status:DONE) Add operators to AString for conversion between types and compatibility with streams. The following types should have compatibility with operator=, operator+, operator+=, operator<< and operator>>. The above operators should be able to take an std::string, iostream (for << and >>), double, float, byte, short, int, long, long long, unsigned byte, unsigned short, unsigned int, unsigned long, and unsigned long long.
  4. (Nifti Header Reader, Jon, ETC:10/06/2011, Status:DONE) Handles reading of Nifti Header.
  5. (Cifti, Jon, ETC:8/26/2011, Status:DONE) Implement CIFTI.
  6. (Gifti, Jon, ETC:9/2/2011, Status:In-Progrss) Separate read of MetaData, LabelTable, and other elements that are present in multiple files. These implementation should be moved to the NIFTI library so that they can be used by NIFTI, GIFTI, CIFTI, and Caret XML files.
  7. (Nifti Header Writer, Caret5/6/New, Jon ETC:, Status: DONE) NiftiReader - Implement reading that reads the NIFTI header (version 1 or 2) and any extensions.
  8. (Nifti Volume File Extension, Jon, ETC: 10/06/2011, Status:In-Progress) - The extension should be placed into a class that contains the extension code. The extensions data (perhaps in a vector), and the size of the extension. A method to read all or parts of the data is also needed. There will be no flipping of NIFTI volumes. As long as a correct transform is present, it should be displayed properly.
  9. (EventManager, Caret7, Tim/Jon ETC:8/29/2011, Status: DONE): Implement prototype EventManager.
  10. (SessionManager, Caret7, John, Status: Done): Investigate feasibility and implement prototype SessionManager for Caret7.
  11. (CommandLine, John, Status: DONE) Command that generates header and implementation files for a class.
  12. (Common, CommandLine, John, Status: DONE) Can a template be created for enumerated types? Otherwise, add a command line operation for generating header and implementation files for enumerated types. Result: Command implemented.
  13. (Common) Implement or remove any stubbed functions.
  14. (Common, Caret6, John, Status: Done) Logger - A logger class similar to Java's Logger class would be helpful and preferable to print statements. The logger could direct message to the console, a file, or into a structure in memory for viewing in Caret.
  15. (Common, Caret6, John, Status: Done) Enumerated types for species, structure.
  16. (Common, Caret6, John, Status: In work) Enumerated type for stereotaxic space
  17. (Common or ?, Caret6, John, Status: Done) Create a DataFileType enumerated type that can be used to identify data files, provide the file's extension, file filter for use in a file selection dialog, spec file tag, etc.
  18. (Common, Caret5/6/New, Tim, DONE) An abstract Algorithm class is needed. - requires a progress object (can be ignored and passed through to child algorithms if you are lazy), does not require a BrainSet or the like, drops separate execute() method (constructor does all the work, to reduce the number of mandatory member variables)
  19. (Common, New, Tim, implemented) All binary input and output should be performed using the C++ standard library. It may be helpful to have a BinaryFile class that can be used by NIFTI, CIFTI, GIFTI external binary and other files for sequential and random reading and writing. Result: BinaryFile class written, not currently in use.
  20. (Files, GIFTI-based, Caret5/6/New, Jon Status: DONE) SurfaceFile - Combines CoordinateFile and TopologyFile from Caret5.
  21. (Files, GIFTI-based, Caret5/6/New, Jon Status: DONE) LabelFile
  22. (Files, GIFTI-based, Caret5/6/New, Jon Status: DONE) MetricFIle
  23. (Files, GIFTI-based, Caret5/6/New, Jon Status: DONE) RGBA File
  24. (Files, Caret XML, Caret6) SpecFile (is there a better name, DataSet, DataInventory, DataFileList??? Also write its SAXReader. For each surface-based data file listed, there will be an attribute that identifies its structure.
  25. (Files, Caret6/New, Tim, implemented VolumeFile) Volume/VolumeFile. Implemented VolumeFile in new, waiting for NiftiReader/Writer to be able to load data from a file.
  26. (Files, New) For low priority files, create a skeleton for use by the DataFileReader.
  27. (Helpers, New, Tim, DONE) TopologyHelper
  28. (Common, New, Tim, DONE) Mutexes - CaretMutex and CaretMutexLocker are a bridge to QMutex and QMutexLocker
  29. (Helpers, New, Tim, DONE) GeodesicHelper - needed changes and is required for a lot of needed algorithms
Personal tools
Sums Database