cornerstone-tools

    6.0.6 • Public • Published

    cornerstone-tools

    Provides a simple, extensible framework for creating tools on top of Cornerstone.js. Includes common tool implementations, and leverages DICOM metadata (when available) for advanced functionality.

    Read The Docs | Edit the docs


    Build Status Coverage Status All Contributors

    NPM version NPM downloads MIT License

    Index

    The Fun Stuff

    Everything Else

    The problem

    Building one or two tools on top of Cornerstone.js is not that difficult. However, as the number of tools grow, you begin to encounter difficult problems:

    • Tools should behave and be configurable in a consistant way
    • Managing tools across multiple cornerstone enabled elements
    • Tools that need knowledge of a fellow tool's state
    • The ability to "drop-in" others' tools, and they "just work"
    • and many others

    This library solves these problems in a highly pluggable and extensible way.

    This solution

    cornerstone-tools is a light-weight solution for building Tools on top of Cornerstone.js. It's only dependencies are libraries within the Cornerstone family. Instead of trying to "do everything" it aims to be extensible and pluggable to aid in the rapid development of new tools. Ideally, tools created using cornerstone-tools can be easily shared, allowing for the creation of a broader ecosystem.

    Example

    Below is a simplified example of creating a tool by extending cornerstone-tool's BaseTool class.

    import cornerstone from 'cornerstone-core';
    import { BaseTool } from 'cornerstone-tools';
    import basicLevelingStrategy from '...';
    
    export default class WwwcTool extends BaseTool {
      constructor(configuration = {}) {
        const defaultConfig = {
          name: 'Wwwc',
          strategies: { basicLevelingStrategy },
          supportedInteractionTypes: ['Mouse', 'Touch'],
          configuration: {
            orientation: 0,
          },
        };
        const initialConfiguration = Object.assign(defaultConfig, configuration);
    
        super(initialConfiguration);
      }
    
      mouseDragCallback(evt) {
        this.applyActiveStrategy(evt);
    
        cornerstone.setViewport(evt.detail.element, evt.detail.viewport);
      }
    
      touchDragCallback(evt) {
        evt.stopImmediatePropagation();
        this.applyActiveStrategy(evt);
    
        cornerstone.setViewport(evt.detail.element, evt.detail.viewport);
      }
    }

    Installation

    This module is distributed via npm which is bundled with node and should be installed as one of your project's dependencies:

    // To install the newest version
    npm install --save cornerstone-tools
    
    // To install the legacy version (2.4.x branch)
    npm install --save cornerstone-tools@2

    This library has peerDependencies listings for:

    • hammerjs - Better touch support
    • cornerstone-core
    • cornerstone-math - Simplifies and provides shared complex tool math logic
    • Any Cornerstone "Image Loader"
      • cornerstone-web-image-loader - JPEG/PNG images
      • cornerstone-wado-image-loader - DICOM images; also parses tags for tool use

    If you need to support the IE11 Browser, you will need to provide polyfills as needed. Our BrowserList target:

      "browserslist": [
        "> 1%",
        "IE 11",
        "not dead",
        "not IE < 11",
        "not op_mini all"
      ]

    Setting up and configuring cornerstone-tools's depency can be the biggest hurdle to getting started. Be sure to check out our docs for assistance.

    Docs

    Examples & Docs

    The latest major version has just been published. We are still flushing out our examples. If you have anything you would like to see documented, or you want a specific example from version 2 ported, either create an issue or make a pull request ^_^

    Tools

    Annotation Tools

    3rd Party Tool Plugins

    A huge thanks to tool authors, like @sisobus, for sharing their work with the community!

    Other Solutions

    Contributors

    Thanks goes to these people (emoji key):

    Chris Hafey
    Chris Hafey

    📖 💻 📝 📢
    Erik Ziegler
    Erik Ziegler

    💻 📖 👀 🚧 🚇 💬
    Danny Brown
    Danny Brown

    💻 📖 👀 🚧 🚇 🔌 💬
    James Petts
    James Petts

    💻 👀 🔌 📖 💬
    Steve Pieper
    Steve Pieper

    💬 🔧
    Rodrigo Antinarelli
    Rodrigo Antinarelli

    💻
    Zaid Safadi
    Zaid Safadi

    💬 💻
    Gustavo André Lelis
    Gustavo André Lelis

    💻
    Kofifus
    Kofifus

    💻 🔧 🐛
    Aloïs Dreyfus
    Aloïs Dreyfus

    💻
    Tim Leslie
    Tim Leslie

    💻
    diego0020
    diego0020

    💻
    Evren Ozkan
    Evren Ozkan

    💻
    Salvador Daniel Pelayo
    Salvador Daniel Pelayo

    💻
    Juan Narvaez
    Juan Narvaez

    💻
    Mike
    Mike

    📖 💻 ⚠️
    Sangkeun Kim
    Sangkeun Kim

    💻 💬
    Victor Saase
    Victor Saase

    🤔
    Michael Wasser
    Michael Wasser

    📖
    Amandeep Singh
    Amandeep Singh

    🖋
    Madison Dickson
    Madison Dickson

    📖
    Kevin Lee Drum
    Kevin Lee Drum

    💻
    Makarand Bauskar
    Makarand Bauskar

    💻
    Biharck Araujo
    Biharck Araujo

    💡 📖
    Devon Bernard
    Devon Bernard

    📖
    Karl-Heinrich
    Karl-Heinrich

    🐛 💻 ⚠️
    counterxing
    counterxing

    🐛 💻
    Jorge Lopes
    Jorge Lopes

    💬
    Gabriel Garrido
    Gabriel Garrido

    💻
    ASVBPREAUBV
    ASVBPREAUBV

    📖
    frolic06
    frolic06

    💻
    codepage949
    codepage949

    💻
    Asherah Connor
    Asherah Connor

    💻
    Ikko Ashimine
    Ikko Ashimine

    🐛
    Bill Wallace
    Bill Wallace

    💻 📖
    Bruno Alves de Faria
    Bruno Alves de Faria

    🐛 💻 🖋 📖 🔌 👀 ⚠️ 🔧 📓
    Igor Octaviano
    Igor Octaviano

    💻 📖 🚧 👀 📓

    This project follows the all-contributors specification. Contributions of any kind welcome!

    Issues

    Looking to contribute? Look for the Good First Issue label.

    🐛 Bugs

    Please file an issue for bugs, missing documentation, or unexpected behavior.

    See Bugs

    💡 Feature Requests

    Please file an issue to suggest new features. Vote on feature requests by adding a 👍. This helps maintainers prioritize what to work on.

    Questions

    For questions related to using the library, please visit our support community, or file an issue on GitHub.

    LICENSE

    MIT

    Install

    npm i cornerstone-tools

    DownloadsWeekly Downloads

    4,316

    Version

    6.0.6

    License

    MIT

    Unpacked Size

    5.21 MB

    Total Files

    8

    Last publish

    Collaborators

    • sedghi
    • zaidsafadi
    • swederik
    • andrebot
    • brunoalvesdefaria
    • chafey
    • lscoder
    • sandrasie
    • evren217
    • dannyrb
    • ohif-bot
    • jamesapetts
    • cornerstonejs-bot