Skip to content

Commit 065b0df

Browse files
committed
fix memory issue
1 parent 3aa9be4 commit 065b0df

File tree

9 files changed

+66
-33
lines changed

9 files changed

+66
-33
lines changed

src/tools.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ extern void penStyleEvent();
5656
extern void penSizeEvent();
5757

5858
extern void setPen(int type);
59+
extern int getPen();
5960
extern void setPenStyle(int style);
6061
extern void setLineStyle(int style);
6162

src/tools/background.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ void setupBackground(){
118118
});
119119

120120
clear = create_button(":images/clear.svg", [=](){
121-
if(drawing->penType == SELECTION && hasSelection) {
121+
if(getPen() == SELECTION && hasSelection) {
122122
drawing->clearSelection();
123123
} else {
124124
drawing->clear();

src/tools/pen.cpp

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ static bool sliderLock = false;
2626
static bool pen_init = false;
2727
void setPen(int type){
2828
sliderLock = true;
29-
drawing->penType = type;
29+
drawing->setPen(type);
3030
switch(type){
3131
case ERASER:
3232
thicknessSlider->setRange(10*scale,200*scale);
@@ -48,14 +48,18 @@ void setPen(int type){
4848
}
4949
}
5050

51+
int getPen(){
52+
return drawing->getPen();
53+
}
54+
5155
void setPenStyle(int style){
52-
drawing->penStyle = style;
56+
drawing->setPenStyle(style);
5357
penStyleEvent();
5458
penSizeEvent();
5559
}
5660

5761
void setLineStyle(int style){
58-
drawing->lineStyle = style;
62+
drawing->setLineStyle(style);
5963
penStyleEvent();
6064
penSizeEvent();
6165
}
@@ -72,9 +76,9 @@ void setupPenType(){
7276
floatingSettings->setHide();
7377
return;
7478
}
75-
drawing->penStyle = SPLINE;
76-
drawing->lineStyle = NORMAL;
77-
if(drawing->penType != PEN){
79+
drawing->setPenStyle(SPLINE);
80+
drawing->setLineStyle(NORMAL);
81+
if(getPen() != PEN){
7882
setPen(PEN);
7983
} else {
8084
setPen(ERASER);
@@ -83,9 +87,7 @@ void setupPenType(){
8387
set_shortcut(penSwitch, Qt::Key_M, 0);
8488

8589
penButtons[SELECTION] = create_button(":images/crop.svg", [=](){
86-
drawing->penType = SELECTION;
87-
penStyleEvent();
88-
penSizeEvent();
90+
setPen(SELECTION);
8991
});
9092
set_shortcut(penButtons[SELECTION], Qt::Key_X, Qt::ControlModifier);
9193

@@ -154,14 +156,14 @@ void setupPenType(){
154156

155157
QObject::connect(thicknessSlider, &QSlider::valueChanged, [=](int value) {
156158
if(!sliderLock){
157-
drawing->penSize[drawing->penType] = value;
159+
drawing->penSize[getPen()] = value;
158160
}
159161
penSizeEvent();
160162
});
161163

162164
QObject::connect(thicknessSlider, &QSlider::sliderReleased, [=]() {
163-
int value = drawing->penSize[drawing->penType];
164-
switch(drawing->penType){
165+
int value = drawing->penSize[getPen()];
166+
switch(getPen()){
165167
case PEN:
166168
set_int((char*)"pen-size",value);
167169
break;

src/tools/update.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@
33

44
void penStyleEvent(){
55
backgroundStyleEvent();
6-
colorDialog->setVisible(drawing->penType != ERASER || drawing->penType == SELECTION);
7-
ov->setVisible(drawing->penType != SELECTION);
8-
thicknessSlider->setVisible(drawing->penType != SELECTION);
9-
thicknessLabel->setVisible(drawing->penType != SELECTION);
10-
modeDialog->setVisible(drawing->penType != ERASER && drawing->penType != SELECTION);
11-
penTypeDialog->setVisible(drawing->penType != ERASER && drawing->penType != SELECTION);
6+
colorDialog->setVisible(getPen() != ERASER || getPen() == SELECTION);
7+
ov->setVisible(getPen() != SELECTION);
8+
thicknessSlider->setVisible(getPen() != SELECTION);
9+
thicknessLabel->setVisible(getPen() != SELECTION);
10+
modeDialog->setVisible(getPen() != ERASER && getPen() != SELECTION);
11+
penTypeDialog->setVisible(getPen() != ERASER && getPen() != SELECTION);
1212
penSwitch->setStyleSheet("background-color:"+drawing->penColor.name()+";");
13-
if(drawing->penType == SELECTION){
13+
if(getPen() == SELECTION){
1414
set_icon(":images/crop.svg", penSwitch);
15-
} else if (drawing->penType == ERASER){
15+
} else if (getPen() == ERASER){
1616
set_icon(":images/eraser.svg", penSwitch);
17-
} else if(drawing->penType == MARKER){
17+
} else if(getPen() == MARKER){
1818
set_icon(":images/marker.svg", penSwitch);
1919
} else {
2020
set_icon(":images/pen.svg", penSwitch);
@@ -25,7 +25,7 @@ void penStyleEvent(){
2525

2626
int last_pen_type = 0;
2727
void penSizeEvent(){
28-
int value = drawing->penSize[drawing->penType];
28+
int value = drawing->penSize[getPen()];
2929
ov->updateImage();
3030
floatingSettings->reload();
3131
thicknessLabel->setText(QString(_("Size:"))+QString(" ")+QString::number(value));
@@ -51,8 +51,8 @@ void backgroundStyleEvent(){
5151
}
5252
}
5353
int btns[] = {
54-
drawing->penType, drawing->lineStyle,
55-
drawing->penStyle, board->getType(),
54+
getPen(), drawing->getLineStyle(),
55+
drawing->getPenStyle(), board->getType(),
5656
board->getOverlayType()
5757
};
5858
for(int btn:btns){

src/utils/Geometry.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ void DrawingWidget::drawArrow(QPainter& painter, QPointF start, QPointF end) {
5353
}
5454

5555
void DrawingWidget::drawLineToFunc(qint64 id, qreal pressure) {
56+
//printf("%d %d %d %d\n", penType, penStyle, lineStyle, penSize[penType]);
5657
if(startPoint.x() < 0 || startPoint.y() < 0){
5758
return;
5859
}

src/utils/ScreenShot.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ void takeScreenshot(){
2424
QDateTime time = QDateTime::currentDateTime();
2525
QString imgname = pics + "/" + time.toString("yyyy-MM-dd_hh-mm-ss") + ".png";
2626
int status = 1;
27-
if (drawing->penType == SELECTION) {
27+
if (getPen() == SELECTION) {
2828
drawing->cropWidget->image.save(imgname);
2929
status = 0;
30-
} else if(drawing->penType != SELECTION) {
30+
} else if(getPen() != SELECTION) {
3131
// detect X11
3232
if (!getenv("WAYLAND_DISPLAY")){
3333
QPixmap pixmap;

src/widgets/DrawingWidget.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,29 @@ void DrawingWidget::goNext(){
455455
loadImage(images.last_image_num);
456456
}
457457

458+
void DrawingWidget::setPen(int type){
459+
penType = type;
460+
}
461+
462+
int DrawingWidget::getPen(){
463+
return penType;
464+
}
465+
void DrawingWidget::setPenStyle(int type){
466+
penStyle = type;
467+
}
468+
469+
int DrawingWidget::getPenStyle(){
470+
return penStyle;
471+
}
472+
473+
void DrawingWidget::setLineStyle(int type){
474+
lineStyle = type;
475+
}
476+
477+
int DrawingWidget::getLineStyle(){
478+
return lineStyle;
479+
}
480+
458481
static int num_of_press = 0;
459482
void DrawingWidget::eventHandler(int source, int type, int id, QPointF pos, float pressure){
460483
int ev_pen = penType;

src/widgets/DrawingWidget.h

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ class DrawingWidget : public QWidget {
110110
QImage image;
111111
QColor penColor;
112112
MovableWidget* cropWidget;
113-
int penSize[3];
113+
int penSize[10];
114114
void initializeImage(const QSize &size);
115115
void goPrevious();
116116
void goPage(int i);
@@ -122,9 +122,6 @@ class DrawingWidget : public QWidget {
122122
void saveAll(QString filename);
123123
void loadArchive(const QString& filename);
124124
#endif
125-
int penType;
126-
int penStyle;
127-
int lineStyle;
128125
void syncPageType(int type);
129126
int getPageNum();
130127
bool isBackAvailable();
@@ -133,6 +130,12 @@ class DrawingWidget : public QWidget {
133130
void mergeSelection();
134131
void clearSelection();
135132
void addImage(QImage img);
133+
void setPen(int type);
134+
int getPen();
135+
void setPenStyle(int type);
136+
int getPenStyle();
137+
void setLineStyle(int type);
138+
int getLineStyle();
136139
void drawArrow(QPainter& painter, QPointF start, QPointF end);
137140
void eventHandler(int source, int type, int id, QPointF pos, float pressure);
138141

@@ -149,6 +152,9 @@ class DrawingWidget : public QWidget {
149152
void selectionDraw(QPointF startPoint, QPointF endPoint);
150153
void addPoint(int id, QPointF data);
151154
bool event(QEvent * ev) override;
155+
int penType;
156+
int penStyle;
157+
int lineStyle;
152158
GeometryStorage geo;
153159
QPainter painter;
154160
};

src/widgets/OverView.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ void OverView::updateImage(){
2020
void OverView::paintEvent(QPaintEvent *event) {
2121
Q_UNUSED(event);
2222
QPainter painter(this);
23-
int penSize = drawing->penSize[drawing->penType];
24-
int penType = drawing->penType;
23+
int penSize = drawing->penSize[getPen()];
24+
int penType = getPen();
2525
QPen pen(drawing->penColor, penSize, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
2626
painter.setRenderHint(QPainter::Antialiasing, true);
2727
painter.setRenderHint(QPainter::SmoothPixmapTransform, true);

0 commit comments

Comments
 (0)