много исправлений

This commit is contained in:
Бычков Андрей
2022-10-13 17:00:24 +03:00
parent ce3df7d051
commit 6150882794
17 changed files with 142 additions and 145 deletions

View File

@@ -75,6 +75,7 @@ void Scene::addScene(const Scene * s) {
void Scene::assignFrom(const Scene * s) { void Scene::assignFrom(const Scene * s) {
clear(); clear();
if (!s) return;
setName(s->name()); setName(s->name());
foreach (Material * m, s->materials) { foreach (Material * m, s->materials) {
Material * nm = new Material(); Material * nm = new Material();

View File

@@ -35,11 +35,6 @@ GLWidget::GLWidget(QWidget *parent) : QWidget(parent) {
} }
QColor GLWidget::backColor() const {
return view_->backColor();
}
qreal GLWidget::lineWidth() const { qreal GLWidget::lineWidth() const {
return view_->lineWidth(); return view_->lineWidth();
} }
@@ -55,11 +50,6 @@ qreal GLWidget::depthStart() const {
} }
QColor GLWidget::ambientColor() const {
return view_->ambientColor();
}
bool GLWidget::isLightEnabled() const { bool GLWidget::isLightEnabled() const {
return view_->isLightEnabled(); return view_->isLightEnabled();
} }
@@ -146,11 +136,6 @@ void GLWidget::start(float freq) {
} }
void GLWidget::setBackColor(const QColor & c) {
view_->setBackColor(c);
}
void GLWidget::setLineWidth(const qreal & arg) { void GLWidget::setLineWidth(const qreal & arg) {
view_->setLineWidth(arg); view_->setLineWidth(arg);
} }
@@ -166,11 +151,6 @@ void GLWidget::setDepthStart(const qreal & arg) {
} }
void GLWidget::setAmbientColor(const QColor & arg) {
view_->setAmbientColor(arg);
}
void GLWidget::setLightEnabled(const bool & arg) { void GLWidget::setLightEnabled(const bool & arg) {
view_->setLightEnabled(arg); view_->setLightEnabled(arg);
} }

View File

@@ -29,11 +29,9 @@ class Scene;
class GLWidget : public QWidget class GLWidget : public QWidget
{ {
Q_OBJECT Q_OBJECT
Q_PROPERTY (QColor backColor READ backColor WRITE setBackColor)
Q_PROPERTY (qreal lineWidth READ lineWidth WRITE setLineWidth) Q_PROPERTY (qreal lineWidth READ lineWidth WRITE setLineWidth)
Q_PROPERTY (qreal FOV READ FOV WRITE setFOV) Q_PROPERTY (qreal FOV READ FOV WRITE setFOV)
Q_PROPERTY (qreal depthStart READ depthStart WRITE setDepthStart) Q_PROPERTY (qreal depthStart READ depthStart WRITE setDepthStart)
Q_PROPERTY (QColor ambientColor READ ambientColor WRITE setAmbientColor)
Q_PROPERTY (bool grabMouse READ isGrabMouseEnabled WRITE setGrabMouseEnabled) Q_PROPERTY (bool grabMouse READ isGrabMouseEnabled WRITE setGrabMouseEnabled)
Q_PROPERTY (bool mouseRotate READ isMouseRotateEnabled WRITE setMouseRotateEnabled) Q_PROPERTY (bool mouseRotate READ isMouseRotateEnabled WRITE setMouseRotateEnabled)
Q_PROPERTY (bool mouseSelection READ isMouseSelectionEnabled WRITE setMouseSelectionEnabled) Q_PROPERTY (bool mouseSelection READ isMouseSelectionEnabled WRITE setMouseSelectionEnabled)
@@ -73,11 +71,9 @@ public:
public slots: public slots:
void stop(); void stop();
void start(float freq = 0.0); void start(float freq = 0.0);
void setBackColor(const QColor & c);
void setLineWidth(const qreal & arg); void setLineWidth(const qreal & arg);
void setFOV(const qreal & arg); void setFOV(const qreal & arg);
void setDepthStart(const qreal & arg); void setDepthStart(const qreal & arg);
void setAmbientColor(const QColor & arg);
void setLightEnabled(const bool & arg); void setLightEnabled(const bool & arg);
void setGrabMouseEnabled(const bool & arg); void setGrabMouseEnabled(const bool & arg);
void setMouseRotateEnabled(const bool & arg); void setMouseRotateEnabled(const bool & arg);

View File

@@ -68,19 +68,19 @@ bool OpenGLWindow::getVSync() const {
} }
void OpenGLWindow::setSamples(int samples) { //void OpenGLWindow::setSamples(int samples) {
QSurfaceFormat f = requestedFormat(); // QSurfaceFormat f = requestedFormat();
if (f.samples() != samples) { // if (f.samples() != samples) {
f.setSamples(samples); // f.setSamples(samples);
setFormat(f); // setFormat(f);
format_change = true; // format_change = true;
} // }
} //}
int OpenGLWindow::getSamples() const { //int OpenGLWindow::getSamples() const {
return requestedFormat().samples(); // return requestedFormat().samples();
} //}
void OpenGLWindow::renderNow() { void OpenGLWindow::renderNow() {

View File

@@ -18,8 +18,8 @@ public:
QOpenGLContext * context() {return m_context;} QOpenGLContext * context() {return m_context;}
void setVSync(bool on); void setVSync(bool on);
bool getVSync() const; bool getVSync() const;
void setSamples(int samples); // void setSamples(int samples);
int getSamples() const; // int getSamples() const;
int getFrameCounter() const {return frame_cnt;} int getFrameCounter() const {return frame_cnt;}
public slots: public slots:

View File

@@ -30,13 +30,10 @@ using namespace QGLEngineShaders;
QGLView::QGLView(): OpenGLWindow(), renderer_(this), mouse(this) { QGLView::QGLView(): OpenGLWindow(), renderer_(this), mouse(this) {
setIcon(QIcon(":/icons/qglview.png")); setIcon(QIcon(":/icons/qglview.png"));
deleting_ = false; is_init = false;
timer = 0; timer = 0;
need_init_ = is_first_draw = true;
backColor_ = Qt::darkGray;
hoverHaloColor_ = QColor(195, 140, 255); hoverHaloColor_ = QColor(195, 140, 255);
selectionHaloColor_ = QColor(175, 255, 140); selectionHaloColor_ = QColor(175, 255, 140);
ambientColor_ = QColor(10, 10, 10);
lineWidth_ = 1.; lineWidth_ = 1.;
max_anisotropic = 1; max_anisotropic = 1;
max_texture_chanels = 8; max_texture_chanels = 8;
@@ -74,7 +71,7 @@ QGLView::QGLView(): OpenGLWindow(), renderer_(this), mouse(this) {
setFeature(qglDepthOfFieldFocus, 1.); setFeature(qglDepthOfFieldFocus, 1.);
setFeature(qglDepthOfFieldDiaphragm, 8.); setFeature(qglDepthOfFieldDiaphragm, 8.);
hoverHalo_ = selectionHalo_ = true; hoverHalo_ = selectionHalo_ = true;
fogEnabled_ = is_init = shaders_bind = changed_ = false; fogEnabled_ = shaders_bind = false;
rmode = ObjectBase::Fill; rmode = ObjectBase::Fill;
scene_ = new Scene(); scene_ = new Scene();
connect(scene_, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged())); connect(scene_, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged()));
@@ -87,7 +84,6 @@ QGLView::QGLView(): OpenGLWindow(), renderer_(this), mouse(this) {
// qDebug() << camera_->aim(); // qDebug() << camera_->aim();
default_camera->setName("Camera"); default_camera->setName("Camera");
emit cameraPosChanged(default_camera->pos()); emit cameraPosChanged(default_camera->pos());
ktm_.restart();
Mesh * m = Primitive::cube(10, 10, 10); Mesh * m = Primitive::cube(10, 10, 10);
m->flipNormals(); m->flipNormals();
@@ -99,7 +95,6 @@ QGLView::QGLView(): OpenGLWindow(), renderer_(this), mouse(this) {
QGLView::~QGLView() { QGLView::~QGLView() {
deleting_ = true;
stop(); stop();
scene_->clear(); scene_->clear();
delete scene_; delete scene_;
@@ -130,9 +125,9 @@ QList<Light * > QGLView::selectedLights() const {
QList<Camera * > QGLView::selectedCameras() const { QList<Camera * > QGLView::selectedCameras() const {
QList<Camera * > ret; QList<Camera * > ret;
ObjectBaseList sol = scene_->selectedObjects(); ObjectBaseList sol = scene_->selectedObjects();
foreach (ObjectBase * o, sol) for (ObjectBase * o : sol) {
if (o->type() == ObjectBase::glCamera) if (o->type() == ObjectBase::glCamera) ret << (Camera*)o;
ret << (Camera*)o; }
return ret; return ret;
} }
@@ -185,7 +180,6 @@ void QGLView::initialize() {
renderer_.init(width(), height()); renderer_.init(width(), height());
scene_->reinitAll(); scene_->reinitAll();
is_init = true; is_init = true;
need_init_ = false;
prev_size = QSize(); prev_size = QSize();
emit glInitializeDone(); emit glInitializeDone();
} }
@@ -204,8 +198,7 @@ void QGLView::__destroyed() {
void QGLView::__objectDeleted(ObjectBase * o) { void QGLView::__objectDeleted(ObjectBase * o) {
if (o == camera_) if (o == camera_) setDefaultCamera();
setDefaultCamera();
} }
@@ -253,7 +246,7 @@ void QGLView::focusOn(const Box3D & bb) {
QByteArray QGLView::saveCamera() { QByteArray QGLView::saveCamera() {
ChunkStream cs; ChunkStream cs;
const Camera * c = camera(); const Camera * c = default_camera;
cs.add(1, c->pos()).add(2, c->aim()).add(3, c->rotation()).add(4, c->FOV()); cs.add(1, c->pos()).add(2, c->aim()).add(3, c->rotation()).add(4, c->FOV());
return cs.data(); return cs.data();
} }
@@ -261,7 +254,8 @@ QByteArray QGLView::saveCamera() {
void QGLView::restoreCamera(const QByteArray & ba) { void QGLView::restoreCamera(const QByteArray & ba) {
if (ba.isEmpty()) return; if (ba.isEmpty()) return;
Camera * c = camera(); setDefaultCamera();
Camera * c = default_camera;
QVector3D pos(c->pos()), aim(c->aim()), ang(c->rotation()); QVector3D pos(c->pos()), aim(c->aim()), ang(c->rotation());
float fov(c->FOV()); float fov(c->FOV());
ChunkStream cs(ba); ChunkStream cs(ba);

View File

@@ -34,13 +34,11 @@ class QGLView: public OpenGLWindow
{ {
friend class RendererSelection; friend class RendererSelection;
Q_OBJECT Q_OBJECT
Q_PROPERTY (QColor backColor READ backColor WRITE setBackColor)
Q_PROPERTY (float lineWidth READ lineWidth WRITE setLineWidth) Q_PROPERTY (float lineWidth READ lineWidth WRITE setLineWidth)
Q_PROPERTY (float FOV READ FOV WRITE setFOV) Q_PROPERTY (float FOV READ FOV WRITE setFOV)
Q_PROPERTY (float depthStart READ depthStart WRITE setDepthStart) Q_PROPERTY (float depthStart READ depthStart WRITE setDepthStart)
Q_PROPERTY (float gamma READ gamma WRITE setGamma) Q_PROPERTY (float gamma READ gamma WRITE setGamma)
Q_PROPERTY (bool autoExposure READ autoExposure WRITE setAutoExposure) Q_PROPERTY (bool autoExposure READ autoExposure WRITE setAutoExposure)
Q_PROPERTY (QColor ambientColor READ ambientColor WRITE setAmbientColor)
Q_PROPERTY (QColor fogColor READ fogColor WRITE setFogColor) Q_PROPERTY (QColor fogColor READ fogColor WRITE setFogColor)
Q_PROPERTY (bool fogEnabled READ isFogEnabled WRITE setFogEnabled) Q_PROPERTY (bool fogEnabled READ isFogEnabled WRITE setFogEnabled)
Q_PROPERTY (float fogDensity READ fogDensity WRITE setFogDensity) Q_PROPERTY (float fogDensity READ fogDensity WRITE setFogDensity)
@@ -102,7 +100,6 @@ public:
void stop(); void stop();
void start(float freq = 0.); void start(float freq = 0.);
QColor backColor() const {return backColor_;}
float lineWidth() const {return lineWidth_;} float lineWidth() const {return lineWidth_;}
float FOV() const {return camera()->FOV();} float FOV() const {return camera()->FOV();}
float depthStart() const {return camera()->depthStart();} float depthStart() const {return camera()->depthStart();}
@@ -112,7 +109,6 @@ public:
int maxAnisotropicLevel() const {return max_anisotropic;} int maxAnisotropicLevel() const {return max_anisotropic;}
QString environmentMapFile() const {return renderer_.tex_env.fileHDR();} QString environmentMapFile() const {return renderer_.tex_env.fileHDR();}
QColor ambientColor() const {return ambientColor_;}
QColor fogColor() const {return fogColor_;} QColor fogColor() const {return fogColor_;}
float fogDensity() const {return fogDensity_;} float fogDensity() const {return fogDensity_;}
float fogDecay() const {return fogDecay_;} float fogDecay() const {return fogDecay_;}
@@ -167,6 +163,7 @@ public:
const Camera * camera() const {return camera_;} const Camera * camera() const {return camera_;}
void setCamera(Camera * camera) {camera_ = camera;} void setCamera(Camera * camera) {camera_ = camera;}
void setDefaultCamera() {camera_ = default_camera;} void setDefaultCamera() {camera_ = default_camera;}
bool isDefaultCamera() const {return camera_ == default_camera;}
QByteArray saveCamera(); QByteArray saveCamera();
void restoreCamera(const QByteArray & ba); void restoreCamera(const QByteArray & ba);
QByteArray saveFeatures(); QByteArray saveFeatures();
@@ -209,8 +206,8 @@ private:
MouseController mouse; MouseController mouse;
QMenu context_menu; QMenu context_menu;
QSet<int> keys_; QSet<int> keys_;
QColor backColor_, fogColor_, ambientColor_, hoverHaloColor_, selectionHaloColor_; QColor fogColor_, hoverHaloColor_, selectionHaloColor_;
QElapsedTimer time, ktm_; QElapsedTimer time;
GLint max_anisotropic, max_texture_chanels; GLint max_anisotropic, max_texture_chanels;
ObjectBase::RenderMode rmode; ObjectBase::RenderMode rmode;
QHash<int, QVariant> features_; QHash<int, QVariant> features_;
@@ -218,23 +215,22 @@ private:
float lineWidth_; float lineWidth_;
float fps_, fps_tm, fogDensity_, fogDecay_; float fps_, fps_tm, fogDensity_, fogDecay_;
float hoverHaloFill_, selectionHaloFill_, m_motionBlurFactor; float hoverHaloFill_, selectionHaloFill_, m_motionBlurFactor;
int timer, fps_cnt, sh_id_loc, deleting_; int timer, fps_cnt, sh_id_loc;
bool is_first_draw, is_init, fogEnabled_, lightEnabled_; bool fogEnabled_, lightEnabled_;
bool shaders_supported, changed_, need_init_; bool shaders_supported, shaders_bind;
bool hoverHalo_, selectionHalo_, shaders_bind; bool hoverHalo_, selectionHalo_;
bool is_init;
private slots: private slots:
void __destroyed(); void __destroyed();
void __objectDeleted(ObjectBase * o); void __objectDeleted(ObjectBase * o);
public slots: public slots:
void setBackColor(const QColor & arg) {backColor_ = arg;}
void setLineWidth(const float & arg) {lineWidth_ = arg;} void setLineWidth(const float & arg) {lineWidth_ = arg;}
void setFOV(const float & arg) {camera()->setFOV(arg);} void setFOV(const float & arg) {camera()->setFOV(arg);}
void setDepthStart(const float & arg) {camera()->setDepthStart(arg);} void setDepthStart(const float & arg) {camera()->setDepthStart(arg);}
void setGamma(const float & arg) {renderer_.gamma_ = arg;} void setGamma(const float & arg) {renderer_.gamma_ = arg;}
void setAutoExposure(bool arg) {renderer_.tone_proc.enabled = arg;} void setAutoExposure(bool arg) {renderer_.tone_proc.enabled = arg;}
void setAmbientColor(const QColor & arg) {ambientColor_ = arg;}
void setEnvironmentMapFile(QString file) {renderer_.tex_env.setFileHDR(file); renderer_.recreateMaterialThumbnails(true);} void setEnvironmentMapFile(QString file) {renderer_.tex_env.setFileHDR(file); renderer_.recreateMaterialThumbnails(true);}
void setFogColor(const QColor & arg) {fogColor_ = arg;} void setFogColor(const QColor & arg) {fogColor_ = arg;}
void setFogDensity(const float & arg) {fogDensity_ = arg;} void setFogDensity(const float & arg) {fogDensity_ = arg;}

View File

@@ -42,7 +42,6 @@ QGLViewWindow::QGLViewWindow(QWidget * parent): QMainWindow(parent), Ui::QGLView
view->view()->setMouseSelectionEnabled(true); view->view()->setMouseSelectionEnabled(true);
view->view()->setSelectionHaloEnabled(true); view->view()->setSelectionHaloEnabled(true);
view->view()->setHoverHaloEnabled(true); view->view()->setHoverHaloEnabled(true);
view->view()->setBackColor(Qt::lightGray);
view->view()->setDepthStart(0.1); view->view()->setDepthStart(0.1);
view->view()->setSelectionMode(Scene::smMultiSelection); view->view()->setSelectionMode(Scene::smMultiSelection);

View File

@@ -291,8 +291,9 @@ void Renderer::renderScene() {
/// lights /// lights
cur_lights = scene.lights_used; cur_lights = scene.lights_used;
bool use_camlight = (camera_light_mode == QGLView::clmOn); bool use_camlight = (camera_light_mode == QGLView::clmOn);
if ((camera_light_mode == QGLView::clmAuto) && cur_lights.isEmpty()) if ((camera_light_mode == QGLView::clmAuto) && cur_lights.isEmpty()) {
use_camlight = true; use_camlight = true;
}
if (use_camlight) { if (use_camlight) {
cur_lights[Light::Omni] << cam_light; cur_lights[Light::Omni] << cam_light;
cam_light->setPos(cam->pos()); cam_light->setPos(cam->pos());
@@ -346,16 +347,16 @@ void Renderer::renderScene() {
} }
/// tonemapping /// tonemapping
if (tone_proc.process()) if (tone_proc.process()) fbo_out.bind();
fbo_out.bind();
if (bindShader(srTonemapPass, &prog)) { if (bindShader(srTonemapPass, &prog)) {
prog->setUniformValue("gamma", gamma_); prog->setUniformValue("gamma", gamma_);
prog->setUniformValue("frame_max", tone_proc.frameMax()); prog->setUniformValue("frame_max", tone_proc.frameMax());
fbo_out.bindColorTexture(obrSum, 0); fbo_out.bindColorTexture(obrSum, 0);
fbo_out.setWriteBuffer(obrTonemap); fbo_out.setWriteBuffer(obrTonemap);
renderQuad(prog, quad); renderQuad(prog, quad);
} else } else {
fbo_out.blit(obrSum, fbo_out.id(), obrTonemap, fbo_out.rect(), fbo_out.rect()); fbo_out.blit(obrSum, fbo_out.id(), obrTonemap, fbo_out.rect(), fbo_out.rect());
}
//glClearFramebuffer(Qt::red, false); //glClearFramebuffer(Qt::red, false);
fbo_out.release(); fbo_out.release();

View File

@@ -95,7 +95,7 @@ void RendererMaterial::renderMaterial(Material * m) {
mat_l[Light::Omni] << mat_light; mat_l[Light::Omni] << mat_light;
r->reloadLightsParameters(mat_l); r->reloadLightsParameters(mat_l);
r->reloadLightsPositions(mat_camera); r->reloadLightsPositions(mat_camera);
glClearFramebuffer(r->view->backColor(), false); glClearFramebuffer(Qt::black, false);
r->renderQuad(prog, r->quad, mat_camera); r->renderQuad(prog, r->quad, mat_camera);
r->view->scene()->setLightsChanged(); r->view->scene()->setLightsChanged();
} }

View File

@@ -56,6 +56,8 @@ SceneTree::SceneTree(QWidget * parent): QWidget(parent) {
ui->treeObjects->header()->setSectionResizeMode(cVis, QHeaderView::ResizeToContents); ui->treeObjects->header()->setSectionResizeMode(cVis, QHeaderView::ResizeToContents);
ui->treeObjects->header()->setSectionsMovable(false); ui->treeObjects->header()->setSectionsMovable(false);
ui->treeObjects->header()->swapSections(cName, cVis); ui->treeObjects->header()->swapSections(cName, cVis);
ui->treeObjects->setItemDelegateForColumn(1, new NoEditDelegate(this));
ui->treeObjects->setItemDelegateForColumn(2, new NoEditDelegate(this));
icon_empty = QIcon(":/icons/type-empty.png"); icon_empty = QIcon(":/icons/type-empty.png");
icon_geo = QIcon(":/icons/type-geo.png"); icon_geo = QIcon(":/icons/type-geo.png");
icon_camera = QIcon(":/icons/type-camera.png"); icon_camera = QIcon(":/icons/type-camera.png");
@@ -110,6 +112,11 @@ QList<QAction *> SceneTree::actionsSelection() {
} }
void SceneTree::expandItems() {
ui->treeObjects->expandAll();
}
void SceneTree::changeEvent(QEvent * e) { void SceneTree::changeEvent(QEvent * e) {
QWidget::changeEvent(e); QWidget::changeEvent(e);
if (e->type() == QEvent::LanguageChange) { if (e->type() == QEvent::LanguageChange) {
@@ -265,19 +272,30 @@ bool SceneTree::filterTree(QTreeWidgetItem * ti, const QString & filter, int typ
void SceneTree::checkActions() { void SceneTree::checkActions() {
bool has_1 = false, has_m = false; bool has_1 = false, has_m = false;
bool has_cam = false;
bool has_mesh = false;
bool is_def_cam = false;
if (view) { if (view) {
has_1 = !view->selectedObjects().isEmpty(); is_def_cam = view->isDefaultCamera();
has_m = view->selectedObjects().size() > 1; ObjectBaseList slo = view->selectedObjects();
has_1 = !slo.isEmpty();
has_m = slo.size() > 1;
for (ObjectBase * o : slo) {
if (o->type() == ObjectBase::glCamera) has_cam = (slo.size() == 1);
if (o->type() == ObjectBase::glMesh) has_mesh = true;
} }
ui->actionFocus ->setEnabled(has_1); }
ui->actionFocus ->setEnabled(has_mesh);
ui->actionRemove->setEnabled(has_1); ui->actionRemove->setEnabled(has_1);
ui->actionClone ->setEnabled(has_1); ui->actionClone ->setEnabled(has_1);
ui->actionGroup->setEnabled(has_m); ui->actionGroup->setEnabled(has_m);
ui->actionTransfer_transform_to_children->setEnabled(has_1); ui->actionTransfer_transform_to_children->setEnabled(has_1);
ui->actionSelect_parent->setEnabled(has_1); ui->actionSelect_parent->setEnabled(has_1);
ui->actionSelect_by_mesh->setEnabled(has_1); ui->actionSelect_by_mesh->setEnabled(has_mesh);
ui->actionSelect_by_material->setEnabled(has_1); ui->actionSelect_by_material->setEnabled(has_mesh);
ui->actionActive_camera->setEnabled(has_1); ui->actionActive_camera->setEnabled(has_cam);
ui->actionDefault_camera->setEnabled(is_def_cam);
} }

View File

@@ -39,6 +39,7 @@ public:
void assignQGLView(QGLView * v); void assignQGLView(QGLView * v);
QList<QAction*> actionsAdd(); QList<QAction*> actionsAdd();
QList<QAction*> actionsSelection(); QList<QAction*> actionsSelection();
void expandItems();
private: private:
void changeEvent(QEvent * e); void changeEvent(QEvent * e);

View File

@@ -38,7 +38,7 @@
<item> <item>
<widget class="QToolButton" name="buttonFilter"> <widget class="QToolButton" name="buttonFilter">
<property name="icon"> <property name="icon">
<iconset resource="../../qad/widgets/qad_widgets.qrc"> <iconset resource="../../qad/libs/application/qad_application.qrc">
<normaloff>:/icons/configure.png</normaloff>:/icons/configure.png</iconset> <normaloff>:/icons/configure.png</normaloff>:/icons/configure.png</iconset>
</property> </property>
<property name="popupMode"> <property name="popupMode">
@@ -98,6 +98,9 @@
<property name="verticalScrollMode"> <property name="verticalScrollMode">
<enum>QAbstractItemView::ScrollPerPixel</enum> <enum>QAbstractItemView::ScrollPerPixel</enum>
</property> </property>
<property name="autoExpandDelay">
<number>2</number>
</property>
<property name="uniformRowHeights"> <property name="uniformRowHeights">
<bool>true</bool> <bool>true</bool>
</property> </property>
@@ -124,7 +127,7 @@
</layout> </layout>
<action name="actionFocus"> <action name="actionFocus">
<property name="icon"> <property name="icon">
<iconset resource="../qglview.qrc"> <iconset resource="../../qad/libs/qglview/qglview.qrc">
<normaloff>:/icons/type-camera.png</normaloff>:/icons/type-camera.png</iconset> <normaloff>:/icons/type-camera.png</normaloff>:/icons/type-camera.png</iconset>
</property> </property>
<property name="text"> <property name="text">
@@ -133,7 +136,7 @@
</action> </action>
<action name="actionRemove"> <action name="actionRemove">
<property name="icon"> <property name="icon">
<iconset resource="../../qad/utils/qad_utils.qrc"> <iconset resource="../../qad/libs/blockview/qad_blockview.qrc">
<normaloff>:/icons/edit-delete.png</normaloff>:/icons/edit-delete.png</iconset> <normaloff>:/icons/edit-delete.png</normaloff>:/icons/edit-delete.png</iconset>
</property> </property>
<property name="text"> <property name="text">
@@ -142,7 +145,7 @@
</action> </action>
<action name="actionClone"> <action name="actionClone">
<property name="icon"> <property name="icon">
<iconset resource="../../qad/utils/qad_utils.qrc"> <iconset resource="../../qad/libs/application/qad_application.qrc">
<normaloff>:/icons/edit-copy.png</normaloff>:/icons/edit-copy.png</iconset> <normaloff>:/icons/edit-copy.png</normaloff>:/icons/edit-copy.png</iconset>
</property> </property>
<property name="text"> <property name="text">
@@ -169,7 +172,7 @@
</action> </action>
<action name="actionSelect_by_mesh"> <action name="actionSelect_by_mesh">
<property name="icon"> <property name="icon">
<iconset resource="../qglview.qrc"> <iconset resource="../../qad/libs/qglview/qglview.qrc">
<normaloff>:/icons/type-geo.png</normaloff>:/icons/type-geo.png</iconset> <normaloff>:/icons/type-geo.png</normaloff>:/icons/type-geo.png</iconset>
</property> </property>
<property name="text"> <property name="text">
@@ -178,7 +181,7 @@
</action> </action>
<action name="actionSelect_by_material"> <action name="actionSelect_by_material">
<property name="icon"> <property name="icon">
<iconset resource="../../qad/blockview/qad_blockview.qrc"> <iconset resource="../../qad/libs/blockview/qad_blockview.qrc">
<normaloff>:/icons/format-fill-color.png</normaloff>:/icons/format-fill-color.png</iconset> <normaloff>:/icons/format-fill-color.png</normaloff>:/icons/format-fill-color.png</iconset>
</property> </property>
<property name="text"> <property name="text">
@@ -229,7 +232,7 @@
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="../qglview.qrc"> <iconset resource="../../qad/libs/qglview/qglview.qrc">
<normaloff>:/icons/type-geo.png</normaloff>:/icons/type-geo.png</iconset> <normaloff>:/icons/type-geo.png</normaloff>:/icons/type-geo.png</iconset>
</property> </property>
<property name="text"> <property name="text">
@@ -241,7 +244,7 @@
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="../qglview.qrc"> <iconset resource="../../qad/libs/qglview/qglview.qrc">
<normaloff>:/icons/type-light.png</normaloff>:/icons/type-light.png</iconset> <normaloff>:/icons/type-light.png</normaloff>:/icons/type-light.png</iconset>
</property> </property>
<property name="text"> <property name="text">
@@ -253,7 +256,7 @@
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="../qglview.qrc"> <iconset resource="../../qad/libs/qglview/qglview.qrc">
<normaloff>:/icons/type-camera.png</normaloff>:/icons/type-camera.png</iconset> <normaloff>:/icons/type-camera.png</normaloff>:/icons/type-camera.png</iconset>
</property> </property>
<property name="text"> <property name="text">
@@ -267,7 +270,7 @@
</action> </action>
<action name="actionActive_camera"> <action name="actionActive_camera">
<property name="icon"> <property name="icon">
<iconset resource="../qglview.qrc"> <iconset resource="../../qad/libs/qglview/qglview.qrc">
<normaloff>:/icons/type-camera.png</normaloff>:/icons/type-camera.png</iconset> <normaloff>:/icons/type-camera.png</normaloff>:/icons/type-camera.png</iconset>
</property> </property>
<property name="text"> <property name="text">
@@ -276,7 +279,7 @@
</action> </action>
<action name="actionDefault_camera"> <action name="actionDefault_camera">
<property name="icon"> <property name="icon">
<iconset resource="../qglview.qrc"> <iconset resource="../../qad/libs/qglview/qglview.qrc">
<normaloff>:/icons/type-camera.png</normaloff>:/icons/type-camera.png</iconset> <normaloff>:/icons/type-camera.png</normaloff>:/icons/type-camera.png</iconset>
</property> </property>
<property name="text"> <property name="text">
@@ -297,11 +300,16 @@
</customwidget> </customwidget>
</customwidgets> </customwidgets>
<resources> <resources>
<include location="../../qad/utils/qad_utils.qrc"/> <include location="../../qad/libs/application/qad_application.qrc"/>
<include location="../../qad/widgets/qad_widgets.qrc"/> <include location="../../qad/libs/blockview/qad_blockview.qrc"/>
<include location="../../qad/blockview/qad_blockview.qrc"/> <include location="../../qad/libs/qglview/qglview.qrc"/>
<include location="widgets.qrc"/> <include location="widgets.qrc"/>
<include location="../qglview.qrc"/> <include location="../qglview.qrc"/>
<include location="../../qad/libs/application/qad_application.qrc"/>
<include location="../../qad/libs/blockview/qad_blockview.qrc"/>
<include location="../../qad/libs/qglview/qglview.qrc"/>
<include location="../qglview.qrc"/>
<include location="widgets.qrc"/>
</resources> </resources>
<connections> <connections>
<connection> <connection>

View File

@@ -23,6 +23,7 @@
#include <QDropEvent> #include <QDropEvent>
#include <QDebug> #include <QDebug>
#include <QTimer> #include <QTimer>
#include <QStyledItemDelegate>
class InternalMoveTreeWidget: public QTreeWidget class InternalMoveTreeWidget: public QTreeWidget
{ {
@@ -48,4 +49,13 @@ signals:
}; };
class NoEditDelegate: public QStyledItemDelegate {
public:
NoEditDelegate(QObject* parent=0): QStyledItemDelegate(parent) {}
virtual QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const {
return nullptr;
}
};
#endif // TREEWIDGET_H #endif // TREEWIDGET_H

View File

@@ -26,7 +26,7 @@
ViewEditor::ViewEditor(QWidget * parent): QWidget(parent) { ViewEditor::ViewEditor(QWidget * parent): QWidget(parent) {
ui = new Ui::ViewEditor(); ui = new Ui::ViewEditor();
ui->setupUi(this); ui->setupUi(this);
view = 0; view = nullptr;
active = true; active = true;
ui->checkCameraLight->setCheckState(Qt::PartiallyChecked); ui->checkCameraLight->setCheckState(Qt::PartiallyChecked);
#if QT_VERSION >= QT_VERSION_CHECK(5,12,0) #if QT_VERSION >= QT_VERSION_CHECK(5,12,0)
@@ -54,7 +54,9 @@ void ViewEditor::assignQGLView(QGLView * v) {
ui->lineHDR->setProperty("GLpath", view->environmentMapFile()); ui->lineHDR->setProperty("GLpath", view->environmentMapFile());
ui->lineHDR->setText(QFileInfo(view->environmentMapFile()).fileName()); ui->lineHDR->setText(QFileInfo(view->environmentMapFile()).fileName());
ui->checkVSync->setChecked(view->getVSync()); ui->checkVSync->setChecked(view->getVSync());
ui->spinSamples->setValue(view->getSamples()); ui->colorFogBack->setColor(view->fogColor());
ui->spinFogDecay->setValue(view->fogDecay());
ui->spinFogDensity->setValue(view->fogDensity());
active = true; active = true;
} }
@@ -181,12 +183,26 @@ void ViewEditor::on_buttonHDRSelect_clicked() {
} }
void ViewEditor::on_colorFogBack_colorChanged(const QColor & color) {
if (!view || !active) return;
view->setFogColor(color);
}
void ViewEditor::on_spinFogDensity_valueChanged(double arg1) {
if (!view || !active) return;
view->setFogDensity(arg1);
}
void ViewEditor::on_spinFogDecay_valueChanged(double arg1) {
if (!view || !active) return;
view->setFogDecay(arg1);
}
void ViewEditor::on_checkVSync_clicked(bool val) { void ViewEditor::on_checkVSync_clicked(bool val) {
if (!view || !active) return;
view->setVSync(val); view->setVSync(val);
} }
void ViewEditor::on_spinSamples_valueChanged(int arg1) {
view->setSamples(arg1);
}

View File

@@ -58,9 +58,11 @@ private slots:
void on_checkService_clicked(bool val); void on_checkService_clicked(bool val);
void on_checkCameraLight_stateChanged(int s); void on_checkCameraLight_stateChanged(int s);
void on_checkVSync_clicked(bool val); void on_checkVSync_clicked(bool val);
void on_spinSamples_valueChanged(int arg1);
void on_buttonHDRClear_clicked(); void on_buttonHDRClear_clicked();
void on_buttonHDRSelect_clicked(); void on_buttonHDRSelect_clicked();
void on_colorFogBack_colorChanged(const QColor &color);
void on_spinFogDensity_valueChanged(double arg1);
void on_spinFogDecay_valueChanged(double arg1);
}; };
#endif // VIEW_EDITOR_H #endif // VIEW_EDITOR_H

View File

@@ -29,9 +29,6 @@
<property name="fieldGrowthPolicy"> <property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum> <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property> </property>
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="leftMargin"> <property name="leftMargin">
<number>0</number> <number>0</number>
</property> </property>
@@ -78,9 +75,6 @@
<property name="text"> <property name="text">
<string>Gamma:</string> <string>Gamma:</string>
</property> </property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget> </widget>
</item> </item>
<item row="2" column="1"> <item row="2" column="1">
@@ -181,22 +175,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="1">
<widget class="QSpinBox" name="spinSamples">
<property name="prefix">
<string>Samples: </string>
</property>
<property name="minimum">
<number>-1</number>
</property>
<property name="maximum">
<number>16</number>
</property>
<property name="value">
<number>-1</number>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item> <item>
@@ -238,9 +216,6 @@
<property name="text"> <property name="text">
<string>FOV:</string> <string>FOV:</string>
</property> </property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget> </widget>
</item> </item>
<item> <item>
@@ -265,9 +240,6 @@
<property name="text"> <property name="text">
<string>Depth start:</string> <string>Depth start:</string>
</property> </property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget> </widget>
</item> </item>
<item> <item>
@@ -415,17 +387,14 @@
<property name="fieldGrowthPolicy"> <property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum> <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property> </property>
<property name="labelAlignment"> <item row="1" column="0">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_2"> <widget class="QLabel" name="label_2">
<property name="text"> <property name="text">
<string>Density:</string> <string>Density:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item row="1" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_3"> <layout class="QHBoxLayout" name="horizontalLayout_3">
<item> <item>
<widget class="SpinSlider" name="spinFogDensity"> <widget class="SpinSlider" name="spinFogDensity">
@@ -449,27 +418,16 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="ColorButton" name="colorFogBack">
<property name="color">
<color>
<red>128</red>
<green>128</green>
<blue>128</blue>
</color>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item row="1" column="0"> <item row="2" column="0">
<widget class="QLabel" name="label_25"> <widget class="QLabel" name="label_25">
<property name="text"> <property name="text">
<string>Decay:</string> <string>Decay:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="2" column="1">
<widget class="SpinSlider" name="spinFogDecay"> <widget class="SpinSlider" name="spinFogDecay">
<property name="minimum"> <property name="minimum">
<double>0.000000000000000</double> <double>0.000000000000000</double>
@@ -497,6 +455,24 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1">
<widget class="ColorButton" name="colorFogBack">
<property name="color">
<color>
<red>128</red>
<green>128</green>
<blue>128</blue>
</color>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Color</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
@@ -531,7 +507,6 @@
</customwidgets> </customwidgets>
<resources> <resources>
<include location="../../qad/libs/blockview/qad_blockview.qrc"/> <include location="../../qad/libs/blockview/qad_blockview.qrc"/>
<include location="../../qad/libs/blockview/qad_blockview.qrc"/>
</resources> </resources>
<connections/> <connections/>
</ui> </ui>