texture_progress.h
1 /*************************************************************************/
2 /* texture_progress.h */
3 /*************************************************************************/
4 /* This file is part of: */
5 /* GODOT ENGINE */
6 /* http://www.godotengine.org */
7 /*************************************************************************/
8 /* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */
9 /* */
10 /* Permission is hereby granted, free of charge, to any person obtaining */
11 /* a copy of this software and associated documentation files (the */
12 /* "Software"), to deal in the Software without restriction, including */
13 /* without limitation the rights to use, copy, modify, merge, publish, */
14 /* distribute, sublicense, and/or sell copies of the Software, and to */
15 /* permit persons to whom the Software is furnished to do so, subject to */
16 /* the following conditions: */
17 /* */
18 /* The above copyright notice and this permission notice shall be */
19 /* included in all copies or substantial portions of the Software. */
20 /* */
21 /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
22 /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
23 /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
24 /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
25 /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
26 /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
27 /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
28 /*************************************************************************/
29 #ifndef TEXTURE_PROGRESS_H
30 #define TEXTURE_PROGRESS_H
31 
32 #include "scene/gui/range.h"
33 
34 class TextureProgress : public Range {
35 
36  OBJ_TYPE( TextureProgress, Range );
37 
38  Ref<Texture> under;
39  Ref<Texture> progress;
40  Ref<Texture> over;
41 
42 protected:
43 
44  static void _bind_methods();
45  void _notification(int p_what);
46 public:
47 
48  enum FillMode {
49  FILL_LEFT_TO_RIGHT=0,
50  FILL_RIGHT_TO_LEFT,
51  FILL_TOP_TO_BOTTOM,
52  FILL_BOTTOM_TO_TOP,
53  FILL_CLOCKWISE,
54  FILL_COUNTER_CLOCKWISE
55  };
56 
57  void set_fill_mode(int p_fill);
58  int get_fill_mode();
59 
60  void set_radial_initial_angle(float p_angle);
61  float get_radial_initial_angle();
62 
63  void set_fill_degrees(float p_angle);
64  float get_fill_degrees();
65 
66  void set_radial_center_offset(const Point2 &p_off);
67  Point2 get_radial_center_offset();
68 
69  void set_under_texture(const Ref<Texture>& p_texture);
70  Ref<Texture> get_under_texture() const;
71 
72  void set_progress_texture(const Ref<Texture>& p_texture);
73  Ref<Texture> get_progress_texture() const;
74 
75  void set_over_texture(const Ref<Texture>& p_texture);
76  Ref<Texture> get_over_texture() const;
77 
78  Size2 get_minimum_size() const;
79 
81 
82 private:
83 
84  FillMode mode;
85  float rad_init_angle;
86  float rad_max_degrees;
87  Point2 rad_center_off;
88 
89  Point2 unit_val_to_uv(float val);
90  Point2 get_relative_center();
91 };
92 
93 #endif // TEXTURE_PROGRESS_H
Definition: range.h:36
Definition: texture_progress.h:34
Definition: math_2d.h:65