Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
11 changes: 6 additions & 5 deletions DiagramRecognizer/DiagramRecognizer.pro
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ SOURCES += main.cpp\
bitmap.cpp \
output.cpp \
component.cpp \
diagramRecognizer.cpp \
formSegmentator.cpp \
simpleFormsInitializer.cpp \
recognizers/mixedGesturesManager.cpp \
recognizers/nearestPosGridGesturesManager.cpp \
recognizers/rectangleGesturesManager.cpp
recognizers/rectangleGesturesManager.cpp \
diagramMainWIndow.cpp

HEADERS += \
geometricForms.h \
Expand All @@ -30,14 +30,15 @@ HEADERS += \
component.h \
figure.h \
edge.h \
diagramRecognizer.h \
formSegmentator.h \
simpleFormsInitializer.h \
recognizers/mixedGesturesManager.h \
recognizers/nearestPosGridGesturesmanager.h \
recognizers/rectangleGesturesManager.h
recognizers/rectangleGesturesManager.h \
diagramMainWindow.h

FORMS +=
FORMS += \
mainWindow.ui

OTHER_FILES += \
readme.txt \
Expand Down
2 changes: 1 addition & 1 deletion DiagramRecognizer/abstractRecognizer.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include <QWidget>
#include <QMouseEvent>
#include "geometricForms.h"
#include "paintmanager.h"
#include "paintManager.h"

class GesturesManager
{
Expand Down
2 changes: 1 addition & 1 deletion DiagramRecognizer/bitmap.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class Bitmap : public QList<QList<int> >
int yLower() const;
Component rasterizedDiagram() const;

private:
public:
void rasterizeDiagram();
void rasterizeSegment(int x1, int y1, int x2, int y2);
void setLower();
Expand Down
158 changes: 158 additions & 0 deletions DiagramRecognizer/diagramMainWIndow.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
#include "diagramMainWindow.h"
#include "ui_mainWindow.h"

#include "bitmap.h"
#include "formSegmentator.h"
#include "simpleFormsInitializer.h"
#include "recognizers/mixedGesturesManager.h"
#include "output.h"

#include <QPainter>
#include <QRect>
#include <QFileDialog>
#include <QApplication>
#include <QFont>
#include <QGridLayout>
#include <QPushButton>

mainWindow::mainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::mainWindow)
{
ui->setupUi(this);

printedDiagram = new Output;
scene = new QGraphicsScene;
ui->outputView->setScene(scene);
ui->outputView->setFrameStyle(0);
ui->outputView->setAlignment(Qt::AlignLeft | Qt::AlignTop);
ui->outputView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
ui->outputView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
ui->stages->setCurrentIndex(4);

connect(ui->exitButton, SIGNAL(clicked()), this, SLOT(close()));
connect(ui->clearButton, SIGNAL(clicked()), this, SLOT(clear()));
connect(ui->recButton, SIGNAL(clicked()), this, SLOT(recognize()));
connect(ui->recImButton, SIGNAL(clicked()), this, SLOT(recognizeImage()));
connect(ui->stages, SIGNAL(activated(int)), this, SLOT(showStage(int)));

connect(this, SIGNAL(print(PathVector, Bitmap *, FormSegmentator *, int)), printedDiagram, SLOT(draw(PathVector, Bitmap *, FormSegmentator *, int)));

mRecognized = false;
mComponentPoint.setX(-1000);
mComponentPoint.setY(-1000);
mGesturesManager = new MixedGesturesManager();
mAbstractRecognizer = new AbstractRecognizer(mGesturesManager,
SimpleFormsInitializer::initialForms());

this->showFullScreen();
}

void mainWindow::clear()
{
clearScene();
mRecognized = false;
mComponentPoint.setX(-10000);
mComponentPoint.setY(-10000);
emit print(mDiagram, mBitmap, mFormSegmentator, 4);
}

void mainWindow::recognizeImage()
{
QString fileName = QFileDialog::QFileDialog::getOpenFileName(this,
tr("Recognize image"), ".",
tr("Png files (*.png)"));
inputImage = new QGraphicsPixmapItem(QPixmap::fromImage(QImage(fileName)));
mBitmap = new Bitmap(QImage(fileName));
recognizeDiagram();

}

void mainWindow::recognize()
{
mBitmap = new Bitmap(mDiagram);
recognizeDiagram();
}

void mainWindow::recognizeDiagram()
{
//mRecognized = true;
mFormSegmentator = new FormSegmentator(mBitmap);
mFormSegmentator->uniteComponents();
QList<Component> objects = mFormSegmentator->getObjects();
mDiagram.clear();
foreach (Component const &object, objects) {
PathVector recognizedObject = mAbstractRecognizer->recognizeObject(
object.figure(mBitmap->xLeft(), mBitmap->yUpper()));
mDiagram.append(recognizedObject);
}
foreach (Component const &edge, mFormSegmentator->getEdges()) {
mDiagram.append(edge.figure(mBitmap->xLeft(), mBitmap->yUpper()));
}
emit print(mDiagram, mBitmap, mFormSegmentator, 4);

scene->addItem(inputImage);
scene->addWidget(printedDiagram);
clearScene();
showInput();
}

void mainWindow::showStage(int index)
{
switch(index)
{
case 0:
showInput();
break;
case 1:
showBitmap();
break;
case 2:
showComponents();
break;
case 3:
showUniStage();
break;
}

}

void mainWindow::showInput()
{
clearScene();
inputImage->setVisible(true);
}

void mainWindow::showUniStage()
{
clearScene();
emit print(mDiagram, mBitmap, mFormSegmentator, 4);
printedDiagram->setVisible(true);
}

void mainWindow::showBitmap()
{
clearScene();
emit print(mDiagram, mBitmap, mFormSegmentator, 2);
printedDiagram->setVisible(true);
}

void mainWindow::showComponents()
{
clearScene();
emit print(mDiagram, mBitmap, mFormSegmentator, 3);
printedDiagram->setVisible(true);
}

void mainWindow::clearScene()
{
if(inputImage->isVisible())
inputImage->setVisible(false);
if(printedDiagram->isVisible())
printedDiagram->setVisible(false);
}

mainWindow::~mainWindow()
{
delete ui;
}
49 changes: 49 additions & 0 deletions DiagramRecognizer/diagramMainWindow.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#pragma once

#include <QMainWindow>
#include "bitmap.h"
#include "formSegmentator.h"
#include "abstractRecognizer.h"
#include "output.h"
#include <QGraphicsScene>
#include <QGraphicsItem>

namespace Ui {
class mainWindow;
}

class mainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit mainWindow(QWidget *parent = 0);
~mainWindow();

public slots:
void clear();
void recognize();
void recognizeImage();
void showStage(int);
signals:
void print(PathVector mDiagram, Bitmap * mBitmap, FormSegmentator *mFormSegmentator, int stageNum);

private:
void showInput();
void showUniStage();
void showBitmap();
void showComponents();
void clearScene();
QGraphicsPixmapItem *inputImage;
Output *printedDiagram;
Ui::mainWindow *ui;
void recognizeDiagram();
PathVector mDiagram;
Bitmap * mBitmap;
FormSegmentator *mFormSegmentator;
bool mRecognized;
QPoint mComponentPoint;
GesturesManager *mGesturesManager;
AbstractRecognizer *mAbstractRecognizer;
QGraphicsScene *scene;
};
92 changes: 0 additions & 92 deletions DiagramRecognizer/diagramrecognizer.cpp

This file was deleted.

31 changes: 0 additions & 31 deletions DiagramRecognizer/diagramrecognizer.h

This file was deleted.

Loading