KiCad PCB EDA Suite
potracelib.h File Reference

Go to the source code of this file.

Classes

struct  potrace_progress_s
 
struct  potrace_param_s
 
struct  potrace_bitmap_s
 
struct  potrace_dpoint_s
 
struct  potrace_curve_s
 
struct  potrace_path_s
 
struct  potrace_state_s
 

Macros

#define POTRACE_TURNPOLICY_BLACK   0
 
#define POTRACE_TURNPOLICY_WHITE   1
 
#define POTRACE_TURNPOLICY_LEFT   2
 
#define POTRACE_TURNPOLICY_RIGHT   3
 
#define POTRACE_TURNPOLICY_MINORITY   4
 
#define POTRACE_TURNPOLICY_MAJORITY   5
 
#define POTRACE_TURNPOLICY_RANDOM   6
 
#define POTRACE_CURVETO   1
 
#define POTRACE_CORNER   2
 
#define POTRACE_STATUS_OK   0
 
#define POTRACE_STATUS_INCOMPLETE   1
 

Typedefs

typedef struct potrace_progress_s potrace_progress_t
 
typedef struct potrace_param_s potrace_param_t
 
typedef unsigned long potrace_word
 
typedef struct potrace_bitmap_s potrace_bitmap_t
 
typedef struct potrace_dpoint_s potrace_dpoint_t
 
typedef struct potrace_curve_s potrace_curve_t
 
typedef struct potrace_path_s potrace_path_t
 
typedef struct potrace_state_s potrace_state_t
 

Functions

potrace_param_tpotrace_param_default (void)
 
void potrace_param_free (potrace_param_t *p)
 
potrace_state_tpotrace_trace (const potrace_param_t *param, const potrace_bitmap_t *bm)
 
void potrace_state_free (potrace_state_t *st)
 
const char * potrace_version (void)
 

Macro Definition Documentation

◆ POTRACE_CORNER

#define POTRACE_CORNER   2

Definition at line 79 of file potracelib.h.

◆ POTRACE_CURVETO

#define POTRACE_CURVETO   1

Definition at line 78 of file potracelib.h.

◆ POTRACE_STATUS_INCOMPLETE

#define POTRACE_STATUS_INCOMPLETE   1

Definition at line 111 of file potracelib.h.

◆ POTRACE_STATUS_OK

#define POTRACE_STATUS_OK   0

Definition at line 110 of file potracelib.h.

◆ POTRACE_TURNPOLICY_BLACK

#define POTRACE_TURNPOLICY_BLACK   0

Definition at line 19 of file potracelib.h.

◆ POTRACE_TURNPOLICY_LEFT

#define POTRACE_TURNPOLICY_LEFT   2

Definition at line 21 of file potracelib.h.

◆ POTRACE_TURNPOLICY_MAJORITY

#define POTRACE_TURNPOLICY_MAJORITY   5

Definition at line 24 of file potracelib.h.

◆ POTRACE_TURNPOLICY_MINORITY

#define POTRACE_TURNPOLICY_MINORITY   4

Definition at line 23 of file potracelib.h.

◆ POTRACE_TURNPOLICY_RANDOM

#define POTRACE_TURNPOLICY_RANDOM   6

Definition at line 25 of file potracelib.h.

◆ POTRACE_TURNPOLICY_RIGHT

#define POTRACE_TURNPOLICY_RIGHT   3

Definition at line 22 of file potracelib.h.

◆ POTRACE_TURNPOLICY_WHITE

#define POTRACE_TURNPOLICY_WHITE   1

Definition at line 20 of file potracelib.h.

Typedef Documentation

◆ potrace_bitmap_t

Definition at line 65 of file potracelib.h.

◆ potrace_curve_t

Definition at line 89 of file potracelib.h.

◆ potrace_dpoint_t

Definition at line 75 of file potracelib.h.

◆ potrace_param_t

Definition at line 47 of file potracelib.h.

◆ potrace_path_t

Definition at line 105 of file potracelib.h.

◆ potrace_progress_t

Definition at line 35 of file potracelib.h.

◆ potrace_state_t

Definition at line 120 of file potracelib.h.

◆ potrace_word

typedef unsigned long potrace_word

Definition at line 53 of file potracelib.h.

Function Documentation

◆ potrace_param_default()

potrace_param_t* potrace_param_default ( void  )

Definition at line 36 of file potracelib.cpp.

37 {
38  potrace_param_t* p;
39 
40  p = (potrace_param_t*) malloc( sizeof( potrace_param_t ) );
41 
42  if( !p )
43  {
44  return NULL;
45  }
46 
47  memcpy( p, &param_default, sizeof( potrace_param_t ) );
48  return p;
49 }
static const potrace_param_t param_default
Definition: potracelib.cpp:19

References param_default.

◆ potrace_param_free()

void potrace_param_free ( potrace_param_t p)

Definition at line 124 of file potracelib.cpp.

125 {
126  free( p );
127 }

◆ potrace_state_free()

void potrace_state_free ( potrace_state_t st)

Definition at line 116 of file potracelib.cpp.

117 {
118  pathlist_free( st->plist );
119  free( st );
120 }
void pathlist_free(path_t *plist)
Definition: curve.cpp:81
potrace_path_t * plist
Definition: potracelib.h:116

References pathlist_free(), and potrace_state_s::plist.

◆ potrace_trace()

potrace_state_t* potrace_trace ( const potrace_param_t param,
const potrace_bitmap_t bm 
)

Definition at line 58 of file potracelib.cpp.

59 {
60  int r;
61  path_t* plist = NULL;
62  potrace_state_t* st;
63  progress_t prog;
64  progress_t subprog;
65 
66  /* prepare private progress bar state */
67  prog.callback = param->progress.callback;
68  prog.data = param->progress.data;
69  prog.min = param->progress.min;
70  prog.max = param->progress.max;
71  prog.epsilon = param->progress.epsilon;
72  prog.d_prev = param->progress.min;
73 
74  /* allocate state object */
75  st = (potrace_state_t*) malloc( sizeof( potrace_state_t ) );
76 
77  if( !st )
78  {
79  return NULL;
80  }
81 
82  progress_subrange_start( 0.0, 0.1, &prog, &subprog );
83 
84  /* process the image */
85  r = bm_to_pathlist( bm, &plist, param, &subprog );
86 
87  if( r )
88  {
89  free( st );
90  return NULL;
91  }
92 
94  st->plist = plist;
95  st->priv = NULL; /* private state currently unused */
96 
97  progress_subrange_end( &prog, &subprog );
98 
99  progress_subrange_start( 0.1, 1.0, &prog, &subprog );
100 
101  /* partial success. */
102  r = process_path( plist, param, &subprog );
103 
104  if( r )
105  {
107  }
108 
109  progress_subrange_end( &prog, &subprog );
110 
111  return st;
112 }
#define POTRACE_STATUS_OK
Definition: potracelib.h:110
static void progress_subrange_start(double a, double b, const progress_t *prog, progress_t *sub)
Definition: progress.h:49
static void progress_subrange_end(progress_t *prog, progress_t *sub)
Definition: progress.h:81
double max
Definition: progress.h:19
int process_path(path_t *plist, const potrace_param_t *param, progress_t *progress)
Definition: trace.cpp:1499
double d_prev
Definition: progress.h:22
int bm_to_pathlist(const potrace_bitmap_t *bm, path_t **plistp, const potrace_param_t *param, progress_t *progress)
Definition: decompose.cpp:565
double min
Definition: progress.h:19
void * data
Definition: progress.h:18
potrace_progress_t progress
Definition: potracelib.h:45
void(* callback)(double progress, void *privdata)
Definition: potracelib.h:30
struct potrace_privstate_s * priv
Definition: potracelib.h:118
double epsilon
Definition: progress.h:20
#define POTRACE_STATUS_INCOMPLETE
Definition: potracelib.h:111
potrace_path_t * plist
Definition: potracelib.h:116
void(* callback)(double progress, void *privdata)
Definition: progress.h:17

References bm_to_pathlist(), progress_s::callback, potrace_progress_s::callback, progress_s::d_prev, progress_s::data, potrace_progress_s::data, progress_s::epsilon, potrace_progress_s::epsilon, progress_s::max, potrace_progress_s::max, progress_s::min, potrace_progress_s::min, potrace_state_s::plist, POTRACE_STATUS_INCOMPLETE, POTRACE_STATUS_OK, potrace_state_s::priv, process_path(), potrace_param_s::progress, progress_subrange_end(), progress_subrange_start(), and potrace_state_s::status.

◆ potrace_version()

const char* potrace_version ( void  )

Definition at line 131 of file potracelib.cpp.

132 {
133  return POTRACELIB_VERSION;
134 }
#define POTRACELIB_VERSION

References POTRACELIB_VERSION.