Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-11-15 09:42:50

0001 /// @file
0002 /// @ingroup plugin_api
0003 /// @defgroup plugin_api Plugin API
0004 /// @ingroup public_apis
0005 /// @{
0006 /*************************************************************************
0007  * Copyright (c) 2011 AT&T Intellectual Property 
0008  * All rights reserved. This program and the accompanying materials
0009  * are made available under the terms of the Eclipse Public License v1.0
0010  * which accompanies this distribution, and is available at
0011  * https://www.eclipse.org/legal/epl-v10.html
0012  *
0013  * Contributors: Details at https://graphviz.org
0014  *************************************************************************/
0015 
0016 /* Header used by plugins */
0017 
0018 #pragma once
0019 
0020 #ifdef __cplusplus
0021 extern "C" {
0022 #endif
0023 
0024 #include "gvcext.h"
0025 
0026 /* 
0027  * Terminology:
0028  *
0029  *    package         - e.g. libgvplugin_cairo.so
0030  *       api          - e.g. render
0031  *          type      - e.g. "png", "ps"
0032  */
0033 
0034 /// ingroup plugin_api
0035     typedef struct {
0036     int id;         /* an id that is only unique within a package 
0037             of plugins of the same api.
0038             A renderer-type such as "png" in the cairo package
0039             has an id that is different from the "ps" type
0040             in the same package */
0041     const char *type;   /* a string name, such as "png" or "ps" that
0042             distinguishes different types within the same
0043              (renderer in this case) */
0044     int quality;    /* an arbitrary integer used for ordering plugins of
0045             the same type from different packages */
0046     void *engine;   /* pointer to the jump table for the plugin */
0047     void *features; /* pointer to the feature description 
0048                 void* because type varies by api */
0049     } gvplugin_installed_t;
0050 
0051     typedef struct {
0052     api_t api;
0053     gvplugin_installed_t *types;
0054     } gvplugin_api_t;
0055 
0056     typedef struct {
0057     char *packagename;    /* used when this plugin is builtin and has
0058                     no pathname */
0059     gvplugin_api_t *apis;
0060     } gvplugin_library_t;
0061 /// @}
0062 
0063 #ifdef __cplusplus
0064 }
0065 #endif