git-svn-id: svn://db.shs.com.ru/libs@540 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -33,15 +33,15 @@ class QGLView: public OpenGLWindow, public QGLViewBase
|
||||
friend class GLObjectBase;
|
||||
Q_OBJECT
|
||||
Q_PROPERTY (QColor backColor READ backColor WRITE setBackColor)
|
||||
Q_PROPERTY (double lineWidth READ lineWidth WRITE setLineWidth)
|
||||
Q_PROPERTY (double FOV READ FOV WRITE setFOV)
|
||||
Q_PROPERTY (double depthStart READ depthStart WRITE setDepthStart)
|
||||
Q_PROPERTY (double depthEnd READ depthEnd WRITE setDepthEnd)
|
||||
Q_PROPERTY (float lineWidth READ lineWidth WRITE setLineWidth)
|
||||
Q_PROPERTY (float FOV READ FOV WRITE setFOV)
|
||||
Q_PROPERTY (float depthStart READ depthStart WRITE setDepthStart)
|
||||
Q_PROPERTY (float depthEnd READ depthEnd WRITE setDepthEnd)
|
||||
Q_PROPERTY (QColor ambientColor READ ambientColor WRITE setAmbientColor)
|
||||
Q_PROPERTY (QColor fogColor READ fogColor WRITE setFogColor)
|
||||
Q_PROPERTY (double fogDensity READ fogDensity WRITE setFogDensity)
|
||||
Q_PROPERTY (double fogStart READ fogStart WRITE setFogStart)
|
||||
Q_PROPERTY (double fogEnd READ fogEnd WRITE setFogEnd)
|
||||
Q_PROPERTY (float fogDensity READ fogDensity WRITE setFogDensity)
|
||||
Q_PROPERTY (float fogStart READ fogStart WRITE setFogStart)
|
||||
Q_PROPERTY (float fogEnd READ fogEnd WRITE setFogEnd)
|
||||
Q_PROPERTY (FogMode fogMode READ fogMode WRITE setFogMode)
|
||||
Q_PROPERTY (bool fogEnabled READ isFogEnabled WRITE setFogEnabled)
|
||||
Q_PROPERTY (int renderMode READ renderMode WRITE setRenderMode)
|
||||
@@ -51,10 +51,10 @@ class QGLView: public OpenGLWindow, public QGLViewBase
|
||||
Q_PROPERTY (bool cameraOrbit READ isCameraOrbit WRITE setCameraOrbit)
|
||||
Q_PROPERTY (bool hoverHalo READ isHoverHaloEnabled WRITE setHoverHaloEnabled)
|
||||
Q_PROPERTY (QColor hoverHaloColor READ hoverHaloColor WRITE setHoverHaloColor)
|
||||
Q_PROPERTY (double hoverHaloFillAlpha READ hoverHaloFillAlpha WRITE setHoverHaloFillAlpha)
|
||||
Q_PROPERTY (float hoverHaloFillAlpha READ hoverHaloFillAlpha WRITE setHoverHaloFillAlpha)
|
||||
Q_PROPERTY (bool selectionHalo READ isSelectionHaloEnabled WRITE setSelectionHaloEnabled)
|
||||
Q_PROPERTY (QColor selectionHaloColor READ selectionHaloColor WRITE setSelectionHaloColor)
|
||||
Q_PROPERTY (double selectionHaloFillAlpha READ selectionHaloFillAlpha WRITE setSelectionHaloFillAlpha)
|
||||
Q_PROPERTY (float selectionHaloFillAlpha READ selectionHaloFillAlpha WRITE setSelectionHaloFillAlpha)
|
||||
Q_PROPERTY (Qt::MouseButton selectionButton READ selectionButton WRITE setSelectionButton)
|
||||
Q_PROPERTY (Qt::KeyboardModifier selectionModifier READ selectionModifier WRITE setSelectionModifier)
|
||||
Q_PROPERTY (SelectionMode selectionMode READ selectionMode WRITE setSelectionMode)
|
||||
@@ -99,24 +99,24 @@ public:
|
||||
Q_ENUMS (SelectionMode)
|
||||
|
||||
void stop();
|
||||
void start(double freq = 40.);
|
||||
void start(float freq = 40.);
|
||||
|
||||
GLRendererBase * renderer();
|
||||
void setRenderer(GLRendererBase * r, GLRendererBase ** prev = nullptr);
|
||||
|
||||
QColor backColor() const {return backColor_;}
|
||||
double lineWidth() const {return lineWidth_;}
|
||||
double FOV() const {return camera().fov_;}
|
||||
double depthStart() const {return camera().depth_start;}
|
||||
double depthEnd() const {return camera().depth_end;}
|
||||
double currentFPS() const {return fps_;}
|
||||
float lineWidth() const {return lineWidth_;}
|
||||
float FOV() const {return camera()->fov_;}
|
||||
float depthStart() const {return camera()->depth_start;}
|
||||
float depthEnd() const {return camera()->depth_end;}
|
||||
float currentFPS() const {return fps_;}
|
||||
int maxAnisotropicLevel() const {return max_anisotropic;}
|
||||
|
||||
QColor ambientColor() const {return ambientColor_;}
|
||||
QColor fogColor() const {return fogColor_;}
|
||||
double fogDensity() const {return fogDensity_;}
|
||||
double fogStart() const {return fogStart_;}
|
||||
double fogEnd() const {return fogEnd_;}
|
||||
float fogDensity() const {return fogDensity_;}
|
||||
float fogStart() const {return fogStart_;}
|
||||
float fogEnd() const {return fogEnd_;}
|
||||
FogMode fogMode() const {return fogMode_;}
|
||||
bool isFogEnabled() const {return fogEnabled_;}
|
||||
bool isLightEnabled() const {return lightEnabled_;}
|
||||
@@ -126,10 +126,10 @@ public:
|
||||
bool isCameraOrbit() const {return cameraOrbit_;}
|
||||
bool isHoverHaloEnabled() const {return hoverHalo_;}
|
||||
QColor hoverHaloColor() const {return hoverHaloColor_;}
|
||||
double hoverHaloFillAlpha() const {return hoverHaloFill_;}
|
||||
float hoverHaloFillAlpha() const {return hoverHaloFill_;}
|
||||
bool isSelectionHaloEnabled() const {return selectionHalo_;}
|
||||
QColor selectionHaloColor() const {return selectionHaloColor_;}
|
||||
double selectionHaloFillAlpha() const {return selectionHaloFill_;}
|
||||
float selectionHaloFillAlpha() const {return selectionHaloFill_;}
|
||||
|
||||
QVariant feature(Feature f) const {return features_.value(int(f));}
|
||||
QVariant setFeature(Feature f, const QVariant & value) {QVariant ret = features_.value(int(f)); features_[int(f)] = value; return ret;}
|
||||
@@ -138,30 +138,28 @@ public:
|
||||
int renderMode() const {return (int)rmode;}
|
||||
void setRenderMode(int mode) {rmode = (GLObjectBase::RenderMode)mode;}
|
||||
|
||||
void addObject(QWidget * o, Qt::WindowFlags f = Qt::Widget);
|
||||
void addObject(GLObjectBase * o);
|
||||
void addObject(GLObjectBase & o) {addObject(&o);}
|
||||
int objectsCount(bool all = false) {if (!all) return objects_.childCount(); int cnt = 0; objectsCountInternal(&cnt, &objects_); return cnt;}
|
||||
// void addObject(GLObjectBase & o) {addObject(&o);}
|
||||
int objectsCount(bool all = false);
|
||||
void removeObject(GLObjectBase * o, bool inChildren = true);
|
||||
void removeObject(GLObjectBase & o, bool inChildren = true) {removeObject(&o, inChildren);}
|
||||
void removeObject(GLObjectBase & o, bool inChildren = true);
|
||||
void clearObjects(bool deleteAll = false);
|
||||
QList<GLObjectBase * > objects(bool all = false) {return objects_.children(all);}
|
||||
QList<GLObjectBase * > objects(bool all = false);
|
||||
|
||||
int lightsCount() const {return lights_.size();}
|
||||
void removeLight(int index) {removeObject(lights_.at(index)); lights_.removeAt(index);}
|
||||
void removeLight(Light * l) {foreach (Light * i, lights_) removeObject(i); lights_.removeAll(l);}
|
||||
void clearLights(bool deleteAll = false) {if (deleteAll) foreach (Light * i, lights_) delete i; lights_.clear();}
|
||||
int lightsCount() const;
|
||||
void removeLight(int index);
|
||||
void removeLight(Light * l);
|
||||
void clearLights(bool deleteAll = false);
|
||||
QList<Light * > lights() {return lights_;}
|
||||
|
||||
GLTextureManager * textureManager() {return &textures_manager;}
|
||||
void addTexture(const QString & path) {textures_manager.addTexture(path);}
|
||||
void addAnimation(const QString & dir, const QString & name) {textures_manager.addAnimation(dir, name);}
|
||||
void addTexture(const QString & path);
|
||||
void addAnimation(const QString & dir, const QString & name);
|
||||
|
||||
const GLObjectBase & rootObject() {return objects_;}
|
||||
GLObjectBase * object(int index) {return objects_.child(index);}
|
||||
GLObjectBase * object(const QString & name) {return objects_.child(name);}
|
||||
Light * light(int index) {return lights_[index];}
|
||||
Light * light(const QString & name) {foreach (Light * i, lights_) if (i->name_ == name) return i; return 0;}
|
||||
Light * light(int index);
|
||||
Light * light(const QString & name);
|
||||
|
||||
SelectionMode selectionMode() const {return sel_mode;}
|
||||
Qt::MouseButton selectionButton() const {return sel_button;}
|
||||
@@ -173,7 +171,9 @@ public:
|
||||
void selectObject(GLObjectBase * o);
|
||||
GLObjectBase * selectedObject() const {return sel_obj;}
|
||||
|
||||
GLdouble aspect, iaspect;
|
||||
void glReleaseTextures(int channels = 8);
|
||||
|
||||
GLfloat aspect, iaspect;
|
||||
QMatrix4x4 cur_mvpm;
|
||||
|
||||
protected:
|
||||
@@ -188,6 +188,7 @@ protected:
|
||||
void mouseReleaseEvent(QMouseEvent * e);
|
||||
void wheelEvent(QWheelEvent * e);
|
||||
void leaveEvent(QEvent * );
|
||||
void mouseDoubleClickEvent(QMouseEvent * e);
|
||||
|
||||
void keyPressEvent(QKeyEvent * e);
|
||||
void keyReleaseEvent(QKeyEvent * e);
|
||||
@@ -202,17 +203,16 @@ protected:
|
||||
private:
|
||||
void objectDeleted(GLObjectBase * o);
|
||||
void collectObjectLights(GLObjectBase * o);
|
||||
void objectsCountInternal(int * cnt, GLObjectBase * where) {++(*cnt); foreach (GLObjectBase * i, where->children_) objectsCountInternal(cnt, i);}
|
||||
void objectsCountInternal(int * cnt, GLObjectBase * where);
|
||||
void removeObjectInternal(GLObjectBase * o, GLObjectBase * where);
|
||||
void renderSingleSelection(GLObjectBase & o);
|
||||
//void renderSingleShadow(GLObjectBase & o);
|
||||
void renderHalo(const GLObjectBase * obj, const uint iid, const QColor & color, const double & fill);
|
||||
void renderHalo(const GLObjectBase * obj, const uint iid, const QColor & color, const float & fill);
|
||||
void reloadThisShaders();
|
||||
void processKeys();
|
||||
bool setupViewport();
|
||||
|
||||
QPoint lastPos, downPos;
|
||||
GLTextureManager textures_manager;
|
||||
GLObjectBase objects_;
|
||||
QList<Light * > lights_;
|
||||
// uint cid;
|
||||
@@ -232,8 +232,8 @@ private:
|
||||
Qt::KeyboardModifier sel_mod;
|
||||
GLRendererBase::RenderingParameters start_rp;
|
||||
QHash<int, QVariant> features_;
|
||||
double lineWidth_;
|
||||
double fogDensity_, fogStart_, fogEnd_, fps_, fps_tm, hoverHaloFill_, selectionHaloFill_, m_motionBlurFactor;
|
||||
float lineWidth_;
|
||||
float fogDensity_, fogStart_, fogEnd_, fps_, fps_tm, hoverHaloFill_, selectionHaloFill_, m_motionBlurFactor;
|
||||
int timer, fps_cnt, sh_id_loc;
|
||||
bool is_first_draw, is_init, fogEnabled_, lightEnabled_, grabMouse_, mouse_first, mouseRotate_, mouseSelect_, customMouseMove_;
|
||||
bool shaders_supported, changed_, cameraOrbit_, need_init_;
|
||||
@@ -241,15 +241,15 @@ private:
|
||||
|
||||
public slots:
|
||||
void setBackColor(const QColor & arg) {backColor_ = arg;}
|
||||
void setLineWidth(const double & arg) {lineWidth_ = arg;}
|
||||
void setFOV(const double & arg) {camera().fov_ = arg;}
|
||||
void setDepthStart(const double & arg) {camera().depth_start = arg;}
|
||||
void setDepthEnd(const double & arg) {camera().depth_end = arg;}
|
||||
void setLineWidth(const float & arg) {lineWidth_ = arg;}
|
||||
void setFOV(const float & arg) {camera()->fov_ = arg;}
|
||||
void setDepthStart(const float & arg) {camera()->depth_start = arg;}
|
||||
void setDepthEnd(const float & arg) {camera()->depth_end = arg;}
|
||||
void setAmbientColor(const QColor & arg) {ambientColor_ = arg;}
|
||||
void setFogColor(const QColor & arg) {fogColor_ = arg;}
|
||||
void setFogDensity(const double & arg) {fogDensity_ = arg;}
|
||||
void setFogStart(const double & arg) {fogStart_ = arg;}
|
||||
void setFogEnd(const double & arg) {fogEnd_ = arg;}
|
||||
void setFogDensity(const float & arg) {fogDensity_ = arg;}
|
||||
void setFogStart(const float & arg) {fogStart_ = arg;}
|
||||
void setFogEnd(const float & arg) {fogEnd_ = arg;}
|
||||
void setFogMode(const FogMode & arg) {fogMode_ = arg;}
|
||||
void setFogEnabled(const bool & arg) {fogEnabled_ = arg;}
|
||||
void setLightEnabled(const bool & arg) {lightEnabled_ = arg;}
|
||||
@@ -260,13 +260,13 @@ public slots:
|
||||
void setCameraOrbit(const bool & arg) {cameraOrbit_ = arg;}
|
||||
void setHoverHaloEnabled(const bool & arg) {hoverHalo_ = arg;}
|
||||
void setHoverHaloColor(const QColor & arg) {hoverHaloColor_ = arg;}
|
||||
void setHoverHaloFillAlpha(const double & arg) {hoverHaloFill_ = arg;}
|
||||
void setHoverHaloFillAlpha(const float & arg) {hoverHaloFill_ = arg;}
|
||||
void setSelectionHaloEnabled(const bool & arg) {selectionHalo_ = arg;}
|
||||
void setSelectionHaloColor(const QColor & arg) {selectionHaloColor_ = arg;}
|
||||
void setSelectionHaloFillAlpha(const double & arg) {selectionHaloFill_ = arg;}
|
||||
void setSelectionHaloFillAlpha(const float & arg) {selectionHaloFill_ = arg;}
|
||||
|
||||
void reloadShaders() {if (renderer_ != 0) renderer_->reloadShaders(); reloadThisShaders();}
|
||||
void deselect() {sel_obj = 0;}
|
||||
void reloadShaders() {if (renderer_ != nullptr) renderer_->reloadShaders(); reloadThisShaders();}
|
||||
void deselect() {sel_obj = nullptr;}
|
||||
|
||||
signals:
|
||||
void glBeforePaint();
|
||||
@@ -288,6 +288,7 @@ signals:
|
||||
void hoverChanged(GLObjectBase * cur, GLObjectBase * prev);
|
||||
void selectionChanged(GLObjectBase * cur, GLObjectBase * prev);
|
||||
void objectAdded(GLObjectBase * );
|
||||
void doubleClick();
|
||||
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user