{"id":17561694,"url":"https://github.com/cornerstonejs/cornerstonetools","last_synced_at":"2025-12-12T03:46:44.605Z","repository":{"id":15670735,"uuid":"18408166","full_name":"cornerstonejs/cornerstoneTools","owner":"cornerstonejs","description":"[Deprecated] Use Cornerstone3D Instead https://cornerstonejs.org/","archived":false,"fork":false,"pushed_at":"2024-07-15T10:11:10.000Z","size":66564,"stargazers_count":584,"open_issues_count":278,"forks_count":457,"subscribers_count":54,"default_branch":"master","last_synced_at":"2025-04-03T03:08:29.983Z","etag":null,"topics":["cornerstone","dicom","hacktoberfest","javascript","medical-imaging","nci-itcr"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cornerstonejs.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-04-03T15:30:55.000Z","updated_at":"2025-02-11T00:14:08.000Z","dependencies_parsed_at":"2023-07-16T06:16:27.776Z","dependency_job_id":"270d7a8a-578e-44b5-99bf-4b11416df5b5","html_url":"https://github.com/cornerstonejs/cornerstoneTools","commit_stats":{"total_commits":2365,"total_committers":101,"mean_commits":"23.415841584158414","dds":0.600845665961945,"last_synced_commit":"dbf874f744a91fcf3242659052d6d64b84bb61a7"},"previous_names":["chafey/cornerstonetools"],"tags_count":195,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornerstonejs%2FcornerstoneTools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornerstonejs%2FcornerstoneTools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornerstonejs%2FcornerstoneTools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornerstonejs%2FcornerstoneTools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cornerstonejs","download_url":"https://codeload.github.com/cornerstonejs/cornerstoneTools/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248161255,"owners_count":21057553,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cornerstone","dicom","hacktoberfest","javascript","medical-imaging","nci-itcr"],"created_at":"2024-10-21T12:07:39.122Z","updated_at":"2025-12-12T03:46:44.498Z","avatar_url":"https://github.com/cornerstonejs.png","language":"JavaScript","readme":"## 🔔🔔🔔🔔 Attention: Cornerstone.js has evolved! We're excited to introduce [Cornerstone3D](https://github.com/cornerstonejs/cornerstone3D) 🚀. Expect advanced rendering, stellar performance, and a modern toolset. 🌐 Navigate to the new repository for the latest updates and improvements.\n\n\n\u003cdiv align=\"center\"\u003e\n\u003ch1\u003ecornerstone-tools\u003c/h1\u003e\n\n\u003cp\u003eProvides a simple, extensible framework for creating tools on top of \u003ca href=\"https://github.com/cornerstonejs/cornerstone/\"\u003eCornerstone.js\u003c/a\u003e. Includes common tool implementations, and leverages DICOM metadata (when available) for advanced functionality.\u003c/p\u003e\n\n[**Read The Docs**](https://tools.cornerstonejs.org/) | [Edit the docs](https://github.com/cornerstonejs/cornerstoneTools/edit/master/docs/)\n\n\u003c/div\u003e\n\n\u003chr /\u003e\n\n\u003c!-- prettier-ignore-start --\u003e\n[![Build Status][build-badge]][build]\n[![Coverage Status][coverage-badge]][coverage]\n[![All Contributors](https://img.shields.io/badge/all_contributors-37-orange.svg?style=flat-square)](#contributors)\n\n[![NPM version][npm-version-image]][npm-url]\n[![NPM downloads][npm-downloads-image]][npm-url]\n[![MIT License][license-image]][license-url]\n\u003c!-- prettier-ignore-end --\u003e\n\n## Index\n\n### The Fun Stuff\n\n- [TOOL EXAMPLES](https://tools.cornerstonejs.org/examples/)\n  - [Create or Update an Example](https://github.com/cornerstonejs/cornerstoneTools/tree/master/examples)\n\n### Everything Else\n\n- [Installing](#installation)\n- [Examples \u0026 Docs](#examples--docs)\n- [Contributing][contributing]\n\n## The problem\n\nBuilding one or two tools on top of [Cornerstone.js](https://github.com/cornerstonejs/cornerstone/) is not that difficult. However, as the number of tools grow, you begin to encounter difficult problems:\n\n- Tools should behave and be configurable in a consistant way\n- Managing tools across multiple cornerstone `enabled element`s\n- Tools that need knowledge of a fellow tool's state\n- The ability to \"drop-in\" others' tools, and they \"just work\"\n- and many others\n\nThis library solves these problems in a highly pluggable and extensible way.\n\n## This solution\n\n`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.\n\n## Example\n\nBelow is a simplified example of creating a tool by extending `cornerstone-tool`'s `BaseTool` class.\n\n```javascript\nimport cornerstone from 'cornerstone-core';\nimport { BaseTool } from 'cornerstone-tools';\nimport basicLevelingStrategy from '...';\n\nexport default class WwwcTool extends BaseTool {\n  constructor(configuration = {}) {\n    const defaultConfig = {\n      name: 'Wwwc',\n      strategies: { basicLevelingStrategy },\n      supportedInteractionTypes: ['Mouse', 'Touch'],\n      configuration: {\n        orientation: 0,\n      },\n    };\n    const initialConfiguration = Object.assign(defaultConfig, configuration);\n\n    super(initialConfiguration);\n  }\n\n  mouseDragCallback(evt) {\n    this.applyActiveStrategy(evt);\n\n    cornerstone.setViewport(evt.detail.element, evt.detail.viewport);\n  }\n\n  touchDragCallback(evt) {\n    evt.stopImmediatePropagation();\n    this.applyActiveStrategy(evt);\n\n    cornerstone.setViewport(evt.detail.element, evt.detail.viewport);\n  }\n}\n```\n\n## Installation\n\nThis module is distributed via [npm][npm-url] which is bundled with [node][node] and\nshould be installed as one of your project's `dependencies`:\n\n```js\n// To install the newest version\nnpm install --save cornerstone-tools\n\n// To install the legacy version (2.4.x branch)\nnpm install --save cornerstone-tools@2\n```\n\nThis library has `peerDependencies` listings for:\n\n- `hammerjs` - Better touch support\n- `cornerstone-core`\n- `cornerstone-math` - Simplifies and provides shared complex tool math logic\n- Any Cornerstone \"Image Loader\"\n  - `cornerstone-web-image-loader` - JPEG/PNG images\n  - `cornerstone-wado-image-loader` - DICOM images; also parses tags for tool use\n\nIf you need to support the `IE11` Browser, you will need to provide polyfills as needed. Our BrowserList target:\n\n```json\n  \"browserslist\": [\n    \"\u003e 1%\",\n    \"IE 11\",\n    \"not dead\",\n    \"not IE \u003c 11\",\n    \"not op_mini all\"\n  ]\n```\n\n**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.**\n\n\u003e [**Docs**](https://tools.cornerstonejs.org/installation.html)\n\n## Examples \u0026 Docs\n\n\u003e 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][version-2] ported, either create an issue or make a pull request ^\\_^\n\n- [Documentation](https://tools.cornerstonejs.org)\n- [Examples](https://tools.cornerstonejs.org/examples)\n- [API](https://tools.cornerstonejs.org/api)\n\n### Tools\n\n#### Annotation Tools\n\n- [Angle](https://tools.cornerstonejs.org/examples/tools/angle.html)\n- [Elliptical ROI](https://tools.cornerstonejs.org/examples/tools/elliptical-roi.html)\n- [Length](https://tools.cornerstonejs.org/examples/tools/length.html)\n- [Rectangle ROI](https://tools.cornerstonejs.org/examples/tools/rectangle-roi.html)\n\n#### 3rd Party Tool Plugins\n\n- Image Statistics: [Source](https://github.com/QSolutionsLLC/cornerstone-tool-image-statistics) | [Demo](https://qsolutionsllc.github.io/cornerstone-tool-image-statistics/)\n- Rotated Elliptical ROI Tool: [Source](https://github.com/sisobus/cornerstoneTools-RotatedEllipticalRoiTool) | [Demo](https://examples.sisobus.com/rotated-elliptical-roi/)\n\nA huge thanks to tool authors, like @sisobus, for sharing their work with the community!\n\n## Other Solutions\n\n- OHIF Viewer: [Source][ohif-source] | [Demo][ohif-demo]\n\n## Contributors\n\nThanks goes to these people ([emoji key][emojis]):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore --\u003e\n| [\u003cimg src=\"https://avatars2.githubusercontent.com/u/1268698?v=4\" width=\"100px;\" alt=\"Chris Hafey\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eChris Hafey\u003c/b\u003e\u003c/sub\u003e](https://www.linkedin.com/in/chafey)\u003cbr /\u003e[📖](https://github.com/cornerstonejs/cornerstoneTools/commits?author=chafey \"Documentation\") [💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=chafey \"Code\") [📝](#blog-chafey \"Blogposts\") [📢](#talk-chafey \"Talks\") | [\u003cimg src=\"https://avatars3.githubusercontent.com/u/607793?v=4\" width=\"100px;\" alt=\"Erik Ziegler\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eErik Ziegler\u003c/b\u003e\u003c/sub\u003e](https://github.com/swederik)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=swederik \"Code\") [📖](https://github.com/cornerstonejs/cornerstoneTools/commits?author=swederik \"Documentation\") [👀](#review-swederik \"Reviewed Pull Requests\") [🚧](#maintenance-swederik \"Maintenance\") [🚇](#infra-swederik \"Infrastructure (Hosting, Build-Tools, etc)\") [💬](#question-swederik \"Answering Questions\") | [\u003cimg src=\"https://avatars1.githubusercontent.com/u/5797588?v=4\" width=\"100px;\" alt=\"Danny Brown\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDanny Brown\u003c/b\u003e\u003c/sub\u003e](http://dannyrb.com/)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=dannyrb \"Code\") [📖](https://github.com/cornerstonejs/cornerstoneTools/commits?author=dannyrb \"Documentation\") [👀](#review-dannyrb \"Reviewed Pull Requests\") [🚧](#maintenance-dannyrb \"Maintenance\") [🚇](#infra-dannyrb \"Infrastructure (Hosting, Build-Tools, etc)\") [🔌](#plugin-dannyrb \"Plugin/utility libraries\") [💬](#question-dannyrb \"Answering Questions\") | [\u003cimg src=\"https://avatars0.githubusercontent.com/u/25818497?v=4\" width=\"100px;\" alt=\"James Petts\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJames Petts\u003c/b\u003e\u003c/sub\u003e](https://github.com/JamesAPetts)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=JamesAPetts \"Code\") [👀](#review-JamesAPetts \"Reviewed Pull Requests\") [🔌](#plugin-JamesAPetts \"Plugin/utility libraries\") [📖](https://github.com/cornerstonejs/cornerstoneTools/commits?author=JamesAPetts \"Documentation\") [💬](#question-JamesAPetts \"Answering Questions\") | [\u003cimg src=\"https://avatars0.githubusercontent.com/u/126077?v=4\" width=\"100px;\" alt=\"Steve Pieper\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSteve Pieper\u003c/b\u003e\u003c/sub\u003e](http://www.isomics.com)\u003cbr /\u003e[💬](#question-pieper \"Answering Questions\") [🔧](#tool-pieper \"Tools\") | [\u003cimg src=\"https://avatars3.githubusercontent.com/u/1905961?v=4\" width=\"100px;\" alt=\"Rodrigo Antinarelli\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRodrigo Antinarelli\u003c/b\u003e\u003c/sub\u003e](https://rodrigoea.com/)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=rodrigolabs \"Code\") | [\u003cimg src=\"https://avatars2.githubusercontent.com/u/10813109?v=4\" width=\"100px;\" alt=\"Zaid Safadi\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eZaid Safadi\u003c/b\u003e\u003c/sub\u003e](http://blog.zaidsafadi.com/)\u003cbr /\u003e[💬](#question-Zaid-Safadi \"Answering Questions\") [💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=Zaid-Safadi \"Code\") |\n| :---: | :---: | :---: | :---: | :---: | :---: | :---: |\n| [\u003cimg src=\"https://avatars3.githubusercontent.com/u/2378326?v=4\" width=\"100px;\" alt=\"Gustavo André Lelis\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eGustavo André Lelis\u003c/b\u003e\u003c/sub\u003e](https://github.com/galelis)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=galelis \"Code\") | [\u003cimg src=\"https://avatars1.githubusercontent.com/u/3926071?v=4\" width=\"100px;\" alt=\"Kofifus\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKofifus\u003c/b\u003e\u003c/sub\u003e](https://github.com/kofifus)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=kofifus \"Code\") [🔧](#tool-kofifus \"Tools\") [🐛](https://github.com/cornerstonejs/cornerstoneTools/issues?q=author%3Akofifus \"Bug reports\") | [\u003cimg src=\"https://avatars2.githubusercontent.com/u/25580127?v=4\" width=\"100px;\" alt=\"Aloïs Dreyfus\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAloïs Dreyfus\u003c/b\u003e\u003c/sub\u003e](http://www.linkedin.com/in/alois-dreyfus/)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=adreyfus \"Code\") | [\u003cimg src=\"https://avatars0.githubusercontent.com/u/616382?v=4\" width=\"100px;\" alt=\"Tim Leslie\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTim Leslie\u003c/b\u003e\u003c/sub\u003e](http://www.timl.id.au)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=timleslie \"Code\") | [\u003cimg src=\"https://avatars3.githubusercontent.com/u/7297450?v=4\" width=\"100px;\" alt=\"diego0020\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ediego0020\u003c/b\u003e\u003c/sub\u003e](https://github.com/diego0020)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=diego0020 \"Code\") | [\u003cimg src=\"https://avatars1.githubusercontent.com/u/4920551?v=4\" width=\"100px;\" alt=\"Evren Ozkan\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEvren Ozkan\u003c/b\u003e\u003c/sub\u003e](https://github.com/evren217)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=evren217 \"Code\") | [\u003cimg src=\"https://avatars2.githubusercontent.com/u/7647745?v=4\" width=\"100px;\" alt=\"Salvador Daniel Pelayo\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSalvador Daniel Pelayo\u003c/b\u003e\u003c/sub\u003e](https://github.com/daniel2101)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=daniel2101 \"Code\") |\n| [\u003cimg src=\"https://avatars3.githubusercontent.com/u/3358381?v=4\" width=\"100px;\" alt=\"Juan Narvaez\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJuan Narvaez\u003c/b\u003e\u003c/sub\u003e](https://github.com/jdnarvaez)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=jdnarvaez \"Code\") | [\u003cimg src=\"https://avatars0.githubusercontent.com/u/814227?v=4\" width=\"100px;\" alt=\"Mike\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMike\u003c/b\u003e\u003c/sub\u003e](https://github.com/mikehazell)\u003cbr /\u003e[📖](https://github.com/cornerstonejs/cornerstoneTools/commits?author=mikehazell \"Documentation\") [💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=mikehazell \"Code\") [⚠️](https://github.com/cornerstonejs/cornerstoneTools/commits?author=mikehazell \"Tests\") | [\u003cimg src=\"https://avatars2.githubusercontent.com/u/3329885?v=4\" width=\"100px;\" alt=\"Sangkeun Kim\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSangkeun Kim\u003c/b\u003e\u003c/sub\u003e](http://sisobus.com)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=sisobus \"Code\") [💬](#question-sisobus \"Answering Questions\") | [\u003cimg src=\"https://avatars3.githubusercontent.com/u/378021?v=4\" width=\"100px;\" alt=\"Victor Saase\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eVictor Saase\u003c/b\u003e\u003c/sub\u003e](https://github.com/vsaase)\u003cbr /\u003e[🤔](#ideas-vsaase \"Ideas, Planning, \u0026 Feedback\") | [\u003cimg src=\"https://avatars2.githubusercontent.com/u/120943?v=4\" width=\"100px;\" alt=\"Michael Wasser\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMichael Wasser\u003c/b\u003e\u003c/sub\u003e](http://www.mikewasser.com)\u003cbr /\u003e[📖](https://github.com/cornerstonejs/cornerstoneTools/commits?author=untoldone \"Documentation\") | [\u003cimg src=\"https://avatars2.githubusercontent.com/u/11068601?v=4\" width=\"100px;\" alt=\"Amandeep Singh\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAmandeep Singh\u003c/b\u003e\u003c/sub\u003e](https://github.com/singhArmani)\u003cbr /\u003e[🖋](#content-singhArmani \"Content\") | [\u003cimg src=\"https://avatars0.githubusercontent.com/u/1474137?v=4\" width=\"100px;\" alt=\"Madison Dickson\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMadison Dickson\u003c/b\u003e\u003c/sub\u003e](http://mix3dstudios.com)\u003cbr /\u003e[📖](https://github.com/cornerstonejs/cornerstoneTools/commits?author=mix3d \"Documentation\") |\n| [\u003cimg src=\"https://avatars1.githubusercontent.com/u/3342530?v=4\" width=\"100px;\" alt=\"Kevin Lee Drum\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKevin Lee Drum\u003c/b\u003e\u003c/sub\u003e](https://github.com/kevinleedrum)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=kevinleedrum \"Code\") | [\u003cimg src=\"https://avatars3.githubusercontent.com/u/11224291?v=4\" width=\"100px;\" alt=\"Makarand Bauskar\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMakarand Bauskar\u003c/b\u003e\u003c/sub\u003e](https://github.com/mmbauskar)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=mbauskar \"Code\") | [\u003cimg src=\"https://avatars0.githubusercontent.com/u/1713255?v=4\" width=\"100px;\" alt=\"Biharck Araujo\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBiharck Araujo\u003c/b\u003e\u003c/sub\u003e](http://www.biharck.com.br)\u003cbr /\u003e[💡](#example-biharck \"Examples\") [📖](https://github.com/cornerstonejs/cornerstoneTools/commits?author=biharck \"Documentation\") | [\u003cimg src=\"https://avatars3.githubusercontent.com/u/5349517?v=4\" width=\"100px;\" alt=\"Devon Bernard\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDevon Bernard\u003c/b\u003e\u003c/sub\u003e](https://www.linkedin.com/in/devonbernard)\u003cbr /\u003e[📖](https://github.com/cornerstonejs/cornerstoneTools/commits?author=DevonBernard \"Documentation\") | [\u003cimg src=\"https://avatars2.githubusercontent.com/u/38315992?v=4\" width=\"100px;\" alt=\"Karl-Heinrich\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKarl-Heinrich\u003c/b\u003e\u003c/sub\u003e](https://github.com/Karl-Heinrich)\u003cbr /\u003e[🐛](https://github.com/cornerstonejs/cornerstoneTools/issues?q=author%3AKarl-Heinrich \"Bug reports\") [💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=Karl-Heinrich \"Code\") [⚠️](https://github.com/cornerstonejs/cornerstoneTools/commits?author=Karl-Heinrich \"Tests\") | [\u003cimg src=\"https://avatars0.githubusercontent.com/u/15172026?v=4\" width=\"100px;\" alt=\"counterxing\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ecounterxing\u003c/b\u003e\u003c/sub\u003e](https://blog.xingbofeng.com/)\u003cbr /\u003e[🐛](https://github.com/cornerstonejs/cornerstoneTools/issues?q=author%3Axingbofeng \"Bug reports\") [💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=xingbofeng \"Code\") | [\u003cimg src=\"https://avatars0.githubusercontent.com/u/50026015?v=4\" width=\"100px;\" alt=\"Jorge Lopes\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJorge Lopes\u003c/b\u003e\u003c/sub\u003e](https://github.com/jlopes90)\u003cbr /\u003e[💬](#question-jlopes90 \"Answering Questions\") |\n| [\u003cimg src=\"https://avatars2.githubusercontent.com/u/5546851?v=4\" width=\"100px;\" alt=\"Gabriel Garrido\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eGabriel Garrido\u003c/b\u003e\u003c/sub\u003e](http://garrido.io)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=Ggpsv \"Code\") | [\u003cimg src=\"https://avatars0.githubusercontent.com/u/4126256?v=4\" width=\"100px;\" alt=\"ASVBPREAUBV\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eASVBPREAUBV\u003c/b\u003e\u003c/sub\u003e](https://github.com/ASVBPREAUBV)\u003cbr /\u003e[📖](https://github.com/cornerstonejs/cornerstoneTools/commits?author=ASVBPREAUBV \"Documentation\") | [\u003cimg src=\"https://avatars0.githubusercontent.com/u/50960211?v=4\" width=\"100px;\" alt=\"frolic06\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003efrolic06\u003c/b\u003e\u003c/sub\u003e](https://github.com/frolic06)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=frolic06 \"Code\") | [\u003cimg src=\"https://avatars2.githubusercontent.com/u/26968918?v=4\" width=\"100px;\" alt=\"codepage949\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ecodepage949\u003c/b\u003e\u003c/sub\u003e](https://github.com/codepage949)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=codepage949 \"Code\") | [\u003cimg src=\"https://avatars.githubusercontent.com/u/1915?v=4\" width=\"100px;\" alt=\"Asherah Connor\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAsherah Connor\u003c/b\u003e\u003c/sub\u003e](https://kivikakk.ee)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=kivikakk \"Code\") | [\u003cimg src=\"https://avatars.githubusercontent.com/u/22633385?v=4\" width=\"100px;\" alt=\"Ikko Ashimine\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eIkko Ashimine\u003c/b\u003e\u003c/sub\u003e](https://bandism.net/)\u003cbr /\u003e[🐛](https://github.com/cornerstonejs/cornerstoneTools/issues?q=author%3Aeltociear \"Bug reports\") | [\u003cimg src=\"https://avatars.githubusercontent.com/u/27778909?v=4\" width=\"100px;\" alt=\"Bill Wallace\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBill Wallace\u003c/b\u003e\u003c/sub\u003e](https://github.com/wayfarer3130)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=wayfarer3130 \"Code\") [📖](https://github.com/cornerstonejs/cornerstoneTools/commits?author=wayfarer3130 \"Documentation\") |\n| [\u003cimg src=\"https://avatars.githubusercontent.com/u/3341923?v=4\" width=\"100px;\" alt=\"Bruno Alves de Faria\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBruno Alves de Faria\u003c/b\u003e\u003c/sub\u003e](http://radicalimaging.com/)\u003cbr /\u003e[🐛](https://github.com/cornerstonejs/cornerstoneTools/issues?q=author%3Abrunoalvesdefaria \"Bug reports\") [💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=brunoalvesdefaria \"Code\") [🖋](#content-brunoalvesdefaria \"Content\") [📖](https://github.com/cornerstonejs/cornerstoneTools/commits?author=brunoalvesdefaria \"Documentation\") [🔌](#plugin-brunoalvesdefaria \"Plugin/utility libraries\") [👀](#review-brunoalvesdefaria \"Reviewed Pull Requests\") [⚠️](https://github.com/cornerstonejs/cornerstoneTools/commits?author=brunoalvesdefaria \"Tests\") [🔧](#tool-brunoalvesdefaria \"Tools\") [📓](#userTesting-brunoalvesdefaria \"User Testing\") | [\u003cimg src=\"https://avatars.githubusercontent.com/u/13886933?v=4\" width=\"100px;\" alt=\"Igor Octaviano\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eIgor Octaviano\u003c/b\u003e\u003c/sub\u003e](http://igoroctaviano.com)\u003cbr /\u003e[💻](https://github.com/cornerstonejs/cornerstoneTools/commits?author=igoroctaviano \"Code\") [📖](https://github.com/cornerstonejs/cornerstoneTools/commits?author=igoroctaviano \"Documentation\") [🚧](#maintenance-igoroctaviano \"Maintenance\") [👀](#review-igoroctaviano \"Reviewed Pull Requests\") [📓](#userTesting-igoroctaviano \"User Testing\") |\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors][all-contributors] specification.\nContributions of any kind welcome!\n\n## Issues\n\n_Looking to contribute? Look for the [Good First Issue][good-first-issue]\nlabel._\n\n### 🐛 Bugs\n\nPlease file an issue for bugs, missing documentation, or unexpected behavior.\n\n[**See Bugs**][bugs]\n\n### 💡 Feature Requests\n\nPlease file an issue to suggest new features. Vote on feature requests by adding\na 👍. This helps maintainers prioritize what to work on.\n\n- [**See Feature Requests**][requests-feature]\n- [**See Internal Change Requests**][requests-implementation]\n\n### ❓ Questions\n\nFor questions related to using the library, please visit our support community,\nor file an issue on GitHub.\n\n- [Google Group][google-group]\n\n## LICENSE\n\nMIT\n\n\u003c!--\nLinks:\n--\u003e\n\n\u003c!-- prettier-ignore-start --\u003e\n[build-badge]: https://circleci.com/gh/cornerstonejs/cornerstoneTools/tree/master.svg?style=svg\n[build]: https://circleci.com/gh/cornerstonejs/cornerstoneTools/tree/master\n[contributing]: https://github.com/cornerstonejs/cornerstoneTools/blob/master/CONTRIBUTING.md\n[coverage-badge]: https://codecov.io/gh/cornerstonejs/cornerstoneTools/branch/master/graphs/badge.svg\n[coverage]: https://codecov.io/gh/cornerstonejs/cornerstoneTools/branch/master\n[npm-url]: https://npmjs.org/package/cornerstone-tools\n[npm-downloads-image]: http://img.shields.io/npm/dm/cornerstone-tools.svg?style=flat\n[npm-version-image]: http://img.shields.io/npm/v/cornerstone-tools.svg?style=flat\n[license-image]: http://img.shields.io/badge/license-MIT-blue.svg?style=flat\n[license-url]: LICENSE\n[version-2]: https://github.com/cornerstonejs/cornerstoneTools/tree/v2.4.x\n[node]: https://nodejs.org\n[ohif-demo]: https://viewer.ohif.org/demo-signin\n[ohif-source]: https://github.com/OHIF/Viewers\n[emojis]: https://github.com/kentcdodds/all-contributors#emoji-key\n[all-contributors]: https://github.com/kentcdodds/all-contributors\n[bugs]: https://github.com/cornerstonejs/cornerstoneTools/issues?q=is%3Aissue+is%3Aopen+label%3A\"🐛+Bug%3A+Verified\"+sort%3Acreated-desc\n[requests-feature]: https://github.com/cornerstonejs/cornerstoneTools/issues?q=is%3Aissue+sort%3Areactions-%2B1-desc+label%3A\"💻+Change%3A+Feature\"+is%3Aopen\n[requests-implementation]: https://github.com/cornerstonejs/cornerstoneTools/issues?q=is%3Aissue+sort%3Areactions-%2B1-desc+label%3A\"💻+Change%3A+Implementation\"+is%3Aopen\n[good-first-issue]: https://github.com/cornerstonejs/cornerstoneTools/issues?utf8=✓\u0026q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3A\"🥇+Good+First+Issue\"\n[google-group]: https://groups.google.com/forum/#!forum/cornerstone-platform\n\u003c!-- prettier-ignore-end --\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcornerstonejs%2Fcornerstonetools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcornerstonejs%2Fcornerstonetools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcornerstonejs%2Fcornerstonetools/lists"}