1 // Aseprite Document Library
2 // Copyright (c) 2001-2018 David Capello
3 //
4 // This file is released under the terms of the MIT license.
5 // Read LICENSE.txt for more information.
6 
7 #ifndef DOC_ALGO_H_INCLUDED
8 #define DOC_ALGO_H_INCLUDED
9 #pragma once
10 
11 #include "gfx/fwd.h"
12 #include "doc/algorithm/hline.h"
13 
14 namespace doc {
15 
16   class Image;
17 
18   typedef void (*AlgoPixel)(int x, int y, void *data);
19   typedef void (*AlgoLine)(int x1, int y1, int x2, int y2, void *data);
20 
21   void algo_line(int x1, int y1, int x2, int y2, void *data, AlgoPixel proc);
22   void algo_ellipse(int x1, int y1, int x2, int y2, void *data, AlgoPixel proc);
23   void algo_ellipsefill(int x1, int y1, int x2, int y2, void *data, AlgoHLine proc);
24 
25   void draw_rotated_ellipse(int cx, int cy, int a, int b, double angle, void* data, AlgoPixel proc);
26   void fill_rotated_ellipse(int cx, int cy, int a, int b, double angle, void* data, AlgoHLine proc);
27 
28   void algo_spline(double x0, double y0, double x1, double y1,
29                    double x2, double y2, double x3, double y3,
30                    void *data, AlgoLine proc);
31   double algo_spline_get_y(double x0, double y0, double x1, double y1,
32                            double x2, double y2, double x3, double y3,
33                            double x);
34   double algo_spline_get_tan(double x0, double y0, double x1, double y1,
35                              double x2, double y2, double x3, double y3,
36                              double in_x);
37 
38 } // namespace doc
39 
40 #endif
41