Changeset View
Changeset View
Standalone View
Standalone View
libs/ui/kis_layer_manager.cc
Show First 20 Lines • Show All 564 Lines • ▼ Show 20 Line(s) | |||||
565 | 565 | | |||
566 | void KisLayerManager::rotateLayer(double radians) | 566 | void KisLayerManager::rotateLayer(double radians) | ||
567 | { | 567 | { | ||
568 | if (!m_view->image()) return; | 568 | if (!m_view->image()) return; | ||
569 | 569 | | |||
570 | KisLayerSP layer = activeLayer(); | 570 | KisLayerSP layer = activeLayer(); | ||
571 | if (!layer) return; | 571 | if (!layer) return; | ||
572 | 572 | | |||
573 | if (!m_view->blockUntillOperationsFinished(m_view->image())) return; | ||||
574 | | ||||
573 | m_view->image()->rotateNode(layer, radians); | 575 | m_view->image()->rotateNode(layer, radians); | ||
574 | } | 576 | } | ||
575 | 577 | | |||
576 | void KisLayerManager::shearLayer(double angleX, double angleY) | 578 | void KisLayerManager::shearLayer(double angleX, double angleY) | ||
577 | { | 579 | { | ||
578 | if (!m_view->image()) return; | 580 | if (!m_view->image()) return; | ||
579 | 581 | | |||
580 | KisLayerSP layer = activeLayer(); | 582 | KisLayerSP layer = activeLayer(); | ||
581 | if (!layer) return; | 583 | if (!layer) return; | ||
582 | 584 | | |||
585 | if (!m_view->blockUntillOperationsFinished(m_view->image())) return; | ||||
586 | | ||||
583 | m_view->image()->shearNode(layer, angleX, angleY); | 587 | m_view->image()->shearNode(layer, angleX, angleY); | ||
584 | } | 588 | } | ||
585 | 589 | | |||
586 | void KisLayerManager::flattenImage() | 590 | void KisLayerManager::flattenImage() | ||
587 | { | 591 | { | ||
588 | KisImageWSP image = m_view->image(); | 592 | KisImageSP image = m_view->image(); | ||
593 | | ||||
594 | if (!m_view->blockUntillOperationsFinished(image)) return; | ||||
589 | 595 | | |||
590 | if (image) { | 596 | if (image) { | ||
591 | bool doIt = true; | 597 | bool doIt = true; | ||
592 | 598 | | |||
593 | if (image->nHiddenLayers() > 0) { | 599 | if (image->nHiddenLayers() > 0) { | ||
594 | int answer = QMessageBox::warning(m_view->mainWindow(), | 600 | int answer = QMessageBox::warning(m_view->mainWindow(), | ||
595 | i18nc("@title:window", "Flatten Image"), | 601 | i18nc("@title:window", "Flatten Image"), | ||
596 | i18n("The image contains hidden layers that will be lost. Do you want to flatten the image?"), | 602 | i18n("The image contains hidden layers that will be lost. Do you want to flatten the image?"), | ||
Show All 32 Lines | 626 | if (isSelectionMask(currentNode) && | |||
629 | result = true; | 635 | result = true; | ||
630 | } | 636 | } | ||
631 | 637 | | |||
632 | return result; | 638 | return result; | ||
633 | } | 639 | } | ||
634 | 640 | | |||
635 | void KisLayerManager::mergeLayer() | 641 | void KisLayerManager::mergeLayer() | ||
636 | { | 642 | { | ||
637 | KisImageWSP image = m_view->image(); | 643 | KisImageSP image = m_view->image(); | ||
638 | if (!image) return; | 644 | if (!image) return; | ||
639 | 645 | | |||
640 | KisLayerSP layer = activeLayer(); | 646 | KisLayerSP layer = activeLayer(); | ||
641 | if (!layer) return; | 647 | if (!layer) return; | ||
642 | 648 | | |||
649 | if (!m_view->blockUntillOperationsFinished(image)) return; | ||||
650 | | ||||
643 | QList<KisNodeSP> selectedNodes = m_view->nodeManager()->selectedNodes(); | 651 | QList<KisNodeSP> selectedNodes = m_view->nodeManager()->selectedNodes(); | ||
644 | if (selectedNodes.size() > 1) { | 652 | if (selectedNodes.size() > 1) { | ||
645 | image->mergeMultipleLayers(selectedNodes, m_view->activeNode()); | 653 | image->mergeMultipleLayers(selectedNodes, m_view->activeNode()); | ||
646 | 654 | | |||
647 | } else if (!tryMergeSelectionMasks(m_view->activeNode(), image)) { | 655 | } else if (!tryMergeSelectionMasks(m_view->activeNode(), image)) { | ||
648 | 656 | | |||
649 | if (!layer->prevSibling()) return; | 657 | if (!layer->prevSibling()) return; | ||
650 | KisLayer *prevLayer = dynamic_cast<KisLayer*>(layer->prevSibling().data()); | 658 | KisLayer *prevLayer = dynamic_cast<KisLayer*>(layer->prevSibling().data()); | ||
Show All 9 Lines | |||||
660 | } | 668 | } | ||
661 | } | 669 | } | ||
662 | 670 | | |||
663 | m_view->updateGUI(); | 671 | m_view->updateGUI(); | ||
664 | } | 672 | } | ||
665 | 673 | | |||
666 | void KisLayerManager::flattenLayer() | 674 | void KisLayerManager::flattenLayer() | ||
667 | { | 675 | { | ||
668 | KisImageWSP image = m_view->image(); | 676 | KisImageSP image = m_view->image(); | ||
669 | if (!image) return; | 677 | if (!image) return; | ||
670 | 678 | | |||
671 | KisLayerSP layer = activeLayer(); | 679 | KisLayerSP layer = activeLayer(); | ||
672 | if (!layer) return; | 680 | if (!layer) return; | ||
673 | 681 | | |||
682 | if (!m_view->blockUntillOperationsFinished(image)) return; | ||||
683 | | ||||
674 | image->flattenLayer(layer); | 684 | image->flattenLayer(layer); | ||
675 | m_view->updateGUI(); | 685 | m_view->updateGUI(); | ||
676 | } | 686 | } | ||
677 | 687 | | |||
678 | void KisLayerManager::rasterizeLayer() | 688 | void KisLayerManager::rasterizeLayer() | ||
679 | { | 689 | { | ||
680 | KisImageWSP image = m_view->image(); | 690 | KisImageSP image = m_view->image(); | ||
681 | if (!image) return; | 691 | if (!image) return; | ||
682 | 692 | | |||
683 | KisLayerSP layer = activeLayer(); | 693 | KisLayerSP layer = activeLayer(); | ||
684 | if (!layer) return; | 694 | if (!layer) return; | ||
685 | 695 | | |||
696 | if (!m_view->blockUntillOperationsFinished(image)) return; | ||||
697 | | ||||
686 | KisPaintLayerSP paintLayer = new KisPaintLayer(image, layer->name(), layer->opacity()); | 698 | KisPaintLayerSP paintLayer = new KisPaintLayer(image, layer->name(), layer->opacity()); | ||
687 | KisPainter gc(paintLayer->paintDevice()); | 699 | KisPainter gc(paintLayer->paintDevice()); | ||
688 | QRect rc = layer->projection()->exactBounds(); | 700 | QRect rc = layer->projection()->exactBounds(); | ||
689 | gc.bitBlt(rc.topLeft(), layer->projection(), rc); | 701 | gc.bitBlt(rc.topLeft(), layer->projection(), rc); | ||
690 | 702 | | |||
691 | m_commandsAdapter->beginMacro(kundo2_i18n("Rasterize Layer")); | 703 | m_commandsAdapter->beginMacro(kundo2_i18n("Rasterize Layer")); | ||
692 | m_commandsAdapter->addNode(paintLayer.data(), layer->parent().data(), layer.data()); | 704 | m_commandsAdapter->addNode(paintLayer.data(), layer->parent().data(), layer.data()); | ||
693 | 705 | | |||
▲ Show 20 Lines • Show All 50 Lines • ▼ Show 20 Line(s) | 725 | { | |||
744 | 756 | | |||
745 | QString mimeType= KisMimeDatabase::mimeTypeForFile(f.fileName()); | 757 | QString mimeType= KisMimeDatabase::mimeTypeForFile(f.fileName()); | ||
746 | if (mimeType.isEmpty()) { | 758 | if (mimeType.isEmpty()) { | ||
747 | mimeType = "image/png"; | 759 | mimeType = "image/png"; | ||
748 | } | 760 | } | ||
749 | QString extension = KisMimeDatabase::suffixesForMimeType(mimeType).first(); | 761 | QString extension = KisMimeDatabase::suffixesForMimeType(mimeType).first(); | ||
750 | QString basename = f.baseName(); | 762 | QString basename = f.baseName(); | ||
751 | 763 | | |||
752 | KisImageWSP image = m_view->image(); | 764 | KisImageSP image = m_view->image(); | ||
753 | if (!image) return; | 765 | if (!image) return; | ||
754 | 766 | | |||
755 | KisSaveGroupVisitor v(image, chkInvisible->isChecked(), chkDepth->isChecked(), f.absolutePath(), basename, extension, mimeType); | 767 | KisSaveGroupVisitor v(image, chkInvisible->isChecked(), chkDepth->isChecked(), f.absolutePath(), basename, extension, mimeType); | ||
756 | image->rootLayer()->accept(v); | 768 | image->rootLayer()->accept(v); | ||
757 | 769 | | |||
758 | } | 770 | } | ||
759 | 771 | | |||
760 | bool KisLayerManager::activeLayerHasSelection() | 772 | bool KisLayerManager::activeLayerHasSelection() | ||
Show All 39 Lines | |||||
800 | void KisLayerManager::layerStyle() | 812 | void KisLayerManager::layerStyle() | ||
801 | { | 813 | { | ||
802 | KisImageWSP image = m_view->image(); | 814 | KisImageWSP image = m_view->image(); | ||
803 | if (!image) return; | 815 | if (!image) return; | ||
804 | 816 | | |||
805 | KisLayerSP layer = activeLayer(); | 817 | KisLayerSP layer = activeLayer(); | ||
806 | if (!layer) return; | 818 | if (!layer) return; | ||
807 | 819 | | |||
820 | if (!m_view->blockUntillOperationsFinished(image)) return; | ||||
821 | | ||||
808 | KisPSDLayerStyleSP oldStyle; | 822 | KisPSDLayerStyleSP oldStyle; | ||
809 | if (layer->layerStyle()) { | 823 | if (layer->layerStyle()) { | ||
810 | oldStyle = layer->layerStyle()->clone(); | 824 | oldStyle = layer->layerStyle()->clone(); | ||
811 | } | 825 | } | ||
812 | else { | 826 | else { | ||
813 | oldStyle = toQShared(new KisPSDLayerStyle()); | 827 | oldStyle = toQShared(new KisPSDLayerStyle()); | ||
814 | } | 828 | } | ||
815 | 829 | | |||
Show All 16 Lines |