Skip to content

Commit

Permalink
Merge pull request #1297 from davidlamhauge/1177_extended
Browse files Browse the repository at this point in the history
#1177 Added possibilities for import positions
  • Loading branch information
candyface authored Dec 9, 2019
2 parents 0757436 + 5d4b356 commit 59b6fd6
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 11 deletions.
27 changes: 23 additions & 4 deletions app/src/importpositiondialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,10 @@ ImportPositionDialog::ImportPositionDialog(QWidget *parent) :
{
ui->setupUi(this);

ui->cbImagePosition->addItem(tr("Center of canvas"));
ui->cbImagePosition->addItem(tr("Center of active camera"));
ui->cbImagePosition->addItem(tr("Center of current view"));
ui->cbImagePosition->addItem(tr("Center of canvas (0,0)"));
ui->cbImagePosition->addItem(tr("Center of camera, current frame"));
ui->cbImagePosition->addItem(tr("Center of camera, follow camera"));

connect(ui->cbImagePosition, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &ImportPositionDialog::didChangeComboBoxIndex);
connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &ImportPositionDialog::changeImportView);
Expand All @@ -37,19 +39,36 @@ void ImportPositionDialog::didChangeComboBoxIndex(const int index)

void ImportPositionDialog::changeImportView()
{
mEditor->view()->setImportFollowsCamera(false);
QTransform transform;
if (mImportOption == ImportPosition::Type::CenterOfCanvas)
if (mImportOption == ImportPosition::Type::CenterOfView)
{
QPointF centralPoint = mEditor->getScribbleArea()->getCentralPoint();
transform = transform.fromTranslate(centralPoint.x(), centralPoint.y());
mEditor->view()->setImportView(transform);
QSettings settings(PENCIL2D, PENCIL2D);
settings.setValue(IMPORT_REPOSITION_TYPE, ui->cbImagePosition->currentIndex());
return;
}
else if (mImportOption == ImportPosition::Type::CenterOfCanvas)
{
transform = transform.fromTranslate(0, 0);
mEditor->view()->setImportView(transform);
QSettings settings(PENCIL2D, PENCIL2D);
settings.setValue(IMPORT_REPOSITION_TYPE, ui->cbImagePosition->currentIndex());
return;
}
else if (mImportOption == ImportPosition::Type::CenterOfCamera)
{
QRectF cameraRect = mEditor->getScribbleArea()->getCameraRect();
transform = transform.fromTranslate(cameraRect.center().x(), cameraRect.center().y());
mEditor->view()->setImportView(transform);
QSettings settings(PENCIL2D, PENCIL2D);
settings.setValue(IMPORT_REPOSITION_TYPE, ui->cbImagePosition->currentIndex());
return;
}
mEditor->view()->setImportView(transform);

mEditor->view()->setImportFollowsCamera(true);
QSettings settings(PENCIL2D, PENCIL2D);
settings.setValue(IMPORT_REPOSITION_TYPE, ui->cbImagePosition->currentIndex());
}
20 changes: 13 additions & 7 deletions app/src/importpositiondialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,25 @@ class ImportPositionDialog : public QDialog
struct ImportPosition {

enum Type {
CenterOfCamera,
CenterOfView,
CenterOfCanvas,
CenterOfCamera,
CenterOfCameraFollowed,
None
};

static Type getTypeFromIndex(int index) {
switch (index) {
case 0:
return CenterOfCanvas;
case 1:
return CenterOfCamera;
default:
return None;
case 0:
return CenterOfView;
case 1:
return CenterOfCanvas;
case 2:
return CenterOfCamera;
case 3:
return CenterOfCameraFollowed;
default:
return None;
}
}
};
Expand Down
6 changes: 6 additions & 0 deletions core_lib/src/interface/editor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -877,6 +877,12 @@ bool Editor::importImage(QString filePath)
{
Layer* layer = layers()->currentLayer();

if (view()->getImportFollowsCamera())
{
LayerCamera* camera = static_cast<LayerCamera*>(layers()->getLastCameraLayer());
QTransform transform = camera->getViewAtFrame(currentFrame());
view()->setImportView(transform);
}
switch (layer->type())
{
case Layer::BITMAP:
Expand Down
4 changes: 4 additions & 0 deletions core_lib/src/managers/viewmanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ class ViewManager : public BaseManager
QTransform getImportView() { return mImportView; }
void setImportView(const QTransform& newView) { mImportView = newView; }

void setImportFollowsCamera(bool b) { mImportFollowsCamera = b; }
bool getImportFollowsCamera() { return mImportFollowsCamera; }

void updateViewTransforms();

Q_SIGNAL void viewChanged();
Expand All @@ -108,6 +111,7 @@ class ViewManager : public BaseManager

bool mIsFlipHorizontal = false;
bool mIsFlipVertical = false;
bool mImportFollowsCamera = false;

LayerCamera* mCameraLayer = nullptr;
};
Expand Down

0 comments on commit 59b6fd6

Please sign in to comment.