void StandbyState::transformSelection(Editor* editor, MouseMessage* msg, HandleType handle) { try { EditorCustomizationDelegate* customization = editor->getCustomizationDelegate(); Document* document = editor->document(); base::UniquePtr<Image> tmpImage(new_image_from_mask(editor->getSite())); gfx::Point origin = document->mask()->bounds().getOrigin(); int opacity = 255; PixelsMovementPtr pixelsMovement( new PixelsMovement(UIContext::instance(), editor->getSite(), tmpImage, origin, opacity, "Transformation")); // If the Ctrl key is pressed start dragging a copy of the selection if (customization && customization->isCopySelectionKeyPressed()) pixelsMovement->copyMask(); else pixelsMovement->cutMask(); editor->setState(EditorStatePtr(new MovingPixelsState(editor, msg, pixelsMovement, handle))); } catch (const LockedDocumentException&) { // Other editor is locking the document. // TODO steal the PixelsMovement of the other editor and use it for this one. StatusBar::instance()->showTip(1000, "The sprite is locked in other editor"); ui::set_mouse_cursor(kForbiddenCursor); } catch (const std::bad_alloc&) { StatusBar::instance()->showTip(1000, "Not enough memory to transform the selection"); ui::set_mouse_cursor(kForbiddenCursor); } }
void StandbyState::transformSelection(Editor* editor, MouseMessage* msg, HandleType handle) { try { EditorCustomizationDelegate* customization = editor->getCustomizationDelegate(); Document* document = editor->document(); base::UniquePtr<Image> tmpImage(NewImageFromMask(editor->getDocumentLocation())); int x = document->mask()->bounds().x; int y = document->mask()->bounds().y; int opacity = 255; Sprite* sprite = editor->sprite(); Layer* layer = editor->layer(); PixelsMovementPtr pixelsMovement( new PixelsMovement(UIContext::instance(), document, sprite, layer, tmpImage, x, y, opacity, "Transformation")); // If the Ctrl key is pressed start dragging a copy of the selection if (customization && customization->isCopySelectionKeyPressed()) pixelsMovement->copyMask(); else pixelsMovement->cutMask(); editor->setState(EditorStatePtr(new MovingPixelsState(editor, msg, pixelsMovement, handle))); } catch (const LockedDocumentException&) { // Other editor is locking the document. // TODO steal the PixelsMovement of the other editor and use it for this one. } }
void StandbyState::transformSelection(Editor* editor, MouseMessage* msg, HandleType handle) { Document* document = editor->document(); for (auto docView : UIContext::instance()->getAllDocumentViews(document)) { if (docView->editor()->isMovingPixels()) { // TODO Transfer moving pixels state to this editor docView->editor()->dropMovingPixels(); } } try { // Clear brush preview, as the extra cel will be replaced with the // transformed image. editor->brushPreview().hide(); EditorCustomizationDelegate* customization = editor->getCustomizationDelegate(); base::UniquePtr<Image> tmpImage(new_image_from_mask(editor->getSite())); PixelsMovementPtr pixelsMovement( new PixelsMovement(UIContext::instance(), editor->getSite(), tmpImage, document->mask(), "Transformation")); // If the Ctrl key is pressed start dragging a copy of the selection if ((customization) && int(customization->getPressedKeyAction(KeyContext::TranslatingSelection) & KeyAction::CopySelection)) pixelsMovement->copyMask(); else pixelsMovement->cutMask(); editor->setState(EditorStatePtr(new MovingPixelsState(editor, msg, pixelsMovement, handle))); } catch (const LockedDocumentException&) { // Other editor is locking the document. // TODO steal the PixelsMovement of the other editor and use it for this one. StatusBar::instance()->showTip(1000, "The sprite is locked in other editor"); editor->showMouseCursor(kForbiddenCursor); } catch (const std::bad_alloc&) { StatusBar::instance()->showTip(1000, "Not enough memory to transform the selection"); editor->showMouseCursor(kForbiddenCursor); } }