From 46135407bec8fd16f8db514f43bc83a160a33366 Mon Sep 17 00:00:00 2001 From: ellson Date: Tue, 18 Oct 2005 18:53:17 +0000 Subject: [PATCH] cut back on overloading: set -> getv + setv --- lib/common/types.h | 3 ++ lib/gvc/gvc.h | 2 +- lib/gvc/gvcext.h | 16 ++++------- lib/gvc/gvcjob.h | 33 ++++++++++++++------- lib/gvc/gvplugin.h | 8 ------ tclpkg/gv/gv.cpp | 72 ++++++++++++---------------------------------- tclpkg/gv/gv.i | 20 +++++++++---- 7 files changed, 65 insertions(+), 89 deletions(-) diff --git a/lib/common/types.h b/lib/common/types.h index 4d2af6372..f9849aaf3 100644 --- a/lib/common/types.h +++ b/lib/common/types.h @@ -189,6 +189,9 @@ extern "C" { } shape_desc; #ifndef DISABLE_CODEGENS + typedef struct codegen_s codegen_t; + typedef struct codegen_info_s codegen_info_t; + struct codegen_s { void (*reset) (void); void (*begin_job) (FILE * ofp, graph_t * g, char **lib, char *user, diff --git a/lib/gvc/gvc.h b/lib/gvc/gvc.h index ab20bf30c..ad789f42d 100644 --- a/lib/gvc/gvc.h +++ b/lib/gvc/gvc.h @@ -24,7 +24,7 @@ #include "types.h" #include "globals.h" #include "graph.h" -#include "gvplugin.h" +#include "gvcext.h" #ifdef __cplusplus extern "C" { diff --git a/lib/gvc/gvcext.h b/lib/gvc/gvcext.h index 9e94e8085..ce1737660 100644 --- a/lib/gvc/gvcext.h +++ b/lib/gvc/gvcext.h @@ -23,19 +23,15 @@ extern "C" { #endif - typedef struct gvdevice_engine_s gvdevice_engine_t; - typedef struct gvrender_engine_s gvrender_engine_t; - typedef struct gvlayout_engine_s gvlayout_engine_t; - typedef struct gvtextlayout_engine_s gvtextlayout_engine_t; - typedef struct gvusershape_engine_s gvusershape_engine_t; - typedef struct GVJ_s GVJ_t; typedef struct GVC_s GVC_t; -#ifndef DISABLE_CODEGENS - typedef struct codegen_s codegen_t; - typedef struct codegen_info_s codegen_info_t; -#endif + typedef struct { + const char *name; + void* address; + } lt_symlist_t; + + extern const lt_symlist_t lt_preloaded_symbols[]; #ifdef __cplusplus } diff --git a/lib/gvc/gvcjob.h b/lib/gvc/gvcjob.h index f4dbfeaa9..4a6f58592 100644 --- a/lib/gvc/gvcjob.h +++ b/lib/gvc/gvcjob.h @@ -23,11 +23,17 @@ extern "C" { #endif -#include "geom.h" -#include "color.h" +#include "types.h" #define ARRAY_SIZE(A) (sizeof(A)/sizeof(A[0])) + typedef struct gvdevice_engine_s gvdevice_engine_t; + typedef struct gvrender_engine_s gvrender_engine_t; + typedef struct gvlayout_engine_s gvlayout_engine_t; + typedef struct gvtextlayout_engine_s gvtextlayout_engine_t; + typedef struct gvusershape_engine_s gvusershape_engine_t; + + typedef enum { PEN_NONE, PEN_DASHED, PEN_DOTTED, PEN_SOLID } pen_type; typedef enum { FILL_NONE, FILL_SOLID } fill_type; typedef enum { FONT_REGULAR, FONT_BOLD, FONT_ITALIC } font_type; @@ -112,6 +118,13 @@ extern "C" { void (*modify) (GVJ_t * job, char *name, char *value); } gvdevice_callbacks_t; + typedef int (*gvevent_key_callback_t) (GVJ_t * job); + + typedef struct gvevent_key_binding_s { + char *keystring; + gvevent_key_callback_t callback; + } gvevent_key_binding_t; + struct GVJ_s { GVC_t *gvc; /* parent gvc */ GVJ_t *next; /* linked list of jobs */ @@ -153,11 +166,13 @@ extern "C" { unsigned int width; /* device width in device units */ unsigned int height; /* device height in device units */ + box boundingBox; /* drawable region in device units */ int dpi; /* device resolution device-units-per-inch */ + + boxf bb; /* bb in graph units */ double zoom; /* viewport zoom factor */ int rotation; /* viewport rotation 0=portrait, 1=landscape */ pointf focus; /* viewport focus in graph units */ - box boundingBox; /* drawable region in device units */ boxf clip; /* clip region in graph units */ boxf pageBoxClip; /* intersection of clip and pageBox */ @@ -186,14 +201,12 @@ extern "C" { /* e.g. "color" "red" "style" "filled" */ void *window; /* display-specific data for gvrender plugin */ - }; - - typedef int (*gvevent_key_callback_t) (GVJ_t * job); - typedef struct gvevent_key_binding_s { - char *keystring; - gvevent_key_callback_t callback; - } gvevent_key_binding_t; + /* keybindings for keyboard events */ + gvevent_key_binding_t *keybindings; + int numkeys; + void *keycodes; + }; #ifdef __cplusplus } diff --git a/lib/gvc/gvplugin.h b/lib/gvc/gvplugin.h index 3ed6e2a6d..a7bf48af7 100644 --- a/lib/gvc/gvplugin.h +++ b/lib/gvc/gvplugin.h @@ -76,14 +76,6 @@ extern "C" { gvplugin_api_t *apis; } gvplugin_library_t; - - typedef struct { - const char *name; - void* address; - } lt_symlist_t; - - extern const lt_symlist_t lt_preloaded_symbols[]; - #ifdef __cplusplus } #endif diff --git a/tclpkg/gv/gv.cpp b/tclpkg/gv/gv.cpp index 213848d52..fccbe780d 100644 --- a/tclpkg/gv/gv.cpp +++ b/tclpkg/gv/gv.cpp @@ -109,7 +109,7 @@ Agedge_t *edge(Agraph_t *g, char *tname, char *hname) } //------------------------------------------------- -char *set(Agraph_t *g, Agsym_t *a) +char *getv(Agraph_t *g, Agsym_t *a) { char *val; @@ -120,7 +120,7 @@ char *set(Agraph_t *g, Agsym_t *a) return ""; return val; } -char *set(Agraph_t *g, char *attr) +char *getv(Agraph_t *g, char *attr) { Agsym_t *a; char *val; @@ -135,39 +135,27 @@ char *set(Agraph_t *g, char *attr) return ""; return val; } -char *set(Agraph_t *g, Agsym_t *a, char *val) +char *setv(Agraph_t *g, Agsym_t *a, char *val) { - if (!g || !a) + if (!g || !a || !val) return NULL; - if (!val) { - val = agxget(g, a->index); - if (!val) - return ""; - return val; - } agxset(g, a->index, val); return val; } -char *set(Agraph_t *g, char *attr, char *val) +char *setv(Agraph_t *g, char *attr, char *val) { Agsym_t *a; - if (!g || !attr) + if (!g || !attr || !val) return NULL; a = agfindattr(g->root, attr); if (!a) a = agraphattr(g->root, attr, ""); - if (!val) { - val = agxget(g, a->index); - if (!val) - return ""; - return val; - } agxset(g, a->index, val); return val; } //------------------------------------------------- -char *set(Agnode_t *n, Agsym_t *a) +char *getv(Agnode_t *n, Agsym_t *a) { char *val; @@ -178,7 +166,7 @@ char *set(Agnode_t *n, Agsym_t *a) return ""; return val; } -char *set(Agnode_t *n, char *attr) +char *getv(Agnode_t *n, char *attr) { Agraph_t *g; Agsym_t *a; @@ -195,41 +183,29 @@ char *set(Agnode_t *n, char *attr) return ""; return val; } -char *set(Agnode_t *n, Agsym_t *a, char *val) +char *setv(Agnode_t *n, Agsym_t *a, char *val) { - if (!n || !a) + if (!n || !a || !val) return NULL; - if (!val) { - val = agxget(n, a->index); - if (!val) - return ""; - return val; - } agxset(n, a->index, val); return val; } -char *set(Agnode_t *n, char *attr, char *val) +char *setv(Agnode_t *n, char *attr, char *val) { Agraph_t *g; Agsym_t *a; - if (!n || !attr) + if (!n || !attr || !val) return NULL; g = n->graph->root; a = agfindattr(g->proto->n, attr); if (!a) a = agnodeattr(g, attr, ""); - if (!val) { - val = agxget(n, a->index); - if (!val) - return ""; - return val; - } agxset(n, a->index, val); return val; } //------------------------------------------------- -char *set(Agedge_t *e, Agsym_t *a) +char *getv(Agedge_t *e, Agsym_t *a) { char *val; @@ -240,7 +216,7 @@ char *set(Agedge_t *e, Agsym_t *a) return ""; return val; } -char *set(Agedge_t *e, char *attr) +char *getv(Agedge_t *e, char *attr) { Agraph_t *g; Agsym_t *a; @@ -257,36 +233,24 @@ char *set(Agedge_t *e, char *attr) return ""; return val; } -char *set(Agedge_t *e, Agsym_t *a, char *val) +char *setv(Agedge_t *e, Agsym_t *a, char *val) { - if (!e || !a) + if (!e || !a || !val) return NULL; - if (!val) { - val = agxget(e, a->index); - if (!val) - return ""; - return val; - } agxset(e, a->index, val); return val; } -char *set(Agedge_t *e, char *attr, char *val) +char *setv(Agedge_t *e, char *attr, char *val) { Agraph_t *g; Agsym_t *a; - if (!e || !attr) + if (!e || !attr || !val) return NULL; g = e->head->graph->root; a = agfindattr(g->proto->e, attr); if (!a) a = agnodeattr(g, attr, ""); - if (!val) { - val = agxget(e, a->index); - if (!val) - return ""; - return val; - } agxset(e, a->index, val); return val; } diff --git a/tclpkg/gv/gv.i b/tclpkg/gv/gv.i index c15b32da8..d951808f3 100644 --- a/tclpkg/gv/gv.i +++ b/tclpkg/gv/gv.i @@ -40,13 +40,21 @@ extern Agedge_t *edge(char *tname, Agnode_t *h);/* add edge, named tail which wi extern Agedge_t *edge(Agraph_t *g, char *tname, char *hname);/* add edge between named nodes, induced as necessary */ /* set/get attribute of graph/node/edge */ -extern char *set(Agraph_t *g, char *attr, char *val=NULL); -extern char *set(Agnode_t *n, char *attr, char *val=NULL); -extern char *set(Agedge_t *e, char *attr, char *val=NULL); +extern char *setv(Agraph_t *g, char *attr, char *val); +extern char *setv(Agnode_t *n, char *attr, char *val); +extern char *setv(Agedge_t *e, char *attr, char *val); -extern char *set(Agraph_t *g, Agsym_t *a, char *val=NULL); -extern char *set(Agnode_t *n, Agsym_t *a, char *val=NULL); -extern char *set(Agedge_t *e, Agsym_t *a, char *val=NULL); +extern char *setv(Agraph_t *g, Agsym_t *a, char *val); +extern char *setv(Agnode_t *n, Agsym_t *a, char *val); +extern char *setv(Agedge_t *e, Agsym_t *a, char *val); + +extern char *getv(Agraph_t *g, char *attr); +extern char *getv(Agnode_t *n, char *attr); +extern char *getv(Agedge_t *e, char *attr); + +extern char *getv(Agraph_t *g, Agsym_t *a); +extern char *getv(Agnode_t *n, Agsym_t *a); +extern char *getv(Agedge_t *e, Agsym_t *a); /* names */ extern char *nameof(Agraph_t *g); -- 2.40.0