File: glgdGraph.h

package info (click to toggle)
gauche-gtk 0.6%2Bgit20160927-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,452 kB
  • sloc: ansic: 7,097; lisp: 5,659; sh: 2,829; makefile: 338
file content (128 lines) | stat: -rw-r--r-- 4,413 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/*
 * gldgGraph.h
 *
 * OpenGL Graph Display module header file
 *
 * Written by: Shawn Taras
 */
#ifndef __GLGDGRAPH_H__
#define __GLGDGRAPH_H__

SCM_DECL_BEGIN

/*
 * Enumerations
 */
typedef enum
{
    GLGDGRAPH_FN_MOUSE_LEFT = 0,
    GLGDGRAPH_FN_MOUSE_MIDDLE,
    GLGDGRAPH_FN_MOUSE_RIGHT,
    GLGDGRAPH_FN_MOUSE_SCROLL,
    GLGDGRAPH_FN_MOUSE_HOVER,
    GLGDGRAPH_FN_KEY,
    GLGDGRAPH_FN_PRERENDER,
        
    GLGDGRAPH_FN_COUNT
} glgdGraphFnEnum;

/*
 * Defines
 */
#define GLGDGRAPH_FLAG_INITIALIZED    (0x0001)
#define GLGDGRAPH_FLAG_CTRLHELD       (0x0002)
#define GLGDGRAPH_FLAG_ESCPRESSED     (0x0004)
#define GLGDGRAPH_FLAG_PANGOBOLD      (0x0008)

#define GLGDGRAPH_NODEMARGIN_DEFAULT  ( 16.0)
#define GLGDGRAPH_NODEWIDTH_DEFAULT   (106.0)
#define GLGDGRAPH_NODEHEIGHT_DEFAULT  ( 23.0)

/*
 * Type Definitions
 */
typedef struct _glgdGraph
{
    GLbitfield     flags;
    int            nodeCount;
    int            linkCount;
    GLdouble       frameTime;
    GLdouble       margin;
    glgdVec2       dim;
    glgdVec4       extents;     /* [minX, minY, maxX, maxY] */
    glgdColor      lineColor;
    glgdCam        ctrlCam;
    glgdStroke     stroke;
    glgdBitfield   attributes;
    glgdNode       *nodeHead;
    glgdLinkList   *linkListHead;
    glgdNode       *hoverNode;
    glgdLink       *hoverLink;
    GTimer         *timer;
    GtkWidget      *gtkWindow;
    GtkWidget      *gtkGLDrawArea;
    ScmObj         fn[GLGDGRAPH_FN_COUNT];
#ifdef HAVE_GLGD_PANGO
    PangoContext   *pangoFT2Context;
    glgdTexture    textTexture;
    PangoLayout    *layout;
#endif  /* HAVE_GLGD_PANGO */
} glgdGraph;

/*
 * Module API
 */
glgdGraph *glgdGraphCreate(void);
glgdGraph *glgdGraphDestroy(glgdGraph *graph);
GLboolean glgdGraphInit(glgdGraph *graph);
GLboolean glgdGraphFini(glgdGraph *graph);
GLboolean glgdGraphDraw(glgdGraph *graph);
GLboolean glgdGraphFrame(glgdGraph *graph);
GLboolean glgdGraphInvalidate(glgdGraph *graph);
GLboolean glgdGraphReshape(glgdGraph *graph);
GLboolean glgdGraphConnect(glgdGraph *graph, GtkWidget *glDrawArea);
GLboolean glgdGraphTranslate(glgdGraph *graph, GLdouble x, GLdouble y);
GLboolean glgdGraphCenter(glgdGraph *graph);
GLboolean glgdGraphAutoOrganize(glgdGraph *graph, glgdVec2 pos);
GLboolean glgdGraphAutoOrganizeXY(glgdGraph *graph, GLdouble x, GLdouble y);

glgdNode  *glgdGraphNodeByID(glgdGraph *graph, int nodeID);
glgdNode  *glgdGraphNodeSelected(glgdGraph *graph, int selectNdx);
int       glgdGraphNodeSelectCount(glgdGraph *graph);
int       glgdGraphNodeCount(glgdGraph *graph);
GLboolean glgdGraphNodeAdd(glgdGraph *graph, glgdNode *node);
GLboolean glgdGraphNodeListFlag(glgdGraph *graph, GLuint flagMask,
                                glgdFlagOp flagOp);
GLboolean glgdGraphLinkListAdd(glgdGraph *graph, glgdLinkList *list);
GLboolean glgdGraphLinkListDump(glgdGraph *graph);
GLboolean glgdGraphLinkAdd(glgdGraph *graph,
                           glgdLinkList *list, glgdLink *link);
int       glgdGraphLinkNdx(glgdGraph *graph, glgdLink *link);
glgdLink  *glgdGraphLinkByNdx(glgdGraph *graph, int linkNdx);
GLboolean glgdGraphCallbackSet(glgdGraph *graph,
                               glgdGraphFnEnum type, ScmObj fn);
GLboolean glgdGraphFlagsSet(glgdGraph *graph, GLuint flagMask, glgdFlagOp op);
GLboolean glgdGraphDimSet(glgdGraph *graph, glgdVec2 dim);
GLboolean glgdGraphDimSetByList(glgdGraph *graph, GLdouble w, GLdouble h);
GLboolean glgdGraphDimGet(glgdGraph *graph, glgdVec2 dim);
GLboolean glgdGraphMarginSet(glgdGraph *graph, GLdouble margin);
GLdouble  glgdGraphMarginGet(glgdGraph *graph);
GLboolean glgdGraphLineColorSet(glgdGraph *graph, glgdColor col);
GLboolean glgdGraphLineColorSetByList(glgdGraph *graph,
                                      GLdouble r, GLdouble g,
                                      GLdouble b, GLdouble a);
GLboolean glgdGraphLineColorGet(glgdGraph *graph, glgdColor col);

GLboolean glgdGraphAttributeClear(glgdGraph *graph);
GLboolean glgdGraphAttributeSet(glgdGraph *graph, int attrNdx);
GLboolean glgdGraphAttributeToggle(glgdGraph *graph, int attrNdx);
GLboolean glgdGraphAttributeReset(glgdGraph *graph, int attrNdx);
GLboolean glgdGraphAttributeIsSet(glgdGraph *graph, int attrNdx);

/* OBSOLETED - do not use */
GLboolean glgdGraphConnect3(glgdGraph *graph,
                            GtkWidget *toplevel, ScmObj glDrawArea);

SCM_DECL_END

#endif  /* __GLGDGRAPH_H__ */