api: Move text functions to separate file

This commit is contained in:
Kim Woelders 2022-07-23 10:18:33 +02:00
parent 96e95920dc
commit 431f45fe04
4 changed files with 501 additions and 490 deletions

View File

@ -16,6 +16,7 @@ libImlib2_la_LIBADD =
libImlib2_la_SOURCES = \
api.c api.h \
api_obsolete.c \
api_text.c \
asm.h \
asm_c.c asm_c.h \
blend.c blend.h \

View File

@ -13,8 +13,6 @@
#include "blend.h"
#include "colormod.h"
#include "color_helpers.h"
#include "file.h"
#include "font.h"
#include "grad.h"
#include "image.h"
#include "loaders.h"
@ -306,42 +304,6 @@ imlib_context_get_operation(void)
return (Imlib_Operation) ctx->operation;
}
EAPI void
imlib_context_set_font(Imlib_Font font)
{
ctx->font = font;
}
EAPI Imlib_Font
imlib_context_get_font(void)
{
return ctx->font;
}
EAPI void
imlib_context_set_direction(Imlib_Text_Direction direction)
{
ctx->direction = direction;
}
EAPI void
imlib_context_set_angle(double angle)
{
ctx->angle = angle;
}
EAPI double
imlib_context_get_angle(void)
{
return ctx->angle;
}
EAPI Imlib_Text_Direction
imlib_context_get_direction(void)
{
return ctx->direction;
}
EAPI void
imlib_context_set_color(int red, int green, int blue, int alpha)
{
@ -1386,458 +1348,6 @@ imlib_image_tile(void)
__imlib_TileImageVert(im);
}
EAPI Imlib_Font
imlib_load_font(const char *font_name)
{
return __imlib_font_load_joined(font_name);
}
EAPI void
imlib_free_font(void)
{
CHECK_PARAM_POINTER("font", ctx->font);
__imlib_font_free(ctx->font);
ctx->font = NULL;
}
EAPI int
imlib_insert_font_into_fallback_chain(Imlib_Font font, Imlib_Font fallback_font)
{
CHECK_PARAM_POINTER_RETURN("font", font, 1);
CHECK_PARAM_POINTER_RETURN("fallback_font", fallback_font, 1);
return __imlib_font_insert_into_fallback_chain_imp(font, fallback_font);
}
EAPI void
imlib_remove_font_from_fallback_chain(Imlib_Font fallback_font)
{
CHECK_PARAM_POINTER("fallback_font", fallback_font);
__imlib_font_remove_from_fallback_chain_imp(fallback_font);
}
EAPI Imlib_Font
imlib_get_prev_font_in_fallback_chain(Imlib_Font fn)
{
CHECK_PARAM_POINTER_RETURN("fn", fn, 0);
return ((ImlibFont *) fn)->fallback_prev;
}
EAPI Imlib_Font
imlib_get_next_font_in_fallback_chain(Imlib_Font fn)
{
CHECK_PARAM_POINTER_RETURN("fn", fn, 0);
return ((ImlibFont *) fn)->fallback_next;
}
EAPI void
imlib_text_draw(int x, int y, const char *text)
{
imlib_text_draw_with_return_metrics(x, y, text, NULL, NULL, NULL, NULL);
}
EAPI void
imlib_text_draw_with_return_metrics(int x, int y, const char *text,
int *width_return, int *height_return,
int *horizontal_advance_return,
int *vertical_advance_return)
{
ImlibImage *im;
ImlibFont *fn;
int dir;
CHECK_PARAM_POINTER("font", ctx->font);
CHECK_PARAM_POINTER("image", ctx->image);
CHECK_PARAM_POINTER("text", text);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
return;
fn = (ImlibFont *) ctx->font;
__imlib_DirtyImage(im);
dir = ctx->direction;
if (ctx->direction == IMLIB_TEXT_TO_ANGLE && ctx->angle == 0.0)
dir = IMLIB_TEXT_TO_RIGHT;
__imlib_render_str(im, fn, x, y, text, ctx->pixel, dir,
ctx->angle, width_return, height_return, 0,
horizontal_advance_return, vertical_advance_return,
ctx->operation,
ctx->cliprect.x, ctx->cliprect.y,
ctx->cliprect.w, ctx->cliprect.h);
}
EAPI void
imlib_get_text_size(const char *text, int *width_return, int *height_return)
{
ImlibFont *fn;
int w, h;
int dir;
CHECK_PARAM_POINTER("font", ctx->font);
CHECK_PARAM_POINTER("text", text);
fn = (ImlibFont *) ctx->font;
dir = ctx->direction;
if (ctx->direction == IMLIB_TEXT_TO_ANGLE && ctx->angle == 0.0)
dir = IMLIB_TEXT_TO_RIGHT;
__imlib_font_query_size(fn, text, &w, &h);
switch (dir)
{
case IMLIB_TEXT_TO_RIGHT:
case IMLIB_TEXT_TO_LEFT:
if (width_return)
*width_return = w;
if (height_return)
*height_return = h;
break;
case IMLIB_TEXT_TO_DOWN:
case IMLIB_TEXT_TO_UP:
if (width_return)
*width_return = h;
if (height_return)
*height_return = w;
break;
case IMLIB_TEXT_TO_ANGLE:
if (width_return || height_return)
{
double sa, ca;
sa = sin(ctx->angle);
ca = cos(ctx->angle);
if (width_return)
{
double x1, x2, xt;
x1 = x2 = 0.0;
xt = ca * w;
if (xt < x1)
x1 = xt;
if (xt > x2)
x2 = xt;
xt = -(sa * h);
if (xt < x1)
x1 = xt;
if (xt > x2)
x2 = xt;
xt = ca * w - sa * h;
if (xt < x1)
x1 = xt;
if (xt > x2)
x2 = xt;
*width_return = (int)(x2 - x1);
}
if (height_return)
{
double y1, y2, yt;
y1 = y2 = 0.0;
yt = sa * w;
if (yt < y1)
y1 = yt;
if (yt > y2)
y2 = yt;
yt = ca * h;
if (yt < y1)
y1 = yt;
if (yt > y2)
y2 = yt;
yt = sa * w + ca * h;
if (yt < y1)
y1 = yt;
if (yt > y2)
y2 = yt;
*height_return = (int)(y2 - y1);
}
}
break;
default:
break;
}
}
EAPI void
imlib_get_text_advance(const char *text, int *horizontal_advance_return,
int *vertical_advance_return)
{
ImlibFont *fn;
int w, h;
CHECK_PARAM_POINTER("font", ctx->font);
CHECK_PARAM_POINTER("text", text);
fn = (ImlibFont *) ctx->font;
__imlib_font_query_advance(fn, text, &w, &h);
if (horizontal_advance_return)
*horizontal_advance_return = w;
if (vertical_advance_return)
*vertical_advance_return = h;
}
EAPI int
imlib_get_text_inset(const char *text)
{
ImlibFont *fn;
CHECK_PARAM_POINTER_RETURN("font", ctx->font, 0);
CHECK_PARAM_POINTER_RETURN("text", text, 0);
fn = (ImlibFont *) ctx->font;
return __imlib_font_query_inset(fn, text);
}
EAPI void
imlib_add_path_to_font_path(const char *path)
{
CHECK_PARAM_POINTER("path", path);
if (!__imlib_font_path_exists(path))
__imlib_font_add_font_path(path);
}
EAPI void
imlib_remove_path_from_font_path(const char *path)
{
CHECK_PARAM_POINTER("path", path);
__imlib_font_del_font_path(path);
}
EAPI char **
imlib_list_font_path(int *number_return)
{
CHECK_PARAM_POINTER_RETURN("number_return", number_return, NULL);
return __imlib_font_list_font_path(number_return);
}
EAPI int
imlib_text_get_index_and_location(const char *text, int x, int y,
int *char_x_return, int *char_y_return,
int *char_width_return,
int *char_height_return)
{
ImlibFont *fn;
int w, h, cx, cy, cw, ch, cp, xx, yy;
int dir;
CHECK_PARAM_POINTER_RETURN("font", ctx->font, -1);
CHECK_PARAM_POINTER_RETURN("text", text, -1);
fn = (ImlibFont *) ctx->font;
dir = ctx->direction;
if (ctx->direction == IMLIB_TEXT_TO_ANGLE && ctx->angle == 0.0)
dir = IMLIB_TEXT_TO_RIGHT;
imlib_get_text_size(text, &w, &h);
switch (dir)
{
case IMLIB_TEXT_TO_RIGHT:
xx = x;
yy = y;
break;
case IMLIB_TEXT_TO_LEFT:
xx = w - x;
yy = h - y;
break;
case IMLIB_TEXT_TO_DOWN:
xx = y;
yy = w - x;
break;
case IMLIB_TEXT_TO_UP:
xx = h - y;
yy = x;
break;
default:
return -1;
}
cp = __imlib_font_query_text_at_pos(fn, text, xx, yy, &cx, &cy, &cw, &ch);
switch (dir)
{
case IMLIB_TEXT_TO_RIGHT:
if (char_x_return)
*char_x_return = cx;
if (char_y_return)
*char_y_return = cy;
if (char_width_return)
*char_width_return = cw;
if (char_height_return)
*char_height_return = ch;
return cp;
break;
case IMLIB_TEXT_TO_LEFT:
cx = 1 + w - cx - cw;
if (char_x_return)
*char_x_return = cx;
if (char_y_return)
*char_y_return = cy;
if (char_width_return)
*char_width_return = cw;
if (char_height_return)
*char_height_return = ch;
return cp;
break;
case IMLIB_TEXT_TO_DOWN:
if (char_x_return)
*char_x_return = cy;
if (char_y_return)
*char_y_return = cx;
if (char_width_return)
*char_width_return = ch;
if (char_height_return)
*char_height_return = cw;
return cp;
break;
case IMLIB_TEXT_TO_UP:
cy = 1 + h - cy - ch;
if (char_x_return)
*char_x_return = cy;
if (char_y_return)
*char_y_return = cx;
if (char_width_return)
*char_width_return = ch;
if (char_height_return)
*char_height_return = cw;
return cp;
break;
default:
return -1;
break;
}
return -1;
}
EAPI void
imlib_text_get_location_at_index(const char *text, int index,
int *char_x_return, int *char_y_return,
int *char_width_return,
int *char_height_return)
{
ImlibFont *fn;
int cx, cy, cw, ch, w, h;
CHECK_PARAM_POINTER("font", ctx->font);
CHECK_PARAM_POINTER("text", text);
fn = (ImlibFont *) ctx->font;
__imlib_font_query_char_coords(fn, text, index, &cx, &cy, &cw, &ch);
w = h = 0;
imlib_get_text_size(text, &w, &h);
switch (ctx->direction)
{
case IMLIB_TEXT_TO_RIGHT:
if (char_x_return)
*char_x_return = cx;
if (char_y_return)
*char_y_return = cy;
if (char_width_return)
*char_width_return = cw;
if (char_height_return)
*char_height_return = ch;
return;
break;
case IMLIB_TEXT_TO_LEFT:
cx = 1 + w - cx - cw;
if (char_x_return)
*char_x_return = cx;
if (char_y_return)
*char_y_return = cy;
if (char_width_return)
*char_width_return = cw;
if (char_height_return)
*char_height_return = ch;
return;
break;
case IMLIB_TEXT_TO_DOWN:
if (char_x_return)
*char_x_return = cy;
if (char_y_return)
*char_y_return = cx;
if (char_width_return)
*char_width_return = ch;
if (char_height_return)
*char_height_return = cw;
return;
break;
case IMLIB_TEXT_TO_UP:
cy = 1 + h - cy - ch;
if (char_x_return)
*char_x_return = cy;
if (char_y_return)
*char_y_return = cx;
if (char_width_return)
*char_width_return = ch;
if (char_height_return)
*char_height_return = cw;
return;
break;
default:
return;
break;
}
}
EAPI char **
imlib_list_fonts(int *number_return)
{
CHECK_PARAM_POINTER_RETURN("number_return", number_return, NULL);
return __imlib_font_list_fonts(number_return);
}
EAPI void
imlib_free_font_list(char **font_list, int number)
{
__imlib_FileFreeDirList(font_list, number);
}
EAPI int
imlib_get_font_cache_size(void)
{
return __imlib_font_cache_get();
}
EAPI void
imlib_set_font_cache_size(int bytes)
{
__imlib_font_cache_set(bytes);
}
EAPI void
imlib_flush_font_cache(void)
{
__imlib_font_flush();
}
EAPI int
imlib_get_font_ascent(void)
{
CHECK_PARAM_POINTER_RETURN("font", ctx->font, 0);
return __imlib_font_ascent_get(ctx->font);
}
EAPI int
imlib_get_font_descent(void)
{
CHECK_PARAM_POINTER_RETURN("font", ctx->font, 0);
return __imlib_font_descent_get(ctx->font);
}
EAPI int
imlib_get_maximum_font_ascent(void)
{
CHECK_PARAM_POINTER_RETURN("font", ctx->font, 0);
return __imlib_font_max_ascent_get(ctx->font);
}
EAPI int
imlib_get_maximum_font_descent(void)
{
CHECK_PARAM_POINTER_RETURN("font", ctx->font, 0);
return __imlib_font_max_descent_get(ctx->font);
}
EAPI Imlib_Color_Modifier
imlib_create_color_modifier(void)
{

View File

@ -46,7 +46,9 @@ typedef struct {
char blend;
Imlib_Color_Modifier color_modifier;
ImlibOp operation;
#if ENABLE_TEXT
Imlib_Font font;
#endif
Imlib_Text_Direction direction;
double angle;
Imlib_Color color;

498
src/lib/api_text.c Normal file
View File

@ -0,0 +1,498 @@
#include "config.h"
#include <Imlib2.h>
#include "common.h"
#include <math.h>
#include "api.h"
#include "file.h"
#include "image.h"
#include "font.h"
EAPI Imlib_Font
imlib_load_font(const char *font_name)
{
return __imlib_font_load_joined(font_name);
}
EAPI void
imlib_free_font(void)
{
CHECK_PARAM_POINTER("font", ctx->font);
__imlib_font_free(ctx->font);
ctx->font = NULL;
}
EAPI void
imlib_context_set_font(Imlib_Font font)
{
ctx->font = font;
}
EAPI Imlib_Font
imlib_context_get_font(void)
{
return ctx->font;
}
EAPI void
imlib_context_set_direction(Imlib_Text_Direction direction)
{
ctx->direction = direction;
}
EAPI Imlib_Text_Direction
imlib_context_get_direction(void)
{
return ctx->direction;
}
EAPI void
imlib_context_set_angle(double angle)
{
ctx->angle = angle;
}
EAPI double
imlib_context_get_angle(void)
{
return ctx->angle;
}
EAPI int
imlib_insert_font_into_fallback_chain(Imlib_Font font, Imlib_Font fallback_font)
{
CHECK_PARAM_POINTER_RETURN("font", font, 1);
CHECK_PARAM_POINTER_RETURN("fallback_font", fallback_font, 1);
return __imlib_font_insert_into_fallback_chain_imp(font, fallback_font);
}
EAPI void
imlib_remove_font_from_fallback_chain(Imlib_Font fallback_font)
{
CHECK_PARAM_POINTER("fallback_font", fallback_font);
__imlib_font_remove_from_fallback_chain_imp(fallback_font);
}
EAPI Imlib_Font
imlib_get_prev_font_in_fallback_chain(Imlib_Font fn)
{
CHECK_PARAM_POINTER_RETURN("fn", fn, 0);
return ((ImlibFont *) fn)->fallback_prev;
}
EAPI Imlib_Font
imlib_get_next_font_in_fallback_chain(Imlib_Font fn)
{
CHECK_PARAM_POINTER_RETURN("fn", fn, 0);
return ((ImlibFont *) fn)->fallback_next;
}
EAPI void
imlib_text_draw(int x, int y, const char *text)
{
imlib_text_draw_with_return_metrics(x, y, text, NULL, NULL, NULL, NULL);
}
EAPI void
imlib_text_draw_with_return_metrics(int x, int y, const char *text,
int *width_return, int *height_return,
int *horizontal_advance_return,
int *vertical_advance_return)
{
ImlibImage *im;
ImlibFont *fn;
int dir;
CHECK_PARAM_POINTER("font", ctx->font);
CHECK_PARAM_POINTER("image", ctx->image);
CHECK_PARAM_POINTER("text", text);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
return;
fn = (ImlibFont *) ctx->font;
__imlib_DirtyImage(im);
dir = ctx->direction;
if (ctx->direction == IMLIB_TEXT_TO_ANGLE && ctx->angle == 0.0)
dir = IMLIB_TEXT_TO_RIGHT;
__imlib_render_str(im, fn, x, y, text, ctx->pixel, dir,
ctx->angle, width_return, height_return, 0,
horizontal_advance_return, vertical_advance_return,
ctx->operation,
ctx->cliprect.x, ctx->cliprect.y,
ctx->cliprect.w, ctx->cliprect.h);
}
EAPI void
imlib_get_text_size(const char *text, int *width_return, int *height_return)
{
ImlibFont *fn;
int w, h;
int dir;
CHECK_PARAM_POINTER("font", ctx->font);
CHECK_PARAM_POINTER("text", text);
fn = (ImlibFont *) ctx->font;
dir = ctx->direction;
if (ctx->direction == IMLIB_TEXT_TO_ANGLE && ctx->angle == 0.0)
dir = IMLIB_TEXT_TO_RIGHT;
__imlib_font_query_size(fn, text, &w, &h);
switch (dir)
{
case IMLIB_TEXT_TO_RIGHT:
case IMLIB_TEXT_TO_LEFT:
if (width_return)
*width_return = w;
if (height_return)
*height_return = h;
break;
case IMLIB_TEXT_TO_DOWN:
case IMLIB_TEXT_TO_UP:
if (width_return)
*width_return = h;
if (height_return)
*height_return = w;
break;
case IMLIB_TEXT_TO_ANGLE:
if (width_return || height_return)
{
double sa, ca;
sa = sin(ctx->angle);
ca = cos(ctx->angle);
if (width_return)
{
double x1, x2, xt;
x1 = x2 = 0.0;
xt = ca * w;
if (xt < x1)
x1 = xt;
if (xt > x2)
x2 = xt;
xt = -(sa * h);
if (xt < x1)
x1 = xt;
if (xt > x2)
x2 = xt;
xt = ca * w - sa * h;
if (xt < x1)
x1 = xt;
if (xt > x2)
x2 = xt;
*width_return = (int)(x2 - x1);
}
if (height_return)
{
double y1, y2, yt;
y1 = y2 = 0.0;
yt = sa * w;
if (yt < y1)
y1 = yt;
if (yt > y2)
y2 = yt;
yt = ca * h;
if (yt < y1)
y1 = yt;
if (yt > y2)
y2 = yt;
yt = sa * w + ca * h;
if (yt < y1)
y1 = yt;
if (yt > y2)
y2 = yt;
*height_return = (int)(y2 - y1);
}
}
break;
default:
break;
}
}
EAPI void
imlib_get_text_advance(const char *text, int *horizontal_advance_return,
int *vertical_advance_return)
{
ImlibFont *fn;
int w, h;
CHECK_PARAM_POINTER("font", ctx->font);
CHECK_PARAM_POINTER("text", text);
fn = (ImlibFont *) ctx->font;
__imlib_font_query_advance(fn, text, &w, &h);
if (horizontal_advance_return)
*horizontal_advance_return = w;
if (vertical_advance_return)
*vertical_advance_return = h;
}
EAPI int
imlib_get_text_inset(const char *text)
{
ImlibFont *fn;
CHECK_PARAM_POINTER_RETURN("font", ctx->font, 0);
CHECK_PARAM_POINTER_RETURN("text", text, 0);
fn = (ImlibFont *) ctx->font;
return __imlib_font_query_inset(fn, text);
}
EAPI void
imlib_add_path_to_font_path(const char *path)
{
CHECK_PARAM_POINTER("path", path);
if (!__imlib_font_path_exists(path))
__imlib_font_add_font_path(path);
}
EAPI void
imlib_remove_path_from_font_path(const char *path)
{
CHECK_PARAM_POINTER("path", path);
__imlib_font_del_font_path(path);
}
EAPI char **
imlib_list_font_path(int *number_return)
{
CHECK_PARAM_POINTER_RETURN("number_return", number_return, NULL);
return __imlib_font_list_font_path(number_return);
}
EAPI int
imlib_text_get_index_and_location(const char *text, int x, int y,
int *char_x_return, int *char_y_return,
int *char_width_return,
int *char_height_return)
{
ImlibFont *fn;
int w, h, cx, cy, cw, ch, cp, xx, yy;
int dir;
CHECK_PARAM_POINTER_RETURN("font", ctx->font, -1);
CHECK_PARAM_POINTER_RETURN("text", text, -1);
fn = (ImlibFont *) ctx->font;
dir = ctx->direction;
if (ctx->direction == IMLIB_TEXT_TO_ANGLE && ctx->angle == 0.0)
dir = IMLIB_TEXT_TO_RIGHT;
imlib_get_text_size(text, &w, &h);
switch (dir)
{
case IMLIB_TEXT_TO_RIGHT:
xx = x;
yy = y;
break;
case IMLIB_TEXT_TO_LEFT:
xx = w - x;
yy = h - y;
break;
case IMLIB_TEXT_TO_DOWN:
xx = y;
yy = w - x;
break;
case IMLIB_TEXT_TO_UP:
xx = h - y;
yy = x;
break;
default:
return -1;
}
cp = __imlib_font_query_text_at_pos(fn, text, xx, yy, &cx, &cy, &cw, &ch);
switch (dir)
{
case IMLIB_TEXT_TO_RIGHT:
if (char_x_return)
*char_x_return = cx;
if (char_y_return)
*char_y_return = cy;
if (char_width_return)
*char_width_return = cw;
if (char_height_return)
*char_height_return = ch;
return cp;
break;
case IMLIB_TEXT_TO_LEFT:
cx = 1 + w - cx - cw;
if (char_x_return)
*char_x_return = cx;
if (char_y_return)
*char_y_return = cy;
if (char_width_return)
*char_width_return = cw;
if (char_height_return)
*char_height_return = ch;
return cp;
break;
case IMLIB_TEXT_TO_DOWN:
if (char_x_return)
*char_x_return = cy;
if (char_y_return)
*char_y_return = cx;
if (char_width_return)
*char_width_return = ch;
if (char_height_return)
*char_height_return = cw;
return cp;
break;
case IMLIB_TEXT_TO_UP:
cy = 1 + h - cy - ch;
if (char_x_return)
*char_x_return = cy;
if (char_y_return)
*char_y_return = cx;
if (char_width_return)
*char_width_return = ch;
if (char_height_return)
*char_height_return = cw;
return cp;
break;
default:
return -1;
break;
}
return -1;
}
EAPI void
imlib_text_get_location_at_index(const char *text, int index,
int *char_x_return, int *char_y_return,
int *char_width_return,
int *char_height_return)
{
ImlibFont *fn;
int cx, cy, cw, ch, w, h;
CHECK_PARAM_POINTER("font", ctx->font);
CHECK_PARAM_POINTER("text", text);
fn = (ImlibFont *) ctx->font;
__imlib_font_query_char_coords(fn, text, index, &cx, &cy, &cw, &ch);
w = h = 0;
imlib_get_text_size(text, &w, &h);
switch (ctx->direction)
{
case IMLIB_TEXT_TO_RIGHT:
if (char_x_return)
*char_x_return = cx;
if (char_y_return)
*char_y_return = cy;
if (char_width_return)
*char_width_return = cw;
if (char_height_return)
*char_height_return = ch;
return;
break;
case IMLIB_TEXT_TO_LEFT:
cx = 1 + w - cx - cw;
if (char_x_return)
*char_x_return = cx;
if (char_y_return)
*char_y_return = cy;
if (char_width_return)
*char_width_return = cw;
if (char_height_return)
*char_height_return = ch;
return;
break;
case IMLIB_TEXT_TO_DOWN:
if (char_x_return)
*char_x_return = cy;
if (char_y_return)
*char_y_return = cx;
if (char_width_return)
*char_width_return = ch;
if (char_height_return)
*char_height_return = cw;
return;
break;
case IMLIB_TEXT_TO_UP:
cy = 1 + h - cy - ch;
if (char_x_return)
*char_x_return = cy;
if (char_y_return)
*char_y_return = cx;
if (char_width_return)
*char_width_return = ch;
if (char_height_return)
*char_height_return = cw;
return;
break;
default:
return;
break;
}
}
EAPI char **
imlib_list_fonts(int *number_return)
{
CHECK_PARAM_POINTER_RETURN("number_return", number_return, NULL);
return __imlib_font_list_fonts(number_return);
}
EAPI void
imlib_free_font_list(char **font_list, int number)
{
__imlib_FileFreeDirList(font_list, number);
}
EAPI int
imlib_get_font_cache_size(void)
{
return __imlib_font_cache_get();
}
EAPI void
imlib_set_font_cache_size(int bytes)
{
__imlib_font_cache_set(bytes);
}
EAPI void
imlib_flush_font_cache(void)
{
__imlib_font_flush();
}
EAPI int
imlib_get_font_ascent(void)
{
CHECK_PARAM_POINTER_RETURN("font", ctx->font, 0);
return __imlib_font_ascent_get(ctx->font);
}
EAPI int
imlib_get_font_descent(void)
{
CHECK_PARAM_POINTER_RETURN("font", ctx->font, 0);
return __imlib_font_descent_get(ctx->font);
}
EAPI int
imlib_get_maximum_font_ascent(void)
{
CHECK_PARAM_POINTER_RETURN("font", ctx->font, 0);
return __imlib_font_max_ascent_get(ctx->font);
}
EAPI int
imlib_get_maximum_font_descent(void)
{
CHECK_PARAM_POINTER_RETURN("font", ctx->font, 0);
return __imlib_font_max_descent_get(ctx->font);
}