summaryrefslogtreecommitdiff
path: root/src/pmview/viewobj.h
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
committerIgor Pashev <pashev.igor@gmail.com>2014-10-26 12:33:50 +0400
commit47e6e7c84f008a53061e661f31ae96629bc694ef (patch)
tree648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /src/pmview/viewobj.h
downloadpcp-debian/3.9.10.tar.gz
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'src/pmview/viewobj.h')
-rw-r--r--src/pmview/viewobj.h135
1 files changed, 135 insertions, 0 deletions
diff --git a/src/pmview/viewobj.h b/src/pmview/viewobj.h
new file mode 100644
index 0000000..f713c71
--- /dev/null
+++ b/src/pmview/viewobj.h
@@ -0,0 +1,135 @@
+/*
+ * 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.
+ */
+#ifndef _VIEWOBJ_H_
+#define _VIEWOBJ_H_
+
+#include <QtCore/QTextStream>
+
+class SoNode;
+class SoSeparator;
+class SoTranslation;
+class Modulate;
+class DefaultObj;
+
+class ViewObj
+{
+public:
+
+ enum Alignment { north, south, east, west,
+ northEast, northWest, southEast, southWest,
+ center };
+
+ enum Shape { cube, cylinder };
+
+ // Poor man substitution for RTTI until O32 compiler will either
+ // die or start supporting that stuff
+ enum ObjType {VIEWOBJ = 1,
+ BASEOBJ = 2,
+ LABELOBJ = 4,
+ MODOBJ = 8,
+ GRIDOBJ = 16,
+ PIPEOBJ = 32,
+ BAROBJ = 64,
+ STACKOBJ = 128,
+ LINK = 256,
+ XING = 512,
+ SCENEFILEOBJ = 1024
+ };
+
+protected:
+
+ SoSeparator *_root;
+ SoTranslation *_tran;
+
+ int _objtype;
+ int _col;
+ int _row;
+ int _cols;
+ int _rows;
+ int _maxHeight;
+ float _xAlign;
+ float _zAlign;
+
+ static int theNumModObjects;
+
+public:
+
+ virtual ~ViewObj();
+
+ ViewObj(int, int, int cols = 1, int rows = 1,
+ Alignment align = center);
+
+ // The Scene Graph Root for this object
+ SoSeparator* root()
+ { return _root; }
+
+ int objbits() const { return _objtype; }
+ int row() const { return _row; }
+ int col() const { return _col; }
+
+ int cols() const
+ { return _cols; }
+ int rows() const
+ { return _rows; }
+ int height() const
+ { return _maxHeight; }
+ int &height()
+ { return _maxHeight; }
+ float xAlign() const
+ { return _xAlign; }
+ float zAlign() const
+ { return _zAlign; }
+
+ // Set the coordinates (and the allocated size) from parent
+ virtual void setTran(float xTran, float zTran, int width, int depth);
+
+ // Size (in object coordinates). Must be the correct value before
+ // the object is added to the parent.
+ virtual int width() const = 0;
+ virtual int depth() const = 0;
+
+ static int numModObjects()
+ { return theNumModObjects; }
+
+ // Return default object
+ static SoNode *object(Shape shape);
+
+ virtual Modulate *modObj()
+ { return (Modulate *)0; }
+
+ // Inform object parsing stuff is done
+
+ virtual void finishedAdd() = 0;
+
+ // Output
+ virtual void display(QTextStream& os) const;
+
+ virtual const char* name() const = 0;
+
+ friend QTextStream& operator<<(QTextStream& os, ViewObj const& rhs);
+
+protected:
+
+ void dumpShape(QTextStream& os, ViewObj::Shape shape) const;
+
+private:
+
+ ViewObj();
+ ViewObj(ViewObj const &);
+ ViewObj const& operator=(ViewObj const &);
+ // Never defined
+};
+
+#endif /* _VIEWOBJ_H_ */