summaryrefslogtreecommitdiff
path: root/inc/cad/svg.h
blob: 5bfce838d3622960c359ab8dea740509a5c46974 (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
#pragma once

#include "cad/solve.h"
#include "cad/topology.h"

enum LineStyle {
	LSTYLE_NORMAL,
	LSTYLE_CONSTRUCTION,
	LSTYLE_INDICATOR,
	LSTYLE_INDICATOR_INLINE,
};
#define TEXT_OFFSET 0.4

enum CanvasState {
	CANVAS_INIT,
	CANVAS_DRAWING,
};

struct canvas {
	enum CanvasState state;
	FILE *f;
};

void line_distance_to_point(struct line l, double d, struct point *p);

void plot_line_between(struct canvas *canvas, struct point p1, struct point p2);
void plot_arc_between_style(struct canvas *canvas, struct point c, struct point p1, struct point p2, enum LineStyle style);
void plot_arc_between(struct canvas *canvas, struct point c, struct point p1, struct point p2);
void plot_text(struct canvas *canvas, struct point p, double angle, char* str);

void begin_drawing(struct canvas *canvas);
void draw_constraints(struct canvas *canvas, struct constraints *constraints);
void draw_topology(struct canvas *canvas, struct topology *topo);
void end_drawing(struct canvas *canvas);