+ functions for accessing values inside a XftFont
This commit is contained in:
parent
315948f857
commit
359f7342ad
35
c/libs/xft.c
35
c/libs/xft.c
|
@ -2,8 +2,6 @@
|
|||
|
||||
XFT_REC_ACCESSOR_MAKER(scx_enter_xftpattern, XftPattern, scx_xftpattern_record_type);
|
||||
|
||||
XFT_REC_ACCESSOR_MAKER(scx_enter_xftfont, XftFont, scx_xftfont_record_type);
|
||||
|
||||
XFT_REC_ACCESSOR_MAKER(scx_enter_xftdraw, XftDraw, scx_xftdraw_record_type);
|
||||
|
||||
XFT_REC_ACCESSOR_MAKER(scx_enter_xftcolor, XftColor, scx_xftcolor_record_type);
|
||||
|
@ -12,6 +10,19 @@ XFT_REC_ACCESSOR_MAKER(scx_enter_xftobjectset, XftObjectSet, scx_xftobjectset_re
|
|||
|
||||
XFT_REC_ACCESSOR_MAKER(scx_enter_xftfontset, XftFontSet, scx_xftfontset_record_type);
|
||||
|
||||
s48_value scx_enter_xftfont(XftFont *xf)
|
||||
{
|
||||
s48_value rec = S48_FALSE;
|
||||
S48_DECLARE_GC_PROTECT(1);
|
||||
|
||||
S48_GC_PROTECT_1(rec);
|
||||
rec = s48_make_record(scx_xftfont_record_type);
|
||||
S48_RECORD_SET(rec, 0, s48_enter_integer((long) xf));
|
||||
S48_RECORD_SET(rec, 1, scx_enter_xftpattern(xf->pattern));
|
||||
S48_GC_UNPROTECT();
|
||||
return rec;
|
||||
}
|
||||
|
||||
s48_value scx_XftPatternCreate(void)
|
||||
{
|
||||
return scx_enter_xftpattern(XftPatternCreate());
|
||||
|
@ -467,6 +478,20 @@ s48_value scx_XftDefaultHasRender(s48_value sdpy)
|
|||
return XftDefaultHasRender(scx_extract_display(sdpy)) ? S48_TRUE : S48_FALSE;
|
||||
}
|
||||
|
||||
#define XFTFONT_GET(FUN, FN) \
|
||||
s48_value FUN(s48_value sxf) { \
|
||||
return s48_enter_integer(scx_extract_xftfont(sxf)->FN); \
|
||||
}
|
||||
|
||||
XFTFONT_GET(scx_xftfont_ascent_get, ascent);
|
||||
XFTFONT_GET(scx_xftfont_descent_get, descent);
|
||||
XFTFONT_GET(scx_xftfont_height_get, height);
|
||||
XFTFONT_GET(scx_xftfont_max_advance_width_get, max_advance_width);
|
||||
|
||||
s48_value scx_xftfont_pattern_get_internal(s48_value sxf)
|
||||
{
|
||||
return scx_enter_xftpattern(scx_extract_xftfont(sxf)->pattern);
|
||||
}
|
||||
|
||||
void scx_xft_init(void)
|
||||
{
|
||||
|
@ -617,4 +642,10 @@ void scx_xft_init(void)
|
|||
S48_EXPORT_FUNCTION(scx_XftFontSetPrint);
|
||||
|
||||
S48_EXPORT_FUNCTION(scx_XftDefaultHasRender);
|
||||
|
||||
S48_EXPORT_FUNCTION(scx_xftfont_ascent_get);
|
||||
S48_EXPORT_FUNCTION(scx_xftfont_descent_get);
|
||||
S48_EXPORT_FUNCTION(scx_xftfont_height_get);
|
||||
S48_EXPORT_FUNCTION(scx_xftfont_max_advance_width_get);
|
||||
S48_EXPORT_FUNCTION(scx_xftfont_pattern_get_internal);
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
(export
|
||||
xft-pattern?
|
||||
xft-font?
|
||||
xft-font-pattern
|
||||
xft-color?
|
||||
xft-objectset?
|
||||
xft-fontset?
|
||||
|
|
|
@ -7,9 +7,10 @@
|
|||
(define-exported-binding "xft-pattern" :xft-pattern)
|
||||
|
||||
(define-record-type xft-font :xft-font
|
||||
(make-xft-font x-pointer)
|
||||
(make-xft-font c-pointer pattern)
|
||||
xft-font?
|
||||
(x-pointer xft-font-x-pointer))
|
||||
(c-pointer xft-font-c-pointer)
|
||||
(pattern xft-font-pattern))
|
||||
|
||||
(define-exported-binding "xft-font" :xft-font)
|
||||
|
||||
|
@ -230,22 +231,22 @@
|
|||
(add-finalizer! xft-pattern scx-xft-pattern-destroy)
|
||||
(values result xft-pattern))))
|
||||
|
||||
(define (scx-xft-font-open-pattern display xft-pattern)
|
||||
(let ((xft-font (scx-xft-font-open-pattern-internal display xft-pattern)))
|
||||
(add-finalizer! xft-font scx-xft-font-close)
|
||||
xft-font))
|
||||
(define (scx-xft-font-open-pattern display pattern)
|
||||
(let ((font (scx-xft-font-open-pattern-internal display pattern)))
|
||||
(add-finalizer! font scx-xft-font-close)
|
||||
font))
|
||||
|
||||
(define (scx-xft-font-open-name display screen name)
|
||||
(let* ((screen-number (screen:number screen))
|
||||
(xft-font (scx-xft-font-open-name-internal display screen-number name)))
|
||||
(add-finalizer! xft-font scx-xft-font-close)
|
||||
xft-font))
|
||||
(font (scx-xft-font-open-name-internal display screen-number name)))
|
||||
(add-finalizer! font scx-xft-font-close)
|
||||
font))
|
||||
|
||||
(define (scx-xft-font-open-xlfd display screen name)
|
||||
(let* ((screen-numer (screen:number screen))
|
||||
(xft-font (scx-xft-font-open-xlfd-internal display screen-numer name)))
|
||||
(add-finalizer! xft-font scx-xft-font-close)
|
||||
xft-font))
|
||||
(font (scx-xft-font-open-xlfd-internal display screen-numer name)))
|
||||
(add-finalizer! font scx-xft-font-close)
|
||||
font))
|
||||
|
||||
(define (scx-xft-draw-create display drawable visual colormap)
|
||||
(let ((xft-draw (scx-xft-draw-create-internal display drawable visual colormap)))
|
||||
|
@ -517,3 +518,18 @@
|
|||
(display)
|
||||
"scx_XftDefaultHasRender")
|
||||
|
||||
(import-lambda-definition scx-xft-xft-font-ascent
|
||||
(xft-font)
|
||||
"scx_xftfont_ascent_get")
|
||||
|
||||
(import-lambda-definition scx-xft-xft-font-descent
|
||||
(xft-font)
|
||||
"scx_xftfont_descent_get")
|
||||
|
||||
(import-lambda-definition scx-xft-xft-font-height
|
||||
(xft-font)
|
||||
"scx_xftfont_height_get")
|
||||
|
||||
(import-lambda-definition scx-xft-xft-font-max-advance-width
|
||||
(xft-font)
|
||||
"scx_xftfont_max_advance_width_get")
|
||||
|
|
Loading…
Reference in New Issue