Browse Source

bugfix,人脸识别模块修改

wangyaojie 1 year ago
parent
commit
51a3927159

+ 13 - 0
client/answerWidget.cpp

@@ -1,6 +1,8 @@
 #include "answerWidget.h"
 #include "ui_answerWidget.h"
 
+#include <QScrollBar>
+
 #include "CAppInfo.h"
 #include "awMsgBox.h"
 #include "awQuestionNavigate.h"
@@ -424,6 +426,9 @@ void answerWidget::setUI(const int nLeft, const int nTop, const int nWidth, cons
                                  ui->widget_navigate->width() - ui->btn_all->x()*2, g_appInfoPtr->m_fRate*1 < 1 ? 1 : g_appInfoPtr->m_fRate*1);
 	ui->lw_aw_questionList->setGeometry(0, ui->label_HLine->y(), ui->widget_navigate->width(), 
 		ui->widget_aw_face->y() - ui->label_HLine->y() - ui->label_HLine->height());
+
+    ui->lw_aw_questionList->setVerticalScrollMode(QListWidget::ScrollPerPixel);
+    ui->lw_aw_questionList->verticalScrollBar()->setSingleStep(5);
 }
 
 void answerWidget::onGetExamById(CGetExamById getExamById)
@@ -1712,6 +1717,14 @@ void answerWidget::startCapture()
                 return;
             }
 
+            if (g_inProcessFace != nullptr &&
+                    g_appInfoPtr->m_oExamInfo.bIsExamInProgress &&
+                    !m_bExamInpressFaceCaptured)
+            {
+                m_bExamInpressFaceCaptured = true;
+                g_inProcessFace->addImage(frame);
+            }
+
             if (g_inProcessFace != nullptr &&
                 m_nLastCaptureSecond - m_nLeftSeconds > g_appInfoPtr->m_oExamInfo.nSnapshotInterval*60)
             {

+ 2 - 0
client/answerWidget.h

@@ -131,6 +131,8 @@ private:
 	QStringList m_sRemoteList;
 	QStringList m_sRemoteTipList;
 
+
+    bool m_bExamInpressFaceCaptured = false;
     int m_nRetryCount = 0;
 };
 

+ 1 - 1
client/clopPaperDetail.cpp

@@ -456,7 +456,7 @@ void clopPaperDetail::on_btn_expandPaper_clicked()
 			}
 		}
 
-		initQuestion(jBody);
+        initQuestion(jBody);
 	}
 }
 

+ 5 - 1
client/courseList.cpp

@@ -763,7 +763,7 @@ void courseList::onGetOrgPropertiesByGroupWithoutCache(CGetOrgPropertiesByGroupW
 
         if(!g_appInfoPtr->m_oExamInfo.bIsExamInProgress)
         {
-            if(g_appInfoPtr->m_oExamInfo.bIsLivenessBefore)
+            if(g_appInfoPtr->m_oExamInfo.bIsLivenessBefore && g_appInfoPtr->m_oExamInfo.bIsFaceCheck)
             {
                 doLiveness();
             }
@@ -771,6 +771,10 @@ void courseList::onGetOrgPropertiesByGroupWithoutCache(CGetOrgPropertiesByGroupW
             {
                 doFaceCompare();
             }
+            else
+            {
+                enterWaitExam();
+            }
         }
 		else
 		{

+ 33 - 34
client/privacyWidget.cpp

@@ -146,40 +146,39 @@ void privacyWidget::initAgreement(QString sContent)
 				font.setWeight(QFont::Medium);
 				if (blocks["blocks"][j].isMember("param"))
 				{
-					if (blocks["blocks"][j]["param"].isMember("font"))
-					{
-						if (blocks["blocks"][j]["param"]["font"].isMember("bold"))
-						{
-							font.setBold(blocks["blocks"][j]["param"]["font"]["bold"].asBool());
-						}
-
-						if (blocks["blocks"][j]["param"]["font"].isMember("italic"))
-						{
-							bool bstyle = blocks["blocks"][j]["param"]["font"]["italic"].asBool();
-							font.setItalic(bstyle);
-						}
-
-						if (blocks["blocks"][j]["param"]["font"].isMember("underline"))
-						{
-							font.setUnderline(blocks["blocks"][j]["param"]["font"]["underline"].asBool());
-						}
-
-						if (blocks["blocks"][j]["param"]["font"].isMember("strikeOut"))
-						{
-							font.setStrikeOut(blocks["blocks"][j]["param"]["font"]["strikeOut"].asBool());
-						}
-
-						if (blocks["blocks"][j]["param"]["font"].isMember("size"))
-						{
-							font.setPixelSize(blocks["blocks"][j]["param"]["font"]["size"].asInt());
-						}
-
-						if (blocks["blocks"][j]["param"]["font"].isMember("name"))
-						{
-							font.setFamily(blocks["blocks"][j]["param"]["font"]["name"].asString().c_str());
-						}
-					}
-				}
+
+                    if (blocks["blocks"][j]["param"].isMember("bold"))
+                    {
+                        font.setBold(blocks["blocks"][j]["param"]["bold"].asBool());
+                    }
+
+                    if (blocks["blocks"][j]["param"].isMember("italic"))
+                    {
+                        bool bstyle = blocks["blocks"][j]["param"]["italic"].asBool();
+                        font.setItalic(bstyle);
+                    }
+
+                    if (blocks["blocks"][j]["param"].isMember("underline"))
+                    {
+                        font.setUnderline(blocks["blocks"][j]["param"]["underline"].asBool());
+                    }
+
+                    if (blocks["blocks"][j]["param"].isMember("strikeOut"))
+                    {
+                        font.setStrikeOut(blocks["blocks"][j]["param"]["strikeOut"].asBool());
+                    }
+
+                    if (blocks["blocks"][j]["param"].isMember("size"))
+                    {
+                        font.setPixelSize(blocks["blocks"][j]["param"]["size"].asInt());
+                    }
+
+                    if (blocks["blocks"][j]["param"].isMember("name"))
+                    {
+                        font.setFamily(blocks["blocks"][j]["param"]["name"].asString().c_str());
+                    }
+                }
+
 				fmt.setFont(font);
 
 				QString sTextStr = blocks["blocks"][j]["value"].asString().c_str();

+ 2 - 2
common/httpDataDef.h

@@ -1387,8 +1387,8 @@ public:
 		sActionOptions = "";
 		sActionOrder = "";
 		nActionDuration = 0;
-		nActionAlert = 0;
-        nAllActionDuration = 0;
+        nActionAlert = 15;
+        nAllActionDuration = 120;
 	}
 };
 

+ 6 - 3
face/face.pri

@@ -1,18 +1,21 @@
 FORMS += \
     $$PWD/faceCompare.ui \
-    $$PWD/faceLiveness.ui
+    $$PWD/faceLiveness.ui \
+    $$PWD/skipFaceCompare.ui
 
 HEADERS += \
     $$PWD/CFaceRecProc.h \
     $$PWD/faceCompare.h \
     $$PWD/faceLiveness.h \
-    $$PWD/inprogressFace.h
+    $$PWD/inprogressFace.h \
+    $$PWD/skipFaceCompare.h
 
 SOURCES += \
     $$PWD/CFaceRecProc.cpp \
     $$PWD/faceCompare.cpp \
     $$PWD/faceLiveness.cpp \
-    $$PWD/inprogressFace.cpp
+    $$PWD/inprogressFace.cpp \
+    $$PWD/skipFaceCompare.cpp
 
 
 SEETAFACESDK_PATH = C:/project/qtPlugins/seetaFaceSdk

+ 18 - 1
face/faceCompare.cpp

@@ -60,8 +60,25 @@ faceCompare::faceCompare(QWidget *parent) :
     m_pVideoTimer->start();
 
 	connect(this, &faceCompare::compareFailed, this, [&](QString sErrorMsg) {
-        ShowMsg(sErrorMsg, this, MSG_ICON_TYPE::mit_error);
+        ShowMsg(sErrorMsg, this, MSG_ICON_TYPE::mit_error);        
 		ui->btn_fc_compare->setEnabled(true);
+
+        if(!g_appInfoPtr->m_oExamInfo.bIsFaceCheck)
+        {
+            if(m_pSkipFaceCompare == nullptr)
+            {
+                m_pSkipFaceCompare = std::make_shared<skipFaceCompare>(this);
+                connect(m_pSkipFaceCompare.get(), &skipFaceCompare::cancel, this, [&](){
+                    m_pSkipFaceCompare.reset();
+                });
+
+                connect(m_pSkipFaceCompare.get(), &skipFaceCompare::confirm, this, [&](){
+                    m_pSkipFaceCompare.reset();
+                    emit faceComparePass();
+                });
+            }
+            m_pSkipFaceCompare->show();
+        }
 	});
 	
     m_bIsRun = true;

+ 2 - 0
face/faceCompare.h

@@ -9,6 +9,7 @@
 #include <mutex>
 #include "CHttpBll.h"
 #include "CLiveViodeProc.h"
+#include "skipFaceCompare.h"
 
 namespace Ui {
 class faceCompare;
@@ -45,6 +46,7 @@ private:
 
 	
 	std::shared_ptr<QTimer> m_pVideoTimer;
+    std::shared_ptr<skipFaceCompare> m_pSkipFaceCompare;
 
 
     void threadProc();

+ 53 - 0
face/skipFaceCompare.cpp

@@ -0,0 +1,53 @@
+#include "skipFaceCompare.h"
+#include "ui_skipFaceCompare.h"
+
+#include <QDesktopWidget>
+#include <CAppInfo.h>
+
+skipFaceCompare::skipFaceCompare(QWidget *parent) :
+    QWidget(parent),
+    ui(new Ui::skipFaceCompare)
+{
+    ui->setupUi(this);
+
+    setStyleSheet(g_appInfoPtr->m_sQssStr);
+
+
+    initUI();
+}
+
+skipFaceCompare::~skipFaceCompare()
+{
+    delete ui;
+}
+
+
+void skipFaceCompare::initUI()
+{
+    QDesktopWidget *dekwiget = QApplication::desktop();
+    setGeometry(0, 0, dekwiget->width(), dekwiget->height());
+    ui->widget_mask->setGeometry(0, 0, dekwiget->width(), dekwiget->height());
+    ui->widget_wcw_BG->setGeometry((width() - g_appInfoPtr->m_fRate*420)/2, (height() - g_appInfoPtr->m_fRate*212)/2,
+                                   g_appInfoPtr->m_fRate*420, g_appInfoPtr->m_fRate*212);
+    ui->label_wec_tips->adjustSize();
+    ui->label_wec_tips->setGeometry(g_appInfoPtr->m_fRate*20,
+                                    g_appInfoPtr->m_fRate*20, ui->label_wec_tips->width(), ui->label_wec_tips->height());
+    ui->label_wec_content->setFixedWidth(ui->widget_wcw_BG->width() - g_appInfoPtr->m_fRate*20*2);
+    ui->label_wec_content->adjustSize();
+    ui->label_wec_content->setGeometry(ui->label_wec_tips->x(), ui->label_wec_tips->y() + ui->label_wec_tips->height() + g_appInfoPtr->m_fRate*20,
+                                           ui->label_wec_content->width(), ui->label_wec_content->height());
+
+    ui->btn_startEnvTest->setGeometry(ui->widget_wcw_BG->width() - g_appInfoPtr->m_fRate*(20 + 80), ui->widget_wcw_BG->height() - g_appInfoPtr->m_fRate*(20 + 30),
+                                     g_appInfoPtr->m_fRate*80, g_appInfoPtr->m_fRate*30);
+    ui->btn_skipEnvTest->setGeometry(ui->btn_startEnvTest->x() - ui->btn_startEnvTest->width() - g_appInfoPtr->m_fRate*10,
+                                      ui->btn_startEnvTest->y(), ui->btn_startEnvTest->width(), ui->btn_startEnvTest->height());
+}
+void skipFaceCompare::on_btn_skipEnvTest_clicked()
+{
+    emit cancel();
+}
+
+void skipFaceCompare::on_btn_startEnvTest_clicked()
+{
+    emit confirm();
+}

+ 33 - 0
face/skipFaceCompare.h

@@ -0,0 +1,33 @@
+#ifndef SKIPFACECOMPARE_H
+#define SKIPFACECOMPARE_H
+
+#include <QWidget>
+
+namespace Ui {
+class skipFaceCompare;
+}
+
+class skipFaceCompare : public QWidget
+{
+    Q_OBJECT
+
+signals:
+    void cancel();
+    void confirm();
+public:
+    explicit skipFaceCompare(QWidget *parent = nullptr);
+    ~skipFaceCompare();
+
+private slots:
+    void on_btn_skipEnvTest_clicked();
+
+    void on_btn_startEnvTest_clicked();
+
+private:
+    void initUI();
+
+
+    Ui::skipFaceCompare *ui;
+};
+
+#endif // SKIPFACECOMPARE_H

+ 94 - 0
face/skipFaceCompare.ui

@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>skipFaceCompare</class>
+ <widget class="QWidget" name="skipFaceCompare">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>512</width>
+    <height>335</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <widget class="QWidget" name="widget_mask" native="true">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>491</width>
+     <height>391</height>
+    </rect>
+   </property>
+   <widget class="QWidget" name="widget_wcw_BG" native="true">
+    <property name="geometry">
+     <rect>
+      <x>30</x>
+      <y>30</y>
+      <width>411</width>
+      <height>281</height>
+     </rect>
+    </property>
+    <widget class="QLabel" name="label_wec_tips">
+     <property name="geometry">
+      <rect>
+       <x>20</x>
+       <y>40</y>
+       <width>161</width>
+       <height>16</height>
+      </rect>
+     </property>
+     <property name="text">
+      <string>郑重承诺</string>
+     </property>
+    </widget>
+    <widget class="QLabel" name="label_wec_content">
+     <property name="geometry">
+      <rect>
+       <x>20</x>
+       <y>70</y>
+       <width>261</width>
+       <height>61</height>
+      </rect>
+     </property>
+     <property name="text">
+      <string>我承诺由本人参加考试,并且同意接受考试监控系统信息审核,一经发现作弊,立即取消本门课程考试成绩。</string>
+     </property>
+     <property name="wordWrap">
+      <bool>true</bool>
+     </property>
+    </widget>
+    <widget class="QPushButton" name="btn_startEnvTest">
+     <property name="geometry">
+      <rect>
+       <x>190</x>
+       <y>180</y>
+       <width>75</width>
+       <height>23</height>
+      </rect>
+     </property>
+     <property name="text">
+      <string>确定</string>
+     </property>
+    </widget>
+    <widget class="QPushButton" name="btn_skipEnvTest">
+     <property name="geometry">
+      <rect>
+       <x>100</x>
+       <y>180</y>
+       <width>75</width>
+       <height>23</height>
+      </rect>
+     </property>
+     <property name="text">
+      <string>取消</string>
+     </property>
+    </widget>
+   </widget>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

+ 30 - 31
question/fbFillBlankBody.cpp

@@ -53,39 +53,38 @@ int fbFillBlankBody::setUI(const int nWidth)
                 font.setWeight(QFont::Medium);
                 if(blocks["blocks"][j].isMember("param"))
                 {
-                    if(blocks["blocks"][j]["param"].isMember("font"))
+
+                    if(blocks["blocks"][j]["param"].isMember("bold"))
                     {
-                        if(blocks["blocks"][j]["param"]["font"].isMember("bold"))
-                        {
-                            font.setBold(blocks["blocks"][j]["param"]["font"]["bold"].asBool());
-                        }
-
-                        if(blocks["blocks"][j]["param"]["font"].isMember("italic"))
-                        {
-                            bool bstyle = blocks["blocks"][j]["param"]["font"]["italic"].asBool();
-                            font.setItalic(bstyle);
-                        }
-
-                        if(blocks["blocks"][j]["param"]["font"].isMember("underline"))
-                        {
-                            font.setUnderline(blocks["blocks"][j]["param"]["font"]["underline"].asBool());
-                        }
-
-                        if(blocks["blocks"][j]["param"]["font"].isMember("strikeOut"))
-                        {
-                            font.setStrikeOut(blocks["blocks"][j]["param"]["font"]["strikeOut"].asBool());
-                        }
-
-                        if(blocks["blocks"][j]["param"]["font"].isMember("size"))
-                        {
-                            font.setPixelSize(blocks["blocks"][j]["param"]["font"]["size"].asInt());
-                        }
-
-                        if(blocks["blocks"][j]["param"]["font"].isMember("name"))
-                        {
-                            font.setFamily(blocks["blocks"][j]["param"]["font"]["name"].asString().c_str());
-                        }
+                        font.setBold(blocks["blocks"][j]["param"]["bold"].asBool());
                     }
+
+                    if(blocks["blocks"][j]["param"].isMember("italic"))
+                    {
+                        bool bstyle = blocks["blocks"][j]["param"]["italic"].asBool();
+                        font.setItalic(bstyle);
+                    }
+
+                    if(blocks["blocks"][j]["param"].isMember("underline"))
+                    {
+                        font.setUnderline(blocks["blocks"][j]["param"]["underline"].asBool());
+                    }
+
+                    if(blocks["blocks"][j]["param"].isMember("strikeOut"))
+                    {
+                        font.setStrikeOut(blocks["blocks"][j]["param"]["strikeOut"].asBool());
+                    }
+
+                    if(blocks["blocks"][j]["param"].isMember("size"))
+                    {
+                        font.setPixelSize(blocks["blocks"][j]["param"]["size"].asInt());
+                    }
+
+                    if(blocks["blocks"][j]["param"].isMember("name"))
+                    {
+                        font.setFamily(blocks["blocks"][j]["param"]["name"].asString().c_str());
+                    }
+
                 }
 
                 QString sText = blocks["blocks"][j]["value"].asString().c_str();

+ 29 - 31
question/optionBody.cpp

@@ -42,39 +42,37 @@ int optionBody::setUI(const int nWidth)
                 font.setWeight(QFont::Normal);
                 if(blocks["blocks"][j].isMember("param"))
                 {
-                    if(blocks["blocks"][j]["param"].isMember("font"))
+                    if(blocks["blocks"][j]["param"].isMember("bold"))
                     {
-                        if(blocks["blocks"][j]["param"]["font"].isMember("bold"))
-                        {
-                            font.setBold(blocks["blocks"][j]["param"]["font"]["bold"].asBool());
-                        }
-
-                        if(blocks["blocks"][j]["param"]["font"].isMember("italic"))
-                        {
-                            bool bstyle = blocks["blocks"][j]["param"]["font"]["italic"].asBool();
-                            font.setItalic(bstyle);
-                        }
-
-                        if(blocks["blocks"][j]["param"]["font"].isMember("underline"))
-                        {
-                            font.setUnderline(blocks["blocks"][j]["param"]["font"]["underline"].asBool());
-                        }
-
-                        if(blocks["blocks"][j]["param"]["font"].isMember("strikeOut"))
-                        {
-                            font.setStrikeOut(blocks["blocks"][j]["param"]["font"]["strikeOut"].asBool());
-                        }
-
-                        if(blocks["blocks"][j]["param"]["font"].isMember("size"))
-                        {
-                            font.setPixelSize(blocks["blocks"][j]["param"]["font"]["size"].asInt());
-                        }
-
-                        if(blocks["blocks"][j]["param"]["font"].isMember("name"))
-                        {
-                            font.setFamily(blocks["blocks"][j]["param"]["font"]["name"].asString().c_str());
-                        }
+                        font.setBold(blocks["blocks"][j]["param"]["bold"].asBool());
                     }
+
+                    if(blocks["blocks"][j]["param"].isMember("italic"))
+                    {
+                        bool bstyle = blocks["blocks"][j]["param"]["italic"].asBool();
+                        font.setItalic(bstyle);
+                    }
+
+                    if(blocks["blocks"][j]["param"].isMember("underline"))
+                    {
+                        font.setUnderline(blocks["blocks"][j]["param"]["underline"].asBool());
+                    }
+
+                    if(blocks["blocks"][j]["param"].isMember("strikeOut"))
+                    {
+                        font.setStrikeOut(blocks["blocks"][j]["param"]["strikeOut"].asBool());
+                    }
+
+                    if(blocks["blocks"][j]["param"].isMember("size"))
+                    {
+                        font.setPixelSize(blocks["blocks"][j]["param"]["size"].asInt());
+                    }
+
+                    if(blocks["blocks"][j]["param"].isMember("name"))
+                    {
+                        font.setFamily(blocks["blocks"][j]["param"]["name"].asString().c_str());
+                    }
+
                 }
                 fmt.setFont(font);
                 cursor.insertText(blocks["blocks"][j]["value"].asString().c_str(), fmt);

+ 24 - 26
question/questionBody.cpp

@@ -51,39 +51,37 @@ int questionBody::setUI(const int nWidth, const int nNum)
                 font.setWeight(QFont::Medium);
                 if(blocks["blocks"][j].isMember("param"))
                 {
-                    if(blocks["blocks"][j]["param"].isMember("font"))
+                    if(blocks["blocks"][j]["param"].isMember("bold"))
                     {
-                        if(blocks["blocks"][j]["param"]["font"].isMember("bold"))
-                        {
-                            font.setBold(blocks["blocks"][j]["param"]["font"]["bold"].asBool());
-                        }
+                        font.setBold(blocks["blocks"][j]["param"]["bold"].asBool());
+                    }
 
-                        if(blocks["blocks"][j]["param"]["font"].isMember("italic"))
-                        {
-                            bool bstyle = blocks["blocks"][j]["param"]["font"]["italic"].asBool();
-                            font.setItalic(bstyle);
-                        }
+                    if(blocks["blocks"][j]["param"].isMember("italic"))
+                    {
+                        bool bstyle = blocks["blocks"][j]["param"]["italic"].asBool();
+                        font.setItalic(bstyle);
+                    }
 
-                        if(blocks["blocks"][j]["param"]["font"].isMember("underline"))
-                        {
-                            font.setUnderline(blocks["blocks"][j]["param"]["font"]["underline"].asBool());
-                        }
+                    if(blocks["blocks"][j]["param"].isMember("underline"))
+                    {
+                        font.setUnderline(blocks["blocks"][j]["param"]["underline"].asBool());
+                    }
 
-                        if(blocks["blocks"][j]["param"]["font"].isMember("strikeOut"))
-                        {
-                            font.setStrikeOut(blocks["blocks"][j]["param"]["font"]["strikeOut"].asBool());
-                        }
+                    if(blocks["blocks"][j]["param"].isMember("strikeOut"))
+                    {
+                        font.setStrikeOut(blocks["blocks"][j]["param"]["strikeOut"].asBool());
+                    }
 
-                        if(blocks["blocks"][j]["param"]["font"].isMember("size"))
-                        {
-                            font.setPixelSize(blocks["blocks"][j]["param"]["font"]["size"].asInt());
-                        }
+                    if(blocks["blocks"][j]["param"].isMember("size"))
+                    {
+                        font.setPixelSize(blocks["blocks"][j]["param"]["size"].asInt());
+                    }
 
-                        if(blocks["blocks"][j]["param"]["font"].isMember("name"))
-                        {
-                            font.setFamily(blocks["blocks"][j]["param"]["font"]["name"].asString().c_str());
-                        }
+                    if(blocks["blocks"][j]["param"].isMember("name"))
+                    {
+                        font.setFamily(blocks["blocks"][j]["param"]["name"].asString().c_str());
                     }
+
                 }
                 fmt.setFont(font);
 

+ 31 - 33
question/standardAnswer.cpp

@@ -61,39 +61,37 @@ void standardAnswer::initAnswer()
 						font.setWeight(QFont::Medium);
 						if (blocks["blocks"][j].isMember("param"))
 						{
-							if (blocks["blocks"][j]["param"].isMember("font"))
-							{
-								if (blocks["blocks"][j]["param"]["font"].isMember("bold"))
-								{
-									font.setBold(blocks["blocks"][j]["param"]["font"]["bold"].asBool());
-								}
-
-								if (blocks["blocks"][j]["param"]["font"].isMember("italic"))
-								{
-									bool bstyle = blocks["blocks"][j]["param"]["font"]["italic"].asBool();
-									font.setItalic(bstyle);
-								}
-
-								if (blocks["blocks"][j]["param"]["font"].isMember("underline"))
-								{
-									font.setUnderline(blocks["blocks"][j]["param"]["font"]["underline"].asBool());
-								}
-
-								if (blocks["blocks"][j]["param"]["font"].isMember("strikeOut"))
-								{
-									font.setStrikeOut(blocks["blocks"][j]["param"]["font"]["strikeOut"].asBool());
-								}
-
-								if (blocks["blocks"][j]["param"]["font"].isMember("size"))
-								{
-									font.setPixelSize(blocks["blocks"][j]["param"]["font"]["size"].asInt());
-								}
-
-								if (blocks["blocks"][j]["param"]["font"].isMember("name"))
-								{
-									font.setFamily(blocks["blocks"][j]["param"]["font"]["name"].asString().c_str());
-								}
-							}
+                            if (blocks["blocks"][j]["param"].isMember("bold"))
+                            {
+                                font.setBold(blocks["blocks"][j]["param"]["bold"].asBool());
+                            }
+
+                            if (blocks["blocks"][j]["param"].isMember("italic"))
+                            {
+                                bool bstyle = blocks["blocks"][j]["param"]["italic"].asBool();
+                                font.setItalic(bstyle);
+                            }
+
+                            if (blocks["blocks"][j]["param"].isMember("underline"))
+                            {
+                                font.setUnderline(blocks["blocks"][j]["param"]["underline"].asBool());
+                            }
+
+                            if (blocks["blocks"][j]["param"].isMember("strikeOut"))
+                            {
+                                font.setStrikeOut(blocks["blocks"][j]["param"]["strikeOut"].asBool());
+                            }
+
+                            if (blocks["blocks"][j]["param"].isMember("size"))
+                            {
+                                font.setPixelSize(blocks["blocks"][j]["param"]["size"].asInt());
+                            }
+
+                            if (blocks["blocks"][j]["param"].isMember("name"))
+                            {
+                                font.setFamily(blocks["blocks"][j]["param"]["name"].asString().c_str());
+                            }
+
 						}
 						fmt.setFont(font);