/**
* OpenSeadragon paperjs overlay plugin based on paper.js
* @version 0.4.13
*
* Includes additional open source libraries which are subject to copyright notices
* as indicated accompanying those segments of code.
*
* Original code:
* Copyright (c) 2022-2024, Thomas Pearce
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* * Neither the name of osd-paperjs-annotation nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
import {AnnotationUITool, AnnotationUIToolbarBase} from './annotationUITool.mjs';
import { paper } from '../paperjs.mjs';
import { makeFaIcon } from '../utils/faIcon.mjs';
/**
* Default annotation tool that extends the AnnotationUITool class.
* Used for image navigation and interaction with annotations.
*
* @class
* @extends AnnotationUITool
* @memberof OSDPaperjsAnnotation
*/
class DefaultTool extends AnnotationUITool{
/**
* Create a DefaultTool instance for image navigation and annotation interaction.
* @constructor
* @param {paper.PaperScope} paperScope - The Paper.js scope for the tool.
*/
constructor(paperScope){
super(paperScope);
this.setToolbarControl(new DefaultToolbar(this));
}
onDeactivate(){}
onActivate(){
this.resetCanvasZIndex();
}
}
export{DefaultTool};
/**
* Default toolbar control for the DefaultTool class.
* Provides image navigation functionality.
*
* @class
* @extends AnnotationUIToolbarBase
* @memberof OSDPaperjsAnnotation.DefaultTool
*/
class DefaultToolbar extends AnnotationUIToolbarBase{
/**
* Create a DefaultToolbar instance associated with the DefaultTool.
*
* @constructor
* @param {DefaultTool} tool - The DefaultTool linked to the toolbar control.
*/
constructor(tool){
super(tool);
const i = makeFaIcon('fa-hand');
this.button.configure(i,'Image Navigation Tool');
}
/**
* Check whether the toolbar control is enabled for a specific mode.
*
* @param {string} mode - The mode to check for enabling.
* @returns {boolean} True, as the default tool is enabled for all modes.
*/
isEnabledForMode(mode){
return true;//enabled for all modes
}
}