From 4b7d9eb22d923ecaf6cd1dbfa2d562dd508e6646 Mon Sep 17 00:00:00 2001
From: Jan Burle <jan@c53.be>
Date: Mon, 29 May 2017 11:27:35 +0200
Subject: [PATCH] demo: better colours on OSX

---
 GUI/ba3d/ba3d/model/object.cpp |  4 ----
 GUI/ba3d/ba3d/view/program.cpp |  4 ++++
 GUI/ba3d/demo/demo_model.cpp   | 11 +++++++++--
 GUI/ba3d/demo/demo_model.h     |  5 +++--
 GUI/ba3d/demo/main.cpp         |  1 -
 GUI/ba3d/demo/mainwin.cpp      | 12 ++++++------
 GUI/ba3d/demo/mainwin.h        |  2 +-
 7 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/GUI/ba3d/ba3d/model/object.cpp b/GUI/ba3d/ba3d/model/object.cpp
index c4677e3ada8..a7a67eda0e5 100644
--- a/GUI/ba3d/ba3d/model/object.cpp
+++ b/GUI/ba3d/ba3d/model/object.cpp
@@ -9,13 +9,9 @@ namespace ba3d {
 //------------------------------------------------------------------------------
 
 #ifdef Q_OS_LINUX
-
 QColor const clrObject = Qt::lightGray;
-
 #else
-
 QColor const clrObject = Qt::black;
-
 #endif
 
 Object::Object(geometry::key gky_) : color(clrObject)
diff --git a/GUI/ba3d/ba3d/view/program.cpp b/GUI/ba3d/ba3d/view/program.cpp
index 6c77a016a8d..d45cd1ea8b3 100644
--- a/GUI/ba3d/ba3d/view/program.cpp
+++ b/GUI/ba3d/ba3d/view/program.cpp
@@ -38,7 +38,11 @@ static char const *shaderFragment =
   "  highp vec3  L  = normalize(lightPos - vo);"
   "  highp vec3  N  = normalize(nm);"
   "  highp float NL = dot(N,L);"
+#ifdef Q_OS_OSX
   "  highp vec4  C  = color*(0.6 + NL*0.4);"  // mix ambient with specular
+#else
+  "  highp vec4  C  = color*(0.4 + NL*0.6);"
+#endif
   "  gl_FragColor   = clamp(C, 0.0, 1.0);"
   "}";
 }
diff --git a/GUI/ba3d/demo/demo_model.cpp b/GUI/ba3d/demo/demo_model.cpp
index 39f7489238c..3c58e5aeeb1 100644
--- a/GUI/ba3d/demo/demo_model.cpp
+++ b/GUI/ba3d/demo/demo_model.cpp
@@ -73,7 +73,10 @@ void DemoModel::square(float sigma) {
     ps.resize(mesh.count());
     for (auto& p: ps) {
       add((p = new particle::TruncatedSphere(R, R)));
+      p->color = QColor(170, 0, 0);
+#ifdef Q_OS_OSX
       p->color = QColor(70, 0, 0);
+#endif
     }
     activeMesh.clear();
   }
@@ -162,7 +165,9 @@ void DemoModel::oneOut() {
 
 void DemoModel::oneIn(particle::kind kind) {
   add((p = newParticle(kind, R)));
+#ifdef Q_OS_OSX
   p->color = QColor(70,0,0);
+#endif
   p->transform(xyz::_0, xyz(0, 0, -hgtLayer));
 
   uint const steps = 140;
@@ -205,11 +210,13 @@ void DemoModel::cameraUpdated(DemoModel::Camera const& cam) {
 }
 
 void DemoModel::addSubstrate() {
-  addLayer(dr(-hgtLayer, -hgtLayer - hgtSubstrate), Qt::lightGray);
+  QColor clr = Qt::lightGray;
+  addLayer(dr(-hgtLayer, -hgtLayer - hgtSubstrate), clr);
 }
 
 void DemoModel::addLayer() {
-  addLayer(dr(0, -hgtLayer), QColor(0, 100, 0));
+  QColor clr = QColor(0, 100, 0);
+  addLayer(dr(0, -hgtLayer), clr);
 }
 
 void DemoModel::addLayer(dr z, QColor clr) {
diff --git a/GUI/ba3d/demo/demo_model.h b/GUI/ba3d/demo/demo_model.h
index 9368b0e3e4a..742ff4c1556 100644
--- a/GUI/ba3d/demo/demo_model.h
+++ b/GUI/ba3d/demo/demo_model.h
@@ -1,7 +1,7 @@
 // GPL3; https://github.com/jburle/ba3d
 
-#ifndef BA3D_DEMOMODEL_LAYERS_H
-#define BA3D_DEMOMODEL_LAYERS_H
+#ifndef BA3D_DEMOMODEL_H
+#define BA3D_DEMOMODEL_H
 
 #include <ba3d/model/model.h>
 #include <ba3d/model/particles.h>
@@ -20,6 +20,7 @@ public:
   using Camera   = ba3d::Camera;
 
   DemoModel();
+
   void switchBack();
   void switchFront();
   void switchOne();
diff --git a/GUI/ba3d/demo/main.cpp b/GUI/ba3d/demo/main.cpp
index a670b5f60a5..a08dd857343 100644
--- a/GUI/ba3d/demo/main.cpp
+++ b/GUI/ba3d/demo/main.cpp
@@ -29,7 +29,6 @@ int App::exec() {
   win.show();
 
   QScopedPointer<DemoModel> model(new DemoModel);
-
   win.widg3t().setModel(model.data());
 
   return base::exec();
diff --git a/GUI/ba3d/demo/mainwin.cpp b/GUI/ba3d/demo/mainwin.cpp
index 04e1b8ed31d..11c40bb94ed 100644
--- a/GUI/ba3d/demo/mainwin.cpp
+++ b/GUI/ba3d/demo/mainwin.cpp
@@ -1,7 +1,6 @@
 // GPL3; https://github.com/jburle/ba3d
 
 #include "mainwin.h"
-#include "demo_model.h"
 
 #include <QApplication>
 #include <QBoxLayout>
@@ -32,10 +31,6 @@ void MainWin::keyPressEvent(QKeyEvent* e) {
     close();
 }
 
-void MainWin::mouseDoubleClickEvent(QMouseEvent*) {
-
-}
-
 void MainWin::createLayout() {
   setCentralWidget(new QWidget);
 
@@ -44,7 +39,12 @@ void MainWin::createLayout() {
 
   vb->addWidget((w3d = new ba3d::Widget3D));
 
-  w3d->setBackground(QColor(160,160,160));
+#ifdef Q_OS_OSX
+  QColor clrBg(160,160,160);
+#else
+  QColor clrBg(palette().color(QPalette::Background));
+#endif
+  w3d->setBackground(clrBg);
 
   auto hb = new QHBoxLayout;
   vb->addLayout(hb);
diff --git a/GUI/ba3d/demo/mainwin.h b/GUI/ba3d/demo/mainwin.h
index db0843042bb..5a36e34ea18 100644
--- a/GUI/ba3d/demo/mainwin.h
+++ b/GUI/ba3d/demo/mainwin.h
@@ -3,6 +3,7 @@
 #ifndef BA3D_MAINWIN_H
 #define BA3D_MAINWIN_H
 
+#include "demo_model.h"
 #include <ba3d/widget.h>
 #include <ba3d/model/particles.h>
 #include <QMainWindow>
@@ -23,7 +24,6 @@ public:
 private:
   void closeEvent(QCloseEvent*);
   void keyPressEvent(QKeyEvent*);
-  void mouseDoubleClickEvent(QMouseEvent*);
 
   void createLayout();
   ba3d::Widget3D *w3d;
-- 
GitLab