From 5e68d0a60ff45127de610c07999415b0a22616a6 Mon Sep 17 00:00:00 2001 From: skyjake Date: Thu, 3 Jan 2013 19:37:11 +0200 Subject: [PATCH] Added public API for the Svg module --- .../api/{dd_vectorgraphic.h => api_svg.h} | 41 ++++++++++--------- doomsday/engine/api/apis.h | 9 ++-- doomsday/engine/api/dd_ui.h | 2 +- doomsday/engine/engine.pro | 2 +- doomsday/engine/include/gl/svg.h | 2 +- doomsday/engine/src/gl/gl_drawvectorgraphic.c | 11 +++++ doomsday/engine/src/library.cpp | 1 + doomsday/plugins/jdoom/include/d_api.h | 1 + doomsday/plugins/jdoom/src/d_api.c | 2 + doomsday/server/server.pro | 2 +- 10 files changed, 47 insertions(+), 26 deletions(-) rename doomsday/engine/api/{dd_vectorgraphic.h => api_svg.h} (61%) diff --git a/doomsday/engine/api/dd_vectorgraphic.h b/doomsday/engine/api/api_svg.h similarity index 61% rename from doomsday/engine/api/dd_vectorgraphic.h rename to doomsday/engine/api/api_svg.h index 9a4d52a563..0699dbc2e8 100644 --- a/doomsday/engine/api/dd_vectorgraphic.h +++ b/doomsday/engine/api/api_svg.h @@ -20,35 +20,38 @@ * 02110-1301 USA */ -#ifndef LIBDENG_API_VECTORGRAPHIC_H -#define LIBDENG_API_VECTORGRAPHIC_H +#ifndef DOOMSDAY_API_VECTORGRAPHIC_H +#define DOOMSDAY_API_VECTORGRAPHIC_H -/// @addtogroup gl -///@{ +#include +#include "apis.h" typedef uint32_t svgid_t; -#include - typedef struct def_svgline_s { uint numPoints; const Point2Rawf* points; } def_svgline_t; -#ifdef __cplusplus -extern "C" { +DENG_API_TYPEDEF(Svg) +{ + de_api_t api; + void (*NewSvg)(svgid_t svgId, const def_svgline_t* lines, uint numLines); + void (*DrawSvg)(svgid_t svgId, const Point2Rawf* origin); + void (*DrawSvg2)(svgid_t svgId, const Point2Rawf* origin, float scale); + void (*DrawSvg3)(svgid_t svgId, const Point2Rawf* origin, float scale, float angle); +} +DENG_API_T(Svg); + +#ifndef DENG_NO_API_MACROS_SVG +#define R_NewSvg _api_Svg.NewSvg +#define GL_DrawSvg _api_Svg.DrawSvg +#define GL_DrawSvg2 _api_Svg.DrawSvg2 +#define GL_DrawSvg3 _api_Svg.DrawSvg3 #endif -void R_NewSvg(svgid_t svgId, const def_svgline_t* lines, uint numLines); - -void GL_DrawSvg(svgid_t svgId, const Point2Rawf* origin); -void GL_DrawSvg2(svgid_t svgId, const Point2Rawf* origin, float scale); -void GL_DrawSvg3(svgid_t svgId, const Point2Rawf* origin, float scale, float angle); - -#ifdef __cplusplus -} // extern "C" +#ifdef __DOOMSDAY__ +DENG_USING_API(Svg); #endif -///@} - -#endif /* LIBDENG_API_VECTORGRAPHIC_H */ +#endif /* DOOMSDAY_API_VECTORGRAPHIC_H */ diff --git a/doomsday/engine/api/apis.h b/doomsday/engine/api/apis.h index de61969244..71d1136fbe 100644 --- a/doomsday/engine/api/apis.h +++ b/doomsday/engine/api/apis.h @@ -63,13 +63,16 @@ enum { DE_API_SOUND_v1 = 1200, // 1.10 DE_API_SOUND_latest = DE_API_SOUND_v1, - DE_API_THINKER_v1 = 1300, // 1.10 + DE_API_SVG_v1 = 1300, // 1.10 + DE_API_SVG_latest = DE_API_SVG_v1, + + DE_API_THINKER_v1 = 1400, // 1.10 DE_API_THINKER_latest = DE_API_THINKER_v1, - DE_API_URI_v1 = 1400, // 1.10 + DE_API_URI_v1 = 1500, // 1.10 DE_API_URI_latest = DE_API_URI_v1, - DE_API_WAD_v1 = 1500, // 1.10 + DE_API_WAD_v1 = 1600, // 1.10 DE_API_WAD_latest = DE_API_WAD_v1 }; diff --git a/doomsday/engine/api/dd_ui.h b/doomsday/engine/api/dd_ui.h index 241d23664f..9b44424273 100644 --- a/doomsday/engine/api/dd_ui.h +++ b/doomsday/engine/api/dd_ui.h @@ -28,7 +28,7 @@ #include #include "api_fontrender.h" -#include "dd_vectorgraphic.h" +#include "api_svg.h" /** * @defgroup gui GUI diff --git a/doomsday/engine/engine.pro b/doomsday/engine/engine.pro index 96d2e4d149..27ac7e40ec 100644 --- a/doomsday/engine/engine.pro +++ b/doomsday/engine/engine.pro @@ -92,6 +92,7 @@ DENG_API_HEADERS = \ api/api_player.h \ api/api_plugin.h \ api/api_sound.h \ + api/api_svg.h \ api/api_thinker.h \ api/api_uri.h \ api/api_wad.h \ @@ -102,7 +103,6 @@ DENG_API_HEADERS = \ api/dd_share.h \ api/dd_types.h \ api/dd_ui.h \ - api/dd_vectorgraphic.h \ api/dd_version.h \ api/dd_world.h \ api/def_share.h \ diff --git a/doomsday/engine/include/gl/svg.h b/doomsday/engine/include/gl/svg.h index 2c69748c66..7a72372355 100644 --- a/doomsday/engine/include/gl/svg.h +++ b/doomsday/engine/include/gl/svg.h @@ -23,7 +23,7 @@ #ifndef LIBDENG_REFRESH_SVG_H #define LIBDENG_REFRESH_SVG_H -#include "dd_vectorgraphic.h" +#include "api_svg.h" struct svgline_s; typedef struct svgline_s SvgLine; diff --git a/doomsday/engine/src/gl/gl_drawvectorgraphic.c b/doomsday/engine/src/gl/gl_drawvectorgraphic.c index 7f89fb83f1..f2b519ac9e 100644 --- a/doomsday/engine/src/gl/gl_drawvectorgraphic.c +++ b/doomsday/engine/src/gl/gl_drawvectorgraphic.c @@ -21,6 +21,8 @@ * Boston, MA 02110-1301 USA */ +#define DENG_NO_API_MACROS_SVG + #include #include @@ -235,3 +237,12 @@ void R_NewSvg(svgid_t id, const def_svgline_t* lines, uint numLines) // Add the new SVG to the global collection. insertSvg(svg); } + +DENG_DECLARE_API(Svg) = +{ + { DE_API_SVG_latest }, + R_NewSvg, + GL_DrawSvg, + GL_DrawSvg2, + GL_DrawSvg3 +}; diff --git a/doomsday/engine/src/library.cpp b/doomsday/engine/src/library.cpp index c8a55e075f..d4606fc1c8 100644 --- a/doomsday/engine/src/library.cpp +++ b/doomsday/engine/src/library.cpp @@ -185,6 +185,7 @@ void Library_PublishAPIs(Library *lib) PUBLISH(_api_Player); PUBLISH(_api_Plug); PUBLISH(_api_S); + PUBLISH(_api_Svg); PUBLISH(_api_Thinker); PUBLISH(_api_Uri); PUBLISH(_api_W); diff --git a/doomsday/plugins/jdoom/include/d_api.h b/doomsday/plugins/jdoom/include/d_api.h index 1d509ca3ca..a5d0708cde 100644 --- a/doomsday/plugins/jdoom/include/d_api.h +++ b/doomsday/plugins/jdoom/include/d_api.h @@ -55,6 +55,7 @@ DENG_USING_API(MPE); DENG_USING_API(Player); DENG_USING_API(Plug); DENG_USING_API(S); +DENG_USING_API(Svg); DENG_USING_API(Thinker); DENG_USING_API(Uri); DENG_USING_API(W); diff --git a/doomsday/plugins/jdoom/src/d_api.c b/doomsday/plugins/jdoom/src/d_api.c index 2e55a8b263..e8870ad21f 100644 --- a/doomsday/plugins/jdoom/src/d_api.c +++ b/doomsday/plugins/jdoom/src/d_api.c @@ -291,6 +291,7 @@ DENG_DECLARE_API(MPE); DENG_DECLARE_API(Player); DENG_DECLARE_API(Plug); DENG_DECLARE_API(S); +DENG_DECLARE_API(Svg); DENG_DECLARE_API(Thinker); DENG_DECLARE_API(Uri); DENG_DECLARE_API(W); @@ -308,6 +309,7 @@ DENG_API_EXCHANGE( DENG_GET_API(DE_API_PLAYER_latest, Player); DENG_GET_API(DE_API_PLUGIN_latest, Plug); DENG_GET_API(DE_API_SOUND_latest, S); + DENG_GET_API(DE_API_SVG_latest, Svg); DENG_GET_API(DE_API_THINKER_latest, Thinker); DENG_GET_API(DE_API_URI_latest, Uri); DENG_GET_API(DE_API_WAD_latest, W); diff --git a/doomsday/server/server.pro b/doomsday/server/server.pro index 445479bfbc..d82c981e9d 100644 --- a/doomsday/server/server.pro +++ b/doomsday/server/server.pro @@ -86,6 +86,7 @@ DENG_API_HEADERS = \ $$SRC/api/api_player.h \ $$SRC/api/api_plugin.h \ $$SRC/api/api_sound.h \ + $$SRC/api/api_svg.h \ $$SRC/api/api_thinker.h \ $$SRC/api/api_uri.h \ $$SRC/api/api_wad.h \ @@ -96,7 +97,6 @@ DENG_API_HEADERS = \ $$SRC/api/dd_share.h \ $$SRC/api/dd_types.h \ $$SRC/api/dd_ui.h \ - $$SRC/api/dd_vectorgraphic.h \ $$SRC/api/dd_version.h \ $$SRC/api/dd_world.h \ $$SRC/api/def_share.h \