]> git.sesse.net Git - vlc/blob - modules/gui/skins/src/bezier.h
* ALL: changes to the playlist_Add() and VLC_AddTarget() proto to include a list...
[vlc] / modules / gui / skins / src / bezier.h
1 /*****************************************************************************
2  * bezier.h: Functios to handle Bezier curves
3  *****************************************************************************
4  * Copyright (C) 2003 VideoLAN
5  * $Id: bezier.h,v 1.1 2003/03/18 02:21:47 ipkiss Exp $
6  *
7  * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
8  *          Emmanuel Puig    <karibu@via.ecp.fr>
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
23  * USA.
24  *****************************************************************************/
25
26
27 #ifndef VLC_SKIN_BEZIER
28 #define VLC_SKIN_BEZIER
29
30 //---------------------------------------------------------------------------
31 #define MAX_BEZIER_POINT    1023
32 #define BEZIER_PTS_ALL      0
33 #define BEZIER_PTS_Y        1
34 #define BEZIER_PTS_X        2
35
36
37
38 //---------------------------------------------------------------------------
39 class Bezier
40 {
41     private:
42         int maxpt;
43         double *ptx;
44         double *pty;
45         double *ft;
46         double melange( int i, int n, double t );
47         double bezier_pty( double t );
48         double bezier_ptx( double t );
49
50         // Different points
51         int Flag;
52         int Max;
53         int *Left;
54         int *Top;
55
56         // x^n
57         double Power( double x, int n );
58
59     public:
60         // Constructor
61         Bezier( double *x, double *y, int n, int flag = BEZIER_PTS_ALL );
62
63         // Destructor
64         ~Bezier();
65
66         void GetPoint( double i, int &x, int &y );
67         void GetDifferentPoints( int *x, int *y, int OffX = 0, int OffY = 0 );
68         int  GetNumOfDifferentPoints();
69
70 };
71
72 //---------------------------------------------------------------------------
73 #endif