Merged changes in the trunk up to revision 28600.
[blender.git] / source / blender / freestyle / intern / stroke / ContextFunctions.h
1 //
2 //  Filename         : AdvancedFunctions0D.h
3 //  Author(s)        : Stephane Grabli
4 //  Purpose          : Functions related to context queries
5 //  Date of creation : 20/12/2003
6 //
7 ///////////////////////////////////////////////////////////////////////////////
8
9
10 //
11 //  Copyright (C) : Please refer to the COPYRIGHT file distributed 
12 //   with this source distribution. 
13 //
14 //  This program is free software; you can redistribute it and/or
15 //  modify it under the terms of the GNU General Public License
16 //  as published by the Free Software Foundation; either version 2
17 //  of the License, or (at your option) any later version.
18 //
19 //  This program is distributed in the hope that it will be useful,
20 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
21 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22 //  GNU General Public License for more details.
23 //
24 //  You should have received a copy of the GNU General Public License
25 //  along with this program; if not, write to the Free Software
26 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
27 //
28 ///////////////////////////////////////////////////////////////////////////////
29
30 #ifndef  CONTEXT_FUNCTIONS_HPP
31 # define CONTEXT_FUNCTIONS_HPP
32
33 # include "Canvas.h"
34 # include "../image/Image.h"
35 # include "../image/GaussianFilter.h"
36
37 /*! \file ContextFunctions.h
38  *  Interface to access the context related
39  *  information.
40  */
41 //
42 // Context Functions definitions
43 //
44 ///////////////////////////////////////////////////////////
45 /*! namespace containing all the Context related functions */
46 namespace ContextFunctions {
47
48   // GetTimeStamp
49   LIB_STROKE_EXPORT
50   /*! Returns the system time stamp */
51   unsigned GetTimeStampCF();
52
53   // GetCanvasWidth
54   /*! Returns the canvas width */
55   LIB_STROKE_EXPORT
56   unsigned GetCanvasWidthCF();
57  
58   // GetCanvasHeight
59   /*! Returns the canvas width */
60   LIB_STROKE_EXPORT 
61   unsigned GetCanvasHeightCF();
62   
63   // Load map
64   /*! Loads an image map for further reading */
65   LIB_STROKE_EXPORT 
66   void LoadMapCF(const char *iFileName, const char *iMapName, unsigned iNbLevels=4, float iSigma=1.f);
67
68   // ReadMapPixel
69   /*! Reads a pixel in a user-defined map 
70    *  \return the floating value stored for that pixel
71    *  \param iMapName
72    *    The name of the map
73    *  \param level
74    *    The level of the pyramid in which we wish to read the pixel
75    *  \param x
76    *    The x-coordinate of the pixel we wish to read. The origin is
77    *    in the lower-left corner.
78    *  \param y
79    *    The y-coordinate of the pixel we wish to read. The origin is
80    *    in the lower-left corner.
81    */
82   LIB_STROKE_EXPORT 
83   float ReadMapPixelCF(const char *iMapName, int level, unsigned x, unsigned y);
84
85   // ReadCompleteViewMapPixel
86   /*! Reads a pixel in the complete view map
87    *  \return the floating value stored for that pixel
88    *  \param level
89    *    The level of the pyramid in which we wish to read the pixel
90    *  \param x
91    *    The x-coordinate of the pixel we wish to read. The origin is
92    *    in the lower-left corner.
93    *  \param y
94    *    The y-coordinate of the pixel we wish to read. The origin is
95    *    in the lower-left corner.
96    */
97   LIB_STROKE_EXPORT 
98   float ReadCompleteViewMapPixelCF(int level, unsigned x, unsigned y);
99
100   // ReadOrientedViewMapPixel
101   /*! Reads a pixel in one of the oriented view map images
102    *  \return the floating value stored for that pixel
103    *  \param iOrientation
104    *    The number telling which orientation we want to check
105    *  \param level
106    *    The level of the pyramid in which we wish to read the pixel
107    *  \param x
108    *    The x-coordinate of the pixel we wish to read. The origin is
109    *    in the lower-left corner.
110    *  \param y
111    *    The y-coordinate of the pixel we wish to read. The origin is
112    *    in the lower-left corner.
113    */
114   LIB_STROKE_EXPORT 
115   float ReadDirectionalViewMapPixelCF(int iOrientation, int level, unsigned x, unsigned y);
116
117   // DEBUG
118   LIB_STROKE_EXPORT 
119   FEdge * GetSelectedFEdgeCF();
120
121 } // end of namespace ContextFunctions
122
123 #endif // CONTEXT_FUNCTIONS_HPP
124