Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bitmap Coloring layer version 2, with preview for scanned drawings #1178

Open
wants to merge 126 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
2e93e48
Opens scans and makes tranparent above a threshold
davidlamhauge Jan 17, 2019
96f2efc
added mThreshold variable
davidlamhauge Jan 18, 2019
4ad76c0
Dock created but hidden
davidlamhauge Jan 18, 2019
e25586a
changes in crop function
davidlamhauge Jan 23, 2019
184bf80
Copy from scan and Next is working
davidlamhauge Jan 24, 2019
8a7388a
Finished designing Bitmap Color Process Dock
davidlamhauge Jan 24, 2019
e0bf339
Add color layer and preprocess drawings
davidlamhauge Jan 27, 2019
7248148
WIP thin line not working
davidlamhauge Jan 27, 2019
1c9e546
WIP small bug corrected
davidlamhauge Jan 27, 2019
8028876
WIP still not working
davidlamhauge Jan 27, 2019
7f9fc6c
WIP still not working
davidlamhauge Jan 27, 2019
27fd334
Thin line function works now
davidlamhauge Jan 27, 2019
7b5c2a6
Replace thinline works
davidlamhauge Jan 29, 2019
71f41ba
ui changes and change in transp-calculation
davidlamhauge Jan 29, 2019
48240cb
removed some dead code
davidlamhauge Jan 29, 2019
daa1fbc
WIP coloring not working yet
davidlamhauge Jan 30, 2019
aff05ee
WIP still not working
davidlamhauge Jan 31, 2019
4c708ef
WIP just getting worse
davidlamhauge Feb 1, 2019
69ab247
Tested several gray values for pencil. Works now.
davidlamhauge Feb 1, 2019
e17a7c3
merged color_layer_new
davidlamhauge Feb 1, 2019
46145a8
Added colorlayer info to xml
davidlamhauge Feb 2, 2019
a515c59
ParentId. Recovery of one frame. Ui improved
davidlamhauge Feb 2, 2019
649d1b7
Added modification to frames. x-button en-/disable.
davidlamhauge Feb 3, 2019
f2f0775
Added scrollbar to coloring dock
davidlamhauge Feb 3, 2019
b023e1e
Simplified Ui and Ux
davidlamhauge Feb 11, 2019
96c1994
Merging master into color_layer_ver2
davidlamhauge Feb 11, 2019
f8b469c
Clarity in coloring dock. Ensuring start from frame 1
davidlamhauge Feb 11, 2019
c004c09
Enhanced thin algorithm
davidlamhauge Feb 13, 2019
669a9a1
Changed QRgb thinline. Optimized coloring functions
davidlamhauge Feb 13, 2019
1095da6
Replaced ParentId with mHasColorLayer and mIsColorLayer
davidlamhauge Feb 13, 2019
97590df
Refining dialog appearence
davidlamhauge Feb 13, 2019
091a2c2
Update dock when visible
davidlamhauge Feb 13, 2019
4b9f8d0
Moved functions from LayerBitmap to BitmapImage
davidlamhauge Feb 19, 2019
eb7c4d1
Thinning and removing colored lines works
davidlamhauge Feb 23, 2019
38dee80
Adjusted colored line support
davidlamhauge Feb 24, 2019
de1e4a5
Added support for green lines for shadowing
davidlamhauge Feb 25, 2019
fbc553c
Support for green colored lines
davidlamhauge Feb 25, 2019
e6552bf
Merged conflicts
davidlamhauge Feb 25, 2019
5fbbc78
Optimizing fillWhiteAreas
davidlamhauge Feb 27, 2019
a7d280d
Supports red, green and blue lines
davidlamhauge Feb 27, 2019
3475489
Coloring working with colored lines
davidlamhauge Feb 28, 2019
16cadf3
Separated initColorLayer to two functions
davidlamhauge Mar 1, 2019
4836afa
WIP working on ui
davidlamhauge Mar 2, 2019
197d925
Dock redesigned
davidlamhauge Mar 2, 2019
787ba8a
Setting up color widget interactions
davidlamhauge Mar 2, 2019
6c888c9
Blend lines working.
davidlamhauge Mar 3, 2019
1ad01ac
Clean up: code, functions, includes, icons
davidlamhauge Mar 3, 2019
04b83f3
Check/Uncheck on Prepare tab, are copied to other tabs
davidlamhauge Mar 4, 2019
f695d77
Select and trace in one go
davidlamhauge Mar 4, 2019
630ae55
Merge branch 'master' into color_layer_ver3
davidlamhauge Mar 4, 2019
2108de1
Cleaning up code
davidlamhauge Mar 4, 2019
c53ee44
Select integrated in trace feature
davidlamhauge Mar 5, 2019
373a4cd
Set flag to avoid unwanted select
davidlamhauge Mar 5, 2019
7447ba3
New select routine consistent to Apply
davidlamhauge Mar 6, 2019
596e3c3
WIP not quite ok when method is changing
davidlamhauge Mar 7, 2019
e076b15
Deselect all after tracing
davidlamhauge Mar 7, 2019
1ecb23a
Bug in thin-function gone. Small ui changes
davidlamhauge Mar 8, 2019
a040896
Optimizing thin and blend functions
davidlamhauge Mar 8, 2019
c0430f2
Consistent naming and some cleanup in code
davidlamhauge Mar 9, 2019
98276fe
Bug in blend() function corrected
davidlamhauge Mar 9, 2019
8de4461
Removed filter restrain. Some optimizing of code
davidlamhauge Mar 10, 2019
8c5bfce
Bug in Blend corrected
davidlamhauge Mar 10, 2019
589eb1f
Reset button on Trace-tab.
davidlamhauge Mar 10, 2019
0767c9d
Bug when using select tool corrected
davidlamhauge Mar 11, 2019
fa9cf8b
Removed Black from filters
davidlamhauge Mar 11, 2019
912abb5
Bug when tracing pencil2d drawings fixed
davidlamhauge Mar 24, 2019
06b18e7
Merged with updated master branch
davidlamhauge Apr 17, 2019
596c642
merged master into color_version_2
davidlamhauge Jul 1, 2019
5e6fe84
Applying changes from scribblearea refactoring
davidlamhauge Jul 2, 2019
a965650
Merged Master into color_layer_ver2
davidlamhauge Aug 5, 2019
f2ac696
Force choose method. Make selecttool button more intuitive
davidlamhauge Oct 1, 2019
35431b3
Resolving merge conflicts with Master
davidlamhauge Jan 19, 2020
ac4f2e0
Fixed error in fillWithColor function bitmapimage.cpp
davidlamhauge Feb 18, 2020
e251a89
Prevent autosave while Tracing, Thinning and Blending
davidlamhauge Feb 20, 2020
e409ef4
Disabled autosave while doing batchwork in coloring
davidlamhauge Feb 23, 2020
52cdf9d
Resolved merge conflicts with master
davidlamhauge Mar 11, 2020
127fbbe
Merge branch 'master' into color_layer_ver2
davidlamhauge Apr 26, 2020
3a30a8c
Make coloring Layer visible, and move beneath Anim layer
davidlamhauge Apr 26, 2020
d59f548
Removed unnecessary variable
davidlamhauge Apr 26, 2020
a8843d1
Resolved merge conflicts with master (4th time)
davidlamhauge Jun 5, 2020
b36dbba
Merge branch 'master' into color_layer_ver2
davidlamhauge Jul 4, 2020
e179c49
Merge branch 'master' into coloringWithSeparation
davidlamhauge Jul 4, 2020
ce08b01
Fixing black lines in trace
davidlamhauge Jul 5, 2020
ec48140
Testing debug messages
davidlamhauge Jul 5, 2020
f0b4cc7
Merge branch 'master' into coloringWithSeparation
davidlamhauge Jul 5, 2020
26c5f6f
Disabling checkboxes in thin and blend, to avoid mistakes
davidlamhauge Jul 5, 2020
f068b43
Merge branch 'master' into coloringWithSeparation
davidlamhauge Jul 5, 2020
9ba29f9
Merge branch 'coloringWithSeparation' of https://github.com/davidlamh…
davidlamhauge Jul 5, 2020
c24ff6d
Refactoring coloring feature
davidlamhauge Jul 6, 2020
80f8105
Adding progress bars. Optimizing trace code
davidlamhauge Jul 8, 2020
d2f0a9c
Optimizing UI. Refactoring progress bars
davidlamhauge Jul 8, 2020
6f316d7
Merge branch 'master' into coloringWithSeparation
davidlamhauge Jul 8, 2020
5d8ff54
Adding guides. Optimized and automated workflow
davidlamhauge Jul 8, 2020
5fe8399
Redesign dialog. Show preview
davidlamhauge Jul 10, 2020
4affc16
Enhancement to preview
davidlamhauge Jul 11, 2020
9d969bd
Renaming to Manga Coloring
davidlamhauge Jul 12, 2020
d34ffd4
Function for erase colored lines. Improving scan tracing
davidlamhauge Aug 24, 2020
e5caaa5
Improved ux
davidlamhauge Aug 27, 2020
573d620
Add white background to dialog scene widget
MrStevns Aug 28, 2020
a470a5f
Make slight variation to tracing algorithm
MrStevns Aug 28, 2020
f1b64cf
Cleanup dialog properly when closing.
MrStevns Aug 29, 2020
7c16262
Implement various improvements
MrStevns Aug 29, 2020
e5018ca
Merge branch 'coloringWithSeparation_preview' of https://github.com/d…
MrStevns Aug 29, 2020
38b64ae
Shorten button name
MrStevns Aug 29, 2020
d2abe86
Some extra check for nullptr
davidlamhauge Mar 12, 2021
d398720
Merged master into branch
davidlamhauge Mar 12, 2021
5fc2a61
Removed some dead code, and replaced magic number with var
davidlamhauge Mar 13, 2021
baabbe2
Merged preview branch into branch
davidlamhauge Mar 13, 2021
994d94f
Removed debug messages and enhanced ui
davidlamhauge Mar 13, 2021
094ded5
Correcting titles for two dialogs
davidlamhauge Mar 14, 2021
220b259
Fixed tracing on originals
davidlamhauge Apr 5, 2021
384e90c
merged master into branch
davidlamhauge Apr 14, 2022
b250798
Merge branch 'master' into color_layer_ver2
J5lx Oct 14, 2022
9a9a8ae
merged updated master into branch color_layer_ver2
davidlamhauge Jul 29, 2023
db802b4
Fixed bug, that made first frame untracable
davidlamhauge Jul 29, 2023
5bace47
Merge branch 'master' into color_layer_ver2
davidlamhauge Aug 6, 2023
34bd709
Merge branch 'master' into color_layer_ver2
davidlamhauge Aug 11, 2023
e0325c0
Made comments more precise
davidlamhauge Aug 12, 2023
c0ca138
Fixed bug when deleting layer
davidlamhauge Aug 12, 2023
76338a6
Refactor code in deletelayer again
davidlamhauge Aug 12, 2023
a5a6924
Cleaned up code
davidlamhauge Aug 12, 2023
5427d98
Added info-popup for advanced coloring.
davidlamhauge Aug 13, 2023
aa74256
Merge branch 'master' into color_layer_ver2
J5lx Oct 8, 2023
6eaa9b9
Clean up
J5lx Oct 8, 2023
88695a1
Fixed copyFrame, after it has been deleted from layer class
davidlamhauge Feb 15, 2024
be5013a
Finally got copyFrame running.
davidlamhauge Feb 15, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion app/app.pro
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ INCLUDEPATH += \
PRECOMPILED_HEADER = src/app-pch.h

HEADERS += \
src/addtransparencytopaperdialog.h \
src/app-pch.h \
src/importlayersdialog.h \
src/importpositiondialog.h \
Expand Down Expand Up @@ -102,7 +103,8 @@ HEADERS += \
src/doubleprogressdialog.h \
src/colorslider.h \
src/checkupdatesdialog.h \
src/presetdialog.h \
src/bitmapcoloring.h \
src/presetdialog.h \
src/repositionframesdialog.h \
src/commandlineparser.h \
src/commandlineexporter.h \
Expand All @@ -111,6 +113,7 @@ HEADERS += \
src/cameraoptionswidget.h

SOURCES += \
src/addtransparencytopaperdialog.cpp \
src/importlayersdialog.cpp \
src/importpositiondialog.cpp \
src/layeropacitydialog.cpp \
Expand Down Expand Up @@ -153,6 +156,7 @@ SOURCES += \
src/doubleprogressdialog.cpp \
src/colorslider.cpp \
src/checkupdatesdialog.cpp \
src/bitmapcoloring.cpp \
src/presetdialog.cpp \
src/repositionframesdialog.cpp \
src/app_util.cpp \
Expand All @@ -163,6 +167,7 @@ SOURCES += \
src/cameraoptionswidget.cpp

FORMS += \
ui/addtransparencytopaperdialog.ui \
ui/cameraoptionswidget.ui \
ui/camerapropertiesdialog.ui \
ui/importimageseqpreview.ui \
Expand Down Expand Up @@ -191,6 +196,7 @@ FORMS += \
ui/filespage.ui \
ui/toolspage.ui \
ui/toolboxwidget.ui \
ui/bitmapcoloringwidget.ui \
ui/presetdialog.ui

GIT {
Expand Down
3 changes: 3 additions & 0 deletions app/data/app.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@
<file>icons/new/svg/smudge_detailed.svg</file>
<file>icons/new/svg/trash_detailed.svg</file>
<file>icons/new/checkerboard_smaller.png</file>
<file>icons/blue.png</file>
<file>icons/green.png</file>
<file>icons/red.png</file>
<file>icons/overlayCenter.png</file>
<file>icons/overlayGoldenRatio.png</file>
<file>icons/overlaySafe.png</file>
Expand Down
Binary file added app/data/icons/blue.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/data/icons/green.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/data/icons/red.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
250 changes: 250 additions & 0 deletions app/src/addtransparencytopaperdialog.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,250 @@
#include "addtransparencytopaperdialog.h"
#include "ui_addtransparencytopaperdialog.h"

#include <QGraphicsPixmapItem>
#include <QProgressDialog>
#include <QDebug>

#include "editor.h"
#include "layermanager.h"
#include "selectionmanager.h"
#include "layerbitmap.h"
#include "bitmapimage.h"


AddTransparencyToPaperDialog::AddTransparencyToPaperDialog(QDialog *parent) :
QDialog(parent),
ui(new Ui::AddTransparencyToPaperDialog)
{
ui->setupUi(this);
ui->mainLayout->setStretchFactor(ui->optionsLayout, 1);
ui->mainLayout->setStretchFactor(ui->previewLayout, 20);

connect(this, &QDialog::finished, this, &AddTransparencyToPaperDialog::closeDialog);
connect(ui->sb_treshold, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &AddTransparencyToPaperDialog::SpinboxChanged);
connect(ui->sliderThreshold, &QSlider::valueChanged, this, &AddTransparencyToPaperDialog::SliderChanged);
connect(ui->cb_Red, &QCheckBox::stateChanged, this, &AddTransparencyToPaperDialog::updateDrawing);
connect(ui->cb_Green, &QCheckBox::stateChanged, this, &AddTransparencyToPaperDialog::updateDrawing);
connect(ui->cb_Blue, &QCheckBox::stateChanged, this, &AddTransparencyToPaperDialog::updateDrawing);
connect(ui->btnCancel, &QPushButton::clicked, this, &AddTransparencyToPaperDialog::closeDialog);
connect(ui->btnApply, &QPushButton::clicked, this, &AddTransparencyToPaperDialog::traceScannedDrawings);
connect(ui->testTransparencyCheckbox, &QCheckBox::stateChanged, this, &AddTransparencyToPaperDialog::checkerStateChanged);
connect(ui->zoomSlider, &QSlider::valueChanged, this, &AddTransparencyToPaperDialog::zoomChanged);
}

AddTransparencyToPaperDialog::~AddTransparencyToPaperDialog()
{
delete ui;
}

void AddTransparencyToPaperDialog::setCore(Editor *editor)
{
mEditor = editor;
}

void AddTransparencyToPaperDialog::initUI()
{
if (mEditor->layers()->currentLayer()->type() != Layer::BITMAP)
this->setEnabled(false);
loadDrawing(mEditor->currentFrame());
connect(mEditor->layers(), &LayerManager::currentLayerChanged, this, &AddTransparencyToPaperDialog::layerChanged);
connect(mEditor, &Editor::scrubbedTo, this, &AddTransparencyToPaperDialog::updateDrawing);
connect(mEditor, &Editor::currentFrameUpdated, this, &AddTransparencyToPaperDialog::updateDrawing);

scene.setBackgroundBrush(Qt::white);
ui->preview->setScene(&scene);
ui->preview->show();

if (!mBitmap.bounds().isValid()) {
ui->btnApply->setEnabled(false);
}
}

void AddTransparencyToPaperDialog::SpinboxChanged(int value)
{
mThreshold = value;
ui->sliderThreshold->setValue(value);
updateDrawing();
}

void AddTransparencyToPaperDialog::SliderChanged(int value)
{
mThreshold = value;
ui->sb_treshold->setValue(value);
updateDrawing();
}

void AddTransparencyToPaperDialog::checkerStateChanged(bool state)
{
if (state) {
scene.setBackgroundBrush(QBrush(QImage(":/background/checkerboard.png")));
} else {
scene.setBackgroundBrush(Qt::white);
}
}

void AddTransparencyToPaperDialog::zoomChanged(int zoomLevel)
{
mZoomLevel = zoomLevel;
updatePreview();
}

void AddTransparencyToPaperDialog::resizeEvent(QResizeEvent*)
{
updatePreview();
}

void AddTransparencyToPaperDialog::updatePreview()
{
QImage loadedImage = *mBitmap.image();

QSize previewSize = ui->preview->size()*mZoomLevel;
QSize size = mBitmap.size().scaled(previewSize, Qt::KeepAspectRatioByExpanding);
mPixmapFromImage = QPixmap(size);
mPixmapFromImage.fill(Qt::transparent);

QPainter painter(&mPixmapFromImage);

painter.drawImage(QRect(QPoint(0,0),QSize(size)), loadedImage, loadedImage.rect());
mPreviewImageItem->setPixmap(mPixmapFromImage);

scene.setSceneRect(QRect(QPoint(), previewSize));
}

void AddTransparencyToPaperDialog::loadDrawing(int frame)
{
if (mEditor->layers()->currentLayer()->type() != Layer::BITMAP) { return; }

LayerBitmap* layer = static_cast<LayerBitmap*>(mEditor->layers()->currentLayer());

if (!layer->keyExists(frame))
{
if (!layer->keyExistsWhichCovers(frame))
frame = layer->getPreviousKeyFramePosition(frame);
else
frame = layer->getNextKeyFramePosition(frame);
}

ui->labShowingFrame->setText(tr("Previewing frame %1").arg(QString::number(frame)));

BitmapImage* currentImage = layer->getBitmapImageAtFrame(frame);

if (!currentImage) { return; }

mBitmap = currentImage->copy();
mBitmap.setThreshold(mThreshold);

mBitmap = *mBitmap.scanToTransparent(&mBitmap,
ui->cb_Red->isChecked(),
ui->cb_Green->isChecked(),
ui->cb_Blue->isChecked());

if (mPreviewImageItem == nullptr) {
mPreviewImageItem = scene.addPixmap(mPixmapFromImage);
} else {
mPreviewImageItem->setPixmap(mPixmapFromImage);
}

ui->btnApply->setEnabled(true);

updatePreview();
}

void AddTransparencyToPaperDialog::updateDrawing()
{
loadDrawing(mEditor->currentFrame());
}

void AddTransparencyToPaperDialog::layerChanged(int index)
{
if (mEditor->layers()->getLayer(index)->type() == Layer::BITMAP)
{
this->setEnabled(true);
updateDrawing();
}
else
{
this->setEnabled(false);
}
}

void AddTransparencyToPaperDialog::traceScannedDrawings()
{
if (mEditor->layers()->currentLayer()->type() != Layer::BITMAP) { return; }

LayerBitmap* layer = static_cast<LayerBitmap*>(mEditor->layers()->currentLayer());
BitmapImage* img = new BitmapImage();
bool somethingSelected = mEditor->select()->somethingSelected();

if (ui->rbCurrentKeyframe->isChecked())
{
int frame = mEditor->currentFrame();
if (!layer->keyExists(frame))
{
if (!layer->keyExistsWhichCovers(frame))
frame = layer->getPreviousKeyFramePosition(frame);
else
frame = layer->getNextKeyFramePosition(frame);
}
mEditor->scrubTo(frame);

if (somethingSelected)
{
mEditor->copy();
layer->removeKeyFrame(frame);
layer->addNewKeyFrameAt(frame);
mEditor->paste();
}
img = layer->getBitmapImageAtFrame(frame);
img->setThreshold(mThreshold);
img = img->scanToTransparent(img,
ui->cb_Red->isChecked(),
ui->cb_Green->isChecked(),
ui->cb_Blue->isChecked());
img->modification();
}
else
{
mEditor->setIsDoingRepeatColoring(true);
int count = mEditor->getAutoSaveCounter();
QProgressDialog* mProgress = new QProgressDialog(tr("Tracing scanned drawings..."), tr("Abort"), 0, 100, this);
mProgress->setWindowModality(Qt::WindowModal);
mProgress->show();
mProgress->setMaximum(layer->keyFrameCount());
mProgress->setValue(0);
int keysThinned = 0;
QApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
for (int i = layer->firstKeyFramePosition(); i <= layer->getMaxKeyFramePosition(); i++)
{
if (layer->keyExists(i))
{
mProgress->setValue(keysThinned++);
mEditor->scrubTo(i);
count++;
if (mProgress->wasCanceled())
{
break;
}
if (somethingSelected)
{
mEditor->copy();
layer->removeKeyFrame(i);
layer->addNewKeyFrameAt(i);
mEditor->paste();
}
img = layer->getBitmapImageAtFrame(i);
img->setThreshold(mThreshold);
img = img->scanToTransparent(img,
ui->cb_Red->isChecked(),
ui->cb_Green->isChecked(),
ui->cb_Blue->isChecked());
img->modification();
}
}
mProgress->close();
mEditor->setIsDoingRepeatColoring(false);
mEditor->setAutoSaveCounter(count);
}
if (ui->rbAllKeyframes->isChecked())
emit closeDialog();
}
60 changes: 60 additions & 0 deletions app/src/addtransparencytopaperdialog.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#ifndef ADDTRANSPARENCYTOPAPERDIALOG_H
#define ADDTRANSPARENCYTOPAPERDIALOG_H

#include <QDialog>
#include <QGraphicsScene>

#include "bitmapimage.h"

class Editor;
class QGraphicsPixmapItem;

namespace Ui {
class AddTransparencyToPaperDialog;
}

class AddTransparencyToPaperDialog : public QDialog
{
Q_OBJECT

public:
explicit AddTransparencyToPaperDialog(QDialog *parent = nullptr);
~AddTransparencyToPaperDialog() override;

void setCore(Editor* editor);

void initUI();

signals:
void closeDialog();

protected:
void resizeEvent(QResizeEvent*) override;

private slots:
void SpinboxChanged(int value);
void SliderChanged(int value);
void traceScannedDrawings();
void updateDrawing();
void layerChanged(int index);
void checkerStateChanged(bool state);
void zoomChanged(int zoomLevel);

private:
void updatePreview();
void loadDrawing(int frame);

int mZoomLevel = 1;

Ui::AddTransparencyToPaperDialog *ui;

QGraphicsScene scene;
QGraphicsPixmapItem* mPreviewImageItem = nullptr;

int mThreshold = 220;
BitmapImage mBitmap;
QPixmap mPixmapFromImage;
Editor* mEditor = nullptr;
};

#endif // ADDTRANSPARENCYTOPAPERDIALOG_H
Loading