summaryrefslogtreecommitdiffstats
path: root/generic/tkbltGrElemBar.h
diff options
context:
space:
mode:
authorAdrián Medraño Calvo <adrian@medranocalvo.com>2017-07-18 09:10:30 (GMT)
committerAdrián Medraño Calvo <adrian@medranocalvo.com>2017-07-18 09:10:30 (GMT)
commit71312d1e172edf9c37e7a16ab881980523d5babd (patch)
treec53477f175de027634a7cc2364d0dd2f26d24001 /generic/tkbltGrElemBar.h
parentce90eafc809554ad9243f6f2dbacdb41474c9fe5 (diff)
downloadblt-71312d1e172edf9c37e7a16ab881980523d5babd.zip
blt-71312d1e172edf9c37e7a16ab881980523d5babd.tar.gz
blt-71312d1e172edf9c37e7a16ab881980523d5babd.tar.bz2
Better align with TEA's expected file layout
TEA is quite picky about packages placing their sources in the generic/, unix/, etc. directories. An immediate benefit of this change is support for building in a separate directory.
Diffstat (limited to 'generic/tkbltGrElemBar.h')
-rw-r--r--generic/tkbltGrElemBar.h132
1 files changed, 132 insertions, 0 deletions
diff --git a/generic/tkbltGrElemBar.h b/generic/tkbltGrElemBar.h
new file mode 100644
index 0000000..9207a9f
--- /dev/null
+++ b/generic/tkbltGrElemBar.h
@@ -0,0 +1,132 @@
+/*
+ * Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+ * This code has been modified under the terms listed below and is made
+ * available under the same terms.
+ */
+
+/*
+ * Copyright 1993-2004 George A Howlett.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef __BltGrElemBar_h__
+#define __BltGrElemBar_h__
+
+#include <cmath>
+
+#include <tk.h>
+
+#include "tkbltGrElem.h"
+#include "tkbltGrPenBar.h"
+
+namespace Blt {
+
+ typedef struct {
+ float x1;
+ float y1;
+ float x2;
+ float y2;
+ } BarRegion;
+
+ typedef struct {
+ Weight weight;
+ BarPen* penPtr;
+ XRectangle* bars;
+ int nBars;
+ GraphSegments xeb;
+ GraphSegments yeb;
+ int symbolSize;
+ int errorBarCapWidth;
+ } BarStyle;
+
+ typedef struct {
+ Element* elemPtr;
+ const char *label;
+ char** tags;
+ Axis* xAxis;
+ Axis* yAxis;
+ ElemCoords coords;
+ ElemValues* w;
+ ElemValues* xError;
+ ElemValues* yError;
+ ElemValues* xHigh;
+ ElemValues* xLow;
+ ElemValues* yHigh;
+ ElemValues* yLow;
+ int hide;
+ int legendRelief;
+ Chain* stylePalette;
+ BarPen* builtinPenPtr;
+ BarPen* activePenPtr;
+ BarPen* normalPenPtr;
+ BarPenOptions builtinPen;
+
+ // derived
+ double barWidth;
+ const char *groupName;
+ } BarElementOptions;
+
+ class BarElement : public Element {
+ protected:
+ BarPen* builtinPenPtr;
+ int* barToData_;
+ XRectangle* bars_;
+ int* activeToData_;
+ XRectangle* activeRects_;
+ int nBars_;
+ int nActive_;
+ GraphSegments xeb_;
+ GraphSegments yeb_;
+
+ protected:
+ void ResetStylePalette(Chain*);
+ void checkStacks(Axis*, Axis*, double*, double*);
+ void mergePens(BarStyle**);
+ void mapActive();
+ void reset();
+ void mapErrorBars(BarStyle**);
+ void drawSegments(Drawable, BarPen*, XRectangle*, int);
+ void drawValues(Drawable, BarPen*, XRectangle*, int, int*);
+ void printSegments(PSOutput*, BarPen*, XRectangle*, int);
+ void printValues(PSOutput*, BarPen*, XRectangle*, int, int*);
+
+ public:
+ BarElement(Graph*, const char*, Tcl_HashEntry*);
+ virtual ~BarElement();
+
+ ClassId classId() {return CID_ELEM_BAR;}
+ const char* className() {return "BarElement";}
+ const char* typeName() {return "bar";}
+
+ int configure();
+ void map();
+ void extents(Region2d*);
+ void closest();
+ void draw(Drawable);
+ void drawActive(Drawable);
+ void drawSymbol(Drawable, int, int, int);
+ void print(PSOutput*);
+ void printActive(PSOutput*);
+ void printSymbol(PSOutput*, double, double, int);
+ };
+};
+
+#endif