@react-gnome/gjs-esm-types
Version:
TypeScript module declarations for GJS ESM modules.
522 lines (499 loc) • 21.1 kB
TypeScript
/*
* Type Definitions for Gjs (https://gjs.guide/)
*
* These type definitions are automatically generated, do not edit them by hand.
* If you found a bug fix it in ts-for-gir itself or create a bug report on https://github.com/gjsify/ts-for-gjs
*/
import type cairo from "gi://cairo?version=1.0";
import type Pango from "gi://Pango?version=1.0";
import type HarfBuzz from "gi://HarfBuzz?version=0.0";
import type freetype2 from "gi://freetype2?version=2.0";
import type GObject from "gi://GObject?version=2.0";
import type GLib from "gi://GLib?version=2.0";
import type Gio from "gi://Gio?version=2.0";
declare module "gi://PangoCairo?version=1.0" {
/**
* Retrieves any font rendering options previously set with
* [func`PangoCairo`.context_set_font_options].
*
* This function does not report options that are derived from
* the target surface by [func`update_context]`.
* @param context a `PangoContext`, from a pangocairo font map
* @returns the font options previously set on the context, or %NULL if no options have been set. This value is owned by the context and must not be modified or freed.
*/
function context_get_font_options(
context: Pango.Context
): cairo.FontOptions | null;
/**
* Gets the resolution for the context.
*
* See [func`PangoCairo`.context_set_resolution]
* @param context a `PangoContext`, from a pangocairo font map
* @returns the resolution in "dots per inch". A negative value will be returned if no resolution has previously been set.
*/
function context_get_resolution(context: Pango.Context): number;
/**
* Sets the font options used when rendering text with this context.
*
* These options override any options that [func`update_context]`
* derives from the target surface.
* @param context a `PangoContext`, from a pangocairo font map
* @param options a `cairo_font_options_t`, or %NULL to unset any previously set options. A copy is made.
*/
function context_set_font_options(
context: Pango.Context,
options: cairo.FontOptions | null
): void;
/**
* Sets the resolution for the context.
*
* This is a scale factor between points specified in a `PangoFontDescription`
* and Cairo units. The default value is 96, meaning that a 10 point font will
* be 13 units high. (10 * 96. / 72. = 13.3).
* @param context a `PangoContext`, from a pangocairo font map
* @param dpi the resolution in "dots per inch". (Physical inches aren't actually involved; the terminology is conventional.) A 0 or negative value means to use the resolution from the font map.
*/
function context_set_resolution(context: Pango.Context, dpi: number): void;
/**
* Sets callback function for context to use for rendering attributes
* of type %PANGO_ATTR_SHAPE.
*
* See `PangoCairoShapeRendererFunc` for details.
* @param context a `PangoContext`, from a pangocairo font map
* @param func Callback function for rendering attributes of type %PANGO_ATTR_SHAPE, or %NULL to disable shape rendering.
*/
function context_set_shape_renderer(
context: Pango.Context,
func: ShapeRendererFunc | null
): void;
/**
* Creates a context object set up to match the current transformation
* and target surface of the Cairo context.
*
* This context can then be
* used to create a layout using [ctor`Pango`.Layout.new].
*
* This function is a convenience function that creates a context using
* the default font map, then updates it to `cr`. If you just need to
* create a layout for use with `cr` and do not need to access `PangoContext`
* directly, you can use [func`create_layout]` instead.
* @param cr a Cairo context
* @returns the newly created `PangoContext`
*/
function create_context(cr: cairo.Context): Pango.Context;
/**
* Creates a layout object set up to match the current transformation
* and target surface of the Cairo context.
*
* This layout can then be used for text measurement with functions
* like [method`Pango`.Layout.get_size] or drawing with functions like
* [func`show_layout]`. If you change the transformation or target
* surface for `cr,` you need to call [func`update_layout]`.
*
* This function is the most convenient way to use Cairo with Pango,
* however it is slightly inefficient since it creates a separate
* `PangoContext` object for each layout. This might matter in an
* application that was laying out large amounts of text.
* @param cr a Cairo context
* @returns the newly created `PangoLayout`
*/
function create_layout(cr: cairo.Context): Pango.Layout;
/**
* Add a squiggly line to the current path in the specified cairo context that
* approximately covers the given rectangle in the style of an underline used
* to indicate a spelling error.
*
* The width of the underline is rounded to an integer number of up/down
* segments and the resulting rectangle is centered in the original rectangle.
* @param cr a Cairo context
* @param x The X coordinate of one corner of the rectangle
* @param y The Y coordinate of one corner of the rectangle
* @param width Non-negative width of the rectangle
* @param height Non-negative height of the rectangle
*/
function error_underline_path(
cr: cairo.Context,
x: number,
y: number,
width: number,
height: number
): void;
/**
* Gets a default `PangoCairoFontMap` to use with Cairo.
*
* Note that the type of the returned object will depend on the
* particular font backend Cairo was compiled to use; you generally
* should only use the `PangoFontMap` and `PangoCairoFontMap`
* interfaces on the returned object.
*
* The default Cairo fontmap can be changed by using
* [method`PangoCairo`.FontMap.set_default]. This can be used to
* change the Cairo font backend that the default fontmap uses
* for example.
*
* Note that since Pango 1.32.6, the default fontmap is per-thread.
* Each thread gets its own default fontmap. In this way, PangoCairo
* can be used safely from multiple threads.
* @returns the default PangoCairo fontmap for the current thread. This object is owned by Pango and must not be freed.
*/
function font_map_get_default(): Pango.FontMap;
/**
* Creates a new `PangoCairoFontMap` object.
*
* A fontmap is used to cache information about available fonts,
* and holds certain global parameters such as the resolution.
* In most cases, you can use `func`PangoCairo`.font_map_get_default]
* instead.
*
* Note that the type of the returned object will depend
* on the particular font backend Cairo was compiled to use;
* You generally should only use the `PangoFontMap` and
* `PangoCairoFontMap` interfaces on the returned object.
*
* You can override the type of backend returned by using an
* environment variable %PANGOCAIRO_BACKEND. Supported types,
* based on your build, are fc (fontconfig), win32, and coretext.
* If requested type is not available, NULL is returned. Ie.
* this is only useful for testing, when at least two backends
* are compiled in.
* @returns the newly allocated `PangoFontMap`, which should be freed with g_object_unref().
*/
function font_map_new(): Pango.FontMap;
/**
* Creates a new `PangoCairoFontMap` object of the type suitable
* to be used with cairo font backend of type `fonttype`.
*
* In most cases one should simply use [func`PangoCairo`.FontMap.new], or
* in fact in most of those cases, just use [func`PangoCairo`.FontMap.get_default].
* @param fonttype desired #cairo_font_type_t
* @returns the newly allocated `PangoFontMap` of suitable type which should be freed with g_object_unref(), or %NULL if the requested cairo font backend is not supported / compiled in.
*/
function font_map_new_for_font_type(
fonttype: cairo.FontType
): Pango.FontMap | null;
/**
* Adds the glyphs in `glyphs` to the current path in the specified
* cairo context.
*
* The origin of the glyphs (the left edge of the baseline)
* will be at the current point of the cairo context.
* @param cr a Cairo context
* @param font a `PangoFont` from a `PangoCairoFontMap`
* @param glyphs a `PangoGlyphString`
*/
function glyph_string_path(
cr: cairo.Context,
font: Pango.Font,
glyphs: Pango.GlyphString
): void;
/**
* Adds the text in `PangoLayoutLine` to the current path in the
* specified cairo context.
*
* The origin of the glyphs (the left edge of the line) will be
* at the current point of the cairo context.
* @param cr a Cairo context
* @param line a `PangoLayoutLine`
*/
function layout_line_path(cr: cairo.Context, line: Pango.LayoutLine): void;
/**
* Adds the text in a `PangoLayout` to the current path in the
* specified cairo context.
*
* The top-left corner of the `PangoLayout` will be at the
* current point of the cairo context.
* @param cr a Cairo context
* @param layout a Pango layout
*/
function layout_path(cr: cairo.Context, layout: Pango.Layout): void;
/**
* Draw a squiggly line in the specified cairo context that approximately
* covers the given rectangle in the style of an underline used to indicate a
* spelling error.
*
* The width of the underline is rounded to an integer
* number of up/down segments and the resulting rectangle is centered in the
* original rectangle.
* @param cr a Cairo context
* @param x The X coordinate of one corner of the rectangle
* @param y The Y coordinate of one corner of the rectangle
* @param width Non-negative width of the rectangle
* @param height Non-negative height of the rectangle
*/
function show_error_underline(
cr: cairo.Context,
x: number,
y: number,
width: number,
height: number
): void;
/**
* Draws the glyphs in `glyph_item` in the specified cairo context,
*
* embedding the text associated with the glyphs in the output if the
* output format supports it (PDF for example), otherwise it acts
* similar to [func`show_glyph_string]`.
*
* The origin of the glyphs (the left edge of the baseline) will
* be drawn at the current point of the cairo context.
*
* Note that `text` is the start of the text for layout, which is then
* indexed by `glyph_item->item->offset`.
* @param cr a Cairo context
* @param text the UTF-8 text that `glyph_item` refers to
* @param glyph_item a `PangoGlyphItem`
*/
function show_glyph_item(
cr: cairo.Context,
text: string | null,
glyph_item: Pango.GlyphItem
): void;
/**
* Draws the glyphs in `glyphs` in the specified cairo context.
*
* The origin of the glyphs (the left edge of the baseline) will
* be drawn at the current point of the cairo context.
* @param cr a Cairo context
* @param font a `PangoFont` from a `PangoCairoFontMap`
* @param glyphs a `PangoGlyphString`
*/
function show_glyph_string(
cr: cairo.Context,
font: Pango.Font,
glyphs: Pango.GlyphString
): void;
/**
* Draws a `PangoLayout` in the specified cairo context.
*
* The top-left corner of the `PangoLayout` will be drawn
* at the current point of the cairo context.
* @param cr a Cairo context
* @param layout a Pango layout
*/
function show_layout(cr: cairo.Context, layout: Pango.Layout): void;
/**
* Draws a `PangoLayoutLine` in the specified cairo context.
*
* The origin of the glyphs (the left edge of the line) will
* be drawn at the current point of the cairo context.
* @param cr a Cairo context
* @param line a `PangoLayoutLine`
*/
function show_layout_line(cr: cairo.Context, line: Pango.LayoutLine): void;
/**
* Updates a `PangoContext` previously created for use with Cairo to
* match the current transformation and target surface of a Cairo
* context.
*
* If any layouts have been created for the context, it's necessary
* to call [method`Pango`.Layout.context_changed] on those layouts.
* @param cr a Cairo context
* @param context a `PangoContext`, from a pangocairo font map
*/
function update_context(cr: cairo.Context, context: Pango.Context): void;
/**
* Updates the private `PangoContext` of a `PangoLayout` created with
* [func`create_layout]` to match the current transformation and target
* surface of a Cairo context.
* @param cr a Cairo context
* @param layout a `PangoLayout`, from [func`create_layout]`
*/
function update_layout(cr: cairo.Context, layout: Pango.Layout): void;
/**
* Function type for rendering attributes of type %PANGO_ATTR_SHAPE
* with Pango's Cairo renderer.
* @callback
* @param cr a Cairo context with current point set to where the shape should be rendered
* @param attr the %PANGO_ATTR_SHAPE to render
* @param do_path whether only the shape path should be appended to current path of `cr` and no filling/stroking done. This will be set to %TRUE when called from pango_cairo_layout_path() and pango_cairo_layout_line_path() rendering functions.
*/
interface ShapeRendererFunc {
(cr: cairo.Context, attr: Pango.AttrShape, do_path: boolean): void;
}
module Font {
// Constructor properties interface
interface ConstructorProperties
extends Pango.Font.ConstructorProperties,
GObject.Object.ConstructorProperties {}
}
interface Font extends Pango.Font {
// Owm methods of PangoCairo-1.0.PangoCairo.Font
/**
* Gets the `cairo_scaled_font_t` used by `font`.
* The scaled font can be referenced and kept using
* cairo_scaled_font_reference().
* @returns the `cairo_scaled_font_t` used by @font
*/
get_scaled_font(): cairo.ScaledFont | null;
// Class property signals of PangoCairo-1.0.PangoCairo.Font
connect(sigName: string, callback: (...args: any[]) => void): number;
connect_after(sigName: string, callback: (...args: any[]) => void): number;
emit(sigName: string, ...args: any[]): void;
disconnect(id: number): void;
}
/**
* `PangoCairoFont` is an interface exported by fonts for
* use with Cairo.
*
* The actual type of the font will depend on the particular
* font technology Cairo was compiled to use.
* @interface
*/
class Font extends GObject.Object {
// Own properties of PangoCairo-1.0.PangoCairo.Font
static name: string;
static $gtype: GObject.GType<Font>;
// Constructors of PangoCairo-1.0.PangoCairo.Font
constructor(config?: Font.ConstructorProperties);
_init(config?: Font.ConstructorProperties): void;
}
module FontMap {
// Constructor properties interface
interface ConstructorProperties
extends Pango.FontMap.ConstructorProperties,
GObject.Object.ConstructorProperties {}
}
interface FontMap extends Pango.FontMap {
// Owm methods of PangoCairo-1.0.PangoCairo.FontMap
/**
* Gets the type of Cairo font backend that `fontmap` uses.
* @returns the `cairo_font_type_t` cairo font backend type
*/
get_font_type(): cairo.FontType;
/**
* Gets the resolution for the fontmap.
*
* See [method`PangoCairo`.FontMap.set_resolution].
* @returns the resolution in "dots per inch"
*/
get_resolution(): number;
/**
* Sets a default `PangoCairoFontMap` to use with Cairo.
*
* This can be used to change the Cairo font backend that the
* default fontmap uses for example. The old default font map
* is unreffed and the new font map referenced.
*
* Note that since Pango 1.32.6, the default fontmap is per-thread.
* This function only changes the default fontmap for
* the current thread. Default fontmaps of existing threads
* are not changed. Default fontmaps of any new threads will
* still be created using [func`PangoCairo`.FontMap.new].
*
* A value of %NULL for `fontmap` will cause the current default
* font map to be released and a new default font map to be created
* on demand, using [func`PangoCairo`.FontMap.new].
*/
set_default(): void;
/**
* Sets the resolution for the fontmap.
*
* This is a scale factor between
* points specified in a `PangoFontDescription` and Cairo units. The
* default value is 96, meaning that a 10 point font will be 13
* units high. (10 * 96. / 72. = 13.3).
* @param dpi the resolution in "dots per inch". (Physical inches aren't actually involved; the terminology is conventional.)
*/
set_resolution(dpi: number): void;
// Class property signals of PangoCairo-1.0.PangoCairo.FontMap
connect(
sigName: "notify::item-type",
callback: ($obj: FontMap, pspec: GObject.ParamSpec) => void
): number;
connect_after(
sigName: "notify::item-type",
callback: ($obj: FontMap, pspec: GObject.ParamSpec) => void
): number;
emit(sigName: "notify::item-type", ...args: any[]): void;
connect(
sigName: "notify::n-items",
callback: ($obj: FontMap, pspec: GObject.ParamSpec) => void
): number;
connect_after(
sigName: "notify::n-items",
callback: ($obj: FontMap, pspec: GObject.ParamSpec) => void
): number;
emit(sigName: "notify::n-items", ...args: any[]): void;
connect(sigName: string, callback: (...args: any[]) => void): number;
connect_after(sigName: string, callback: (...args: any[]) => void): number;
emit(sigName: string, ...args: any[]): void;
disconnect(id: number): void;
}
/**
* `PangoCairoFontMap` is an interface exported by font maps for
* use with Cairo.
*
* The actual type of the font map will depend on the particular
* font technology Cairo was compiled to use.
* @interface
*/
class FontMap extends GObject.Object {
// Own properties of PangoCairo-1.0.PangoCairo.FontMap
static name: string;
static $gtype: GObject.GType<FontMap>;
// Constructors of PangoCairo-1.0.PangoCairo.FontMap
constructor(config?: FontMap.ConstructorProperties);
_init(config?: FontMap.ConstructorProperties): void;
/**
* Creates a new `PangoCairoFontMap` object.
*
* A fontmap is used to cache information about available fonts,
* and holds certain global parameters such as the resolution.
* In most cases, you can use `func`PangoCairo`.font_map_get_default]
* instead.
*
* Note that the type of the returned object will depend
* on the particular font backend Cairo was compiled to use;
* You generally should only use the `PangoFontMap` and
* `PangoCairoFontMap` interfaces on the returned object.
*
* You can override the type of backend returned by using an
* environment variable %PANGOCAIRO_BACKEND. Supported types,
* based on your build, are fc (fontconfig), win32, and coretext.
* If requested type is not available, NULL is returned. Ie.
* this is only useful for testing, when at least two backends
* are compiled in.
* @returns the newly allocated `PangoFontMap`, which should be freed with g_object_unref().
*/
static new(): Pango.FontMap;
/**
* Creates a new `PangoCairoFontMap` object of the type suitable
* to be used with cairo font backend of type `fonttype`.
*
* In most cases one should simply use [func`PangoCairo`.FontMap.new], or
* in fact in most of those cases, just use [func`PangoCairo`.FontMap.get_default].
* @param fonttype desired #cairo_font_type_t
* @returns the newly allocated `PangoFontMap` of suitable type which should be freed with g_object_unref(), or %NULL if the requested cairo font backend is not supported / compiled in.
*/
static new_for_font_type(fonttype: cairo.FontType): Pango.FontMap | null;
/**
* Gets a default `PangoCairoFontMap` to use with Cairo.
*
* Note that the type of the returned object will depend on the
* particular font backend Cairo was compiled to use; you generally
* should only use the `PangoFontMap` and `PangoCairoFontMap`
* interfaces on the returned object.
*
* The default Cairo fontmap can be changed by using
* [method`PangoCairo`.FontMap.set_default]. This can be used to
* change the Cairo font backend that the default fontmap uses
* for example.
*
* Note that since Pango 1.32.6, the default fontmap is per-thread.
* Each thread gets its own default fontmap. In this way, PangoCairo
* can be used safely from multiple threads.
* @returns the default PangoCairo fontmap for the current thread. This object is owned by Pango and must not be freed.
*/
static get_default(): Pango.FontMap;
}
/**
* Name of the imported GIR library
* @see https://gitlab.gnome.org/GNOME/gjs/-/blob/master/gi/ns.cpp#L188
*/
const __name__: string;
/**
* Version of the imported GIR library
* @see https://gitlab.gnome.org/GNOME/gjs/-/blob/master/gi/ns.cpp#L189
*/
const __version__: string;
}