123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329 |
- /****************************************************************************
- *
- * ftbitmap.h
- *
- * FreeType utility functions for bitmaps (specification).
- *
- * Copyright (C) 2004-2023 by
- * David Turner, Robert Wilhelm, and Werner Lemberg.
- *
- * This file is part of the FreeType project, and may only be used,
- * modified, and distributed under the terms of the FreeType project
- * license, LICENSE.TXT. By continuing to use, modify, or distribute
- * this file you indicate that you have read the license and
- * understand and accept it fully.
- *
- */
- #ifndef FTBITMAP_H_
- #define FTBITMAP_H_
- #include <freetype/freetype.h>
- #include <freetype/ftcolor.h>
- #ifdef FREETYPE_H
- #error "freetype.h of FreeType 1 has been loaded!"
- #error "Please fix the directory search order for header files"
- #error "so that freetype.h of FreeType 2 is found first."
- #endif
- FT_BEGIN_HEADER
- /**************************************************************************
- *
- * @section:
- * bitmap_handling
- *
- * @title:
- * Bitmap Handling
- *
- * @abstract:
- * Handling FT_Bitmap objects.
- *
- * @description:
- * This section contains functions for handling @FT_Bitmap objects,
- * automatically adjusting the target's bitmap buffer size as needed.
- *
- * Note that none of the functions changes the bitmap's 'flow' (as
- * indicated by the sign of the `pitch` field in @FT_Bitmap).
- *
- * To set the flow, assign an appropriate positive or negative value to
- * the `pitch` field of the target @FT_Bitmap object after calling
- * @FT_Bitmap_Init but before calling any of the other functions
- * described here.
- */
- /**************************************************************************
- *
- * @function:
- * FT_Bitmap_Init
- *
- * @description:
- * Initialize a pointer to an @FT_Bitmap structure.
- *
- * @inout:
- * abitmap ::
- * A pointer to the bitmap structure.
- *
- * @note:
- * A deprecated name for the same function is `FT_Bitmap_New`.
- */
- FT_EXPORT( void )
- FT_Bitmap_Init( FT_Bitmap *abitmap );
- /* deprecated */
- FT_EXPORT( void )
- FT_Bitmap_New( FT_Bitmap *abitmap );
- /**************************************************************************
- *
- * @function:
- * FT_Bitmap_Copy
- *
- * @description:
- * Copy a bitmap into another one.
- *
- * @input:
- * library ::
- * A handle to a library object.
- *
- * source ::
- * A handle to the source bitmap.
- *
- * @output:
- * target ::
- * A handle to the target bitmap.
- *
- * @return:
- * FreeType error code. 0~means success.
- *
- * @note:
- * `source->buffer` and `target->buffer` must neither be equal nor
- * overlap.
- */
- FT_EXPORT( FT_Error )
- FT_Bitmap_Copy( FT_Library library,
- const FT_Bitmap *source,
- FT_Bitmap *target );
- /**************************************************************************
- *
- * @function:
- * FT_Bitmap_Embolden
- *
- * @description:
- * Embolden a bitmap. The new bitmap will be about `xStrength` pixels
- * wider and `yStrength` pixels higher. The left and bottom borders are
- * kept unchanged.
- *
- * @input:
- * library ::
- * A handle to a library object.
- *
- * xStrength ::
- * How strong the glyph is emboldened horizontally. Expressed in 26.6
- * pixel format.
- *
- * yStrength ::
- * How strong the glyph is emboldened vertically. Expressed in 26.6
- * pixel format.
- *
- * @inout:
- * bitmap ::
- * A handle to the target bitmap.
- *
- * @return:
- * FreeType error code. 0~means success.
- *
- * @note:
- * The current implementation restricts `xStrength` to be less than or
- * equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO.
- *
- * If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, you
- * should call @FT_GlyphSlot_Own_Bitmap on the slot first.
- *
- * Bitmaps in @FT_PIXEL_MODE_GRAY2 and @FT_PIXEL_MODE_GRAY@ format are
- * converted to @FT_PIXEL_MODE_GRAY format (i.e., 8bpp).
- */
- FT_EXPORT( FT_Error )
- FT_Bitmap_Embolden( FT_Library library,
- FT_Bitmap* bitmap,
- FT_Pos xStrength,
- FT_Pos yStrength );
- /**************************************************************************
- *
- * @function:
- * FT_Bitmap_Convert
- *
- * @description:
- * Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, 8bpp or 32bpp to
- * a bitmap object with depth 8bpp, making the number of used bytes per
- * line (a.k.a. the 'pitch') a multiple of `alignment`.
- *
- * @input:
- * library ::
- * A handle to a library object.
- *
- * source ::
- * The source bitmap.
- *
- * alignment ::
- * The pitch of the bitmap is a multiple of this argument. Common
- * values are 1, 2, or 4.
- *
- * @output:
- * target ::
- * The target bitmap.
- *
- * @return:
- * FreeType error code. 0~means success.
- *
- * @note:
- * It is possible to call @FT_Bitmap_Convert multiple times without
- * calling @FT_Bitmap_Done (the memory is simply reallocated).
- *
- * Use @FT_Bitmap_Done to finally remove the bitmap object.
- *
- * The `library` argument is taken to have access to FreeType's memory
- * handling functions.
- *
- * `source->buffer` and `target->buffer` must neither be equal nor
- * overlap.
- */
- FT_EXPORT( FT_Error )
- FT_Bitmap_Convert( FT_Library library,
- const FT_Bitmap *source,
- FT_Bitmap *target,
- FT_Int alignment );
- /**************************************************************************
- *
- * @function:
- * FT_Bitmap_Blend
- *
- * @description:
- * Blend a bitmap onto another bitmap, using a given color.
- *
- * @input:
- * library ::
- * A handle to a library object.
- *
- * source ::
- * The source bitmap, which can have any @FT_Pixel_Mode format.
- *
- * source_offset ::
- * The offset vector to the upper left corner of the source bitmap in
- * 26.6 pixel format. It should represent an integer offset; the
- * function will set the lowest six bits to zero to enforce that.
- *
- * color ::
- * The color used to draw `source` onto `target`.
- *
- * @inout:
- * target ::
- * A handle to an `FT_Bitmap` object. It should be either initialized
- * as empty with a call to @FT_Bitmap_Init, or it should be of type
- * @FT_PIXEL_MODE_BGRA.
- *
- * atarget_offset ::
- * The offset vector to the upper left corner of the target bitmap in
- * 26.6 pixel format. It should represent an integer offset; the
- * function will set the lowest six bits to zero to enforce that.
- *
- * @return:
- * FreeType error code. 0~means success.
- *
- * @note:
- * This function doesn't perform clipping.
- *
- * The bitmap in `target` gets allocated or reallocated as needed; the
- * vector `atarget_offset` is updated accordingly.
- *
- * In case of allocation or reallocation, the bitmap's pitch is set to
- * `4 * width`. Both `source` and `target` must have the same bitmap
- * flow (as indicated by the sign of the `pitch` field).
- *
- * `source->buffer` and `target->buffer` must neither be equal nor
- * overlap.
- *
- * @since:
- * 2.10
- */
- FT_EXPORT( FT_Error )
- FT_Bitmap_Blend( FT_Library library,
- const FT_Bitmap* source,
- const FT_Vector source_offset,
- FT_Bitmap* target,
- FT_Vector *atarget_offset,
- FT_Color color );
- /**************************************************************************
- *
- * @function:
- * FT_GlyphSlot_Own_Bitmap
- *
- * @description:
- * Make sure that a glyph slot owns `slot->bitmap`.
- *
- * @input:
- * slot ::
- * The glyph slot.
- *
- * @return:
- * FreeType error code. 0~means success.
- *
- * @note:
- * This function is to be used in combination with @FT_Bitmap_Embolden.
- */
- FT_EXPORT( FT_Error )
- FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot );
- /**************************************************************************
- *
- * @function:
- * FT_Bitmap_Done
- *
- * @description:
- * Destroy a bitmap object initialized with @FT_Bitmap_Init.
- *
- * @input:
- * library ::
- * A handle to a library object.
- *
- * bitmap ::
- * The bitmap object to be freed.
- *
- * @return:
- * FreeType error code. 0~means success.
- *
- * @note:
- * The `library` argument is taken to have access to FreeType's memory
- * handling functions.
- */
- FT_EXPORT( FT_Error )
- FT_Bitmap_Done( FT_Library library,
- FT_Bitmap *bitmap );
- /* */
- FT_END_HEADER
- #endif /* FTBITMAP_H_ */
- /* END */
|