Github User Fetcher 1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
hb-blob.h File Reference
#include "hb-common.h"

Go to the source code of this file.

Typedefs

typedef struct hb_blob_t hb_blob_t
 

Enumerations

enum  hb_memory_mode_t { HB_MEMORY_MODE_DUPLICATE , HB_MEMORY_MODE_READONLY , HB_MEMORY_MODE_WRITABLE , HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE }
 

Functions

HB_EXTERN hb_blob_thb_blob_create (const char *data, unsigned int length, hb_memory_mode_t mode, void *user_data, hb_destroy_func_t destroy)
 
HB_EXTERN hb_blob_thb_blob_create_or_fail (const char *data, unsigned int length, hb_memory_mode_t mode, void *user_data, hb_destroy_func_t destroy)
 
HB_EXTERN hb_blob_thb_blob_create_from_file (const char *file_name)
 
HB_EXTERN hb_blob_thb_blob_create_from_file_or_fail (const char *file_name)
 
HB_EXTERN hb_blob_thb_blob_create_sub_blob (hb_blob_t *parent, unsigned int offset, unsigned int length)
 
HB_EXTERN hb_blob_thb_blob_copy_writable_or_fail (hb_blob_t *blob)
 
HB_EXTERN hb_blob_thb_blob_get_empty (void)
 
HB_EXTERN hb_blob_thb_blob_reference (hb_blob_t *blob)
 
HB_EXTERN void hb_blob_destroy (hb_blob_t *blob)
 
HB_EXTERN hb_bool_t hb_blob_set_user_data (hb_blob_t *blob, hb_user_data_key_t *key, void *data, hb_destroy_func_t destroy, hb_bool_t replace)
 
HB_EXTERN void * hb_blob_get_user_data (const hb_blob_t *blob, hb_user_data_key_t *key)
 
HB_EXTERN void hb_blob_make_immutable (hb_blob_t *blob)
 
HB_EXTERN hb_bool_t hb_blob_is_immutable (hb_blob_t *blob)
 
HB_EXTERN unsigned int hb_blob_get_length (hb_blob_t *blob)
 
HB_EXTERN const char * hb_blob_get_data (hb_blob_t *blob, unsigned int *length)
 
HB_EXTERN char * hb_blob_get_data_writable (hb_blob_t *blob, unsigned int *length)
 

Typedef Documentation

◆ hb_blob_t

typedef struct hb_blob_t hb_blob_t

hb_blob_t:

Data type for blobs. A blob wraps a chunk of binary data and facilitates its lifecycle management between a client program and HarfBuzz.

Definition at line 84 of file hb-blob.h.

Enumeration Type Documentation

◆ hb_memory_mode_t

hb_memory_mode_t: @HB_MEMORY_MODE_DUPLICATE: HarfBuzz immediately makes a copy of the data. @HB_MEMORY_MODE_READONLY: HarfBuzz client will never modify the data, and HarfBuzz will never modify the data. @HB_MEMORY_MODE_WRITABLE: HarfBuzz client made a copy of the data solely for HarfBuzz, so HarfBuzz may modify the data. @HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE: See above

Data type holding the memory modes available to client programs.

Regarding these various memory-modes:

  • In no case shall the HarfBuzz client modify memory that is passed to HarfBuzz in a blob. If there is any such possibility, @HB_MEMORY_MODE_DUPLICATE should be used such that HarfBuzz makes a copy immediately,
  • Use @HB_MEMORY_MODE_READONLY otherwise, unless you really really really know what you are doing,
  • @HB_MEMORY_MODE_WRITABLE is appropriate if you really made a copy of data solely for the purpose of passing to HarfBuzz and doing that just once (no reuse!),
  • If the font is mmap()ed, it's okay to use @HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE, however, using that mode correctly is very tricky. Use @HB_MEMORY_MODE_READONLY instead.
Enumerator
HB_MEMORY_MODE_DUPLICATE 
HB_MEMORY_MODE_READONLY 
HB_MEMORY_MODE_WRITABLE 
HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE 

Definition at line 69 of file hb-blob.h.

69 {
hb_memory_mode_t
Definition hb-blob.h:69
@ HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE
Definition hb-blob.h:73
@ HB_MEMORY_MODE_WRITABLE
Definition hb-blob.h:72
@ HB_MEMORY_MODE_READONLY
Definition hb-blob.h:71
@ HB_MEMORY_MODE_DUPLICATE
Definition hb-blob.h:70

Function Documentation

◆ hb_blob_copy_writable_or_fail()

HB_EXTERN hb_blob_t * hb_blob_copy_writable_or_fail ( hb_blob_t * blob)

◆ hb_blob_create()

HB_EXTERN hb_blob_t * hb_blob_create ( const char * data,
unsigned int length,
hb_memory_mode_t mode,
void * user_data,
hb_destroy_func_t destroy )

◆ hb_blob_create_from_file()

HB_EXTERN hb_blob_t * hb_blob_create_from_file ( const char * file_name)

◆ hb_blob_create_from_file_or_fail()

HB_EXTERN hb_blob_t * hb_blob_create_from_file_or_fail ( const char * file_name)

◆ hb_blob_create_or_fail()

HB_EXTERN hb_blob_t * hb_blob_create_or_fail ( const char * data,
unsigned int length,
hb_memory_mode_t mode,
void * user_data,
hb_destroy_func_t destroy )

◆ hb_blob_create_sub_blob()

HB_EXTERN hb_blob_t * hb_blob_create_sub_blob ( hb_blob_t * parent,
unsigned int offset,
unsigned int length )

◆ hb_blob_destroy()

HB_EXTERN void hb_blob_destroy ( hb_blob_t * blob)

◆ hb_blob_get_data()

HB_EXTERN const char * hb_blob_get_data ( hb_blob_t * blob,
unsigned int * length )

◆ hb_blob_get_data_writable()

HB_EXTERN char * hb_blob_get_data_writable ( hb_blob_t * blob,
unsigned int * length )

◆ hb_blob_get_empty()

HB_EXTERN hb_blob_t * hb_blob_get_empty ( void )

◆ hb_blob_get_length()

HB_EXTERN unsigned int hb_blob_get_length ( hb_blob_t * blob)

◆ hb_blob_get_user_data()

HB_EXTERN void * hb_blob_get_user_data ( const hb_blob_t * blob,
hb_user_data_key_t * key )

◆ hb_blob_is_immutable()

HB_EXTERN hb_bool_t hb_blob_is_immutable ( hb_blob_t * blob)

◆ hb_blob_make_immutable()

HB_EXTERN void hb_blob_make_immutable ( hb_blob_t * blob)

◆ hb_blob_reference()

HB_EXTERN hb_blob_t * hb_blob_reference ( hb_blob_t * blob)

◆ hb_blob_set_user_data()

HB_EXTERN hb_bool_t hb_blob_set_user_data ( hb_blob_t * blob,
hb_user_data_key_t * key,
void * data,
hb_destroy_func_t destroy,
hb_bool_t replace )