summaryrefslogtreecommitdiffstats
path: root/tkblt/generic/tkbltGrMisc.h
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2019-01-07 20:19:07 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2019-01-07 20:19:07 (GMT)
commit47ba30ed109ae3ce6a00a25c6c607114cade5f9b (patch)
tree903adcc5f31a059672cc93f5e22de6e64dc4bcfd /tkblt/generic/tkbltGrMisc.h
parent99617a9a6ab0ac0cbce628dbe35a979580a4fdef (diff)
parent0b821003340a9b821326d67e7474eb2e24f7ecec (diff)
downloadblt-47ba30ed109ae3ce6a00a25c6c607114cade5f9b.zip
blt-47ba30ed109ae3ce6a00a25c6c607114cade5f9b.tar.gz
blt-47ba30ed109ae3ce6a00a25c6c607114cade5f9b.tar.bz2
Merge commit '0b821003340a9b821326d67e7474eb2e24f7ecec' as 'tkblt'
Diffstat (limited to 'tkblt/generic/tkbltGrMisc.h')
-rw-r--r--tkblt/generic/tkbltGrMisc.h138
1 files changed, 138 insertions, 0 deletions
diff --git a/tkblt/generic/tkbltGrMisc.h b/tkblt/generic/tkbltGrMisc.h
new file mode 100644
index 0000000..5c16dce
--- /dev/null
+++ b/tkblt/generic/tkbltGrMisc.h
@@ -0,0 +1,138 @@
+/*
+ * 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 __BltGrMisc_h__
+#define __BltGrMisc_h__
+
+#include <iostream>
+#include <sstream>
+#include <iomanip>
+using namespace std;
+
+#include <tk.h>
+
+#ifndef MIN
+# define MIN(x,y) ((x)<(y)?(x):(y))
+#endif
+
+#ifndef MAX
+# define MAX(x,y) ((x)>(y)?(x):(y))
+#endif
+
+#define GRAPH_DELETED (1<<1)
+#define REDRAW_PENDING (1<<2)
+#define FOCUS (1<<3)
+
+#define MAP_ITEM (1<<4)
+
+#define RESET (1<<5)
+#define LAYOUT (1<<6)
+#define MAP_MARKERS (1<<7)
+#define CACHE (1<<8)
+
+#define MARGIN_NONE -1
+#define MARGIN_BOTTOM 0 /* x */
+#define MARGIN_LEFT 1 /* y */
+#define MARGIN_TOP 2 /* x2 */
+#define MARGIN_RIGHT 3 /* y2 */
+
+#define LineIsDashed(d) ((d).values[0] != 0)
+
+namespace Blt {
+ class Graph;
+
+ typedef struct {
+ int x, y;
+ } Point;
+
+ typedef struct {
+ int x, y;
+ unsigned width, height;
+ } Rectangle;
+
+ typedef struct {
+ double x;
+ double y;
+ } Point2d;
+
+ typedef struct {
+ Point2d p;
+ Point2d q;
+ } Segment2d;
+
+ typedef struct {
+ double left;
+ double right;
+ double top;
+ double bottom;
+ } Region2d;
+
+ typedef enum {
+ CID_NONE, CID_AXIS_X, CID_AXIS_Y, CID_ELEM_BAR, CID_ELEM_LINE,
+ CID_MARKER_BITMAP, CID_MARKER_IMAGE, CID_MARKER_LINE, CID_MARKER_POLYGON,
+ CID_MARKER_TEXT
+ } ClassId;
+
+ typedef struct {
+ unsigned char values[12];
+ int offset;
+ } Dashes;
+
+ typedef enum {
+ CLIP_OUTSIDE = 0,
+ CLIP_INSIDE = 1 << 0,
+ CLIP_P = 1 << 1,
+ CLIP_Q = 1 << 2
+ } LineRectClipResult;
+
+ inline LineRectClipResult operator|(LineRectClipResult a, LineRectClipResult b) {
+ return static_cast<LineRectClipResult>(static_cast<int>(a) | static_cast<int>(b));
+ }
+
+ inline LineRectClipResult operator&(LineRectClipResult a, LineRectClipResult b) {
+ return static_cast<LineRectClipResult>(static_cast<int>(a) & static_cast<int>(b));
+ }
+
+ inline LineRectClipResult & operator|=(LineRectClipResult & rhs, LineRectClipResult v) {
+ rhs = rhs | v;
+ return rhs;
+ }
+
+ extern char* dupstr(const char*);
+ extern Graph* getGraphFromWindowData(Tk_Window tkwin);
+
+ extern int pointInPolygon(Point2d *samplePtr, Point2d *screenPts,
+ int nScreenPts);
+ extern int polyRectClip(Region2d *extsPtr, Point2d *inputPts,
+ int nInputPts, Point2d *outputPts);
+ extern LineRectClipResult lineRectClip(Region2d *regionPtr, Point2d *p, Point2d *q);
+ extern Point2d getProjection (int x, int y, Point2d *p, Point2d *q);
+};
+
+#endif