📄 sample_demo4.cpp
字号:
/***********************************************************************
filename: Sample_Demo4.cpp
created: 20/8/2005
author: Paul D Turner
*************************************************************************/
/***************************************************************************
* Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
***************************************************************************/
#include "Sample_Demo4.h"
#include "CEGUI.h"
#include "CEGuiBaseApplication.h"
#include <cstdlib>
int main(int argc, char *argv[])
{
// This is a basic start-up for the sample application which is
// object orientated in nature, so we just need an instance of
// the CEGuiSample based object and then tell that sample application
// to run. All of the samples will use code similar to this in the
// main/WinMain function.
Demo4Sample app;
return app.run();
}
/*************************************************************************
Sample specific initialisation goes here.
*************************************************************************/
bool Demo4Sample::initialiseSample()
{
using namespace CEGUI;
// we will make extensive use of the WindowManager.
WindowManager& winMgr = WindowManager::getSingleton();
// load scheme and set up defaults
SchemeManager::getSingleton().loadScheme("TaharezLook.scheme");
System::getSingleton().setDefaultMouseCursor("TaharezLook", "MouseArrow");
FontManager::getSingleton().createFont("Commonwealth-10.font");
// load an image to use as a background
ImagesetManager::getSingleton().createImagesetFromImageFile("BackgroundImage", "GPN-2000-001437.tga");
// here we will use a StaticImage as the root, then we can use it to place a background image
Window* background = winMgr.createWindow("TaharezLook/StaticImage", "background_wnd");
// set position and size
background->setPosition(UVector2(cegui_reldim(0), cegui_reldim( 0)));
background->setSize(UVector2(cegui_reldim(1), cegui_reldim( 1)));
// disable frame and standard background
background->setProperty("FrameEnabled", "false");
background->setProperty("BackgroundEnabled", "false");
// set the background image
background->setProperty("Image", "set:BackgroundImage image:full_image");
// install this as the root GUI sheet
System::getSingleton().setGUISheet(background);
// now we create a DefaultWindow which we will attach all the widgets to. We could
// have attached them to the background StaticImage, though we want to be a bit tricky
// since we do not wish the background to be faded by the slider - so we create this
// container window so we can affect all the other widgets, but leave the background
// unchanged.
Window* sheet = winMgr.createWindow("DefaultWindow", "root_wnd");
// attach this to the 'real' root
background->addChildWindow(sheet);
//
// widget initialisation
//
// quit button
PushButton* btn = static_cast<PushButton*>(winMgr.createWindow("TaharezLook/Button", "QuitButton"));
sheet->addChildWindow(btn);
btn->setText("Quit!");
btn->setPosition(UVector2(cegui_reldim(0.035f), cegui_reldim( 0.0f)));
btn->setSize(UVector2(cegui_reldim(0.1f), cegui_reldim( 0.036f)));
btn->subscribeEvent(PushButton::EventClicked, Event::Subscriber(&Demo4Sample::handleQuit, this));
btn->setAlwaysOnTop(true);
// Alpha-slider
Slider* slider = static_cast<Slider*>(winMgr.createWindow("TaharezLook/Slider", "my slider"));
sheet->addChildWindow(slider);
slider->setPosition(UVector2(cegui_reldim(0.136f), cegui_reldim( 0.0f)));
slider->setSize(UVector2(cegui_reldim(0.02f), cegui_reldim( 0.075f)));
slider->setAlwaysOnTop(true);
// here we disable inherited alpha so that we will always be able to see the slider
slider->setInheritsAlpha(false);
// set up slider config
slider->setCurrentValue(1.0f);
slider->setClickStep(0.1f);
// subscribe handler that will process slider position changes.
slider->subscribeEvent(Slider::EventValueChanged, &sliderHandler);
// big scroll bar
Scrollbar* vscb = static_cast<Scrollbar*>(winMgr.createWindow("TaharezLook/LargeVerticalScrollbar", "Vert Scroll 1"));
sheet->addChildWindow(vscb);
vscb->setPosition(UVector2(cegui_reldim(0.0f), cegui_reldim( 0.0f)));
vscb->setMinSize(UVector2(cegui_reldim(0.01f), cegui_reldim( 0.01f)));
vscb->setMaxSize(UVector2(cegui_reldim(1.0f), cegui_reldim( 1.0f)));
vscb->setSize(UVector2(cegui_reldim(0.035f), cegui_reldim( 0.83f)));
vscb->setDocumentSize(100);
vscb->setPageSize(5);
vscb->setStepSize(1);
vscb->setAlwaysOnTop(true);
// mini vert scroll bar
Scrollbar* mvsb = static_cast<Scrollbar*>(winMgr.createWindow("TaharezLook/VerticalScrollbar", "MiniVertScroll 1"));
sheet->addChildWindow(mvsb);
mvsb->setPosition(UVector2(cegui_reldim(0.99f), cegui_reldim( 0.015f)));
mvsb->setMinSize(UVector2(cegui_reldim(0.01f), cegui_reldim( 0.01f)));
mvsb->setMaxSize(UVector2(cegui_reldim(1.0f), cegui_reldim( 1.0f)));
mvsb->setSize(UVector2(cegui_reldim(0.01f), cegui_reldim( 0.5f)));
mvsb->setDocumentSize(360);
mvsb->setPageSize(45);
mvsb->setStepSize(1);
mvsb->setAlwaysOnTop(true);
// mini horz scroll bar
Scrollbar* mhsb = static_cast<Scrollbar*>(winMgr.createWindow("TaharezLook/HorizontalScrollbar", "MiniHorzScroll 1"));
sheet->addChildWindow(mhsb);
mhsb->setPosition(UVector2(cegui_reldim(0.485f), cegui_reldim( 0.0f)));
mhsb->setMinSize(UVector2(cegui_reldim(0.01f), cegui_reldim( 0.01f)));
mhsb->setMaxSize(UVector2(cegui_reldim(1.0f), cegui_reldim( 1.0f)));
mhsb->setSize(UVector2(cegui_reldim(0.5f), cegui_reldim( 0.015f)));
mhsb->setDocumentSize(360);
mhsb->setPageSize(45);
mhsb->setStepSize(1);
mhsb->setAlwaysOnTop(true);
//
// Build a window with some text and formatting options via radio buttons etc
//
FrameWindow* textwnd = static_cast<FrameWindow*>(winMgr.createWindow("TaharezLook/FrameWindow", "TextWindow"));
sheet->addChildWindow(textwnd);
textwnd->setPosition(UVector2(cegui_reldim(0.2f), cegui_reldim( 0.2f)));
textwnd->setMaxSize(UVector2(cegui_reldim(0.75f), cegui_reldim( 0.75f)));
textwnd->setMinSize(UVector2(cegui_reldim(0.1f), cegui_reldim( 0.1f)));
textwnd->setSize(UVector2(cegui_reldim(0.5f), cegui_reldim( 0.5f)));
textwnd->setCloseButtonEnabled(false);
textwnd->setText("Crazy Eddie's GUI - Demo 4");
Window* st = winMgr.createWindow("TaharezLook/StaticText", "TextWindow/Static");
textwnd->addChildWindow(st);
st->setPosition(UVector2(cegui_reldim(0.1f), cegui_reldim( 0.2f)));
st->setSize(UVector2(cegui_reldim(0.5f), cegui_reldim( 0.6f)));
st = winMgr.createWindow("TaharezLook/StaticText", "TextWindow/Group label 1");
textwnd->addChildWindow(st);
st->setPosition(UVector2(cegui_reldim(0.65f), cegui_reldim( 0.23f)));
st->setSize(UVector2(cegui_reldim(0.35f), cegui_reldim( 0.05f)));
st->setText("Horz. Formatting");
// disable frame and background on static control
st->setProperty("FrameEnabled", "false");
st->setProperty("BackgroundEnabled", "false");
st = winMgr.createWindow("TaharezLook/StaticText", "TextWindow/Group label 2");
textwnd->addChildWindow(st);
st->setPosition(UVector2(cegui_reldim(0.65f), cegui_reldim( 0.53f)));
st->setSize(UVector2(cegui_reldim(0.35f), cegui_reldim( 0.05f)));
st->setText("Vert. Formatting");
// disable frame and background on static control
st->setProperty("FrameEnabled", "false");
st->setProperty("BackgroundEnabled", "false");
st = winMgr.createWindow("TaharezLook/StaticText", "TextWindow/Box label");
textwnd->addChildWindow(st);
st->setPosition(UVector2(cegui_reldim(0.12f), cegui_reldim( 0.13f)));
st->setSize(UVector2(cegui_reldim(0.35f), cegui_reldim( 0.05f)));
st->setText("Formatted Output");
// disable frame and background on static control
st->setProperty("FrameEnabled", "false");
st->setProperty("BackgroundEnabled", "false");
// word-wrap checkbox
Checkbox* cb = static_cast<Checkbox*>(winMgr.createWindow("TaharezLook/Checkbox", "TextWindow/CB1"));
textwnd->addChildWindow(cb);
cb->setPosition(UVector2(cegui_reldim(0.65f), cegui_reldim( 0.13f)));
cb->setSize(UVector2(cegui_reldim(0.35f), cegui_reldim( 0.05f)));
cb->setText("Word Wrap");
// subscribe a handler to listen for when the check-box button select state changes
cb->subscribeEvent(Checkbox::EventCheckStateChanged, &formatChangedHandler);
// horizontal formatting radio group
RadioButton* rb = static_cast<RadioButton*>(winMgr.createWindow("TaharezLook/RadioButton", "TextWindow/RB1"));
textwnd->addChildWindow(rb);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -