Issue #19: Convert external renderer to GObject. Not yet fully integrated

This commit is contained in:
2019-06-18 19:42:18 +02:00
parent 302d462cda
commit 7b10d41160
2 changed files with 72 additions and 18 deletions

View File

@@ -24,35 +24,46 @@
*/
/**
* @addtogroup external-renderer
* @addtogroup ExternalRenderer
* @{
*/
#ifndef _EXTERNAL_RENDERER_H_
#define _EXTERNAL_RENDERER_H_
#include <gds-render/output-renderers/gds-output-renderer.h>
#include <gds-render/gds-utils/gds-types.h>
#include <glib.h>
G_BEGIN_DECLS
#define GDS_RENDER_TYPE_EXTERNAL_RENDERER (external_renderer_get_type())
G_DECLARE_FINAL_TYPE(ExternalRenderer, external_renderer, GDS_RENDER, EXTERNAL_RENDERER, GdsOutputRenderer)
/**
* @brief function name expected to be found in external library.
*
* The function has to be defined as follows:
* @code
* int function_name(gds_cell *toplevel, GList *layer_info_list, char *output_file_name)
* int EXTERNAL_LIBRARY_FUNCTION(gds_cell *toplevel, GList *layer_info_list, const char *output_file_name, double scale)
* @endcode
*/
#define EXTERNAL_LIBRARY_FUNCTION "render_cell_to_file"
/**
* @brief external_renderer_render_cell
* @param toplevel_cell The toplevel cell to render
* @param layer_info_list The layer information. Contains #layer_info elements
* @param output_file Output file
* @param so_path Path to the shared object file containing #EXTERNAL_LIBRARY_FUNCTION
* @return 0 on success
* @brief Create new ExternalRenderer object
* @return New object
*/
int external_renderer_render_cell(struct gds_cell *toplevel_cell, GList *layer_info_list, char *output_file, char *so_path);
ExternalRenderer *external_renderer_new();
/**
* @brief Create new ExternalRenderer object with specified shared object path
* @param so_path Path to shared object, the rendering function is searched in
* @return New object.
*/
ExternalRenderer *external_renderer_new_with_so(const char *so_path);
G_END_DECLS
#endif /* _EXTERNAL_RENDERER_H_ */