/***************************************************************************/ | |
/* */ | |
/* ftbitmap.h */ | |
/* */ | |
/* FreeType utility functions for bitmaps (specification). */ | |
/* */ | |
/* Copyright 2004-2015 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 <ft2build.h> | |
#include FT_FREETYPE_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. */ | |
/* Note that none of the functions changes the bitmap's `flow' (as */ | |
/* indicated by the sign of the `pitch' field in `FT_Bitmap'). */ | |
/* */ | |
/*************************************************************************/ | |
/*************************************************************************/ | |
/* */ | |
/* <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. */ | |
/* */ | |
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 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 */ | |
/* parameter. 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. */ | |
/* */ | |
FT_EXPORT( FT_Error ) | |
FT_Bitmap_Convert( FT_Library library, | |
const FT_Bitmap *source, | |
FT_Bitmap *target, | |
FT_Int alignment ); | |
/*************************************************************************/ | |
/* */ | |
/* <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 */ |