From 959831f4ef5a3e797f576c3de08cd65032c997ad Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Sun, 13 Jan 2013 18:54:10 +1000 Subject: Remove damned ancient DOS line endings from Irrlicht. Hopefully I did not go overboard. --- .../tools/GUIEditor/CGUITextureCacheBrowser.cpp | 672 ++++++++++----------- 1 file changed, 336 insertions(+), 336 deletions(-) (limited to 'libraries/irrlicht-1.8/tools/GUIEditor/CGUITextureCacheBrowser.cpp') 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 @@ -// Copyright (C) 2002-2012 Nikolaus Gebhardt / Gaz Davidson -// This file is part of the "Irrlicht Engine". -// For conditions of distribution and use, see copyright notice in irrlicht.h - -#include "CGUITextureCacheBrowser.h" -#include "IGUIEnvironment.h" -#include "IGUIButton.h" -#include "IGUISkin.h" -#include "IGUIFont.h" -#include "IVideoDriver.h" - -namespace irr -{ -namespace gui -{ - -CGUITextureCacheBrowser::CGUITextureCacheBrowser(IGUIEnvironment* environment, s32 id, IGUIElement *parent) -: IGUIWindow(environment, parent, id, core::rect(0,0,300,200)), - CloseButton(0), Panel(0), SelectedTexture(-1), Dragging(false), IsDraggable(true) -{ - #ifdef _DEBUG - setDebugName("CGUITextureCacheBrowser"); - #endif - - IGUISkin* skin = 0; - IGUISpriteBank* sprites = 0; - video::SColor color(255,255,255,255); - - if (environment) - skin = environment->getSkin(); - - s32 buttonw = 15; - if (skin) - { - buttonw = skin->getSize(EGDS_WINDOW_BUTTON_WIDTH); - sprites = skin->getSpriteBank(); - color = skin->getColor(EGDC_WINDOW_SYMBOL); - } - s32 posx = RelativeRect.getWidth() - buttonw - 4; - - CloseButton = Environment->addButton(core::rect(posx, 3, posx + buttonw, 3 + buttonw), this, -1, - L"", skin ? skin->getDefaultText(EGDT_WINDOW_CLOSE) : L"Close" ); - CloseButton->setSubElement(true); - CloseButton->setAlignment(EGUIA_LOWERRIGHT, EGUIA_LOWERRIGHT, EGUIA_UPPERLEFT, EGUIA_UPPERLEFT); - if (sprites) - { - CloseButton->setSpriteBank(sprites); - CloseButton->setSprite(EGBS_BUTTON_UP, skin->getIcon(EGDI_WINDOW_CLOSE), color); - CloseButton->setSprite(EGBS_BUTTON_DOWN, skin->getIcon(EGDI_WINDOW_CLOSE), color); - } - - CloseButton->grab(); - - // window title - Text = L"Texture Browser"; - - // panel element - Panel = new CGUIPanel(environment, this); - Panel->setRelativePosition( core::rect(1, buttonw + 5, 151, RelativeRect.getHeight() - 1)); - Panel->setAlignment(EGUIA_UPPERLEFT, EGUIA_UPPERLEFT, EGUIA_UPPERLEFT, EGUIA_LOWERRIGHT); - Panel->setBorder(true); - Panel->setSubElement(true); - - // some buttons - - - // add images from texture cache - updateImageList(); - -} - -CGUITextureCacheBrowser::~CGUITextureCacheBrowser() -{ - if (CloseButton) - CloseButton->drop(); - if (Panel) - Panel->drop(); - - // drop images - u32 i; - for (i=0; idrop(); - Images[i]->remove(); - } - Images.clear(); -} -void CGUITextureCacheBrowser::updateImageList() -{ - if (!Panel) - return; - - video::IVideoDriver* Driver = Environment->getVideoDriver(); - - // clear images - u32 i; - for (i=0; idrop(); - Images[i]->remove(); - } - Images.clear(); - - u32 count = (u32)Driver->getTextureCount(); - - s32 h = Panel->getClientArea().getWidth()-10; - s32 hw = h/2; - core::rect pos(Panel->getClientArea().getCenter().X - Panel->getAbsolutePosition().UpperLeftCorner.X - hw, 5, - Panel->getClientArea().getCenter().X - Panel->getAbsolutePosition().UpperLeftCorner.X + hw, h+5); - - core::position2di moveDist(0, h+5); - - for (u32 i=0; igetTextureByIndex(i); - details = L"File name: "; - details += tex->getName(); - details += L"\nFormat: "; - video::ECOLOR_FORMAT cf = tex->getColorFormat(); - - bool alpha = false; - - switch (cf) - { - case video::ECF_A1R5G5B5: - details += L"A1R5G5B5 (16-bit with 1-bit alpha channel)\n"; - alpha = true; - break; - case video::ECF_R5G6B5: - details += L"R5G6B5 (16-bit, no alpha channel)\n"; - break; - case video::ECF_R8G8B8: - details += L"R8G8B8 (16-bit, no alpha channel)\n"; - break; - case video::ECF_A8R8G8B8: - details += L"R8G8B8 (32-bit with 8-bit alpha channel)\n"; - alpha = true; - break; - default: - details += L"Unknown\n"; - } - - core::dimension2du osize = tex->getOriginalSize(); - core::dimension2du size = tex->getOriginalSize(); - - details += "Size: "; - details += size.Width; - details += "x"; - details += size.Height; - - if (osize != size) - { - details += "\nOriginal Size: "; - details += osize.Width; - details += "x"; - details += osize.Height; - } - - details += L"\nMip-maps: "; - - if (tex->hasMipMaps()) - details += L"Yes\n"; - else - details += L"No\n"; - - IGUIImage* img = Environment->addImage(tex, core::position2di(1,1), alpha, Panel, i); - img->grab(); - Images.push_back(img); - img->setRelativePosition(pos); - img->setToolTipText(details.c_str()); - img->setScaleImage(true); - img->setColor( SelectedTexture == (s32)i ? video::SColor(255,255,255,255) : video::SColor(128,128,128,128) ); - - pos = pos + moveDist; - } -} - -void CGUITextureCacheBrowser::updateAbsolutePosition() -{ - IGUIWindow::updateAbsolutePosition(); - updateImageList(); -} - -//! called if an event happened. -bool CGUITextureCacheBrowser::OnEvent(const SEvent &event) -{ - switch(event.EventType) - { - case EET_GUI_EVENT: - if (event.GUIEvent.EventType == EGET_ELEMENT_FOCUS_LOST) - { - if (event.GUIEvent.Caller == (IGUIElement*)this) - Dragging = false; - return true; - } - else - if (event.GUIEvent.EventType == EGET_BUTTON_CLICKED) - { - if (event.GUIEvent.Caller == CloseButton) - { - remove(); - return true; - } - } - break; - case EET_MOUSE_INPUT_EVENT: - switch(event.MouseInput.Event) - { - case EMIE_LMOUSE_PRESSED_DOWN: - DragStart.X = event.MouseInput.X; - DragStart.Y = event.MouseInput.Y; - - if (getElementFromPoint(DragStart) == this) - { - if (!Environment->hasFocus(this)) - { - Dragging = IsDraggable; - //Environment->setFocus(this); - if (Parent) - Parent->bringToFront(this); - } - return true; - } - else - { - if (Panel->getAbsolutePosition().isPointInside(DragStart)) - { - // select an image - IGUIElement* el = Panel->getElementFromPoint(DragStart); - if (el && el != Panel) - { - if (el->getType() == EGUIET_IMAGE) - { - setSelected(el->getID()); - } - } - else - { - setSelected(); - } - } - } - break; - case EMIE_LMOUSE_LEFT_UP: - Dragging = false; - //Environment->removeFocus(this); - return true; - case EMIE_MOUSE_MOVED: - if (Dragging) - { - // gui window should not be dragged outside its parent - if (Parent) - if (event.MouseInput.X < Parent->getAbsolutePosition().UpperLeftCorner.X +1 || - event.MouseInput.Y < Parent->getAbsolutePosition().UpperLeftCorner.Y +1 || - event.MouseInput.X > Parent->getAbsolutePosition().LowerRightCorner.X -1 || - event.MouseInput.Y > Parent->getAbsolutePosition().LowerRightCorner.Y -1) - - return true; - - - move(core::position2d(event.MouseInput.X - DragStart.X, event.MouseInput.Y - DragStart.Y)); - DragStart.X = event.MouseInput.X; - DragStart.Y = event.MouseInput.Y; - return true; - } - break; - default: - break; - } - default: - break; - } - - return Parent ? Parent->OnEvent(event) : false; -} - -void CGUITextureCacheBrowser::setSelected(s32 index) -{ - SelectedTexture = index; - updateImageList(); - printf("Texture %d selected\n", index); -} - -void CGUITextureCacheBrowser::draw() -{ - if (!IsVisible) - return; - - IGUISkin* skin = Environment->getSkin(); - - core::rect rect = AbsoluteRect; - core::rect *cl = &AbsoluteClippingRect; - - // draw body fast - rect = skin->draw3DWindowBackground(this, true, skin->getColor(EGDC_ACTIVE_BORDER), - AbsoluteRect, &AbsoluteClippingRect); - - // draw window text - if (Text.size()) - { - rect.UpperLeftCorner.X += skin->getSize(EGDS_TEXT_DISTANCE_X); - rect.UpperLeftCorner.Y += skin->getSize(EGDS_TEXT_DISTANCE_Y); - rect.LowerRightCorner.X -= skin->getSize(EGDS_WINDOW_BUTTON_WIDTH) + 5; - - IGUIFont* font = skin->getFont(); - if (font) - font->draw(Text.c_str(), rect, skin->getColor(EGDC_ACTIVE_CAPTION), false, true, cl); - } - - IGUIElement::draw(); -} - - -bool CGUITextureCacheBrowser::isDraggable() const -{ - return IsDraggable; -} - -void CGUITextureCacheBrowser::setDraggable(bool draggable) -{ - IsDraggable = draggable; - - if (Dragging && !IsDraggable) - Dragging = false; -} - - -//! Returns the rectangle of the drawable area (without border, without titlebar and without scrollbars) -core::rect CGUITextureCacheBrowser::getClientRect() const -{ - return core::recti(); -} - -} // namespace gui -} // namespace irr +// Copyright (C) 2002-2012 Nikolaus Gebhardt / Gaz Davidson +// This file is part of the "Irrlicht Engine". +// For conditions of distribution and use, see copyright notice in irrlicht.h + +#include "CGUITextureCacheBrowser.h" +#include "IGUIEnvironment.h" +#include "IGUIButton.h" +#include "IGUISkin.h" +#include "IGUIFont.h" +#include "IVideoDriver.h" + +namespace irr +{ +namespace gui +{ + +CGUITextureCacheBrowser::CGUITextureCacheBrowser(IGUIEnvironment* environment, s32 id, IGUIElement *parent) +: IGUIWindow(environment, parent, id, core::rect(0,0,300,200)), + CloseButton(0), Panel(0), SelectedTexture(-1), Dragging(false), IsDraggable(true) +{ + #ifdef _DEBUG + setDebugName("CGUITextureCacheBrowser"); + #endif + + IGUISkin* skin = 0; + IGUISpriteBank* sprites = 0; + video::SColor color(255,255,255,255); + + if (environment) + skin = environment->getSkin(); + + s32 buttonw = 15; + if (skin) + { + buttonw = skin->getSize(EGDS_WINDOW_BUTTON_WIDTH); + sprites = skin->getSpriteBank(); + color = skin->getColor(EGDC_WINDOW_SYMBOL); + } + s32 posx = RelativeRect.getWidth() - buttonw - 4; + + CloseButton = Environment->addButton(core::rect(posx, 3, posx + buttonw, 3 + buttonw), this, -1, + L"", skin ? skin->getDefaultText(EGDT_WINDOW_CLOSE) : L"Close" ); + CloseButton->setSubElement(true); + CloseButton->setAlignment(EGUIA_LOWERRIGHT, EGUIA_LOWERRIGHT, EGUIA_UPPERLEFT, EGUIA_UPPERLEFT); + if (sprites) + { + CloseButton->setSpriteBank(sprites); + CloseButton->setSprite(EGBS_BUTTON_UP, skin->getIcon(EGDI_WINDOW_CLOSE), color); + CloseButton->setSprite(EGBS_BUTTON_DOWN, skin->getIcon(EGDI_WINDOW_CLOSE), color); + } + + CloseButton->grab(); + + // window title + Text = L"Texture Browser"; + + // panel element + Panel = new CGUIPanel(environment, this); + Panel->setRelativePosition( core::rect(1, buttonw + 5, 151, RelativeRect.getHeight() - 1)); + Panel->setAlignment(EGUIA_UPPERLEFT, EGUIA_UPPERLEFT, EGUIA_UPPERLEFT, EGUIA_LOWERRIGHT); + Panel->setBorder(true); + Panel->setSubElement(true); + + // some buttons + + + // add images from texture cache + updateImageList(); + +} + +CGUITextureCacheBrowser::~CGUITextureCacheBrowser() +{ + if (CloseButton) + CloseButton->drop(); + if (Panel) + Panel->drop(); + + // drop images + u32 i; + for (i=0; idrop(); + Images[i]->remove(); + } + Images.clear(); +} +void CGUITextureCacheBrowser::updateImageList() +{ + if (!Panel) + return; + + video::IVideoDriver* Driver = Environment->getVideoDriver(); + + // clear images + u32 i; + for (i=0; idrop(); + Images[i]->remove(); + } + Images.clear(); + + u32 count = (u32)Driver->getTextureCount(); + + s32 h = Panel->getClientArea().getWidth()-10; + s32 hw = h/2; + core::rect pos(Panel->getClientArea().getCenter().X - Panel->getAbsolutePosition().UpperLeftCorner.X - hw, 5, + Panel->getClientArea().getCenter().X - Panel->getAbsolutePosition().UpperLeftCorner.X + hw, h+5); + + core::position2di moveDist(0, h+5); + + for (u32 i=0; igetTextureByIndex(i); + details = L"File name: "; + details += tex->getName(); + details += L"\nFormat: "; + video::ECOLOR_FORMAT cf = tex->getColorFormat(); + + bool alpha = false; + + switch (cf) + { + case video::ECF_A1R5G5B5: + details += L"A1R5G5B5 (16-bit with 1-bit alpha channel)\n"; + alpha = true; + break; + case video::ECF_R5G6B5: + details += L"R5G6B5 (16-bit, no alpha channel)\n"; + break; + case video::ECF_R8G8B8: + details += L"R8G8B8 (16-bit, no alpha channel)\n"; + break; + case video::ECF_A8R8G8B8: + details += L"R8G8B8 (32-bit with 8-bit alpha channel)\n"; + alpha = true; + break; + default: + details += L"Unknown\n"; + } + + core::dimension2du osize = tex->getOriginalSize(); + core::dimension2du size = tex->getOriginalSize(); + + details += "Size: "; + details += size.Width; + details += "x"; + details += size.Height; + + if (osize != size) + { + details += "\nOriginal Size: "; + details += osize.Width; + details += "x"; + details += osize.Height; + } + + details += L"\nMip-maps: "; + + if (tex->hasMipMaps()) + details += L"Yes\n"; + else + details += L"No\n"; + + IGUIImage* img = Environment->addImage(tex, core::position2di(1,1), alpha, Panel, i); + img->grab(); + Images.push_back(img); + img->setRelativePosition(pos); + img->setToolTipText(details.c_str()); + img->setScaleImage(true); + img->setColor( SelectedTexture == (s32)i ? video::SColor(255,255,255,255) : video::SColor(128,128,128,128) ); + + pos = pos + moveDist; + } +} + +void CGUITextureCacheBrowser::updateAbsolutePosition() +{ + IGUIWindow::updateAbsolutePosition(); + updateImageList(); +} + +//! called if an event happened. +bool CGUITextureCacheBrowser::OnEvent(const SEvent &event) +{ + switch(event.EventType) + { + case EET_GUI_EVENT: + if (event.GUIEvent.EventType == EGET_ELEMENT_FOCUS_LOST) + { + if (event.GUIEvent.Caller == (IGUIElement*)this) + Dragging = false; + return true; + } + else + if (event.GUIEvent.EventType == EGET_BUTTON_CLICKED) + { + if (event.GUIEvent.Caller == CloseButton) + { + remove(); + return true; + } + } + break; + case EET_MOUSE_INPUT_EVENT: + switch(event.MouseInput.Event) + { + case EMIE_LMOUSE_PRESSED_DOWN: + DragStart.X = event.MouseInput.X; + DragStart.Y = event.MouseInput.Y; + + if (getElementFromPoint(DragStart) == this) + { + if (!Environment->hasFocus(this)) + { + Dragging = IsDraggable; + //Environment->setFocus(this); + if (Parent) + Parent->bringToFront(this); + } + return true; + } + else + { + if (Panel->getAbsolutePosition().isPointInside(DragStart)) + { + // select an image + IGUIElement* el = Panel->getElementFromPoint(DragStart); + if (el && el != Panel) + { + if (el->getType() == EGUIET_IMAGE) + { + setSelected(el->getID()); + } + } + else + { + setSelected(); + } + } + } + break; + case EMIE_LMOUSE_LEFT_UP: + Dragging = false; + //Environment->removeFocus(this); + return true; + case EMIE_MOUSE_MOVED: + if (Dragging) + { + // gui window should not be dragged outside its parent + if (Parent) + if (event.MouseInput.X < Parent->getAbsolutePosition().UpperLeftCorner.X +1 || + event.MouseInput.Y < Parent->getAbsolutePosition().UpperLeftCorner.Y +1 || + event.MouseInput.X > Parent->getAbsolutePosition().LowerRightCorner.X -1 || + event.MouseInput.Y > Parent->getAbsolutePosition().LowerRightCorner.Y -1) + + return true; + + + move(core::position2d(event.MouseInput.X - DragStart.X, event.MouseInput.Y - DragStart.Y)); + DragStart.X = event.MouseInput.X; + DragStart.Y = event.MouseInput.Y; + return true; + } + break; + default: + break; + } + default: + break; + } + + return Parent ? Parent->OnEvent(event) : false; +} + +void CGUITextureCacheBrowser::setSelected(s32 index) +{ + SelectedTexture = index; + updateImageList(); + printf("Texture %d selected\n", index); +} + +void CGUITextureCacheBrowser::draw() +{ + if (!IsVisible) + return; + + IGUISkin* skin = Environment->getSkin(); + + core::rect rect = AbsoluteRect; + core::rect *cl = &AbsoluteClippingRect; + + // draw body fast + rect = skin->draw3DWindowBackground(this, true, skin->getColor(EGDC_ACTIVE_BORDER), + AbsoluteRect, &AbsoluteClippingRect); + + // draw window text + if (Text.size()) + { + rect.UpperLeftCorner.X += skin->getSize(EGDS_TEXT_DISTANCE_X); + rect.UpperLeftCorner.Y += skin->getSize(EGDS_TEXT_DISTANCE_Y); + rect.LowerRightCorner.X -= skin->getSize(EGDS_WINDOW_BUTTON_WIDTH) + 5; + + IGUIFont* font = skin->getFont(); + if (font) + font->draw(Text.c_str(), rect, skin->getColor(EGDC_ACTIVE_CAPTION), false, true, cl); + } + + IGUIElement::draw(); +} + + +bool CGUITextureCacheBrowser::isDraggable() const +{ + return IsDraggable; +} + +void CGUITextureCacheBrowser::setDraggable(bool draggable) +{ + IsDraggable = draggable; + + if (Dragging && !IsDraggable) + Dragging = false; +} + + +//! Returns the rectangle of the drawable area (without border, without titlebar and without scrollbars) +core::rect CGUITextureCacheBrowser::getClientRect() const +{ + return core::recti(); +} + +} // namespace gui +} // namespace irr -- cgit v1.1