diff --git a/app/src/preferencesdialog.cpp b/app/src/preferencesdialog.cpp index c5cd972f3a..56819b5f42 100644 --- a/app/src/preferencesdialog.cpp +++ b/app/src/preferencesdialog.cpp @@ -150,7 +150,8 @@ GeneralPage::GeneralPage(QWidget* parent) : connect(ui->curveSmoothingLevel, &QSlider::valueChanged, this, &GeneralPage::curveSmoothingChange); connect(ui->highResBox, &QCheckBox::stateChanged, this, &GeneralPage::highResCheckboxStateChanged); connect(ui->dottedCursorBox, &QCheckBox::stateChanged, this, &GeneralPage::dottedCursorCheckboxStateChanged); - connect(ui->gridSizeInput, spinValueChanged, this, &GeneralPage::gridSizeChange); + connect(ui->gridSizeInputW, spinValueChanged, this, &GeneralPage::gridSizeChangeW); + connect(ui->gridSizeInputH, spinValueChanged, this, &GeneralPage::gridSizeChangeH); connect(ui->gridCheckBox, &QCheckBox::stateChanged, this, &GeneralPage::gridCheckBoxStateChanged); } @@ -181,8 +182,10 @@ void GeneralPage::updateValues() ui->antialiasingBox->setChecked(mManager->isOn(SETTING::ANTIALIAS)); SignalBlocker b6(ui->dottedCursorBox); ui->dottedCursorBox->setChecked(mManager->isOn(SETTING::DOTTED_CURSOR)); - SignalBlocker b7(ui->gridSizeInput); - ui->gridSizeInput->setValue(mManager->getInt(SETTING::GRID_SIZE)); + SignalBlocker b7(ui->gridSizeInputW); + ui->gridSizeInputW->setValue(mManager->getInt(SETTING::GRID_SIZE_W)); + SignalBlocker b11(ui->gridSizeInputH); + ui->gridSizeInputH->setValue(mManager->getInt(SETTING::GRID_SIZE_H)); SignalBlocker b8(ui->gridCheckBox); ui->gridCheckBox->setChecked(mManager->isOn(SETTING::GRID)); @@ -259,9 +262,14 @@ void GeneralPage::dottedCursorCheckboxStateChanged(int b) mManager->set( SETTING::DOTTED_CURSOR, b != Qt::Unchecked ); } -void GeneralPage::gridSizeChange(int value) +void GeneralPage::gridSizeChangeW(int value) { - mManager->set(SETTING::GRID_SIZE, value); + mManager->set(SETTING::GRID_SIZE_W, value); +} + +void GeneralPage::gridSizeChangeH(int value) +{ + mManager->set(SETTING::GRID_SIZE_H, value); } void GeneralPage::gridCheckBoxStateChanged(int b) diff --git a/app/src/preferencesdialog.h b/app/src/preferencesdialog.h index 6f3f537a1c..b9e2c16c4d 100644 --- a/app/src/preferencesdialog.h +++ b/app/src/preferencesdialog.h @@ -75,7 +75,8 @@ class GeneralPage : public QWidget public slots: void updateValues(); - void gridSizeChange(int value); + void gridSizeChangeW(int value); + void gridSizeChangeH(int value); signals: void windowOpacityChange(int value); diff --git a/app/ui/generalpage.ui b/app/ui/generalpage.ui index 294b66d0f3..373176febb 100644 --- a/app/ui/generalpage.ui +++ b/app/ui/generalpage.ui @@ -6,12 +6,12 @@ 0 0 - 369 - 377 + 337 + 465 - - + + @@ -38,9 +38,9 @@ 0 - 0 - 332 - 510 + -202 + 303 + 647 @@ -239,8 +239,35 @@ Grid - - + + + + Grid Heigth + + + + + + + Grid Width + + + + + + + 5 + + + 9999 + + + 100 + + + + + 80 @@ -254,14 +281,17 @@ - 1 + 5 - 512 + 9999 + + + 100 - + Enable Grid @@ -277,6 +307,25 @@ + + scrollArea + languageCombo + windowOpacityLevel + shadowsBox + toolCursorsBox + dottedCursorBox + checkerBackgroundButton + whiteBackgroundButton + greyBackgroundButton + dotsBackgroundButton + weaveBackgroundButton + antialiasingBox + curveSmoothingLevel + highResBox + gridCheckBox + gridSizeInputW + gridSizeInputH + diff --git a/core_lib/src/canvaspainter.cpp b/core_lib/src/canvaspainter.cpp index 877b573129..af492b59d2 100644 --- a/core_lib/src/canvaspainter.cpp +++ b/core_lib/src/canvaspainter.cpp @@ -390,15 +390,16 @@ int round100(double f, int gridSize) void CanvasPainter::paintGrid(QPainter& painter) { - int gridSize = mOptions.nGridSize; + int gridSizeW = mOptions.nGridSizeW; + int gridSizeH = mOptions.nGridSizeH; QRectF rect = painter.viewport(); QRectF boundingRect = mViewTransform.inverted().mapRect(rect); - int left = round100(boundingRect.left(), gridSize) - gridSize; - int right = round100(boundingRect.right(), gridSize) + gridSize; - int top = round100(boundingRect.top(), gridSize) - gridSize; - int bottom = round100(boundingRect.bottom(), gridSize) + gridSize; + int left = round100(boundingRect.left(), gridSizeW) - gridSizeW; + int right = round100(boundingRect.right(), gridSizeW) + gridSizeW; + int top = round100(boundingRect.top(), gridSizeH) - gridSizeH; + int bottom = round100(boundingRect.bottom(), gridSizeH) + gridSizeH; QPen pen(Qt::lightGray); pen.setCosmetic(true); @@ -407,12 +408,14 @@ void CanvasPainter::paintGrid(QPainter& painter) painter.setBrush(Qt::NoBrush); QPainter::RenderHints previous_renderhints = painter.renderHints(); painter.setRenderHint(QPainter::Antialiasing, false); - for (int x = left; x < right; x += gridSize) + // draw vertical gridlines + for (int x = left; x < right; x += gridSizeW) { painter.drawLine(x, top, x, bottom); } - for (int y = top; y < bottom; y += gridSize) + // draw horizontal gridlines + for (int y = top; y < bottom; y += gridSizeH) { painter.drawLine(left, y, right, y); } diff --git a/core_lib/src/canvaspainter.h b/core_lib/src/canvaspainter.h index c4ba741c1a..b9b0f892a5 100644 --- a/core_lib/src/canvaspainter.h +++ b/core_lib/src/canvaspainter.h @@ -41,7 +41,8 @@ struct CanvasPainterOptions bool bColorizeNextOnion = false; bool bAntiAlias = false; bool bGrid = false; - int nGridSize = 50; /* This is the grid size IN PIXELS. The grid will scale with the image, though */ + int nGridSizeW = 50; /* This is the grid Width IN PIXELS. The grid will scale with the image, though */ + int nGridSizeH = 50; /* This is the grid Heigth IN PIXELS. The grid will scale with the image, though */ bool bAxis = false; bool bThinLines = false; bool bOutlines = false; diff --git a/core_lib/src/interface/scribblearea.cpp b/core_lib/src/interface/scribblearea.cpp index 0f4d428115..740c4b46a5 100644 --- a/core_lib/src/interface/scribblearea.cpp +++ b/core_lib/src/interface/scribblearea.cpp @@ -115,7 +115,8 @@ void ScribbleArea::settingUpdated(SETTING setting) case SETTING::ONION_MAX_OPACITY: case SETTING::ANTIALIAS: case SETTING::GRID: - case SETTING::GRID_SIZE: + case SETTING::GRID_SIZE_W: + case SETTING::GRID_SIZE_H: case SETTING::PREV_ONION: case SETTING::NEXT_ONION: case SETTING::ONION_BLUE: @@ -1148,7 +1149,8 @@ void ScribbleArea::drawCanvas(int frame, QRect rect) o.fOnionSkinMinOpacity = mPrefs->getInt(SETTING::ONION_MIN_OPACITY); o.bAntiAlias = mPrefs->isOn(SETTING::ANTIALIAS); o.bGrid = mPrefs->isOn(SETTING::GRID); - o.nGridSize = mPrefs->getInt(SETTING::GRID_SIZE); + o.nGridSizeW = mPrefs->getInt(SETTING::GRID_SIZE_W); + o.nGridSizeH = mPrefs->getInt(SETTING::GRID_SIZE_H); o.bAxis = false; o.bThinLines = mPrefs->isOn(SETTING::INVISIBLE_LINES); o.bOutlines = mPrefs->isOn(SETTING::OUTLINES); diff --git a/core_lib/src/managers/preferencemanager.cpp b/core_lib/src/managers/preferencemanager.cpp index 3c3bc9d0fe..8496c3591b 100644 --- a/core_lib/src/managers/preferencemanager.cpp +++ b/core_lib/src/managers/preferencemanager.cpp @@ -54,7 +54,8 @@ void PreferenceManager::loadPrefs() set(SETTING::OUTLINES, settings.value(SETTING_OUTLINES, false).toBool()); // Grid - set(SETTING::GRID_SIZE, settings.value(SETTING_GRID_SIZE, 50).toInt()); + set(SETTING::GRID_SIZE_W, settings.value(SETTING_GRID_SIZE_W, 100).toInt()); + set(SETTING::GRID_SIZE_H, settings.value(SETTING_GRID_SIZE_H, 100).toInt()); // General set(SETTING::ANTIALIAS, settings.value(SETTING_ANTIALIAS, true).toBool()); @@ -210,8 +211,11 @@ void PreferenceManager::set(SETTING option, int value) case SETTING::ONION_NEXT_FRAMES_NUM: settings.setValue(SETTING_ONION_NEXT_FRAMES_NUM, value); break; - case SETTING::GRID_SIZE: - settings.setValue(SETTING_GRID_SIZE, value); + case SETTING::GRID_SIZE_W: + settings.setValue(SETTING_GRID_SIZE_W, value); + break; + case SETTING::GRID_SIZE_H: + settings.setValue(SETTING_GRID_SIZE_H, value); break; case SETTING::DRAW_ON_EMPTY_FRAME_ACTION: settings.setValue( SETTING_DRAW_ON_EMPTY_FRAME_ACTION, value); diff --git a/core_lib/src/managers/preferencemanager.h b/core_lib/src/managers/preferencemanager.h index df816e428f..1d93500f32 100644 --- a/core_lib/src/managers/preferencemanager.h +++ b/core_lib/src/managers/preferencemanager.h @@ -54,7 +54,8 @@ enum class SETTING ONION_NEXT_FRAMES_NUM, ONION_WHILE_PLAYBACK, ONION_TYPE, - GRID_SIZE, + GRID_SIZE_W, + GRID_SIZE_H, QUICK_SIZING, MULTILAYER_ONION, LANGUAGE, diff --git a/core_lib/src/util/pencildef.h b/core_lib/src/util/pencildef.h index 71836eeff2..37dad533f5 100644 --- a/core_lib/src/util/pencildef.h +++ b/core_lib/src/util/pencildef.h @@ -195,7 +195,8 @@ enum StabilizationLevel #define SETTING_ONION_BLUE "OnionBlue" #define SETTING_ONION_RED "OnionRed" -#define SETTING_GRID_SIZE "GridSize" +#define SETTING_GRID_SIZE_W "GridSizeW" +#define SETTING_GRID_SIZE_H "GridSizeH" #define SETTING_ONION_MAX_OPACITY "OnionMaxOpacity" #define SETTING_ONION_MIN_OPACITY "OnionMinOpacity"