mirror of
https://github.com/scratchfoundation/scratch-paint.git
synced 2024-12-26 15:32:32 -05:00
55 lines
2 KiB
JavaScript
55 lines
2 KiB
JavaScript
|
import paper from '@scratch/paper';
|
||
|
import log from '../../log/log';
|
||
|
|
||
|
/**
|
||
|
* Tool for drawing rectangles.
|
||
|
*/
|
||
|
class RectTool extends paper.Tool {
|
||
|
/**
|
||
|
* @param {function} setHoveredItem Callback to set the hovered item
|
||
|
* @param {function} clearHoveredItem Callback to clear the hovered item
|
||
|
* @param {function} setSelectedItems Callback to set the set of selected items in the Redux state
|
||
|
* @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state
|
||
|
* @param {!function} onUpdateSvg A callback to call when the image visibly changes
|
||
|
*/
|
||
|
constructor (setHoveredItem, clearHoveredItem, setSelectedItems, clearSelectedItems, onUpdateSvg) {
|
||
|
super();
|
||
|
this.setHoveredItem = setHoveredItem;
|
||
|
this.clearHoveredItem = clearHoveredItem;
|
||
|
this.setSelectedItems = setSelectedItems;
|
||
|
this.clearSelectedItems = clearSelectedItems;
|
||
|
this.onUpdateSvg = onUpdateSvg;
|
||
|
this.prevHoveredItemId = null;
|
||
|
|
||
|
// We have to set these functions instead of just declaring them because
|
||
|
// paper.js tools hook up the listeners in the setter functions.
|
||
|
this.onMouseDown = this.handleMouseDown;
|
||
|
this.onMouseMove = this.handleMouseMove;
|
||
|
this.onMouseDrag = this.handleMouseDrag;
|
||
|
this.onMouseUp = this.handleMouseUp;
|
||
|
}
|
||
|
/**
|
||
|
* To be called when the hovered item changes. When the select tool hovers over a
|
||
|
* new item, it compares against this to see if a hover item change event needs to
|
||
|
* be fired.
|
||
|
* @param {paper.Item} prevHoveredItemId ID of the highlight item that indicates the mouse is
|
||
|
* over a given item currently
|
||
|
*/
|
||
|
setPrevHoveredItemId (prevHoveredItemId) {
|
||
|
this.prevHoveredItemId = prevHoveredItemId;
|
||
|
}
|
||
|
handleMouseDown () {
|
||
|
log.warn('Rectangle tool not yet implemented');
|
||
|
}
|
||
|
handleMouseMove () {
|
||
|
}
|
||
|
handleMouseDrag () {
|
||
|
}
|
||
|
handleMouseUp () {
|
||
|
}
|
||
|
deactivateTool () {
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export default RectTool;
|