summaryrefslogtreecommitdiff
path: root/src/pmview/defaultobj.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/pmview/defaultobj.cpp')
-rw-r--r--src/pmview/defaultobj.cpp175
1 files changed, 175 insertions, 0 deletions
diff --git a/src/pmview/defaultobj.cpp b/src/pmview/defaultobj.cpp
new file mode 100644
index 0000000..977186e
--- /dev/null
+++ b/src/pmview/defaultobj.cpp
@@ -0,0 +1,175 @@
+/*
+ * Copyright (c) 1997 Silicon Graphics, Inc. All Rights Reserved.
+ * Copyright (c) 2009 Aconex. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+#include "defaultobj.h"
+#include "colorlist.h"
+#include <QtCore/QSettings>
+
+#include <iostream>
+using namespace std;
+
+DefaultObj *DefaultObj::theDefaultObj;
+
+DefaultObj::DefaultObj()
+: _baseBorderX(8),
+ _baseBorderZ(8),
+ _baseHeight(6),
+ _barSpaceX(8),
+ _barSpaceZ(8),
+ _barSpaceLabel(6),
+ _barLength(28),
+ _barHeight(80),
+ _labelMargin(5),
+ _gridMinWidth(20),
+ _gridMinDepth(20)
+{
+ _baseColor[0] = _baseColor[1] = _baseColor[2] = 0.15;
+ _labelColor[0] = _labelColor[1] = _labelColor[2] = 1.0;
+ _pipeLength = _barHeight;
+}
+
+const DefaultObj &
+DefaultObj::defObj()
+{
+ if (!theDefaultObj) {
+ theDefaultObj = new DefaultObj;
+ theDefaultObj->getResources();
+ }
+ return *theDefaultObj;
+}
+
+DefaultObj &
+DefaultObj::changeDefObj()
+{
+ if (!theDefaultObj) {
+ theDefaultObj = new DefaultObj;
+ theDefaultObj->getResources();
+ }
+ return *theDefaultObj;
+}
+
+DefaultObj::DefaultObj(const DefaultObj &rhs)
+: _baseBorderX(rhs._baseBorderX),
+ _baseBorderZ(rhs._baseBorderZ),
+ _baseHeight(rhs._baseHeight),
+ _barSpaceX(rhs._barSpaceX),
+ _barSpaceZ(rhs._barSpaceZ),
+ _barSpaceLabel(rhs._barSpaceLabel),
+ _barLength(rhs._barLength),
+ _barHeight(rhs._barHeight),
+ _labelMargin(rhs._labelMargin),
+ _gridMinWidth(rhs._gridMinWidth),
+ _gridMinDepth(rhs._gridMinDepth),
+ _pipeLength(rhs._pipeLength)
+{
+ int i;
+
+ for (i = 0; i < 3; i++) {
+ _baseColor[i] = rhs._baseColor[i];
+ _labelColor[i] = rhs._labelColor[i];
+ }
+}
+
+const DefaultObj &
+DefaultObj::operator=(const DefaultObj &rhs)
+{
+ int i;
+
+ if (this != &rhs) {
+ _baseBorderX = rhs._baseBorderX;
+ _baseBorderZ = rhs._baseBorderZ;
+ _baseHeight = rhs._baseHeight;
+ _barSpaceX = rhs._barSpaceX;
+ _barSpaceZ = rhs._barSpaceZ;
+ _barSpaceLabel = rhs._barSpaceLabel;
+ _barLength = rhs._barLength;
+ _barHeight = rhs._barHeight;
+ _labelMargin = rhs._labelMargin;
+ _gridMinWidth = rhs._gridMinWidth;
+ _gridMinDepth = rhs._gridMinDepth;
+
+ for (i = 0; i < 3; i++) {
+ _baseColor[i] = rhs._baseColor[i];
+ _labelColor[i] = rhs._labelColor[i];
+ }
+ }
+ return *this;
+}
+
+QTextStream&
+operator<<(QTextStream &os, const DefaultObj &rhs)
+{
+ os << "baseBorderX=" << rhs._baseBorderX;
+ os << ", baseBorderZ=" << rhs._baseBorderZ;
+ os << ", baseHeight=" << rhs._baseHeight;
+ os << ", baseColor=" << rhs._baseColor[0] << ',' << rhs._baseColor[1]
+ << ',' << rhs._baseColor[2] << endl;
+ os << ", barSpaceX=" << rhs._barSpaceX;
+ os << ", barSpaceZ=" << rhs._barSpaceZ;
+ os << ", barSpaceLabel=" << rhs._barSpaceLabel;
+ os << ", barLength=" << rhs._barLength;
+ os << ", barHeight=" << rhs._barHeight;
+ os << ", labelMargin=" << rhs._labelMargin;
+ os << ", labelColor=" << rhs._labelColor[0] << ',' << rhs._labelColor[1]
+ << ',' << rhs._labelColor[2] << endl;
+ os << ", gridMinWidth=" << rhs._gridMinWidth;
+ os << ", gridMinDepth=" << rhs._gridMinDepth;
+ return os;
+}
+
+static void
+getColorResource(const char *name, QString label, float &r, float &g, float &b)
+{
+ if (label != QString::null && label.compare("default") != 0) {
+ const char *str = (const char *)label.toAscii();
+ if (ColorList::findColor(str, r, g, b) == false) {
+ pmprintf("%s: Unable to map color resource \"%s\" to \"%s\", "
+ "using default color rgbi:%f/%f/%f\n",
+ pmProgname, name, str, r, g, b);
+ }
+ }
+}
+
+void
+DefaultObj::getResources()
+{
+ QString color;
+ QSettings resources;
+ resources.beginGroup(pmProgname);
+
+ _baseBorderX = resources.value("baseBorderWidth", 8).toInt();
+ _baseBorderZ = resources.value("baseBorderDepth", 8).toInt();
+ _baseHeight = resources.value("baseHeight", 2).toInt();
+ color = resources.value("baseColor", QString("default")).toString();
+ getColorResource("baseColor", color,
+ _baseColor[0], _baseColor[1], _baseColor[2]);
+ _barSpaceX = resources.value("barSpaceWidth", 8).toInt();
+ _barSpaceZ = resources.value("barSpaceDepth", 8).toInt();
+ _barSpaceLabel = resources.value("barSpaceLabel", 6).toInt();
+ _barLength = resources.value("barLength", 28).toInt();
+ _barHeight = resources.value("barHeight", 80).toInt();
+ _labelMargin = resources.value("labelMargin", 5).toInt();
+ color = resources.value("labelColor", QString("default")).toString();
+ getColorResource("labelColor", color,
+ _labelColor[0], _labelColor[1], _labelColor[2]);
+ _gridMinWidth = resources.value("gridMinWidth", 20).toInt();
+ _gridMinDepth = resources.value("gridMinDepth", 20).toInt();
+
+ resources.endGroup();
+
+#ifdef PCP_DEBUG
+ if (pmDebug & DBG_TRACE_APPL0)
+ cerr << "DefaultObj::getResources: " << *this << endl;
+#endif
+}