JNR
uiIcon3D.h
1 /*
2 
3 Jump'n'Run Engine
4 http://www.atanaslaskov.com/jnr/
5 
6 BSD LICENSE
7 Copyright (c) 2007-2013, Atanas Laskov
8 All rights reserved.
9 
10 Redistribution and use in source and binary forms, with or without
11 modification, are permitted provided that the following conditions are met:
12 1. Redistributions of source code must retain the above copyright notice,
13 this list of conditions and the following disclaimer.
14 2. Redistributions in binary form must reproduce the above copyright notice,
15 this list of conditions and the following disclaimer in the documentation
16 and/or other materials provided with the distribution.
17 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
18 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 DISCLAIMED. IN NO EVENT SHALL ATANAS LASKOV BE LIABLE FOR ANY
21 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 
28 */
29 
38 
43 public:
44  virtual void draw_model(laPoint3 pos, laRenderer *pr) = 0;
45  virtual void draw_description(laPoint3 pos, laRenderer *pr, laFont* pf) = 0;
46 
47  virtual laPoint3 description_size(laFont* pf) { return laPoint3(); };
48 };
49 
50 // Icon 3D GUI element
51 //
52 class uiIcon3D :
53  public uiWindow
54 {
55  uiIconDescriptor3D *_pDescriptor;
56 
57  laTimeTrig _ttAppear; // animated on create
58 
59  laTimeTrig _ttDiscard; // animated discarding of cons, not abruptly
60  M_BOOL _isDiscarding;
61  M_BOOL _isDiscarded; // set when discarding is completed
62 
63  laTexture ticon3d_bg; // icon backgorund tex
64  laTexture ticon3d_sel; // selection tex
65 
66  //State
67  //
68  M_BOOL _bSelected;
69  double _ang;
70 
71 public:
73  virtual ~uiIcon3D(void);
74 
75  // Repply & draw
76  virtual void reply();
77  virtual void draw();
78 
79  // Selection
80  inline M_BOOL isSelected() { return _bSelected; };
81  inline void select(M_BOOL sel = M_TRUE) { _bSelected = sel; }
82 
83  // Discard icon
84  void discardingIcon(M_BOOL bOn = M_TRUE);
85  inline M_BOOL isDiscarding() { return _isDiscarding; }
86  inline M_BOOL isDiscarded() { return _isDiscarded; }
87 };
Font and Text Drawing.
Definition: laFont.h:41
virtual void reply()
Handle input message.
Definition: uiIcon3D.cpp:164
2D Texture
Definition: laTexture.h:45
Abstract interface for icon descriptors; to be used in class uiIcon3D.
Definition: uiIcon3D.h:42
Base class for GUI windows.
Definition: uiWindow.h:45
Time-triggered events.
Definition: laTimeTrig.h:41
Virtual interface for the Engine graphics renderer.
Definition: laRenderer.h:98
virtual void draw()
Display the window.
Definition: uiIcon3D.cpp:68
GUI icon object that can siplay 3D models as icons.
Definition: uiIcon3D.h:52