Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
  •  Erik Ziegler Merge current dev branches, then the rest of these PRs go into dev

Outstanding Pull Requests

...

IssueReasonPlan
imageCache :: memory leak (critical)Large DICOM files with sharedCacheKey will crash the browserMerge immediatelyinto dev branch
Fix #82: drawInvalidated() should pass trueRequired for requestAnimationFrame support
Display the images that have only VOI LUT Sequence properlyFixes bug with VOI LUT support
  •  Former user (Deleted) will review Evren Ozkan's PR and if it is unacceptable, he will close it. He has investigated this issue and has another fix which may be more appropriate.


Making the canvas, context and its rendering data specific to each enabledElementFixes race condition with renderingMerge immediately
WIP: Prototype of multi-layer compositionDevelopment PRLeave open
Make cornerstone Promise/A+ compliantNot sure we intend to make Cornerstone Promise compliant
  • Should we allow the dev to specify what type of Promises / Promise library Cornerstone should use?
    • Everywhere else can return promises
    • Fix documentation to specify imageLoaders should return Deferred
    • Why do we want to use Deferreds?:
      • So we can cancel the image loading
    • Start moving towards the removal of the jQuery dependency
      • Future: allow the dev to specify what type of Promises / Promise library Cornerstone should use
      • Create an example of how to use Cornerstone without jQuery for the Promises
    Rendering loopUses requestAnimationFrame.Review: Not sure it's the best approach
    Add possibility to display image staticallyUseful for PreviewsReview / Merge
    Rendering using css transform instead of canvas transformDevelopment PRLeave open (or close?)
    Added canvasToPixel function for easier use in cornerstoneToolsHelper function which will help us clean up Cornerstone ToolsMerge immediately
    WIP: WebGL renderingAdds optional WebGL rendering path. This is stable and has been used in OHIF for months.Merge immediatelyRenamed removeImagePromise and return a boolean.Not sure this is relevant anymore?
    •  Erik Ziegler and Former user (Deleted) Look into non-linear LUT in WebGL branch. That may be the last issue remaining before it can be merged. Non-linear LUTs will be used in large images.
    •  Erik Ziegler Force developer to explicitly handle WebGL failure via an event or something like that
    •  Erik Ziegler Document the fact that WebGL branch is not the 'final solution' and will change and may be unstable. This is why it is opt-in.
    •  Does WebGL cause too much overhead when switching images?
    •  Look into changing Cornerstone's API to allow devs to plug in new rendering types to support pyramid type rendering or JF's rendering type

    CornerstoneTools

    IssueReasonPlan
    Purge image cache issue (stackPrefetch)

    stackPrefetch should not trigger exceptions for disabled elements removed from cache

    Merge immediately
    Setting a default value for resetPrefetchDelayRequired to fix issues with stackPrefetch for multi-frame instances during CINE playMerge immediately
    Fix issues with rectangleRoi toolBrings rectangleRoi to parity with other toolsMerge immediately
    Fix comments for the timeSeriesPlayer toolMinor comment issueMerge immediately
    Cornerstone playClip tool now supports playing variable frame rate instancesNecessary for multi-frame supportMerge immediately
    use buttons instead of which in the mouse event apiMinor change for Firefox supportMerge immediately
    for bower installation dev branchVery minor change to fix bower installation of dev branchMerge immediately
    WIP: Added simple paintbrush tool & exampleDevelopment PR, not to be mergedLeave open
    Level of Detail Window Level and CenterAlternative to WWWC tool which downsamples during window/levelNot sure? Useful for many users?

    ...

    1. The dataset should have a different structure, storing only the header bytes (removing the pixel data) and the frames converted into a color/grayscale images instead of the raw pixel data. Then each image would re-use the same frame data instead of creating a copy of it. Cornerstone uses the dataset in too many places and maybe this will not be so easy to change.
    2. All caches (dataSetCacheManager, imageCache, etc) should add an entry to a Global Cache responsible for counting and removing items from these caches (like datasetCacheManager and imageCache do through decache method). This way we should be able to count dataset + image + anything else sizes. And also, to avoid removing the dataset before its images from the cache each cache entry could have a priority (property) then sorting by priority/timeStamp would solve this problem.
    3. The image should not create a copy of the bytes but creates the color/grayscale image on-the-fly whenever getCanvas is called. This process saves memory but results in a performance impact because these images would have to be re-created too many times (scroll / cine).
    •  Erik Ziegler Put this on the OHIF roadmap
    •  Figure out a way to make the Cache manager 100% accurate for how much memory Cornerstone is using.
      •  Look into color images
      •  Look into compressed images
      •  Look into CINE usage and cache involvement

    RequestPoolManager Improvements

    •  Erik Ziegler Put this on the OHIF roadmap
      Allow parallel downloads when loading multi frame instance
      If a multi frame series starts loading using wadouri all frame promises will be added to the requestPoolManager but all threads will waiting for the same dataset. If you open Chrome DevTools and try to prefetch a different series (we developed a StudyPrefetcher on OHIF) you will see that only the first one will be in progress. The second series will be downloaded only when the first one is done and all its promises are resolved.

    1. Abort a download when its promise is rejected.
      When a 100MB series is being loaded and user clicks on another series he/she will have to wait for the first one to be loaded before starting loading the second one what can result in a delay on UI impacting the user experience.

    ...

    • Viewers / Cornerstone should use requestAnimationFrame loop to display images
    • Multi-layer composition work is ongoing

    ...