1 /* $Id$ $Revision$ */
2 /* vim:set shiftwidth=4 ts=8: */
3
4 /*************************************************************************
5 * Copyright (c) 2011 AT&T Intellectual Property
6 * All rights reserved. This program and the accompanying materials
7 * are made available under the terms of the Eclipse Public License v1.0
8 * which accompanies this distribution, and is available at
9 * http://www.eclipse.org/legal/epl-v10.html
10 *
11 * Contributors: See CVS logs. Details at http://www.graphviz.org/
12 *************************************************************************/
13
14 /* Krishnam Raju Pericherla */
15
16 #include <gtk/gtk.h>
17 #include "common.h"
18 #include "g.h"
19 #include "gcommon.h"
20 #include "mem.h"
21
22 int Gxfd;
23 GtkWidget *Groot;
24 GdkDisplay *Gdisplay;
25 int Gpopdownflag;
26 int Gscreenn;
27 int Gdepth;
28 Glazyq_t Glazyq;
29
30 PIXpoint_t *Gppp;
31 int Gppn, Gppi;
32
33 char *Gbufp = NULL;
34 int Gbufn = 0, Gbufi = 0;
35
36 Gfont_t *Gfontp;
37 GdkFont *deffont;
38 int Gfontn;
39
40 int argn;
41
Ginitgraphics(void)42 int Ginitgraphics(void)
43 {
44
45 gtk_init(0, NULL);
46
47 Gpopdownflag = FALSE;
48 Gdisplay = gdk_display_get_default();
49 deffont = gdk_font_load("fixed");
50
51 Gpopdownflag = FALSE;
52 Glazyq.flag = 0;
53 Gbufp = Marrayalloc((long) BUFINCR * BUFSIZE);
54 Gbufn = BUFINCR;
55 Gppp = Marrayalloc((long) PPINCR * PPSIZE);
56 Gppn = BUFINCR;
57 Gfontp = Marrayalloc((long) FONTSIZE);
58 Gfontn = 1;
59 Gfontp[0].name = strdup("default");
60 if (!Gdefaultfont)
61 Gfontp[0].font = deffont;
62 else if (Gdefaultfont[0] != '\000')
63 Gfontp[0].font = gdk_font_load(Gdefaultfont);
64 else
65 Gfontp[0].font = NULL;
66 return 0;
67 }
68
Gtermgraphics(void)69 int Gtermgraphics(void)
70 {
71 int fi;
72
73 for (fi = 0; fi < Gfontn; fi++)
74 free(Gfontp[fi].name);
75
76 Marrayfree(Gfontp), Gfontp = NULL, Gfontn = 0;
77 Marrayfree(Gppp), Gppp = NULL, Gppn = 0;
78 Marrayfree(Gbufp), Gbufp = NULL, Gbufn = 0;
79
80 return 0;
81 }
82
Gflushlazyq(void)83 void Gflushlazyq(void)
84 {
85
86 }
87
Glazymanage(GtkWidget w)88 void Glazymanage(GtkWidget w)
89 {
90
91 }
92
Gsync(void)93 int Gsync(void)
94 {
95 if (Glazyq.flag)
96 Gflushlazyq();
97 gdk_display_sync(Gdisplay);
98 return 0;
99 }
100
Gresetbstate(int wi)101 int Gresetbstate(int wi)
102 {
103 Gcw_t *cw;
104 int bn;
105
106 cw = Gwidgets[wi].u.c;
107 bn = cw->bstate[0] + cw->bstate[1] + cw->bstate[2];
108 cw->bstate[0] = cw->bstate[1] = cw->bstate[2] = 0;
109 cw->buttonsdown -= bn;
110 Gbuttonsdown -= bn;
111 return 0;
112 }
113
Gprocessevents(int waitflag,Geventmode_t mode)114 int Gprocessevents(int waitflag, Geventmode_t mode)
115 {
116 int rtn;
117
118 if (Glazyq.flag)
119 Gflushlazyq();
120 rtn = 0;
121 switch (waitflag) {
122 case TRUE:
123 gtk_main_iteration();
124 if (mode == G_ONEEVENT)
125 return 1;
126 rtn = 1;
127 case FALSE:
128 while (gtk_events_pending()) {
129 gtk_main_iteration();
130 if (mode == G_ONEEVENT)
131 return 1;
132 rtn = 1;
133 }
134 break;
135 }
136 return rtn;
137 }
138