aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/irrlicht-1.8/tools/GUIEditor/CGUITextureCacheBrowser.cpp
diff options
context:
space:
mode:
authorDavid Walter Seikel2013-01-13 18:54:10 +1000
committerDavid Walter Seikel2013-01-13 18:54:10 +1000
commit959831f4ef5a3e797f576c3de08cd65032c997ad (patch)
treee7351908be5995f0b325b2ebeaa02d5a34b82583 /libraries/irrlicht-1.8/tools/GUIEditor/CGUITextureCacheBrowser.cpp
parentAdd info about changes to Irrlicht. (diff)
downloadSledjHamr-959831f4ef5a3e797f576c3de08cd65032c997ad.zip
SledjHamr-959831f4ef5a3e797f576c3de08cd65032c997ad.tar.gz
SledjHamr-959831f4ef5a3e797f576c3de08cd65032c997ad.tar.bz2
SledjHamr-959831f4ef5a3e797f576c3de08cd65032c997ad.tar.xz
Remove damned ancient DOS line endings from Irrlicht. Hopefully I did not go overboard.
Diffstat (limited to '')
-rw-r--r--libraries/irrlicht-1.8/tools/GUIEditor/CGUITextureCacheBrowser.cpp672
1 files changed, 336 insertions, 336 deletions
diff --git a/libraries/irrlicht-1.8/tools/GUIEditor/CGUITextureCacheBrowser.cpp b/libraries/irrlicht-1.8/tools/GUIEditor/CGUITextureCacheBrowser.cpp
index bac5233..6c80626 100644
--- a/libraries/irrlicht-1.8/tools/GUIEditor/CGUITextureCacheBrowser.cpp
+++ b/libraries/irrlicht-1.8/tools/GUIEditor/CGUITextureCacheBrowser.cpp
@@ -1,336 +1,336 @@
1// Copyright (C) 2002-2012 Nikolaus Gebhardt / Gaz Davidson 1// Copyright (C) 2002-2012 Nikolaus Gebhardt / Gaz Davidson
2// This file is part of the "Irrlicht Engine". 2// This file is part of the "Irrlicht Engine".
3// For conditions of distribution and use, see copyright notice in irrlicht.h 3// For conditions of distribution and use, see copyright notice in irrlicht.h
4 4
5#include "CGUITextureCacheBrowser.h" 5#include "CGUITextureCacheBrowser.h"
6#include "IGUIEnvironment.h" 6#include "IGUIEnvironment.h"
7#include "IGUIButton.h" 7#include "IGUIButton.h"
8#include "IGUISkin.h" 8#include "IGUISkin.h"
9#include "IGUIFont.h" 9#include "IGUIFont.h"
10#include "IVideoDriver.h" 10#include "IVideoDriver.h"
11 11
12namespace irr 12namespace irr
13{ 13{
14namespace gui 14namespace gui
15{ 15{
16 16
17CGUITextureCacheBrowser::CGUITextureCacheBrowser(IGUIEnvironment* environment, s32 id, IGUIElement *parent) 17CGUITextureCacheBrowser::CGUITextureCacheBrowser(IGUIEnvironment* environment, s32 id, IGUIElement *parent)
18: IGUIWindow(environment, parent, id, core::rect<s32>(0,0,300,200)), 18: IGUIWindow(environment, parent, id, core::rect<s32>(0,0,300,200)),
19 CloseButton(0), Panel(0), SelectedTexture(-1), Dragging(false), IsDraggable(true) 19 CloseButton(0), Panel(0), SelectedTexture(-1), Dragging(false), IsDraggable(true)
20{ 20{
21 #ifdef _DEBUG 21 #ifdef _DEBUG
22 setDebugName("CGUITextureCacheBrowser"); 22 setDebugName("CGUITextureCacheBrowser");
23 #endif 23 #endif
24 24
25 IGUISkin* skin = 0; 25 IGUISkin* skin = 0;
26 IGUISpriteBank* sprites = 0; 26 IGUISpriteBank* sprites = 0;
27 video::SColor color(255,255,255,255); 27 video::SColor color(255,255,255,255);
28 28
29 if (environment) 29 if (environment)
30 skin = environment->getSkin(); 30 skin = environment->getSkin();
31 31
32 s32 buttonw = 15; 32 s32 buttonw = 15;
33 if (skin) 33 if (skin)
34 { 34 {
35 buttonw = skin->getSize(EGDS_WINDOW_BUTTON_WIDTH); 35 buttonw = skin->getSize(EGDS_WINDOW_BUTTON_WIDTH);
36 sprites = skin->getSpriteBank(); 36 sprites = skin->getSpriteBank();
37 color = skin->getColor(EGDC_WINDOW_SYMBOL); 37 color = skin->getColor(EGDC_WINDOW_SYMBOL);
38 } 38 }
39 s32 posx = RelativeRect.getWidth() - buttonw - 4; 39 s32 posx = RelativeRect.getWidth() - buttonw - 4;
40 40
41 CloseButton = Environment->addButton(core::rect<s32>(posx, 3, posx + buttonw, 3 + buttonw), this, -1, 41 CloseButton = Environment->addButton(core::rect<s32>(posx, 3, posx + buttonw, 3 + buttonw), this, -1,
42 L"", skin ? skin->getDefaultText(EGDT_WINDOW_CLOSE) : L"Close" ); 42 L"", skin ? skin->getDefaultText(EGDT_WINDOW_CLOSE) : L"Close" );
43 CloseButton->setSubElement(true); 43 CloseButton->setSubElement(true);
44 CloseButton->setAlignment(EGUIA_LOWERRIGHT, EGUIA_LOWERRIGHT, EGUIA_UPPERLEFT, EGUIA_UPPERLEFT); 44 CloseButton->setAlignment(EGUIA_LOWERRIGHT, EGUIA_LOWERRIGHT, EGUIA_UPPERLEFT, EGUIA_UPPERLEFT);
45 if (sprites) 45 if (sprites)
46 { 46 {
47 CloseButton->setSpriteBank(sprites); 47 CloseButton->setSpriteBank(sprites);
48 CloseButton->setSprite(EGBS_BUTTON_UP, skin->getIcon(EGDI_WINDOW_CLOSE), color); 48 CloseButton->setSprite(EGBS_BUTTON_UP, skin->getIcon(EGDI_WINDOW_CLOSE), color);
49 CloseButton->setSprite(EGBS_BUTTON_DOWN, skin->getIcon(EGDI_WINDOW_CLOSE), color); 49 CloseButton->setSprite(EGBS_BUTTON_DOWN, skin->getIcon(EGDI_WINDOW_CLOSE), color);
50 } 50 }
51 51
52 CloseButton->grab(); 52 CloseButton->grab();
53 53
54 // window title 54 // window title
55 Text = L"Texture Browser"; 55 Text = L"Texture Browser";
56 56
57 // panel element 57 // panel element
58 Panel = new CGUIPanel(environment, this); 58 Panel = new CGUIPanel(environment, this);
59 Panel->setRelativePosition( core::rect<s32>(1, buttonw + 5, 151, RelativeRect.getHeight() - 1)); 59 Panel->setRelativePosition( core::rect<s32>(1, buttonw + 5, 151, RelativeRect.getHeight() - 1));
60 Panel->setAlignment(EGUIA_UPPERLEFT, EGUIA_UPPERLEFT, EGUIA_UPPERLEFT, EGUIA_LOWERRIGHT); 60 Panel->setAlignment(EGUIA_UPPERLEFT, EGUIA_UPPERLEFT, EGUIA_UPPERLEFT, EGUIA_LOWERRIGHT);
61 Panel->setBorder(true); 61 Panel->setBorder(true);
62 Panel->setSubElement(true); 62 Panel->setSubElement(true);
63 63
64 // some buttons 64 // some buttons
65 65
66 66
67 // add images from texture cache 67 // add images from texture cache
68 updateImageList(); 68 updateImageList();
69 69
70} 70}
71 71
72CGUITextureCacheBrowser::~CGUITextureCacheBrowser() 72CGUITextureCacheBrowser::~CGUITextureCacheBrowser()
73{ 73{
74 if (CloseButton) 74 if (CloseButton)
75 CloseButton->drop(); 75 CloseButton->drop();
76 if (Panel) 76 if (Panel)
77 Panel->drop(); 77 Panel->drop();
78 78
79 // drop images 79 // drop images
80 u32 i; 80 u32 i;
81 for (i=0; i<Images.size(); ++i) 81 for (i=0; i<Images.size(); ++i)
82 { 82 {
83 Images[i]->drop(); 83 Images[i]->drop();
84 Images[i]->remove(); 84 Images[i]->remove();
85 } 85 }
86 Images.clear(); 86 Images.clear();
87} 87}
88void CGUITextureCacheBrowser::updateImageList() 88void CGUITextureCacheBrowser::updateImageList()
89{ 89{
90 if (!Panel) 90 if (!Panel)
91 return; 91 return;
92 92
93 video::IVideoDriver* Driver = Environment->getVideoDriver(); 93 video::IVideoDriver* Driver = Environment->getVideoDriver();
94 94
95 // clear images 95 // clear images
96 u32 i; 96 u32 i;
97 for (i=0; i<Images.size(); ++i) 97 for (i=0; i<Images.size(); ++i)
98 { 98 {
99 Images[i]->drop(); 99 Images[i]->drop();
100 Images[i]->remove(); 100 Images[i]->remove();
101 } 101 }
102 Images.clear(); 102 Images.clear();
103 103
104 u32 count = (u32)Driver->getTextureCount(); 104 u32 count = (u32)Driver->getTextureCount();
105 105
106 s32 h = Panel->getClientArea().getWidth()-10; 106 s32 h = Panel->getClientArea().getWidth()-10;
107 s32 hw = h/2; 107 s32 hw = h/2;
108 core::rect<s32> pos(Panel->getClientArea().getCenter().X - Panel->getAbsolutePosition().UpperLeftCorner.X - hw, 5, 108 core::rect<s32> pos(Panel->getClientArea().getCenter().X - Panel->getAbsolutePosition().UpperLeftCorner.X - hw, 5,
109 Panel->getClientArea().getCenter().X - Panel->getAbsolutePosition().UpperLeftCorner.X + hw, h+5); 109 Panel->getClientArea().getCenter().X - Panel->getAbsolutePosition().UpperLeftCorner.X + hw, h+5);
110 110
111 core::position2di moveDist(0, h+5); 111 core::position2di moveDist(0, h+5);
112 112
113 for (u32 i=0; i<count; ++i) 113 for (u32 i=0; i<count; ++i)
114 { 114 {
115 core::stringw details; 115 core::stringw details;
116 video::ITexture* tex = Driver->getTextureByIndex(i); 116 video::ITexture* tex = Driver->getTextureByIndex(i);
117 details = L"File name: "; 117 details = L"File name: ";
118 details += tex->getName(); 118 details += tex->getName();
119 details += L"\nFormat: "; 119 details += L"\nFormat: ";
120 video::ECOLOR_FORMAT cf = tex->getColorFormat(); 120 video::ECOLOR_FORMAT cf = tex->getColorFormat();
121 121
122 bool alpha = false; 122 bool alpha = false;
123 123
124 switch (cf) 124 switch (cf)
125 { 125 {
126 case video::ECF_A1R5G5B5: 126 case video::ECF_A1R5G5B5:
127 details += L"A1R5G5B5 (16-bit with 1-bit alpha channel)\n"; 127 details += L"A1R5G5B5 (16-bit with 1-bit alpha channel)\n";
128 alpha = true; 128 alpha = true;
129 break; 129 break;
130 case video::ECF_R5G6B5: 130 case video::ECF_R5G6B5:
131 details += L"R5G6B5 (16-bit, no alpha channel)\n"; 131 details += L"R5G6B5 (16-bit, no alpha channel)\n";
132 break; 132 break;
133 case video::ECF_R8G8B8: 133 case video::ECF_R8G8B8:
134 details += L"R8G8B8 (16-bit, no alpha channel)\n"; 134 details += L"R8G8B8 (16-bit, no alpha channel)\n";
135 break; 135 break;
136 case video::ECF_A8R8G8B8: 136 case video::ECF_A8R8G8B8:
137 details += L"R8G8B8 (32-bit with 8-bit alpha channel)\n"; 137 details += L"R8G8B8 (32-bit with 8-bit alpha channel)\n";
138 alpha = true; 138 alpha = true;
139 break; 139 break;
140 default: 140 default:
141 details += L"Unknown\n"; 141 details += L"Unknown\n";
142 } 142 }
143 143
144 core::dimension2du osize = tex->getOriginalSize(); 144 core::dimension2du osize = tex->getOriginalSize();
145 core::dimension2du size = tex->getOriginalSize(); 145 core::dimension2du size = tex->getOriginalSize();
146 146
147 details += "Size: "; 147 details += "Size: ";
148 details += size.Width; 148 details += size.Width;
149 details += "x"; 149 details += "x";
150 details += size.Height; 150 details += size.Height;
151 151
152 if (osize != size) 152 if (osize != size)
153 { 153 {
154 details += "\nOriginal Size: "; 154 details += "\nOriginal Size: ";
155 details += osize.Width; 155 details += osize.Width;
156 details += "x"; 156 details += "x";
157 details += osize.Height; 157 details += osize.Height;
158 } 158 }
159 159
160 details += L"\nMip-maps: "; 160 details += L"\nMip-maps: ";
161 161
162 if (tex->hasMipMaps()) 162 if (tex->hasMipMaps())
163 details += L"Yes\n"; 163 details += L"Yes\n";
164 else 164 else
165 details += L"No\n"; 165 details += L"No\n";
166 166
167 IGUIImage* img = Environment->addImage(tex, core::position2di(1,1), alpha, Panel, i); 167 IGUIImage* img = Environment->addImage(tex, core::position2di(1,1), alpha, Panel, i);
168 img->grab(); 168 img->grab();
169 Images.push_back(img); 169 Images.push_back(img);
170 img->setRelativePosition(pos); 170 img->setRelativePosition(pos);
171 img->setToolTipText(details.c_str()); 171 img->setToolTipText(details.c_str());
172 img->setScaleImage(true); 172 img->setScaleImage(true);
173 img->setColor( SelectedTexture == (s32)i ? video::SColor(255,255,255,255) : video::SColor(128,128,128,128) ); 173 img->setColor( SelectedTexture == (s32)i ? video::SColor(255,255,255,255) : video::SColor(128,128,128,128) );
174 174
175 pos = pos + moveDist; 175 pos = pos + moveDist;
176 } 176 }
177} 177}
178 178
179void CGUITextureCacheBrowser::updateAbsolutePosition() 179void CGUITextureCacheBrowser::updateAbsolutePosition()
180{ 180{
181 IGUIWindow::updateAbsolutePosition(); 181 IGUIWindow::updateAbsolutePosition();
182 updateImageList(); 182 updateImageList();
183} 183}
184 184
185//! called if an event happened. 185//! called if an event happened.
186bool CGUITextureCacheBrowser::OnEvent(const SEvent &event) 186bool CGUITextureCacheBrowser::OnEvent(const SEvent &event)
187{ 187{
188 switch(event.EventType) 188 switch(event.EventType)
189 { 189 {
190 case EET_GUI_EVENT: 190 case EET_GUI_EVENT:
191 if (event.GUIEvent.EventType == EGET_ELEMENT_FOCUS_LOST) 191 if (event.GUIEvent.EventType == EGET_ELEMENT_FOCUS_LOST)
192 { 192 {
193 if (event.GUIEvent.Caller == (IGUIElement*)this) 193 if (event.GUIEvent.Caller == (IGUIElement*)this)
194 Dragging = false; 194 Dragging = false;
195 return true; 195 return true;
196 } 196 }
197 else 197 else
198 if (event.GUIEvent.EventType == EGET_BUTTON_CLICKED) 198 if (event.GUIEvent.EventType == EGET_BUTTON_CLICKED)
199 { 199 {
200 if (event.GUIEvent.Caller == CloseButton) 200 if (event.GUIEvent.Caller == CloseButton)
201 { 201 {
202 remove(); 202 remove();
203 return true; 203 return true;
204 } 204 }
205 } 205 }
206 break; 206 break;
207 case EET_MOUSE_INPUT_EVENT: 207 case EET_MOUSE_INPUT_EVENT:
208 switch(event.MouseInput.Event) 208 switch(event.MouseInput.Event)
209 { 209 {
210 case EMIE_LMOUSE_PRESSED_DOWN: 210 case EMIE_LMOUSE_PRESSED_DOWN:
211 DragStart.X = event.MouseInput.X; 211 DragStart.X = event.MouseInput.X;
212 DragStart.Y = event.MouseInput.Y; 212 DragStart.Y = event.MouseInput.Y;
213 213
214 if (getElementFromPoint(DragStart) == this) 214 if (getElementFromPoint(DragStart) == this)
215 { 215 {
216 if (!Environment->hasFocus(this)) 216 if (!Environment->hasFocus(this))
217 { 217 {
218 Dragging = IsDraggable; 218 Dragging = IsDraggable;
219 //Environment->setFocus(this); 219 //Environment->setFocus(this);
220 if (Parent) 220 if (Parent)
221 Parent->bringToFront(this); 221 Parent->bringToFront(this);
222 } 222 }
223 return true; 223 return true;
224 } 224 }
225 else 225 else
226 { 226 {
227 if (Panel->getAbsolutePosition().isPointInside(DragStart)) 227 if (Panel->getAbsolutePosition().isPointInside(DragStart))
228 { 228 {
229 // select an image 229 // select an image
230 IGUIElement* el = Panel->getElementFromPoint(DragStart); 230 IGUIElement* el = Panel->getElementFromPoint(DragStart);
231 if (el && el != Panel) 231 if (el && el != Panel)
232 { 232 {
233 if (el->getType() == EGUIET_IMAGE) 233 if (el->getType() == EGUIET_IMAGE)
234 { 234 {
235 setSelected(el->getID()); 235 setSelected(el->getID());
236 } 236 }
237 } 237 }
238 else 238 else
239 { 239 {
240 setSelected(); 240 setSelected();
241 } 241 }
242 } 242 }
243 } 243 }
244 break; 244 break;
245 case EMIE_LMOUSE_LEFT_UP: 245 case EMIE_LMOUSE_LEFT_UP:
246 Dragging = false; 246 Dragging = false;
247 //Environment->removeFocus(this); 247 //Environment->removeFocus(this);
248 return true; 248 return true;
249 case EMIE_MOUSE_MOVED: 249 case EMIE_MOUSE_MOVED:
250 if (Dragging) 250 if (Dragging)
251 { 251 {
252 // gui window should not be dragged outside its parent 252 // gui window should not be dragged outside its parent
253 if (Parent) 253 if (Parent)
254 if (event.MouseInput.X < Parent->getAbsolutePosition().UpperLeftCorner.X +1 || 254 if (event.MouseInput.X < Parent->getAbsolutePosition().UpperLeftCorner.X +1 ||
255 event.MouseInput.Y < Parent->getAbsolutePosition().UpperLeftCorner.Y +1 || 255 event.MouseInput.Y < Parent->getAbsolutePosition().UpperLeftCorner.Y +1 ||
256 event.MouseInput.X > Parent->getAbsolutePosition().LowerRightCorner.X -1 || 256 event.MouseInput.X > Parent->getAbsolutePosition().LowerRightCorner.X -1 ||
257 event.MouseInput.Y > Parent->getAbsolutePosition().LowerRightCorner.Y -1) 257 event.MouseInput.Y > Parent->getAbsolutePosition().LowerRightCorner.Y -1)
258 258
259 return true; 259 return true;
260 260
261 261
262 move(core::position2d<s32>(event.MouseInput.X - DragStart.X, event.MouseInput.Y - DragStart.Y)); 262 move(core::position2d<s32>(event.MouseInput.X - DragStart.X, event.MouseInput.Y - DragStart.Y));
263 DragStart.X = event.MouseInput.X; 263 DragStart.X = event.MouseInput.X;
264 DragStart.Y = event.MouseInput.Y; 264 DragStart.Y = event.MouseInput.Y;
265 return true; 265 return true;
266 } 266 }
267 break; 267 break;
268 default: 268 default:
269 break; 269 break;
270 } 270 }
271 default: 271 default:
272 break; 272 break;
273 } 273 }
274 274
275 return Parent ? Parent->OnEvent(event) : false; 275 return Parent ? Parent->OnEvent(event) : false;
276} 276}
277 277
278void CGUITextureCacheBrowser::setSelected(s32 index) 278void CGUITextureCacheBrowser::setSelected(s32 index)
279{ 279{
280 SelectedTexture = index; 280 SelectedTexture = index;
281 updateImageList(); 281 updateImageList();
282 printf("Texture %d selected\n", index); 282 printf("Texture %d selected\n", index);
283} 283}
284 284
285void CGUITextureCacheBrowser::draw() 285void CGUITextureCacheBrowser::draw()
286{ 286{
287 if (!IsVisible) 287 if (!IsVisible)
288 return; 288 return;
289 289
290 IGUISkin* skin = Environment->getSkin(); 290 IGUISkin* skin = Environment->getSkin();
291 291
292 core::rect<s32> rect = AbsoluteRect; 292 core::rect<s32> rect = AbsoluteRect;
293 core::rect<s32> *cl = &AbsoluteClippingRect; 293 core::rect<s32> *cl = &AbsoluteClippingRect;
294 294
295 // draw body fast 295 // draw body fast
296 rect = skin->draw3DWindowBackground(this, true, skin->getColor(EGDC_ACTIVE_BORDER), 296 rect = skin->draw3DWindowBackground(this, true, skin->getColor(EGDC_ACTIVE_BORDER),
297 AbsoluteRect, &AbsoluteClippingRect); 297 AbsoluteRect, &AbsoluteClippingRect);
298 298
299 // draw window text 299 // draw window text
300 if (Text.size()) 300 if (Text.size())
301 { 301 {
302 rect.UpperLeftCorner.X += skin->getSize(EGDS_TEXT_DISTANCE_X); 302 rect.UpperLeftCorner.X += skin->getSize(EGDS_TEXT_DISTANCE_X);
303 rect.UpperLeftCorner.Y += skin->getSize(EGDS_TEXT_DISTANCE_Y); 303 rect.UpperLeftCorner.Y += skin->getSize(EGDS_TEXT_DISTANCE_Y);
304 rect.LowerRightCorner.X -= skin->getSize(EGDS_WINDOW_BUTTON_WIDTH) + 5; 304 rect.LowerRightCorner.X -= skin->getSize(EGDS_WINDOW_BUTTON_WIDTH) + 5;
305 305
306 IGUIFont* font = skin->getFont(); 306 IGUIFont* font = skin->getFont();
307 if (font) 307 if (font)
308 font->draw(Text.c_str(), rect, skin->getColor(EGDC_ACTIVE_CAPTION), false, true, cl); 308 font->draw(Text.c_str(), rect, skin->getColor(EGDC_ACTIVE_CAPTION), false, true, cl);
309 } 309 }
310 310
311 IGUIElement::draw(); 311 IGUIElement::draw();
312} 312}
313 313
314 314
315bool CGUITextureCacheBrowser::isDraggable() const 315bool CGUITextureCacheBrowser::isDraggable() const
316{ 316{
317 return IsDraggable; 317 return IsDraggable;
318} 318}
319 319
320void CGUITextureCacheBrowser::setDraggable(bool draggable) 320void CGUITextureCacheBrowser::setDraggable(bool draggable)
321{ 321{
322 IsDraggable = draggable; 322 IsDraggable = draggable;
323 323
324 if (Dragging && !IsDraggable) 324 if (Dragging && !IsDraggable)
325 Dragging = false; 325 Dragging = false;
326} 326}
327 327
328 328
329//! Returns the rectangle of the drawable area (without border, without titlebar and without scrollbars) 329//! Returns the rectangle of the drawable area (without border, without titlebar and without scrollbars)
330core::rect<s32> CGUITextureCacheBrowser::getClientRect() const 330core::rect<s32> CGUITextureCacheBrowser::getClientRect() const
331{ 331{
332 return core::recti(); 332 return core::recti();
333} 333}
334 334
335} // namespace gui 335} // namespace gui
336} // namespace irr 336} // namespace irr