summaryrefslogtreecommitdiff
path: root/inc/cad/svg.h
blob: c282c0eec215226d07fc0e70688e892565a291fc (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
#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,
	CANVAS_COORDINATE,
};

struct canvas {
	enum CanvasState state;
	vec2 next_offset;
	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_elements(struct canvas *canvas, struct drawing *drawing);
void draw_topology(struct canvas *canvas, struct topology *topo);
void end_drawing(struct canvas *canvas);