From b62851c7947f9943d7e97f3d69f340d0875eeb4b Mon Sep 17 00:00:00 2001 From: Miriam Ruiz Date: Mon, 1 Dec 2008 09:01:46 +0100 Subject: [PATCH] Patch from Guillaume Cottenceau to add some missing functions Obtained from Debian Package release 0.1.2-4 --- src/SDL_Pango.c | 40 ++++++++++++++++++++++++++++------------ src/SDL_Pango.h | 17 ++++++++++++++++- 2 files changed, 44 insertions(+), 13 deletions(-) diff --git a/src/SDL_Pango.c b/src/SDL_Pango.c index 2118cd2..b969bc1 100644 --- a/src/SDL_Pango.c +++ b/src/SDL_Pango.c @@ -723,13 +723,9 @@ SDLPango_CopyFTBitmapToSurface( SDL_UnlockSurface(surface); } -/*! - Create a context which contains Pango objects. - @return A pointer to the context as a SDLPango_Context*. -*/ SDLPango_Context* -SDLPango_CreateContext() +SDLPango_CreateContext_GivenFontDesc(const char* font_desc) { SDLPango_Context *context = g_malloc(sizeof(SDLPango_Context)); G_CONST_RETURN char *charset; @@ -743,8 +739,7 @@ SDLPango_CreateContext() pango_context_set_language (context->context, pango_language_from_string (charset)); pango_context_set_base_dir (context->context, PANGO_DIRECTION_LTR); - context->font_desc = pango_font_description_from_string( - MAKE_FONT_NAME (DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE)); + context->font_desc = pango_font_description_from_string(font_desc); context->layout = pango_layout_new (context->context); @@ -762,6 +757,17 @@ SDLPango_CreateContext() } /*! + Create a context which contains Pango objects. + + @return A pointer to the context as a SDLPango_Context*. +*/ +SDLPango_Context* +SDLPango_CreateContext() +{ + SDLPango_CreateContext_GivenFontDesc(MAKE_FONT_NAME(DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE)); +} + +/*! Free a context. @param *context [i/o] Context to be free @@ -1053,6 +1059,20 @@ SDLPango_SetMarkup( pango_layout_set_font_description (context->layout, context->font_desc); } +void +SDLPango_SetText_GivenAlignment( + SDLPango_Context *context, + const char *text, + int length, + SDLPango_Alignment alignment) +{ + pango_layout_set_attributes(context->layout, NULL); + pango_layout_set_text (context->layout, text, length); + pango_layout_set_auto_dir (context->layout, TRUE); + pango_layout_set_alignment (context->layout, alignment); + pango_layout_set_font_description (context->layout, context->font_desc); +} + /*! Set plain text to context. Text must be utf-8. @@ -1067,11 +1087,7 @@ SDLPango_SetText( const char *text, int length) { - pango_layout_set_attributes(context->layout, NULL); - pango_layout_set_text (context->layout, text, length); - pango_layout_set_auto_dir (context->layout, TRUE); - pango_layout_set_alignment (context->layout, PANGO_ALIGN_LEFT); - pango_layout_set_font_description (context->layout, context->font_desc); + SDLPango_SetText_GivenAlignment(context, text, length, SDLPANGO_ALIGN_LEFT); } /*! diff --git a/src/SDL_Pango.h b/src/SDL_Pango.h index 2433661..6ebdf78 100644 --- a/src/SDL_Pango.h +++ b/src/SDL_Pango.h @@ -26,6 +26,7 @@ #ifndef SDL_PANGO_H #define SDL_PANGO_H +#define SDL_PANGO_HAS_GC_EXTENSIONS #include "SDL.h" @@ -109,12 +110,20 @@ typedef enum { SDLPANGO_DIRECTION_NEUTRAL /*! Neutral */ } SDLPango_Direction; - +/*! + Specifies alignment of text. See Pango reference for detail +*/ +typedef enum { + SDLPANGO_ALIGN_LEFT, + SDLPANGO_ALIGN_CENTER, + SDLPANGO_ALIGN_RIGHT +} SDLPango_Alignment; extern DECLSPEC int SDLCALL SDLPango_Init(); extern DECLSPEC int SDLCALL SDLPango_WasInit(); +extern DECLSPEC SDLPango_Context* SDLCALL SDLPango_CreateContext_GivenFontDesc(const char* font_desc); extern DECLSPEC SDLPango_Context* SDLCALL SDLPango_CreateContext(); extern DECLSPEC void SDLCALL SDLPango_FreeContext( @@ -157,6 +166,12 @@ extern DECLSPEC void SDLCALL SDLPango_SetMarkup( const char *markup, int length); +extern DECLSPEC void SDLCALL SDLPango_SetText_GivenAlignment( + SDLPango_Context *context, + const char *text, + int length, + SDLPango_Alignment alignment); + extern DECLSPEC void SDLCALL SDLPango_SetText( SDLPango_Context *context, const char *markup, -- 2.11.4.GIT