summaryrefslogtreecommitdiff
path: root/src/dense/ftdense.h
blob: 677b2ea33991c6cf25926af597fcf62573410f29 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/* Dense rasterizer header*/

#ifndef FTDENSE_H_
#define FTDENSE_H_

#include <ft2build.h>
#include FT_CONFIG_CONFIG_H
#include <freetype/ftimage.h>

FT_BEGIN_HEADER

#ifndef FT_EXPORT_VAR
#define FT_EXPORT_VAR( x ) extern x
#endif
FT_EXPORT_VAR( const FT_Raster_Funcs ) ft_dense_raster;

#ifdef __cplusplus
extern "C"
{
#endif

  typedef struct
  {
    /** The array used to store signed area differences. */
    float* m_a;
    /** The number of elements in m_a. */
    int m_a_size;
    /** The width of the current raster in pixels. */
    int m_w;
    /** The height of the current raster in pixels. */
    int m_h;
    /** The x origin of the raster. */
    int m_origin_x;
    /** The y origin of the raster. */
    int m_origin_y;

    FT_Pos prev_x, prev_y;

    FT_Outline outline;
  } dense_worker;

  void dense_render_line( dense_worker* worker, FT_Pos to_x, FT_Pos to_y );
  void dense_render_quadratic( dense_worker* worker,
                               FT_Vector* control,
                               FT_Vector* to );
  void dense_render_cubic( dense_worker* worker,
                           FT_Vector*    control_1,
                           FT_Vector*    control_2,
                           FT_Vector*    to );

#ifdef __cplusplus
}  // extern "C"
#endif

FT_END_HEADER

#endif /* FTDENSE_H_ */

/* END */