Last active
December 3, 2015 16:58
-
-
Save matt-curtis/16cefd064fc7a3613e99 to your computer and use it in GitHub Desktop.
(Sketch) Convert a shape layer to a marquee. Select both bitmap and shape layer and run the plugin.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var document = context.document; | |
// Find first bitmap and shape in selection | |
var bitmapLayer = document.selectedLayersOfClass(MSBitmapLayer)[0]; | |
if(!bitmapLayer) return; | |
var shapeLayer = document.selectedLayersOfClass(MSShapeGroup)[0]; | |
if(!shapeLayer) return; | |
// Info | |
var bezierPath = shapeLayer.bezierPath().copy(); | |
var bezierBounds = bezierPath.bounds(); | |
var absoluteBitmapFrame = bitmapLayer.absoluteRect(); | |
var absoluteShapeFrame = shapeLayer.absoluteRect(); | |
// Reset 'bounds' of bezier to 0,0 | |
var originResetTransform = NSAffineTransform.new(); | |
originResetTransform.translateXBy_yBy_(-bezierBounds.origin.x, -bezierBounds.origin.y); | |
bezierPath.transformUsingAffineTransform(originResetTransform); | |
// Offset bezier so paths line up | |
var xDiff = absoluteShapeFrame.x() - absoluteBitmapFrame.x(); | |
var yDiff = absoluteShapeFrame.y() - absoluteBitmapFrame.y(); | |
var transform = NSAffineTransform.new(); | |
transform.translateXBy_yBy_(xDiff, yDiff); | |
bezierPath.transformUsingAffineTransform(transform); | |
// Enter edit mode for this bitmap | |
document.setSelectedLayers([ bitmapLayer ]); // layer list inspector does not update :( | |
document.actionsController().actions()["MSEditAction"].edit(null); | |
// Bitmap marquee selection = shape layer's path | |
var currentHandler = context.document.currentHandler(); // MSBitmapEditEventHandler | |
currentHandler.accumulatedSelection = bezierPath; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment