1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /// @file
- /// @ingroup plugin_api
- /// @defgroup plugin_api Plugin API
- /// @ingroup public_apis
- /// @{
- /*************************************************************************
- * Copyright (c) 2011 AT&T Intellectual Property
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors: Details at https://graphviz.org
- *************************************************************************/
- /* Header used by plugins */
- #pragma once
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "gvcext.h"
- /*
- * Terminology:
- *
- * package - e.g. libgvplugin_cairo.so
- * api - e.g. render
- * type - e.g. "png", "ps"
- */
- /// ingroup plugin_api
- typedef struct {
- int id; /* an id that is only unique within a package
- of plugins of the same api.
- A renderer-type such as "png" in the cairo package
- has an id that is different from the "ps" type
- in the same package */
- const char *type; /* a string name, such as "png" or "ps" that
- distinguishes different types within the same
- (renderer in this case) */
- int quality; /* an arbitrary integer used for ordering plugins of
- the same type from different packages */
- void *engine; /* pointer to the jump table for the plugin */
- void *features; /* pointer to the feature description
- void* because type varies by api */
- } gvplugin_installed_t;
- typedef struct {
- api_t api;
- gvplugin_installed_t *types;
- } gvplugin_api_t;
- typedef struct {
- char *packagename; /* used when this plugin is builtin and has
- no pathname */
- gvplugin_api_t *apis;
- } gvplugin_library_t;
- /// @}
- #ifdef __cplusplus
- }
- #endif
|