Documentation for classes.

--HG--
branch : feature
This commit is contained in:
dismine 2013-10-07 18:34:14 +03:00
parent 8a7ace463c
commit 2b1da2ac32
4 changed files with 270 additions and 265 deletions

View File

@ -40,12 +40,12 @@ qreal Calculator::eval(QString prog, QString *errorMsg){
this->errorMsg->clear(); this->errorMsg->clear();
debugFormula.clear(); debugFormula.clear();
this->prog = prog; this->prog = prog;
//qDebug()<<"Формула: "<<prog; //qDebug()<<"Formula: "<<prog;
index = 0; index = 0;
qreal result = get_exp(); qreal result = get_exp();
QString str = QString(" = %1").arg(result, 0, 'f', 3); QString str = QString(" = %1").arg(result, 0, 'f', 3);
debugFormula.append(str); debugFormula.append(str);
//qDebug()<<"Результат:"<<debugFormula; //qDebug()<<"Result:"<<debugFormula;
return result; return result;
} }
@ -57,12 +57,10 @@ qreal Calculator::get_exp(){
return 0; return 0;
} }
level2(&result); level2(&result);
putback(); /* возвращает последнюю считаную putback();
лексему обратно во входной поток */
return result; return result;
} }
/* Сложение или вычитание двух термов */
void Calculator::level2(qreal *result){ void Calculator::level2(qreal *result){
QChar op; QChar op;
qreal hold; qreal hold;
@ -75,7 +73,6 @@ void Calculator::level2(qreal *result){
} }
} }
/* Вычисление произведения или частного двух фвкторов */
void Calculator::level3(qreal *result){ void Calculator::level3(qreal *result){
QChar op; QChar op;
qreal hold; qreal hold;
@ -89,7 +86,6 @@ void Calculator::level3(qreal *result){
} }
} }
/* Обработка степени числа (целочисленной) */
void Calculator::level4(qreal *result){ void Calculator::level4(qreal *result){
qreal hold; qreal hold;
@ -101,7 +97,6 @@ void Calculator::level4(qreal *result){
} }
} }
/* Унарный + или - */
void Calculator::level5(qreal *result){ void Calculator::level5(qreal *result){
QChar op; QChar op;
@ -115,7 +110,6 @@ void Calculator::level5(qreal *result){
unary(op, result); unary(op, result);
} }
/* Обработка выражения в круглых скобках */
void Calculator::level6(qreal *result){ void Calculator::level6(qreal *result){
if((token[0] == '(') && (token_type == DELIMITER)) { if((token[0] == '(') && (token_type == DELIMITER)) {
get_token(); get_token();
@ -127,7 +121,6 @@ void Calculator::level6(qreal *result){
primitive(result); primitive(result);
} }
/* Определение значения переменной по ее имени */
void Calculator::primitive(qreal *result){ void Calculator::primitive(qreal *result){
QString str; QString str;
switch(token_type) { switch(token_type) {
@ -148,9 +141,8 @@ void Calculator::primitive(qreal *result){
} }
} }
/* Выполнение специфицированной арифметики */
void Calculator::arith(QChar o, qreal *r, qreal *h){ void Calculator::arith(QChar o, qreal *r, qreal *h){
qreal t;//, ex; qreal t;
switch(o.toLatin1()) { switch(o.toLatin1()) {
case '-': case '-':
@ -171,78 +163,54 @@ void Calculator::arith(QChar o, qreal *r, qreal *h){
break; break;
case '^': case '^':
*r = pow(*r, *h); *r = pow(*r, *h);
// ex =*r;
// if(*h==0) {
// *r = 1;
// break;
// }
// for(t=*h-1; t>0; --t)
// *r = (*r) * ex;
break; break;
} }
} }
/* Изменение знака */
void Calculator::unary(QChar o, qreal *r){ void Calculator::unary(QChar o, qreal *r){
if(o=='-') if(o=='-')
*r = -(*r); *r = -(*r);
} }
/* Поиск значения переменной */
qreal Calculator::find_var(QString s){ qreal Calculator::find_var(QString s){
bool ok = false; bool ok = false;
qreal value = data->FindVar(s, &ok); qreal value = data->FindVar(s, &ok);
if(!ok){ if(!ok){
qDebug()<<s; qDebug()<<s;
serror(4); /* не переменная */ serror(4); /* don't variable */
return 0; return 0;
} }
return value; return value;
} }
/* выдать сообщение об ошибке */
void Calculator::serror(qint32 error){ void Calculator::serror(qint32 error){
QString e[]= { QString e[]= {
"Синтаксическая ошибка", tr("Syntax error"),
"Непарные круглые скобки", tr("Parentheses do not match"),
"Это не выражение", tr("This is not an expression"),
"Предполагается символ равенства", tr("It is assumed the equality symbol"),
"Не переменная" tr("Do not variable")
}; };
errorMsg->clear(); errorMsg->clear();
*errorMsg = e[error]; *errorMsg = e[error];
qDebug()<<e[error]; qDebug()<<e[error];
} }
/* Поиск соответствия внутреннего формата для
текущей лексемы в таблице лексем.
*/
char Calculator::look_up(QString s){ char Calculator::look_up(QString s){
QString p; QString p;
/* преобразование к нижнему регистру */
p = s; p = s;
p = p.toLower(); p = p.toLower();
/* просматривается, если лексема обнаружена в return 0;
таблице */
/*
*у нас більше немає команд що потрібно опрацьовувати
*/
// if(commands.contains(p)){
// return commands[p];
// }
return 0; /* нераспознанная команда */
} }
/* Возвращает "истину", если "c" разделитель */
bool Calculator::isdelim(QChar c){ bool Calculator::isdelim(QChar c){
if(StrChr(" ;,+-<>/*%^=()",c) || c=='\n' || c=='\r' || c=='\0') if(StrChr(" ;,+-<>/*%^=()",c) || c=='\n' || c=='\r' || c=='\0')
return true; return true;
return false; return false;
} }
/* Возвращает 1, если "с" пробел или табуляция */
bool Calculator::iswhite(QChar c){ bool Calculator::iswhite(QChar c){
if(c==' ' || c=='\t') if(c==' ' || c=='\t')
return true; return true;
@ -257,14 +225,14 @@ void Calculator::get_token(){
token.clear(); token.clear();
temp=&token; temp=&token;
if(prog[index]=='\0') { /* Конец файла */ if(prog[index]=='\0') { /* end of file */
token="\0"; token="\0";
tok=FINISHED; tok=FINISHED;
token_type=DELIMITER; token_type=DELIMITER;
return; return;
} }
while(iswhite(prog[index])) ++index; /* пропуск пробелов */ while(iswhite(prog[index])) ++index; /* skip spaces */
if(prog[index]=='\r') { /* crtl */ if(prog[index]=='\r') { /* crtl */
++index; ++index; ++index; ++index;
@ -274,15 +242,15 @@ void Calculator::get_token(){
return; return;
} }
if(StrChr("+-*^/%=;(),><", prog[index])) { /* разделитель */ if(StrChr("+-*^/%=;(),><", prog[index])) { /* delimiter */
*temp=prog[index]; *temp=prog[index];
index++; /* переход на следующую позицию */ index++; /* jump to the next position */
temp->append("\0"); temp->append("\0");
token_type=DELIMITER; token_type=DELIMITER;
debugFormula.append(token); debugFormula.append(token);
return; return;
} }
if(prog[index]=='"') { /* строка в кавычках */ if(prog[index]=='"') { /* quoted string */
index++; index++;
while(prog[index] != '"' && prog[index] != '\r'){ while(prog[index] != '"' && prog[index] != '\r'){
temp->append(prog[index]); temp->append(prog[index]);
@ -294,7 +262,7 @@ void Calculator::get_token(){
token_type=QUOTE; token_type=QUOTE;
return; return;
} }
if(prog[index].isDigit()) { /* число */ if(prog[index].isDigit()) { /* number */
while(!isdelim(prog[index])){ while(!isdelim(prog[index])){
temp->append(prog[index]); temp->append(prog[index]);
index++; index++;
@ -304,7 +272,7 @@ void Calculator::get_token(){
return; return;
} }
if(prog[index].isPrint()) { /* переменная или команда */ if(prog[index].isPrint()) { /* variable or command */
while(!isdelim(prog[index])){ while(!isdelim(prog[index])){
temp->append(prog[index]); temp->append(prog[index]);
index++; index++;
@ -313,13 +281,12 @@ void Calculator::get_token(){
} }
temp->append("\0"); temp->append("\0");
/* Просматривается, если строка есть команда или переменная */ /* Seen if there is a command line or a variable */
if(token_type==STRING) { if(token_type==STRING) {
tok=look_up(token); /* преобразование во внутренний tok=look_up(token);
формат */
if(!tok) if(!tok)
token_type = VARIABLE; token_type = VARIABLE;
else token_type = COMMAND; /* это команда */ else token_type = COMMAND; /* It is command */
} }
return; return;
} }
@ -328,7 +295,6 @@ bool Calculator::StrChr(QString string, QChar c){
return string.contains(c, Qt::CaseInsensitive); return string.contains(c, Qt::CaseInsensitive);
} }
/* Возвращает лексему обратно во входной поток */
void Calculator::putback(){ void Calculator::putback(){
QString t; QString t;
t = token; t = token;

View File

@ -26,142 +26,148 @@
#include "vcontainer.h" #include "vcontainer.h"
/** /**
* @brief The Calculator клас калькулятора формул лекал. Виконує розрахунок формул з підставлянням * @brief The Calculator class calculate formulas of pattern. Support operation +,-,/,* and braces.
* значеннь зміних. * Can replace name of variables her value.
*/ */
class Calculator class Calculator{
{
public: public:
/** /**
* @brief Calculator конструктор класу. Використовується при розрахунку лекала. * @brief Calculator class constructor.
* @param data покажчик на контейнер змінних * @param data pointer to a variable container.
*/ */
explicit Calculator(const VContainer *data); explicit Calculator(const VContainer *data);
/** /**
* @brief eval виконує розрахунок формули. * @brief eval calculate formula.
* @param prog рядко в якому зберігається формула. * @param prog string of formula.
* @return значення формули. * @return value of formula.
*/ */
qreal eval(QString prog, QString *errorMsg); qreal eval(QString prog, QString *errorMsg);
private: private:
Q_DISABLE_COPY(Calculator) Q_DISABLE_COPY(Calculator)
QString *errorMsg;
/** /**
* @brief token теперішня лексема. * @brief errorMsg keeps error message of calculation.
*/ */
QString token; QString *errorMsg;
/** /**
* @brief tok внутрішне представлення лексеми. * @brief token current token.
*/ */
qint32 tok; QString token;
/** /**
* @brief token_type тип лексеми. * @brief tok internal representation of token.
*/ */
qint32 token_type; qint32 tok;
/** /**
* @brief prog рядок в якому зберігається формула. * @brief token_type type of token.
*/ */
QString prog; /* Содержит анализируемое выражение */ qint32 token_type;
/** /**
* @brief index номер символу в рядку формули. * @brief prog string where keeps formula.
*/ */
qint32 index; /* Индекс символа в строке*/ QString prog;
/** /**
* @brief data контейнер усіх змінних. * @brief index number character in string of formula.
*/
qint32 index;
/**
* @brief data container of all variables.
*/ */
const VContainer *data; const VContainer *data;
/** /**
* @brief debugFormula рядок розшифрованої формули. * @brief debugFormula decoded string of formula.
*/ */
QString debugFormula; QString debugFormula;
/** /**
* @brief get_exp виконує розрахунок формули. * @brief get_exp calculate formula.
* @return значення формули. * @return value of formula.
*/ */
qreal get_exp(); qreal get_exp();
/** /**
* @brief get_token повертає наступну лексему. * @brief get_token return next token.
*/ */
void get_token();/* Получить лексему */ void get_token();
/** /**
* @brief StrChr перевіряє чи символ належить рядку. * @brief StrChr checks whether the character belongs to the line.
* @param string рядок * @param string string with formula
* @param c символ. * @param c character.
* @return true - належить рядку, false - не належить рядку. * @return true - belongs to the line, false - don't belongs to the line.
*/ */
static bool StrChr(QString string, QChar c); static bool StrChr(QString string, QChar c);
/** /**
* @brief putback повертає зчитану лексему назад у потік. * @brief putback returns the readout token back into the flow.
*/ */
void putback(); void putback();
/** /**
* @brief level2 метод додавання і віднімання двух термів. * @brief level2 method of addition and subtraction of two terms.
* @param result результат операції. * @param result result of operation.
*/ */
void level2(qreal *result); void level2(qreal *result);
/** /**
* @brief level3 метод множення, ділення, знаходження процентів. * @brief level3 method of multiplication, division, finding percent.
* @param result результат операції. * @param result result of operation.
*/ */
void level3(qreal *result); void level3(qreal *result);
/** /**
* @brief level4 метод знаходження степені двох чисел. * @brief level4 method of degree two numbers.
* @param result результат операції. * @param result result of operation.
*/ */
void level4(qreal *result); void level4(qreal *result);
/** /**
* @brief level5 метод знаходження унарного плюса чи мінуса. * @brief level5 method for finding unary plus or minus.
* @param result результат операції. * @param result result of operation.
*/ */
void level5(qreal *result); void level5(qreal *result);
/** /**
* @brief level6 метод обробки виразу в круглих лапках. * @brief level6 processing method of the expression in brackets.
* @param result результат операції. * @param result result of operation.
*/ */
void level6(qreal *result); void level6(qreal *result);
/** /**
* @brief primitive метод визначення значення зміної по її імені. * @brief primitive method of determining the value of a variable by its name.
* @param result результат операції. * @param result result of operation.
*/ */
void primitive(qreal *result); void primitive(qreal *result);
/** /**
* @brief arith виконання специфікованої арифметики. Результат записується в перший елемент. * @brief arith perform the specified arithmetic. The result is written to the first element.
* @param o знак операції. * @param o sign operation.
* @param r перший елемент. * @param r first element.
* @param h другий елемент. * @param h second element.
*/ */
static void arith(QChar o, qreal *r, qreal *h); static void arith(QChar o, qreal *r, qreal *h);
/** /**
* @brief unary метод зміни знаку. * @brief unary method changes the sign.
* @param o символ знаку. * @param o sign of symbol.
* @param r елемент. * @param r element.
*/ */
static void unary(QChar o, qreal *r); static void unary(QChar o, qreal *r);
/** /**
* @brief find_var метод знаходить змінну за іменем. * @brief find_var method is finding variable by name.
* @param s ім'я змінної. * @param s name of variable.
* @return значення зміної. * @return value of variable.
*/ */
qreal find_var(QString s); qreal find_var(QString s);
void serror(qint32 error);
/** /**
* @brief look_up пошук відповідного внутрішнього формату для теперішньої лексеми в таблиці лексем. текущей лексемы в таблице лексем * @brief serror report an error
* @param s ім'я лексеми. * @param error error code
* @return внутрішній номер лексеми.
*/ */
static char look_up(QString s); void serror(qint32 error);
/** /**
* @brief isdelim повертає "істино", якщо с розділювач. * @brief look_up Finding the internal format for the current token in the token table.
* @param c символ. * @param s name of token.
* @return розділювач, або ні. * @return internal number of token.
*/ */
static bool isdelim(QChar c); static char look_up(QString s);
/** /**
* @brief iswhite перевіряє чи с пробіл чи табуляція. * @brief isdelim return true if c delimiter.
* @param c символ. * @param c character.
* @return так або ні. * @return true - delimiter, false - do not delimiter.
*/ */
static bool iswhite(QChar c); static bool isdelim(QChar c);
/**
* @brief iswhite checks whether c space or tab.
* @param c character.
* @return true - space or tab, false - don't space and don't tab.
*/
static bool iswhite(QChar c);
}; };
#endif // CALCULATOR_H #endif // CALCULATOR_H

View File

@ -32,146 +32,179 @@
#include <QCoreApplication> #include <QCoreApplication>
/** /**
* @brief The VContainer class * @brief The VContainer class container of all variables.
*/ */
class VContainer class VContainer{
{
Q_DECLARE_TR_FUNCTIONS(VContainer) Q_DECLARE_TR_FUNCTIONS(VContainer)
public: public:
/**
* @brief VContainer create empty container
*/
VContainer();
/**
* @brief operator = copy constructor
* @param data container
* @return copy container
*/
VContainer &operator=(const VContainer &data);
/**
* @brief VContainer create container from another container
* @param data container
*/
VContainer(const VContainer &data);
/**
* @brief setData copy data from container
* @param data container
*/
void setData(const VContainer &data);
/** /**
* @brief VContainer * @brief GetPoint returns a point by id
*/ * @param id id of point
VContainer(); * @return point
VContainer &operator=(const VContainer &data); */
VContainer(const VContainer &data); VPointF GetPoint(qint64 id) const;
void setData(const VContainer &data); /**
/** * @brief GetModelingPoint return a modeling point by id
* @brief GetPoint * @param id id of modeling point
* @param id * @return modeling point
*/
VPointF GetModelingPoint(qint64 id) const;
/**
* @brief GetStandartTableCell
* @param name
* @return * @return
*/ */
VPointF GetPoint(qint64 id) const; VStandartTableCell GetStandartTableCell(const QString& name) const;
VPointF GetModelingPoint(qint64 id) const; VIncrementTableRow GetIncrementTableRow(const QString& name) const;
VStandartTableCell GetStandartTableCell(const QString& name) const; qreal GetLine(const QString &name) const;
VIncrementTableRow GetIncrementTableRow(const QString& name) const; qreal GetLineArc(const QString &name) const;
qreal GetLine(const QString &name) const; VSpline GetSpline(qint64 id) const;
qreal GetLineArc(const QString &name) const; VSpline GetModelingSpline(qint64 id) const;
VSpline GetSpline(qint64 id) const; VArc GetArc(qint64 id) const;
VSpline GetModelingSpline(qint64 id) const; VArc GetModelingArc(qint64 id) const;
VArc GetArc(qint64 id) const; VSplinePath GetSplinePath(qint64 id) const;
VArc GetModelingArc(qint64 id) const; VSplinePath GetModelingSplinePath(qint64 id) const;
VSplinePath GetSplinePath(qint64 id) const; VDetail GetDetail(qint64 id) const;
VSplinePath GetModelingSplinePath(qint64 id) const; static qint64 getId();
VDetail GetDetail(qint64 id) const; qint64 AddPoint(const VPointF& point);
static qint64 getId(); qint64 AddModelingPoint(const VPointF& point);
qint64 AddPoint(const VPointF& point); qint64 AddDetail(const VDetail& detail);
qint64 AddModelingPoint(const VPointF& point); void AddStandartTableCell(const QString& name,
qint64 AddDetail(const VDetail& detail); const VStandartTableCell& cell);
void AddStandartTableCell(const QString& name, const VStandartTableCell& cell); void AddIncrementTableRow(const QString& name,
void AddIncrementTableRow(const QString& name, const VIncrementTableRow &cell); const VIncrementTableRow &cell);
void AddLengthLine(const QString &name, const qreal &value); void AddLengthLine(const QString &name, const qreal &value);
void AddLengthSpline(const qint64 &firstPointId, const qint64 &secondPointId, void AddLengthSpline(const qint64 &firstPointId,
Draw::Draws mode = Draw::Calculation); const qint64 &secondPointId,
void AddLengthSpline(const QString &name, const qreal &value); Draw::Draws mode = Draw::Calculation);
void AddLengthArc(const qint64 &center, const qint64 &id); void AddLengthSpline(const QString &name, const qreal &value);
void AddLengthArc(const QString &name, const qreal &value); void AddLengthArc(const qint64 &center, const qint64 &id);
void AddLineAngle(const QString &name, const qreal &value); void AddLengthArc(const QString &name, const qreal &value);
void AddLine(const qint64 &firstPointId, const qint64 &secondPointId, void AddLineAngle(const QString &name, const qreal &value);
Draw::Draws mode = Draw::Calculation); void AddLine(const qint64 &firstPointId, const qint64 &secondPointId,
qint64 AddSpline(const VSpline& spl); Draw::Draws mode = Draw::Calculation);
qint64 AddModelingSpline(const VSpline& spl); qint64 AddSpline(const VSpline& spl);
qint64 AddSplinePath(const VSplinePath& splPath); qint64 AddModelingSpline(const VSpline& spl);
qint64 AddModelingSplinePath(const VSplinePath& splPath); qint64 AddSplinePath(const VSplinePath& splPath);
qint64 AddArc(const VArc& arc); qint64 AddModelingSplinePath(const VSplinePath& splPath);
qint64 AddModelingArc(const VArc& arc); qint64 AddArc(const VArc& arc);
QString GetNameLine(const qint64 &firstPoint, const qint64 &secondPoint, qint64 AddModelingArc(const VArc& arc);
Draw::Draws mode = Draw::Calculation) const; QString GetNameLine(const qint64 &firstPoint, const qint64 &secondPoint,
QString GetNameLineAngle(const qint64 &firstPoint, const qint64 &secondPoint, Draw::Draws mode = Draw::Calculation) const;
Draw::Draws mode = Draw::Calculation) const; QString GetNameLineAngle(const qint64 &firstPoint,
QString GetNameSpline(const qint64 &firstPoint, const qint64 &secondPoint, const qint64 &secondPoint,
Draw::Draws mode = Draw::Calculation) const; Draw::Draws mode = Draw::Calculation) const;
QString GetNameSplinePath(const VSplinePath &path, QString GetNameSpline(const qint64 &firstPoint, const qint64 &secondPoint,
Draw::Draws mode = Draw::Calculation) const; Draw::Draws mode = Draw::Calculation) const;
QString GetNameArc(const qint64 &center, const qint64 &id, QString GetNameSplinePath(const VSplinePath &path,
Draw::Draws mode = Draw::Calculation) const; Draw::Draws mode = Draw::Calculation) const;
void UpdatePoint(qint64 id, const VPointF& point); QString GetNameArc(const qint64 &center, const qint64 &id,
void UpdateModelingPoint(qint64 id, const VPointF& point); Draw::Draws mode = Draw::Calculation) const;
void UpdateDetail(qint64 id, const VDetail& detail); void UpdatePoint(qint64 id, const VPointF& point);
void UpdateSpline(qint64 id, const VSpline& spl); void UpdateModelingPoint(qint64 id, const VPointF& point);
void UpdateModelingSpline(qint64 id, const VSpline& spl); void UpdateDetail(qint64 id, const VDetail& detail);
void UpdateSplinePath(qint64 id, const VSplinePath& splPath); void UpdateSpline(qint64 id, const VSpline& spl);
void UpdateModelingSplinePath(qint64 id, const VSplinePath& splPath); void UpdateModelingSpline(qint64 id, const VSpline& spl);
void UpdateArc(qint64 id, const VArc& arc); void UpdateSplinePath(qint64 id, const VSplinePath& splPath);
void UpdateModelingArc(qint64 id, const VArc& arc); void UpdateModelingSplinePath(qint64 id, const VSplinePath& splPath);
void UpdateStandartTableCell(const QString& name, const VStandartTableCell& cell); void UpdateArc(qint64 id, const VArc& arc);
void UpdateIncrementTableRow(const QString& name, const VIncrementTableRow& cell); void UpdateModelingArc(qint64 id, const VArc& arc);
qreal GetValueStandartTableCell(const QString& name) const; void UpdateStandartTableCell(const QString& name,
qreal GetValueIncrementTableRow(const QString& name) const; const VStandartTableCell& cell);
void Clear(); void UpdateIncrementTableRow(const QString& name,
void ClearObject(); const VIncrementTableRow& cell);
void ClearIncrementTable(); qreal GetValueStandartTableCell(const QString& name) const;
void ClearLengthLines(); qreal GetValueIncrementTableRow(const QString& name) const;
void ClearLengthSplines(); void Clear();
void ClearLengthArcs(); void ClearObject();
void ClearLineAngles(); void ClearIncrementTable();
void SetSize(qint32 size); void ClearLengthLines();
void SetGrowth(qint32 growth); void ClearLengthSplines();
qint32 size() const; void ClearLengthArcs();
qint32 growth() const; void ClearLineAngles();
qreal FindVar(const QString& name, bool *ok)const; void SetSize(qint32 size);
bool IncrementTableContains(const QString& name); void SetGrowth(qint32 growth);
static qint64 getNextId(); qint32 size() const;
void RemoveIncrementTableRow(const QString& name); qint32 growth() const;
const QHash<qint64, VPointF> *DataPoints() const; qreal FindVar(const QString& name, bool *ok)const;
const QHash<qint64, VPointF> *DataModelingPoints() const; bool IncrementTableContains(const QString& name);
const QHash<qint64, VSpline> *DataSplines() const; static qint64 getNextId();
const QHash<qint64, VSpline> *DataModelingSplines() const; void RemoveIncrementTableRow(const QString& name);
const QHash<qint64, VArc> *DataArcs() const; const QHash<qint64, VPointF> *DataPoints() const;
const QHash<qint64, VArc> *DataModelingArcs() const; const QHash<qint64, VPointF> *DataModelingPoints() const;
const QHash<QString, qint32> *DataBase() const; const QHash<qint64, VSpline> *DataSplines() const;
const QHash<qint64, VSpline> *DataModelingSplines() const;
const QHash<qint64, VArc> *DataArcs() const;
const QHash<qint64, VArc> *DataModelingArcs() const;
const QHash<QString, qint32> *DataBase() const;
const QHash<QString, VStandartTableCell> *DataStandartTable() const; const QHash<QString, VStandartTableCell> *DataStandartTable() const;
const QHash<QString, VIncrementTableRow> *DataIncrementTable() const; const QHash<QString, VIncrementTableRow> *DataIncrementTable() const;
const QHash<QString, qreal> *DataLengthLines() const; const QHash<QString, qreal> *DataLengthLines() const;
const QHash<QString, qreal> *DataLengthSplines() const; const QHash<QString, qreal> *DataLengthSplines() const;
const QHash<QString, qreal> *DataLengthArcs() const; const QHash<QString, qreal> *DataLengthArcs() const;
const QHash<QString, qreal> *DataLineAngles() const; const QHash<QString, qreal> *DataLineAngles() const;
const QHash<qint64, VSplinePath> *DataSplinePaths() const; const QHash<qint64, VSplinePath> *DataSplinePaths() const;
const QHash<qint64, VSplinePath> *DataModelingSplinePaths() const; const QHash<qint64, VSplinePath> *DataModelingSplinePaths() const;
const QHash<qint64, VDetail> *DataDetails() const; const QHash<qint64, VDetail> *DataDetails() const;
static void UpdateId(qint64 newId); static void UpdateId(qint64 newId);
QPainterPath ContourPath(qint64 idDetail) const; QPainterPath ContourPath(qint64 idDetail) const;
QPainterPath Equidistant(QVector<QPointF> points, const Detail::Equidistant &eqv, QPainterPath Equidistant(QVector<QPointF> points,
const qreal &width)const; const Detail::Equidistant &eqv,
static QLineF ParallelLine(const QLineF &line, qreal width ); const qreal &width)const;
static QPointF SingleParallelPoint(const QLineF &line, const qreal &angle, const qreal &width); static QLineF ParallelLine(const QLineF &line, qreal width );
QVector<QPointF> EkvPoint(const QLineF &line1, const QLineF &line2, const qreal &width)const; static QPointF SingleParallelPoint(const QLineF &line, const qreal &angle,
QVector<QPointF> CheckLoops(const QVector<QPointF> &points) const; const qreal &width);
void PrepareDetails(QVector<VItem*> & list)const; QVector<QPointF> EkvPoint(const QLineF &line1, const QLineF &line2,
const qreal &width)const;
QVector<QPointF> CheckLoops(const QVector<QPointF> &points) const;
void PrepareDetails(QVector<VItem*> & list)const;
private: private:
static qint64 _id; static qint64 _id;
QHash<QString, qint32> base; QHash<QString, qint32> base;
QHash<qint64, VPointF> points; QHash<qint64, VPointF> points;
QHash<qint64, VPointF> modelingPoints; QHash<qint64, VPointF> modelingPoints;
QHash<QString, VStandartTableCell> standartTable; QHash<QString, VStandartTableCell> standartTable;
QHash<QString, VIncrementTableRow> incrementTable; QHash<QString, VIncrementTableRow> incrementTable;
QHash<QString, qreal> lengthLines; QHash<QString, qreal> lengthLines;
QHash<QString, qreal> lineAngles; QHash<QString, qreal> lineAngles;
QHash<qint64, VSpline> splines; QHash<qint64, VSpline> splines;
QHash<qint64, VSpline> modelingSplines; QHash<qint64, VSpline> modelingSplines;
QHash<QString, qreal> lengthSplines; QHash<QString, qreal> lengthSplines;
QHash<qint64, VArc> arcs; QHash<qint64, VArc> arcs;
QHash<qint64, VArc> modelingArcs; QHash<qint64, VArc> modelingArcs;
QHash<QString, qreal> lengthArcs; QHash<QString, qreal> lengthArcs;
QHash<qint64, VSplinePath> splinePaths; QHash<qint64, VSplinePath> splinePaths;
QHash<qint64, VSplinePath> modelingSplinePaths; QHash<qint64, VSplinePath> modelingSplinePaths;
QHash<qint64, VDetail> details; QHash<qint64, VDetail> details;
template <typename key, typename val> static val GetObject(const QHash<key,val> &obj, key id); template <typename key, typename val> static val GetObject(const QHash<key,val> &obj, key id);
template <typename val> static void UpdateObject(QHash<qint64, val> &obj, const qint64 &id, template <typename val> static void UpdateObject(QHash<qint64, val> &obj, const qint64 &id,
const val& point); const val& point);
template <typename key, typename val> static qint64 AddObject(QHash<key, val> &obj, const val& value); template <typename key, typename val> static qint64 AddObject(QHash<key, val> &obj,
void CreateManTableIGroup (); const val& value);
QVector<QPointF> GetReversePoint(const QVector<QPointF> &points)const; void CreateManTableIGroup ();
qreal GetLengthContour(const QVector<QPointF> &contour, const QVector<QPointF> &newPoints)const; QVector<QPointF> GetReversePoint(const QVector<QPointF> &points)const;
qreal GetLengthContour(const QVector<QPointF> &contour,
const QVector<QPointF> &newPoints)const;
}; };
#endif // VCONTAINER_H #endif // VCONTAINER_H

View File

@ -74,7 +74,7 @@ CREATE_SUBDIRS = NO
# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, # Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. # Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
OUTPUT_LANGUAGE = Ukrainian OUTPUT_LANGUAGE = English
# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
# include brief member descriptions after the members that are listed in # include brief member descriptions after the members that are listed in
@ -369,7 +369,7 @@ EXTRACT_PACKAGE = NO
# If the EXTRACT_STATIC tag is set to YES all static members of a file # If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation. # will be included in the documentation.
EXTRACT_STATIC = NO EXTRACT_STATIC = YES
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
# defined locally in source files will be included in the documentation. # defined locally in source files will be included in the documentation.