pango is gir-based now (very draft version)
parent
da25daeb51
commit
56280003c5
|
@ -1,2 +1 @@
|
|||
Matthew Willis
|
||||
Slava Pestov
|
||||
Anton Gorenko
|
|
@ -1,36 +1,64 @@
|
|||
! Copyright (C) 2008 Matthew Willis.
|
||||
! Copyright (C) 2009 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license
|
||||
USING: alien alien.c-types alien.syntax alien.destructors
|
||||
combinators system alien.libraries ;
|
||||
IN: glib
|
||||
! Copyright (C) 2009 Anton Gorenko.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: alien.c-types alien.libraries alien.syntax combinators gir
|
||||
kernel system vocabs.parser words ;
|
||||
|
||||
<<
|
||||
|
||||
{
|
||||
{ [ os winnt? ] [ "glib" "libglib-2.0-0.dll" cdecl add-library ] }
|
||||
{ [ os macosx? ] [ "glib" "/opt/local/lib/libglib-2.0.0.dylib" cdecl add-library ] }
|
||||
{ [ os unix? ] [ ] }
|
||||
"glib" {
|
||||
{ [ os winnt? ] [ "libglib-2.0-0.dll" "cdecl" add-library ] }
|
||||
{ [ os macosx? ] [ "/opt/local/lib/libglib-2.0.0.dylib" "cdecl" add-library ] }
|
||||
{ [ os unix? ] [ drop ] }
|
||||
} cond
|
||||
|
||||
{
|
||||
{ [ os winnt? ] [ "gobject" "libgobject-2.0-0.dll" cdecl add-library ] }
|
||||
{ [ os macosx? ] [ "gobject" "/opt/local/lib/libgobject-2.0.0.dylib" cdecl add-library ] }
|
||||
{ [ os unix? ] [ ] }
|
||||
} cond
|
||||
|
||||
>>
|
||||
|
||||
LIBRARY: glib
|
||||
IN: glib.ffi
|
||||
|
||||
<< double "long double" current-vocab create typedef >>
|
||||
|
||||
TYPEDEF: char gchar
|
||||
TYPEDEF: uchar guchar
|
||||
TYPEDEF: short gshort
|
||||
TYPEDEF: ushort gushort
|
||||
TYPEDEF: long glong
|
||||
TYPEDEF: ulong gulong
|
||||
TYPEDEF: int gint
|
||||
TYPEDEF: uint guint
|
||||
TYPEDEF: gint gboolean
|
||||
|
||||
TYPEDEF: char gint8
|
||||
TYPEDEF: uchar guint8
|
||||
TYPEDEF: short gint16
|
||||
TYPEDEF: ushort guint16
|
||||
TYPEDEF: int gint32
|
||||
TYPEDEF: uint guint32
|
||||
TYPEDEF: longlong gint64
|
||||
TYPEDEF: ulonglong guint64
|
||||
|
||||
TYPEDEF: float gfloat
|
||||
TYPEDEF: double gdouble
|
||||
|
||||
TYPEDEF: long ssize_t
|
||||
TYPEDEF: long time_t
|
||||
TYPEDEF: size_t gsize
|
||||
TYPEDEF: ssize_t gssize
|
||||
TYPEDEF: size_t GType
|
||||
|
||||
TYPEDEF: void* gpointer
|
||||
TYPEDEF: int gint
|
||||
TYPEDEF: bool gboolean
|
||||
TYPEDEF: void* gconstpointer
|
||||
|
||||
FUNCTION: void g_free ( gpointer mem ) ;
|
||||
TYPEDEF: guint8 GDateDay
|
||||
TYPEDEF: guint16 GDateYear
|
||||
TYPEDEF: gint GPid
|
||||
TYPEDEF: guint32 GQuark
|
||||
TYPEDEF: gint32 GTime
|
||||
TYPEDEF: glong gintptr
|
||||
TYPEDEF: gint64 goffset
|
||||
TYPEDEF: gulong guintptr
|
||||
TYPEDEF: guint32 gunichar
|
||||
TYPEDEF: guint16 gunichar2
|
||||
|
||||
LIBRARY: gobject
|
||||
! Разобраться, почему в .gir есть такие типы
|
||||
TYPEDEF: void any
|
||||
|
||||
FUNCTION: void g_object_unref ( gpointer object ) ;
|
||||
IN-GIR: glib vocab:glib/GLib-2.0.gir
|
||||
|
||||
DESTRUCTOR: g_object_unref
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
Binding for GLib
|
|
@ -1 +0,0 @@
|
|||
bindings
|
|
@ -1,2 +1 @@
|
|||
Matthew Willis
|
||||
Slava Pestov
|
||||
Anton Gorenko
|
|
@ -1,99 +1,37 @@
|
|||
! Copyright (C) 2008 Matthew Willis.
|
||||
! Copyright (C) 2009 Slava Pestov.
|
||||
! Copyright (C) 2010 Anton Gorenko.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
!
|
||||
! pangocairo bindings, from pango/pangocairo.h
|
||||
USING: arrays sequences alien alien.c-types alien.destructors
|
||||
alien.libraries alien.syntax math math.functions math.vectors
|
||||
destructors combinators colors fonts accessors assocs namespaces
|
||||
kernel pango pango.fonts pango.layouts glib unicode.data images
|
||||
USING: alien alien.c-types alien.destructors
|
||||
alien.libraries alien.syntax alien.strings arrays math math.functions
|
||||
math.vectors destructors combinators colors fonts accessors assocs
|
||||
namespaces kernel unicode.data images sequences
|
||||
cache init system math.rectangles fry memoize io.encodings.utf8
|
||||
classes.struct cairo cairo.ffi ;
|
||||
IN: pango.cairo
|
||||
classes.struct cairo cairo.ffi
|
||||
gir pango pango.ffi gobject gobject.ffi ;
|
||||
|
||||
<< {
|
||||
{ [ os winnt? ] [ "pangocairo" "libpangocairo-1.0-0.dll" cdecl add-library ] }
|
||||
{ [ os macosx? ] [ "pangocairo" "/opt/local/lib/libpangocairo-1.0.0.dylib" cdecl add-library ] }
|
||||
{ [ os unix? ] [ ] }
|
||||
} cond >>
|
||||
<<
|
||||
"pango.cairo" {
|
||||
{ [ os winnt? ] [ "libpangocairo-1.0-0.dll" cdecl add-library ] }
|
||||
{ [ os macosx? ] [ "/opt/local/lib/libpangocairo-1.0.0.dylib" cdecl add-library ] }
|
||||
{ [ os unix? ] [ drop ] }
|
||||
} cond
|
||||
>>
|
||||
|
||||
LIBRARY: pangocairo
|
||||
IN-GIR: pango.cairo vocab:pango/cairo/PangoCairo-1.0.gir
|
||||
|
||||
C-TYPE: PangoCairoFontMap
|
||||
C-TYPE: PangoCairoFont
|
||||
|
||||
FUNCTION: PangoFontMap*
|
||||
pango_cairo_font_map_new ( ) ;
|
||||
|
||||
FUNCTION: PangoFontMap*
|
||||
pango_cairo_font_map_new_for_font_type ( cairo_font_type_t fonttype ) ;
|
||||
|
||||
FUNCTION: PangoFontMap*
|
||||
pango_cairo_font_map_get_default ( ) ;
|
||||
|
||||
FUNCTION: cairo_font_type_t
|
||||
pango_cairo_font_map_get_font_type ( PangoCairoFontMap* fontmap ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_cairo_font_map_set_resolution ( PangoCairoFontMap* fontmap, double dpi ) ;
|
||||
|
||||
FUNCTION: double
|
||||
pango_cairo_font_map_get_resolution ( PangoCairoFontMap* fontmap ) ;
|
||||
|
||||
FUNCTION: PangoContext*
|
||||
pango_cairo_font_map_create_context ( PangoCairoFontMap* fontmap ) ;
|
||||
|
||||
FUNCTION: cairo_scaled_font_t*
|
||||
pango_cairo_font_get_scaled_font ( PangoCairoFont* font ) ;
|
||||
|
||||
! Update a Pango context for the current state of a cairo context
|
||||
FUNCTION: void
|
||||
pango_cairo_update_context ( cairo_t* cr, PangoContext* context ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_cairo_context_set_font_options ( PangoContext* context, cairo_font_options_t* options ) ;
|
||||
|
||||
FUNCTION: cairo_font_options_t*
|
||||
pango_cairo_context_get_font_options ( PangoContext* context ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_cairo_context_set_resolution ( PangoContext* context, double dpi ) ;
|
||||
|
||||
FUNCTION: double
|
||||
pango_cairo_context_get_resolution ( PangoContext* context ) ;
|
||||
|
||||
! Convenience
|
||||
FUNCTION: PangoLayout*
|
||||
pango_cairo_create_layout ( cairo_t* cr ) ;
|
||||
IN: pango.cairo.ffi
|
||||
|
||||
FUNCTION: void
|
||||
pango_cairo_update_layout ( cairo_t* cr, PangoLayout* layout ) ;
|
||||
|
||||
! Rendering
|
||||
FUNCTION: void
|
||||
pango_cairo_show_glyph_string ( cairo_t* cr, PangoFont* font, PangoGlyphString* glyphs ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_cairo_show_layout_line ( cairo_t* cr, PangoLayoutLine* line ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_cairo_show_layout ( cairo_t* cr, PangoLayout* layout ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_cairo_show_error_underline ( cairo_t* cr, double x, double y, double width, double height ) ;
|
||||
FUNCTION: PangoLayout*
|
||||
pango_cairo_create_layout ( cairo_t* cr ) ;
|
||||
|
||||
! Rendering to a path
|
||||
FUNCTION: void
|
||||
pango_cairo_glyph_string_path ( cairo_t* cr, PangoFont* font, PangoGlyphString* glyphs ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_cairo_layout_line_path ( cairo_t* cr, PangoLayoutLine* line ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_cairo_layout_path ( cairo_t* cr, PangoLayout* layout ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_cairo_error_underline_path ( cairo_t* cr, double x, double y, double width, double height ) ;
|
||||
IN: pango.cairo
|
||||
|
||||
TUPLE: layout < disposable font string selection layout metrics ink-rect logical-rect image ;
|
||||
|
||||
|
@ -107,7 +45,7 @@ SYMBOL: dpi
|
|||
: set-layout-text ( str layout -- )
|
||||
#! Replace nulls with something else since Pango uses null-terminated
|
||||
#! strings
|
||||
swap -1 pango_layout_set_text ;
|
||||
swap utf8 string>alien -1 pango_layout_set_text ;
|
||||
|
||||
: layout-extents ( layout -- ink-rect logical-rect )
|
||||
PangoRectangle <struct>
|
||||
|
@ -241,3 +179,4 @@ SYMBOL: cached-layouts
|
|||
cached-layout layout>> first-line ;
|
||||
|
||||
[ <cache-assoc> cached-layouts set-global ] "pango.cairo" add-startup-hook
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
Matthew Willis
|
||||
Slava Pestov
|
|
@ -1,113 +0,0 @@
|
|||
! Copyright (C) 2008 Matthew Willis.
|
||||
! Copyright (C) 2009 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license
|
||||
USING: pango alien.syntax alien.c-types alien.destructors
|
||||
kernel glib accessors combinators destructors init fonts
|
||||
memoize math ;
|
||||
IN: pango.fonts
|
||||
|
||||
LIBRARY: pango
|
||||
|
||||
ENUM: PangoStyle
|
||||
PANGO_STYLE_NORMAL
|
||||
PANGO_STYLE_OBLIQUE
|
||||
PANGO_STYLE_ITALIC ;
|
||||
|
||||
TYPEDEF: int PangoWeight
|
||||
C-TYPE: PangoFont
|
||||
C-TYPE: PangoFontFamily
|
||||
C-TYPE: PangoFontFace
|
||||
C-TYPE: PangoFontMap
|
||||
C-TYPE: PangoFontMetrics
|
||||
C-TYPE: PangoFontDescription
|
||||
C-TYPE: PangoGlyphString
|
||||
C-TYPE: PangoLanguage
|
||||
|
||||
CONSTANT: PANGO_WEIGHT_THIN 100
|
||||
CONSTANT: PANGO_WEIGHT_ULTRALIGHT 200
|
||||
CONSTANT: PANGO_WEIGHT_LIGHT 300
|
||||
CONSTANT: PANGO_WEIGHT_BOOK 380
|
||||
CONSTANT: PANGO_WEIGHT_NORMAL 400
|
||||
CONSTANT: PANGO_WEIGHT_MEDIUM 500
|
||||
CONSTANT: PANGO_WEIGHT_SEMIBOLD 600
|
||||
CONSTANT: PANGO_WEIGHT_BOLD 700
|
||||
CONSTANT: PANGO_WEIGHT_ULTRABOLD 800
|
||||
CONSTANT: PANGO_WEIGHT_HEAVY 900
|
||||
CONSTANT: PANGO_WEIGHT_ULTRAHEAVY 1000
|
||||
|
||||
FUNCTION: PangoFontDescription*
|
||||
pango_font_description_new ( ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_font_description_free ( PangoFontDescription* desc ) ;
|
||||
|
||||
DESTRUCTOR: pango_font_description_free
|
||||
|
||||
FUNCTION: PangoFontDescription*
|
||||
pango_font_description_from_string ( c-string str ) ;
|
||||
|
||||
FUNCTION: c-string
|
||||
pango_font_description_to_string ( PangoFontDescription* desc ) ;
|
||||
|
||||
FUNCTION: c-string
|
||||
pango_font_description_to_filename ( PangoFontDescription* desc ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_font_description_set_family ( PangoFontDescription* desc, c-string family ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_font_description_set_style ( PangoFontDescription* desc, PangoStyle style ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_font_description_set_weight ( PangoFontDescription* desc, PangoWeight weight ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_font_description_set_size ( PangoFontDescription* desc, gint size ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_font_map_list_families ( PangoFontMap* fontmap, PangoFontFamily*** families, int* n_families ) ;
|
||||
|
||||
FUNCTION: c-string
|
||||
pango_font_family_get_name ( PangoFontFamily* family ) ;
|
||||
|
||||
FUNCTION: int
|
||||
pango_font_family_is_monospace ( PangoFontFamily* family ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_font_family_list_faces ( PangoFontFamily* family, PangoFontFace*** faces, int* n_faces ) ;
|
||||
|
||||
FUNCTION: c-string
|
||||
pango_font_face_get_face_name ( PangoFontFace* face ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_font_face_list_sizes ( PangoFontFace* face, int** sizes, int* n_sizes ) ;
|
||||
|
||||
FUNCTION: void pango_font_metrics_unref ( PangoFontMetrics* metrics ) ;
|
||||
|
||||
DESTRUCTOR: pango_font_metrics_unref
|
||||
|
||||
FUNCTION: int pango_font_metrics_get_ascent ( PangoFontMetrics* metrics ) ;
|
||||
|
||||
FUNCTION: int pango_font_metrics_get_descent ( PangoFontMetrics* metrics ) ;
|
||||
|
||||
FUNCTION: PangoFont* pango_font_map_load_font ( PangoFontMap* fontmap, PangoContext* context, PangoFontDescription* desc ) ;
|
||||
|
||||
FUNCTION: PangoFontMetrics* pango_context_get_metrics ( PangoContext* context, PangoFontDescription* desc, PangoLanguage* language ) ;
|
||||
|
||||
FUNCTION: PangoFontMetrics* pango_font_get_metrics ( PangoFont* font, PangoLanguage* language ) ;
|
||||
|
||||
MEMO: (cache-font-description) ( font -- description )
|
||||
[
|
||||
[ pango_font_description_new |pango_font_description_free ] dip {
|
||||
[ name>> pango_font_description_set_family ]
|
||||
[ size>> float>pango pango_font_description_set_size ]
|
||||
[ bold?>> PANGO_WEIGHT_BOLD PANGO_WEIGHT_NORMAL ? pango_font_description_set_weight ]
|
||||
[ italic?>> PANGO_STYLE_ITALIC PANGO_STYLE_NORMAL ? pango_font_description_set_style ]
|
||||
[ drop ]
|
||||
} 2cleave
|
||||
] with-destructors ;
|
||||
|
||||
: cache-font-description ( font -- description )
|
||||
strip-font-colors (cache-font-description) ;
|
||||
|
||||
[ \ (cache-font-description) reset-memoized ] "pango.fonts" add-startup-hook
|
|
@ -1 +0,0 @@
|
|||
bindings
|
|
@ -1,11 +0,0 @@
|
|||
IN: pango.layouts.tests
|
||||
USING: pango.layouts pango.cairo tools.test glib fonts accessors
|
||||
sequences combinators.short-circuit math destructors ;
|
||||
|
||||
[ t ] [
|
||||
[
|
||||
<font> "Helvetica" >>name 12 >>size
|
||||
"OH, HAI"
|
||||
cached-layout ink-rect>> dim>>
|
||||
] with-destructors [ 0 > ] all?
|
||||
] unit-test
|
|
@ -1,66 +0,0 @@
|
|||
! Copyright (C) 2008 Matthew Willis.
|
||||
! Copyright (C) 2009 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: arrays sequences alien alien.c-types alien.destructors
|
||||
alien.syntax math math.functions math.vectors destructors combinators
|
||||
colors fonts accessors assocs namespaces kernel pango pango.fonts
|
||||
glib unicode.data images cache init
|
||||
math.rectangles fry memoize io.encodings.utf8 classes.struct ;
|
||||
IN: pango.layouts
|
||||
|
||||
LIBRARY: pango
|
||||
|
||||
C-TYPE: PangoLayout
|
||||
C-TYPE: PangoLayoutIter
|
||||
C-TYPE: PangoLayoutLine
|
||||
|
||||
FUNCTION: PangoLayout*
|
||||
pango_layout_new ( PangoContext* context ) ;
|
||||
|
||||
FUNCTION: PangoContext*
|
||||
pango_layout_get_context ( PangoLayout* layout ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_layout_set_text ( PangoLayout* layout, c-string text, int length ) ;
|
||||
|
||||
FUNCTION: c-string
|
||||
pango_layout_get_text ( PangoLayout* layout ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_layout_get_size ( PangoLayout* layout, int* width, int* height ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_layout_set_font_description ( PangoLayout* layout, PangoFontDescription* desc ) ;
|
||||
|
||||
FUNCTION: PangoFontDescription*
|
||||
pango_layout_get_font_description ( PangoLayout* layout ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_layout_get_pixel_size ( PangoLayout* layout, int* width, int* height ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_layout_get_extents ( PangoLayout* layout, PangoRectangle* ink_rect, PangoRectangle* logical_rect ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_layout_get_pixel_extents ( PangoLayout* layout, PangoRectangle* ink_rect, PangoRectangle* logical_rect ) ;
|
||||
|
||||
FUNCTION: PangoLayoutLine*
|
||||
pango_layout_get_line_readonly ( PangoLayout* layout, int line ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_layout_line_index_to_x ( PangoLayoutLine* line, int index_, uint trailing, int* x_pos ) ;
|
||||
|
||||
FUNCTION: gboolean
|
||||
pango_layout_line_x_to_index ( PangoLayoutLine* line, int x_pos, int* index_, int* trailing ) ;
|
||||
|
||||
FUNCTION: PangoLayoutIter*
|
||||
pango_layout_get_iter ( PangoLayout* layout ) ;
|
||||
|
||||
FUNCTION: int
|
||||
pango_layout_iter_get_baseline ( PangoLayoutIter* iter ) ;
|
||||
|
||||
FUNCTION: void
|
||||
pango_layout_iter_free ( PangoLayoutIter* iter ) ;
|
||||
|
||||
DESTRUCTOR: pango_layout_iter_free
|
||||
|
|
@ -1,31 +1,29 @@
|
|||
! Copyright (C) 2008 Matthew Willis.
|
||||
! Copyright (C) 2009 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license
|
||||
USING: arrays system alien.destructors alien.c-types alien.syntax alien
|
||||
combinators math.rectangles kernel math alien.libraries classes.struct
|
||||
accessors ;
|
||||
IN: pango
|
||||
! Copyright (C) 2009 Anton Gorenko.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: accessors alien.syntax alien.c-types alien.destructors
|
||||
alien.strings alien.libraries arrays classes.struct combinators
|
||||
destructors fonts init kernel math math.rectangles memoize
|
||||
io.encodings.utf8 system
|
||||
gir glib glib.ffi ;
|
||||
|
||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
! Helpful functions from other parts of pango
|
||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
<<
|
||||
"pango" {
|
||||
{ [ os winnt? ] [ "libpango-1.0-0.dll" cdecl add-library ] }
|
||||
{ [ os macosx? ] [ "/opt/local/lib/libpango-1.0.0.dylib" cdecl add-library ] }
|
||||
{ [ os unix? ] [ drop ] }
|
||||
} cond
|
||||
>>
|
||||
|
||||
<< {
|
||||
{ [ os winnt? ] [ "pango" "libpango-1.0-0.dll" cdecl add-library ] }
|
||||
{ [ os macosx? ] [ "pango" "/opt/local/lib/libpango-1.0.0.dylib" cdecl add-library ] }
|
||||
{ [ os unix? ] [ ] }
|
||||
} cond >>
|
||||
IN: pango.ffi
|
||||
|
||||
LIBRARY: pango
|
||||
TYPEDEF: void PangoLayoutRun ! не совсем верно
|
||||
TYPEDEF: guint32 PangoGlyph
|
||||
|
||||
CONSTANT: PANGO_SCALE 1024
|
||||
IN-GIR: pango vocab:pango/Pango-1.0.gir
|
||||
|
||||
: pango>float ( n -- x ) PANGO_SCALE /f ; inline
|
||||
: float>pango ( x -- n ) PANGO_SCALE * >integer ; inline
|
||||
IN: pango.ffi
|
||||
|
||||
C-TYPE: PangoContext
|
||||
|
||||
FUNCTION: PangoContext* pango_context_new ( ) ;
|
||||
FORGET: PangoRectangle
|
||||
|
||||
STRUCT: PangoRectangle
|
||||
{ x int }
|
||||
|
@ -33,7 +31,36 @@ STRUCT: PangoRectangle
|
|||
{ width int }
|
||||
{ height int } ;
|
||||
|
||||
IN: pango
|
||||
|
||||
CONSTANT: PANGO_SCALE 1024
|
||||
|
||||
: pango>float ( n -- x ) PANGO_SCALE /f ; inline
|
||||
: float>pango ( x -- n ) PANGO_SCALE * >integer ; inline
|
||||
|
||||
: PangoRectangle>rect ( PangoRectangle -- rect )
|
||||
[ [ x>> pango>float ] [ y>> pango>float ] bi 2array ]
|
||||
[ [ width>> pango>float ] [ height>> pango>float ] bi 2array ] bi
|
||||
<rect> ;
|
||||
|
||||
DESTRUCTOR: pango_font_description_free
|
||||
|
||||
DESTRUCTOR: pango_layout_iter_free
|
||||
|
||||
! перенести в ui.*?
|
||||
MEMO: (cache-font-description) ( font -- description )
|
||||
[
|
||||
[ pango_font_description_new |pango_font_description_free ] dip {
|
||||
[ name>> utf8 string>alien pango_font_description_set_family ]
|
||||
[ size>> float>pango pango_font_description_set_size ]
|
||||
[ bold?>> PANGO_WEIGHT_BOLD PANGO_WEIGHT_NORMAL ? pango_font_description_set_weight ]
|
||||
[ italic?>> PANGO_STYLE_ITALIC PANGO_STYLE_NORMAL ? pango_font_description_set_style ]
|
||||
[ drop ]
|
||||
} 2cleave
|
||||
] with-destructors ;
|
||||
|
||||
: cache-font-description ( font -- description )
|
||||
strip-font-colors (cache-font-description) ;
|
||||
|
||||
[ \ (cache-font-description) reset-memoized ] "pango" add-startup-hook
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
! Copyright (C) 2009, 2010 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: accessors assocs cache kernel math math.vectors
|
||||
namespaces pango.cairo pango.layouts ui.text ui.text.private
|
||||
pango sequences ;
|
||||
namespaces pango pango.cairo ui.text ui.text.private
|
||||
sequences ;
|
||||
IN: ui.text.pango
|
||||
|
||||
SINGLETON: pango-renderer
|
||||
|
@ -31,4 +31,4 @@ M: pango-renderer line-metrics ( font string -- metrics )
|
|||
[ cached-layout metrics>> ]
|
||||
if-empty ;
|
||||
|
||||
pango-renderer font-renderer set-global
|
||||
pango-renderer font-renderer set-global
|
||||
|
|
Loading…
Reference in New Issue