OSDN Git Service

a61b53da33be39633324d2e019b396639d971eab
[moflib/moflib.git] / moflib-1.0 / moflib / moflib / mof / widget / ImageView.cpp
1 #include <mof/widget/ImageView.hpp>
2 #include "mof/mofGraphics.hpp"
3 #include "mof/Font.hpp"
4 #include "mof/Sprite.hpp"
5 #include "mof/widget/Effect.hpp"
6 #include "mof/utilities.hpp"
7 #include "mof/widgets.hpp"
8 #include "mof/streams.hpp"
9     
10 namespace mof
11 {
12 namespace widget
13 {
14 //{{{ struct Impl
15     struct ImageView::Impl
16     {
17         Sprite* pSprite;
18                 mof::Vector2D preferredSize_;
19     
20         Impl( )
21         : pSprite( NULL )
22         {
23         }
24     
25         ~Impl()
26         {
27             delete pSprite;
28         }
29     
30     };
31 //}}}
32 //{{{ constructor
33     ImageView::ImageView
34     (
35         const tstring& caption ,
36         const Font& font
37     )
38     : 
39         m_pImpl( new Impl ) 
40     {
41         { // 画像の生成
42             m_pImpl->pSprite = Sprite::createTextSprite( font , caption );
43             m_pImpl->pSprite->getPositionStream( ) << getPositionStream( ); 
44             m_pImpl->pSprite->getColorStream( ) << getColorStream( ); 
45                         m_pImpl->preferredSize_ = m_pImpl->pSprite->getSizeStream().value();
46                         getSizeStream() << m_pImpl->preferredSize_;
47         }
48     }
49 //}}}
50 //{{{ constructor
51     ImageView::ImageView
52     (
53         const TextureHandler& texture ,
54         const Rectangle<float>& tRect
55     )
56     : 
57         m_pImpl( new Impl( ) ) 
58     {
59         { // 画像の生成
60             m_pImpl->pSprite = new Sprite( texture , tRect );
61             m_pImpl->pSprite->getPositionStream( ) << getPositionStream( ); 
62             m_pImpl->pSprite->getColorStream( ) << getColorStream( ); 
63                         m_pImpl->preferredSize_ = m_pImpl->pSprite->getSizeStream().value();
64                         getSizeStream() << m_pImpl->preferredSize_;
65         }
66         
67     }
68 //}}}
69 //{{{ constructor
70     ImageView::ImageView
71     (
72         const TextureHandler& texture 
73     )
74     : 
75         m_pImpl( new Impl( ) ) 
76     {
77         { // 画像の生成
78             m_pImpl->pSprite = new Sprite( texture , Rectangle<float>(0 , 0 , 1 , 1) );
79             m_pImpl->pSprite->getPositionStream( ) << getPositionStream( ); 
80             m_pImpl->pSprite->getColorStream( ) << getColorStream( ); 
81                         m_pImpl->preferredSize_ = m_pImpl->pSprite->getSizeStream().value();
82                         getSizeStream() << m_pImpl->preferredSize_;
83         }
84         
85     }
86 //}}}
87 //{{{ destructor
88     ImageView::~ImageView()
89     {
90     }
91 //}}}
92 //{{{ update
93     void ImageView::update( )
94     {
95         m_positionStream.update( );
96         m_sizeStream.update( );
97         m_colorStream.update( );
98         m_pImpl->pSprite->update();
99     }
100 //}}}
101 //{{{ draw
102     void ImageView::draw( ) const
103     {
104         m_pImpl->pSprite->draw( );
105     }
106 //}}}
107 //{{{ setVisible
108     void ImageView::setVisible(bool visible)
109     {
110         m_pImpl->pSprite->setVisible(visible);
111     }
112 //}}}
113 //{{{ show
114     FrameNumber ImageView::show(bool) 
115     {
116         return 0;
117     }
118 //}}}
119 //{{{ hide
120     FrameNumber ImageView::hide(bool)
121     {
122         return 0;
123     }
124 //}}}
125 //{{{ focus
126     FrameNumber ImageView::focus(bool) 
127     {
128         return 0;
129     }
130 //}}}
131 //{{{ blur
132     FrameNumber ImageView::blur(bool imidiately)
133     {
134         return 0;
135     }
136 //}}}
137 //{{{ click
138     FrameNumber ImageView::click(bool)
139     {
140         return 0;
141     }
142 //}}}
143 //{{{ getPreferredSize
144         mof::Vector2D ImageView::getPreferredSize() const
145     {
146         return m_pImpl->preferredSize_;
147     }
148 //}}}
149 }
150 } // namespace mof