aboutsummaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/aspectratiowidget/aspectratiowidget.hpp66
-rw-r--r--src/utils/sceneparser.cpp2
2 files changed, 67 insertions, 1 deletions
diff --git a/src/utils/aspectratiowidget/aspectratiowidget.hpp b/src/utils/aspectratiowidget/aspectratiowidget.hpp
new file mode 100644
index 0000000..9a5f81c
--- /dev/null
+++ b/src/utils/aspectratiowidget/aspectratiowidget.hpp
@@ -0,0 +1,66 @@
+#ifndef ASPECTRATIOWIDGET_HPP
+#define ASPECTRATIOWIDGET_HPP
+
+#include <QWidget>
+#include <QBoxLayout>
+
+class AspectRatioWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ AspectRatioWidget(QWidget *parent = 0) : QWidget(parent)
+ {
+ m_layout = new QHBoxLayout();
+ m_layout->setSpacing(0);
+ m_layout->setContentsMargins(0, 0, 0, 0);
+ setLayout(m_layout);
+ }
+
+ // the widget we want to keep the ratio
+ void setAspectWidget(QWidget* widget, const double ratio = 1.0) {
+ m_aspect_widget = widget;
+ m_layout->addWidget(widget);
+ m_ratio = ratio;
+ }
+ void setRatio(const double ratio) {
+ m_ratio = ratio;
+ applyAspectRatio();
+ }
+
+protected:
+ void resizeEvent(QResizeEvent *event) {
+ (void)event;
+ applyAspectRatio();
+ }
+
+public slots:
+ void applyAspectRatio() {
+ int w = this->width();
+ int h = this->height();
+ double aspect = static_cast<double>(h)/static_cast<double>(w);
+
+ if(aspect < m_ratio) // parent is too wide
+ {
+ int target_width = static_cast<int>(static_cast<double>(h)/m_ratio);
+ m_aspect_widget->setMaximumWidth(target_width);
+ m_aspect_widget->setMaximumHeight(h);
+
+ }
+ else // parent is too high
+ {
+ int target_heigth = static_cast<int>(static_cast<double>(w)*m_ratio);
+ m_aspect_widget->setMaximumHeight(target_heigth);
+ m_aspect_widget->setMaximumWidth(w);
+ }
+ }
+
+private:
+ QHBoxLayout* m_layout;
+
+ QWidget* m_aspect_widget;
+
+ double m_ratio;
+};
+
+#endif // ASPECTRATIOWINDOW_H
+
diff --git a/src/utils/sceneparser.cpp b/src/utils/sceneparser.cpp
index 74c605a..99c4f55 100644
--- a/src/utils/sceneparser.cpp
+++ b/src/utils/sceneparser.cpp
@@ -58,7 +58,7 @@ void initTree(SceneNode* currentNode, std::vector<RenderShapeData> *shapes, std:
for(auto primitive : currentNode->primitives) {
- primitive->material.textureData = loadTextureFromFile(QString::fromStdString(primitive->material.textureMap.filename));
+ // primitive->material.textureData = loadTextureFromFile(QString::fromStdString(primitive->material.textureMap.filename));
RenderShapeData rsd = {*primitive, currentCTM, glm::inverse(currentCTM)};
shapes->push_back(rsd);
}