/* * path.h - 2D path operations * * Written 2011 by Werner Almesberger * Copyright 2011 by Werner Almesberger * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. */ #ifndef PATH_H #define PATH_H #include struct vertex { double x, y; double r; /* minimum bend radius; 0 = use previous value */ double d; /* max. distance of corner from ideal arc; 0 = prev */ const char *tag; struct vertex *next; /* * "len" is set by path_set_len to the distance to the next vertex, or * 0 if this is the last vertex in the path. round_path adjusts "len" * such that it corresponds to the length of the same part of the * original path. */ double len; }; struct path { struct vertex *vertices; struct vertex **last; }; void free_path(struct path *path); double path_set_length(struct path *path); struct path *round_path(const struct path *path, double r, double d); struct path *stretch_path(const struct path *path, double d); struct path *load_path(FILE *file); void save_path(FILE *file, const struct path *path); #endif /* !PATH_H */