Code Monkey home page Code Monkey logo

cegui / cegui Goto Github PK

View Code? Open in Web Editor NEW
424.0 17.0 71.0 45.4 MB

Crazy Eddie's GUI library is a versatile, fast, adjustable, multi-platform, C++ library for creating graphical user interfaces for games and rendering applications

Home Page: http://cegui.org.uk

License: MIT License

CMake 1.66% Makefile 0.03% C++ 94.92% Java 0.03% Shell 0.15% C 2.09% Lua 0.61% Batchfile 0.01% Python 0.45% SWIG 0.06%
game-development ui gui widget-library library cross-platform ui-components c-plus-plus cpp

cegui's Introduction

Crazy Eddie's GUI System Mk-2

CEGUI logo

http://www.cegui.org.uk

Copyright ©2004 - 2022 Paul D Turner, The CEGUI Development Team and Contributing Authors

The majority of the auxiliary files for CEGUI, that used to be plain text, are now kept in a "doxygenised" format within the doc/doxygen directory - please see those files, or generate the documentation for a more friendly format. Alternatively, visit http://static.cegui.org.uk/docs for all your documentation needs!

What follows is just a quick-start guide, go to our doxygen docs for more detailed documentation.

Available branches and versions

  • The CEGUI repository consists of multiple branches:
    • v0-8 provides the latest stable ABI compatible (to 0.8.X releases) version of CEGUI. Based on the C++03 standard and compatible with most common compilers, including Visual Studio 2008-2015. As this branch is ABI compatible, it is possible to replace CEGUI dynamic libraries of version 0.8.X with newer 0.8.X versions, or vice-versa, without having to recompile project. This branch is also the base for new 0.8.X releases.
    • v0 Provides the latest stable API compatible version of CEGUI and contains changes that break the ABI. Based on the C++03 standard and compatible with most common compilers, including Visual Studio 2008-2015. Versions from this branch will be used for the next minor version release.
    • default contains changes that will only be used in the next major version. Based on the C++11 standard and compatible with most common up-to date compilers, including Visual Studio 2013 or newer. This branch is highly unstable, will introduce fundamental changes and breaks ABI and API compatibility. We do not recommend you to use this in production, unless you heavily depend on a feature and discussed this with a developer of CEGUI before: This is recommended so that you are aware of all potential risks. In the general case you are advised to use one of the stable branches, to save you a lot of headache.

The v0-8 and v0 branches are considered stable but do undergo bug-fixes and small changes, which do not break ABI and API respectively. These changes of course introduce a small risk that there might be temporary issues for the moment in the branches. If you notice any bugs in those branches, please report them to us as soon as possible - use the forum and/or our IRC channels #cegui and #cegui-devel on irc.freenode.net to inform us. Please consider that we are not available on IRC 24 hours per day, but feel free to idle there until we respond. If in doubt which branch to use, also feel free to ask us this way. For production usage we generally recommend to use a stable release version. A list of releases can be found on the on our website.

Contributing

We are happiest with clean pull requests containing conscise commits with proper commit messages. We also accept plain patches but making it easier for us to just accept your contribution with one click greatly speeds up the review process.

Here is an explanation on how to fork from our repository, commit changes to your fork, and create a pull request targeting the right branch: https://confluence.atlassian.com/display/BITBUCKET/Fork+a+Repo,+Compare+Code,+and+Create+a+Pull+Request

Please also keep in mind to target the right repository. We prefer to target the ABI compatible branch if possible. Otherwise the API compatible ones. For information about ABI/API compatibility, please read this page: https://community.kde.org/Policies/Binary_Compatibility_Issues_With_C%2B%2B

If in doubt which branch to target, please contact us!

Building CEGUI

The following script is more or less universal for *NIX systems and Windows. Minor changes may be required.

cd $cegui_folder
# you can call the folder differently but "build" is customary
mkdir build/
cd build/
# run the configure step
cmake-gui ../
# fix any issues pointed out by cmake
# not all dependencies are required so if some are not found, don't panic and carry on!
# alternative (if you are a command line pro)
# cmake ../

At this point, Makefiles, project files or something else will be generated. Next step depends on which that is.

For Makefiles, just run

cd $cegui_folder
cd build/
make

For Visual Studio solutions, double click, change Build Mode accordingly (Release, Debug, ...) and press Build.

Installing CEGUI

This section only makes sense on *NIX-like systems.

Make sure you have the correct CMAKE_INSTALL_PREFIX set at configure time. Alternativelly rerun cmake and set it. By default it should be /usr/local/ but you may want /usr/.

cd $cegui_folder
cd build/
sudo make install

Running CEGUI samples

If you installed CEGUI system-wide just call:

CEGUISampleFramework-0

If is preferable to call it from the command line because it will ask you to select a renderer in case you have more than 1 available.

If you have no installed system-wide, it's a bit more involved and complicated.

cd $cegui_folder
cd build/bin/
CEGUI_SAMPLE_DATAPATH=../../datafiles ./CEGUISampleFramework-0

We want to answer some questions and misconceptions:

Why are there so many dependencies?

CEGUI has relatively few required dependencies (currently only glm) and many optional dependencies. The fact that it supports many different rendering libraries and engines, many different image loaders/codecs (with pass through options) and many different xml parsers is a good thing and only an uninformed person would tell you otherwise.

CMake tells me something was not found, is this a problem?

If CMake tells you that something was not found, you shall not panic ;) ! Most probably it's a harmless message. You should only worry if a dependency you know you need is not found or if no dependencies are found at all. In the latter case, on Windows and Mac OS X, you probably did not put the "dependencies" folder (including the dependencies compiled in Debug/Release/whatever-else-you-need) into the folder containing all CEGUI files and folders. You can also specify another folder in CMake using the variable CEGUI_DEPENDENCIES_DIR.

What are the version numbers in the dlls and executables good for? How to remove them?

This numbering system does actually serve a very important purpose! Please let us keep them. It allows Linux distributions (and others) to install multiple CEGUI API versions alongside which eases migration and speeds up adoption of new CEGUI versions. On Windows this will allow us to provide you with precompiled CEGUI dependencies using Nuget in the future.

In my application, the OS cursors that is shown above the CEGUI cursor is a lot faster, why?

This is expected behaviour. First of all you should always test performance in Release mode, but even there the cursor will be slower. The reason is simply that it is very unlikely any application will have a cursor as fast as the OS cursor. Also remember that the speed is closely tied to your frame rate, so if you run the HelloWorld demo at 5000 FPS, the difference will be less but still noticable. Any game, simulation or other application out there that renders its own cursor via OpenGL/Direct3D functions similarly. However, the cursor speed is not an issue for users if your application runs at rasonable frame rates (>60 FPS) without frame drops and will not be perceived as such. Once you hide the OS cursor then the delay will probably not be noticable to you anymore.

So many DLLs, why does CEGUI cause a "DLL hell"? What about static linking?

First off, the term "DLL hell" is used wrongly in this context. It does not mean "I see many DLL files, this must be hell!". Dynamically linking the CEGUI library is the best way to have things working as they are supposed to and guaranteeing good compatibility and a low chance of issues arising with dependencies. On Windows we recommend to use dynamic linking with CEGUI rather than static linking, as past experience (some of the users ran into technical issues) has shown us that this is safer. However, if you know what you are doing you can definitely use static linking. Be aware though that we only test dynamic linking regularly, so the CMake files might be outdated and you might have to add linked libraries to your IDE yourself etc. On a positive note: in the upcoming 1.0 version we will reduce the amount of DLLs CEGUI creates by merging some of them into the Base library. A short but definitely not complete summary of advantages and disadvantages of static vs dynamic linking can be found here: http://stackoverflow.com/questions/1993390/static-linking-vs-dynamic-linking

Is CEGUI slower/faster than other libraries? Why is it slow in my case?

Mostly when users complained in the forums about CEGUI's speed, it turned out to be that they either ran the application in Debug config or did something wrong: It can be slow if you are loading layout resources/files every frame or causing unnecessary updates and events. Or it can be slow if you are unnecessarily updating CEGUI multiple times per frame in your program. If you cannot find the issue then it is best to perform a forum/google search and - if you do not find anything helpful - to describe your setup in detail and what issues you have. When CEGUI gets slow it can also be due to a very specific usage of specific features, which we did not expect or test. In this case we would like you to describe your use-case in the forum so we can find a solution or, if you are capable of solving the issue yourself, create a pull-request on bitbucket.

In general CEGUI is very fast and can easily compete with other GUI libraries in speed (especially Flash-based ones, since they do not access OpenGL or Direct3D directly). While no complex library out there will ever be perfectly optimised, CEGUI can be considered highly performant. This is true for the computations done on the CPU as well as those on the GPU. It still runs optimally when hundreds of windows are opened and rendered at the same time.

The best proof that CEGUI is fast is that big proprietary games, which displays hundreds of widgets and use complex hierarchies, have been made using CEGUI (Torchlight 1, Torchlight 2, Venetica, etc.).

Most of our samples, if started in Release mode, will render at speeds above 3000 frames per second on a modern CPU and GPU. As an additional note for some people who liked to cite dubious benchmarks regarding such speed comparisons: benchmarks are situation-dependent and could easily misrepresent a library's actual speed by wrong, inefficient or unusual usage. If used correctly and inside the bounds of expected usage, CEGUI performs extremely well.

cegui's People

Contributors

alexpux avatar bbilas avatar cbeck88 avatar dhitchen avatar djreep81 avatar egore avatar erihel avatar erikogenvik avatar filip-martinko avatar fluxy avatar fopat avatar georgeraraujo avatar hhyyrylainen avatar ident avatar jarkortel avatar kortemik avatar lindquist avatar lucebac avatar manhnt9 avatar mpreisler avatar niello avatar pauldtuk avatar ronaldta avatar rpaciorek avatar s172262 avatar skogler avatar timotei avatar vorlov-playrix avatar yaronct avatar zkolosok avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cegui's Issues

ListboxItem::getOwnerWindow takes a parameter

Original report by Anonymous.


Automatic migration. Original reporter: "Clay"

This is the code for ListboxItem::getOwnerWindow:
const Window* getOwnerWindow(const Window* owner) {return d_owner;}

This should be:
const Window* getOwnerWindow() const {return d_owner;}

Reproducibility: always

Helper functions to unsubscribe from Events

Original report by Anonymous.


Automatic migration. Original reporter: "Van"

There has always been alot of confusion about how to unsubscribe (disconnect) from an event. What may help is a function that could unsubscribe from the event or one that returns the CEGUI::Event::Connection object.

I suggest either one or both of these two functions:

[b]bool CEGUI::Window::unSubscribeEvent( "MyEvent", &myHandler )[/b]

and/or

[b]CEGUI::Event::Connection *CEGUI::Window::getEventConnection( "MyEvent", &myHandler )[/b]

Reproducibility: N/A

CEGUI::ScrollPane exception during destruction of parent window.

Original report by Anonymous.


Automatic migration. Original reporter: "Van"

Summation:
When calling CEGUI::WindowManager::getSingleton().destroyWindow() to destroy a window containing a CEGUI::ScrollPane an acception occurs the generates the following error message in the CEGUI.LOG:

12/07/2006 08:11:24 (Error) Exception: WindowManager::getWindow - A Window object with the name 'Inventory/Contents/16/ScrollablePane__auto_container__' does not exist within the system

Please review this forum topic for complete details:
http://www.cegui.org.uk/phpBB2/viewtopic.php?t=1709

Reproducibility: always

OpenGL renderer GL state problems

Original report by Anonymous.


Automatic migration. Original reporter: "muhkuh"

The OpenGL renderer does not set the required culling state to GL_FRONT in 0.41.

In the current CVS version somebody seems to have tried to take care of it but things are worse now.

  1. glCullFace is called with GL_CCW as parameter. Valid parameters for glCullFace are GL_FRONT, GL_BACK and GL_FRONT_AND_BACK. GL_CCW is a valid parameter for glFrontFace! This gives and invalid enum error.

  2. There are no corresponding glPopMatrix calls for the glPushMatrix calls to restore the modelview and the projection matrix. This leads to an "overflow" of the OpenGL matrix stacks (and the old matrices are not restored).

Reproducibility: always

Additional information: File:
cegui_mk2\src\renderers\OpenGLGUIRenderer\openglrenderer.cpp

Affected functions:
void OpenGLRenderer::initPerFrameStates(void)
void OpenGLRenderer::exitPerFrameStates(void)

Affected versions:
0.41
CVS 1.9

Appended fix does:

  1. Turn off culling in initPerFrameStates() completely as I didn't see how culling would be of any use in CEGUI rendering.

  2. Popping previously pushed modelview and projection matrices from the stack inexitPerFrameStates().

System subscribes event but does not unsubscribe on destruction.

Original report by Anonymous.


Automatic migration. Original reporter: "lindquist"

The System constructor subscribes to the Renderer::EventDisplaySizeChanged of the renderer module, but does not unsubscribe from this during destruction.

If you recreate the system, but use the same "old" renderer, then you end up having multiple subscriptions to this event.

Reported here:
http://www.cegui.org.uk/phpBB2/viewtopic.php?t=1527

Reproducibility: always

TabControl enhancements

Original report by Anonymous.


Automatic migration. Original reporter: "zap"

Here's a patch that does the following:

  • Ability to switch tab button pane position to top/bottom at runtime. A single looknfeel for both positions.
  • Enhanced look, more in line with contemporan GUIs.
  • Ability to scroll the tab button pane. When needed, two special buttons are made visible with which you can scroll the tab button pane left/right. Additionaly, you can drag the tab button pane by grabbing it by pressing the middle mouse button and then moving the mouse to left/right. And finally, you can just use the scroll wheel over the tab button pane.
  • Enhanced the PropertyDim Falagard keyword so that you can now reference UDim values as well. For example: will transform the "Height" property (which is in the "{s,o}" format) to a floating-point value by multiplying it with window pixel height. If 'type' keyword is not specified, PropertyDim works exactly as before.
  • Fixed the FrameComponent drawing routines so that the pixmaps are clipped properly against the destination rectangle.
  • Fixed endianess issues with PropertyHelper. Now it could (should) work correctly on Big-Endian machines too (mostly 32-bit colours-related).
  • In PropertyHelper replaced %f format specifiers with %g which gives same effect as cout << float. sprintf/sscanf is about twice faster than std::ostringstream so I've replaced back ostringstream with sprintf.
  • ColourRect specifiers may now be written in short as a single hexadecimal colour if all four values are the same. For example, instead of "tl:FF112233 tr:FF112233 bl:FF112233 br:FF112233" you can now write just "FF112233". Of course, you can use the complete form too.
  • A discutable change: I removed the check in captureInput() so that only active widgets may capture input. In my case I had a "inactive" element (the tab control button) which still needed to capture the input, and, besides, I don't understand why only active widgets may capture the input. I don't foresee any potential problems with this patch, though.

Reproducibility: always

the renderer modules does not handle failure properly

Original report by Anonymous.


Automatic migration. Original reporter: "lindquist"

when you call SomeRenderer::createTexture with a filename or texture size, then the texture is added to the internal list regardless if the sizing or load-from-file operation succeded.

All renderer modules seem to be affected. I have not checked Ogre.

Reproducibility: always

Configure error with pthread library disables OpenGL

Original report by Paul Turner (Bitbucket: pturner, GitHub: pturner).


Original SF tracker item 1183085.

While trying to configure CEGUI 0.2.0 it will disable the OpenGL renderer because of missing references to functions in the pthread library. It seems -lpthread isn't passed to the compile command for the glInterleavedArrays test. Check line 863 of the attached config.log file, and note that -lpthread does get checked further up and is found, just not used later.

I'm using Ubuntu Linux for amd64.

Reproducibility: always

Incorrect use of 'long' in OpenGL Renderer

Original report by Anonymous.


Automatic migration. Original reporter: "oddsocks"

The file cegui_mk2/include/renderers/OpenGLGUIRenderer/openglrenderer.h uses longs where ints should be used which causes problems on 64bit systems such as black samples.

Reproducibility: always

Additional information: Attached is a patch created by Hans de Goede for 0.4.1

Tooltip error between windows

Original report by Anonymous.


Automatic migration. Original reporter: "Van"

Version: 0.4.1 (from CVS as of today)
Module: CEGUIWindow.cpp
Function: const String& Window::getTooltipText(void) const
Line: 3160
<bRendering System: Ogre Dagon

This error usually occurs when a window has been deleted and another window is being created. Doesn't always do it, but I can reproduced 1/2 the time.

Reproducibility: sometimes

Additional information: Error:
Unhandled exception at 0x00adab76 (CEGUIBase_d.dll) in Client.exe: 0xC0000005: Access violation reading location 0x00000219.

Instruction (Line 3160)
if ( d_inheritsTipText && d_parent && d_tooltipText.empty() )

Call Stack
CEGUIBase_d.dll!CEGUI::Window::getTooltipText() Line 3160 + 0x3 C++
CEGUIBase_d.dll!CEGUI::Tooltip::doInactiveState(float elapsed=2.1370001) Line 224 + 0x1a C++
CEGUIBase_d.dll!CEGUI::Tooltip::updateSelf(float elapsed=2.1370001) Line 324 C++
CEGUIBase_d.dll!CEGUI::Window::update(float elapsed=2.1370001) Line 2973 + 0x14 C++
CEGUIBase_d.dll!CEGUI::Window::update(float elapsed=2.1370001) Line 2981 C++
CEGUIBase_d.dll!CEGUI::System::injectTimePulse(float timeElapsed=2.1370001) Line 1101 C++
Client.exe!clsEventManager::frameEnded(const Ogre::FrameEvent & evt={...}) Line 77 + 0x2f C++

System::getDefaultTooltip vs System::setTooltip

Original report by Anonymous.


Automatic migration. Original reporter: "Clay"

Something that should probably be reviewed. The System class has the setTooltip method, which modifes (in part) the return value for getDefaultTooltip. Shouldn't these two be a matched pair setTooltip/getTooltip or setDefaultTooltip/getDefaultTooltip just like the get/setDefaultMouseCursor is?

Reproducibility: N/A

Falagard example layout missing

Original report by Anonymous.


Automatic migration. Original reporter: "melian"

The Vanilla layout cannot be found in linux archive ( but present in windows one ) in the release 0.5.0-RC1. The missing files are :

Samples/datafiles/layouts/VanillaConsole.layout
Samples/datafiles/layouts/VanillaWindows.layout

Reproducibility: always

Navigation with Tab key

Original report by Anonymous.


Automatic migration. Original reporter: "mrbolha"

It should be possible to switch the component with the keyboard focus by pressing the "Tab" key. Also, "Shift-Tab" should be used to navigate backwards.

Optionally, components like "MultiLineEditbox" might want to handle "Tab" keystrokes, generating "extra spaces" in the text, and not changing the Focus.

Reproducibility: N/A

Premake missing definition of minmax

Original report by Anonymous.


Automatic migration. Original reporter: "Dalfy"

Minmax issue in OpenGLRenderer

IRC log:

muhkuh good,
muhkuh btw. just found a little bug in the OpenglRenderer
muhkuh the old windows min/max macro thing
muhkuh adding a define("NOMINMAX") in OpenGLGUIRenderers premake.lue would fix this
Dalfy Thanks for the comment, I will add a note on Mantis

Reproducibility: always

OS: Win32, OS build: , Platform: VS2005

CEGUI headers generate inline/dllimport warnings on GCC with Windows

Original report by Anonymous.


Automatic migration. Original reporter: "mdmkolbe"

The public headers are generating lots (700+) of warnings on GCC with Windows (at least with -W -Wall). Generally public headers should be warning free as any warnings in them will cause warnings in any downstream project.

The warnings are of the form:
include/CEGUIString.h:4772: warning: inline function 'void CEGUI::String::init()' is declared as dllimport: attribute ignored.

The straightforward solution would be to move the bodies of these implicitly inline functions to a *.cpp file. However in discussion on IRC, Dalfy indicated that doing that would cost significant performance on unix. Other solutions suggested include: making CEGUIEXPORT empty in the non-export, non-MSVC case; pulling the function bodies into a file that is conditionally included in either the *.h or *.cpp files depending on which is safe.

Reproducibility: always

Additional information: Attached are the warnings.

Compiler is: gcc (GCC) 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125)
Compiled with "-W -Wall".
System is: CYGWIN_NT-5.1 seville 1.5.19(0.150/4/2) 2006-01-20 13:28 i686 Cygwin

Z value incorrectly specified for mouse cursor

Original report by Anonymous.


Automatic migration. Original reporter: "Sneftel"

The mouse cursor sprite is given Z value 1.0 (the furthest value). This causes it to be drawn under all window elements if Z-buffering is enabled and the Z-buffer is not cleared between window drawing and cursor drawing. To fix this, change line 64 of CEGUIMouseCursor.cpp from "d_position.d_z = 1.0f;" to "d_position.d_z = 0.0f;".

Reproducibility: always

Solution for the TODO in the CEGUIProperty.cpp and text property expanded to Tooltip

Original report by Anonymous.


Automatic migration. Original reporter: "Xirnohn"

// TODO: Create an helper function to extract whether the property
// should be inlined or exported as a text node
// At the moment export only Text property using text node

And now the Tooltip property saves like the Text property.
like: blah blah

Reproducibility: always

Additional information: I attach the CEGUIProperty.h and CEGUIProperty.cpp.

Dragcontainer window Tooltip doesn't work.

Original report by Anonymous.


Automatic migration. Original reporter: "Van"

Version: 0.4.1 (from CVS)
Renderer: Ogre Dagon (from CVS)

I don't think the ToolTip is working for the DragContainer. I create a StaticImage window and attach it to a DragContainer window.According to instructions, I have to disable() the StaticImage so the events get passed to the DragContainer. I set the tooltip text on the DragContainer but it never appears. The tooltip works fine for other window items (like pushbuttons, etc). BTW, I tried setting the tooltip for my StaticImage but it didn't work either (nor should it have with it being disabled).

Reproducibility: always

Listbox::onMouseButtonDown does base class handling in beginning...

Original report by Anonymous.


Automatic migration. Original reporter: "lindquist"

This means that a subscriber to MouseButtonDown for a Listbox widget will not receive the latest selection information, as this is "applied" after the event is fired.

Changing it will change the order the MouseButtonDown and SelectionChanged events are fired.

Reproducibility: always

ScrollablePane getUnclippedInnerRect

Original report by Paul Turner (Bitbucket: pturner, GitHub: pturner).


Original SF tracker item 1174780.

Hello,
I think the ScrollablePane getUnclippedInnerRect function don't take care if the scrollbars are visible or not.

I use ScrollPane->getUnclippedInnerRect to place my childs windows with a 1.0 relative width.

I call a rearrangement of my child windows each time i resize the ScrollPane ( with Frame Parent ) but when i get to a state where VertScrollBar is visible, it
occurs that VertScroll recover the childs, horzScrollBar appears.

I have only test it on VertScrollbar.

DaesDemon

Reproducibility: always

SliderThumb widget incorrectly mapped in variouse shemes

Original report by Anonymous.


Automatic migration. Original reporter: "muhkuh"

The SliderThumb widget in variouse shemes is incorrectly mapped:

TargetType="CEGUI/SliderThumb"
but should be:
TargetType="CEGUI/Thumb"

This raises an exception when a slider widget of the affected sheme is created.

Reproducibility: always

Additional information: Affected files:
TaharezLookSkin.scheme
TaharezLookWidgets.scheme
WindowsLook.scheme
WindowsLookSkin.scheme
WindowsLookWidgets.scheme

DragContainer overwrites position set from drop handler

Original report by Anonymous.


Automatic migration. Original reporter: "lindquist"

When you subscribe to the dragdropitemdropped event and set a new position for the DragContainer in the subscriber, the position will be overwritten after the subscriber returns. pretty annoying

Reproducibility: always

why does edit not support the unicode,like simple chinese

Original report by Anonymous.


Automatic migration. Original reporter: "dzhou"

I have test the cegui 0.4 in windows 2000 platform and find the function is so weak for the edit control, although the edit control is a big promblem for all gui engine.^-^

Reproducibility: always

Additional information: Why mouse move so slowly in the main area of cegui,is this caused by the opengl or directx render?Can it be accelated?

MingW32/Cygwin build fix

Original report by Anonymous.


Automatic migration. Original reporter: "Dalfy"

CEGUI does not build correctly on Mingw32 / Cygwin

MINGW and CYGWIN compatability
This patch converts all render, xmlparser, and major
header files to allow both MINGW and CYGWIN to compile
cegui. neither platform accept __declspec(dllimport).

Imported from sourceforge on July 16, 2006
Submitted by macguyvok

Reproducibility: always

Additional information: This patch makes it possible to compile on MinGW,
though more work is needed to get it to work on MSYS.
Essentially MinGW throws warnings when is sees
__declspec(dllimport), so these are defined out if
MINGW32 is seen, which is defined by the compiler.
Also MinGW's std::exception doesn't accept a parameter
in it's constructor, so these and their corresponding
catches were replaced with CEGUI::String for MinGW only.

OS: Windows, OS build: all, Platform: MingW32

Cloning a font

Original report by Anonymous.


Automatic migration. Original reporter: "spannerman"

Functionality request:
Ability to clone an already loaded font.

Many gui systems will require a font to be displayed in more than one single point size. Currently in order to do this the same font must be loaded twice, with the font size specified differently in XML or dynamically changed via the setProperty("PointSize", intSize); property.

Original topic thread: http://www.cegui.org.uk/phpBB2/viewtopic.php?t=1695

Reproducibility: N/A

Request to overload removeChildWindow for tab containers

Original report by Anonymous.


Automatic migration. Original reporter: "fiesch"

This is the according forum post:

Hi, stumbled across sth you might call a bug.

For a editor I'm doing in ogre and CEGUI I use a TabControl to which i dynamically add and remove tabs depending on the entity being edited.

Thing is:
When you remove a tab using "removeChildWindow", it's auto-generated __auto_btn[WINDOWNAME] doesn't get removed and that throws a duplicate item exception if you try to re-attach the window later on.

Using removeTab helps, but that (as opposed to removeChildWindow) throws an exception if the Tab isn't actually attached to the TabControl
(which is kinda bad for me since i remove all each time and selectively re-add the appropriate tabs)

..i think overloading removeChildWindow for the tabControl would save people a lot of confusion there...

Reproducibility: always

Additional information: Overloading the removeChild window might really improve usability and act more like "outsiders" would expect it to (symetrically to addChildWindow)

Dependency package not updated? (0.5.0-RC1 vc8)

Original report by Anonymous.


Automatic migration. Original reporter: "spannerman"

The dependencies do not seem to be in synch with the source, it is looking for 'freetype2110_D.lib' in CEGUIBase, but the dependency package (CEGUI-0.5.0-RC1-deps-vc8.zip) contains freetype221_D.lib.

Reproducibility: always

Additional information: Downloaded the dependency package (CEGUI-0.5.0-RC1-deps-vc8.zip) on 20/06/2006 at 18:48.

Modify factory module

Original report by Paul Turner (Bitbucket: pturner, GitHub: pturner).


Original SF tracker item 1307126.

FactoryModule :
Add custom path to search factories libraries ( not only system default path ) or just don't force "lib" at begin of filename in linux ( only needed to link binaries with -l , not for dlopen() at runtime )

Reproducibility: always

EventTextAccepted returns true when RE filters out text.

Original report by Anonymous.


Automatic migration. Original reporter: "granx"

Client code might expect the EventTextAccepted to return false when all text entered was filtered out with a regular expression rule. It may be possible for clients to work around this issue by catching the filtered code in another callback, possibly the EventInvalidEntryAttempted ? This is a big change, and not a necessary one as there may exist alternative solutions, but possibly the event should return false when the RE filtered the text.

Reproducibility: always

Additional information: A user tried to filter out the "~" character so that cegui did not handle this event and he could use this button press to close a console. He was keying off of the EventTextAccepted event. Maybe another event for character-by-character entry would have been better for him to subscribe. While the Editbox had the focus, it appeared as though cegui handled this event, so that his client code never had an opportunity to handle it.

XMLParser null termination issue

Original report by Anonymous.


Automatic migration. Original reporter: "oddsocks"

Attached is patch which fixes the null termination issue with the XML Parser and verson 0.4.1. Patch was created by Hans de Goede

Reproducibility: always

d3d9renderer does not disable other texture stages

Original report by Anonymous.


Automatic migration. Original reporter: "_2b"

the d3d9renderer uses only one texture stage and sets all states for stage 0, but does not disable stage 1. so when the main programm does some rendering and uses other stages, cegui-rendering my fail. this may also apply for the d3d8renderer.

to securely disable texture stage 1, use SetTextureStageState(D3DTSS_COLOROP, D3DTOP_DISABLE) and SetTexture(1, 0);

a patch is attached.

Reproducibility: always

Loading textures with MacOSX and OpenGL renderer

Original report by Paul Turner (Bitbucket: pturner, GitHub: pturner).


Original SF tracker item 1225178.

I have a bug with the texture loader included in the openglrenderer.

here is my screen with this loader : http://s-project.renchap.com/Image3.png

and if i activate the IL loader : http://s-project.renchap.com/Image2.png

the code is extracted from the wiki : http://www.cegui.org.uk/wiki/index.php/The_Imbeciles_Guide_to_Creating_a_CEGUI_Window

and i cant see the window title, i dont know if this is the same problem (maybe the same than this one : http://www.cegui.org.uk/modules/newbb/viewtopic.php?topic_id=572&forum=2 ?)

Reproducibility: always

CEGUI with lastest OGRE cvs doesnt compile

Original report by Anonymous.


Automatic migration. Original reporter: "mihaim"

Ogre team changed getSceneManager parameters . Now it requires a string to identify the scene manager.

Reproducibility: always

Additional information: g++ -DHAVE_CONFIG_H -I. -I. -I../../../include -I../../../Samples/common/include -I../../../include -DEXT_HASH -I/usr/include/OGRE -I/usr/include/CEGUI -g -O2 -MT CEGuiOgreBaseApplication.lo -MD -MP -MF .deps/CEGuiOgreBaseApplication.Tpo -c CEGuiOgreBaseApplication.cpp -fPIC -DPIC -o .libs/CEGuiOgreBaseApplication.o
CEGuiOgreBaseApplication.cpp: In constructor CEGuiOgreBaseApplication::CEGuiOgreBaseApplication()': CEGuiOgreBaseApplication.cpp:56: error: no matching function for call to
Ogre::Root::getSceneManager(Ogre::SceneType)'
/usr/include/OGRE/OgreRoot.h:353: error: candidates are: Ogre::SceneManager*
Ogre::Root::getSceneManager(const Ogre::String&) const
make[3]: *** [CEGuiOgreBaseApplication.lo] Error 1

FairChar font fix

Original report by Anonymous.


Automatic migration. Original reporter: "zap"

The FairChar.tga file had width and height that were not powers of two. While this works for advanced cards like GeForce 6800, it doesn't with older cards such as the GeForce 4xx MX series (displays white rectangles instead of glyphs).

This patch fixes this by moving all the glyphs in the image so that it can be reduced to the 256x128 size, and also fixes the corresponding FairChar.imageset file.

Reproducibility: always

System::setDefaultMouseCursor does not change cursor until it is moved over another element

Original report by Anonymous.


Automatic migration. Original reporter: "Clay"

When you call setDefaultMouse cursor on the System object, the actual mouse cursor is not updated until the mouse is moved out of the current Window or into a new Window. In the attached file, I added this code to occur when I clicked the mouse:
CEGUI::System::getSingleton().setDefaultMouseCursor("TaharezLook", "MouseMoveCursor");

In the attached file, the first screenshot is when I move the mouse after changing the cursor, no update. In the second screenshot, this is what happens when I move the cursor over a Window (it changes), and from then on the mouse cursor is the default.

This also occurs if you start on a window then move it off of the window (or onto a child window).

Feel free to mail me with any questions about this bug.

Reproducibility: always

Solution for the TODO in the CEGUIProperty.cpp and text property expanded to Tooltip

Original report by Anonymous.


Automatic migration. Original reporter: "Xirnohn"

// TODO: Create an helper function to extract whether the property
// should be inlined or exported as a text node
// At the moment export only Text property using text node

And now the Tooltip property saves like the Text property.
like: blah blah

Reproducibility: always

Additional information: I attach the CEGUIProperty.h and CEGUIProperty.cpp.

Compile issues on Linux (amd64)

Original report by Paul Turner (Bitbucket: pturner, GitHub: pturner).


Original SF tracker item 1182718.

I have been trying to compile CEGUI on Ubuntu for amd64
without much luck. Here is the error I get:

/usr/bin/ld: /usr/X11R6/lib/libGL.a(glapi.o): relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC
/usr/X11R6/lib/libGL.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [libCEGUIOpenGLRenderer.la] Error 1

I filed a bug against Ubuntu but I have been told this is actually a bug with your code. My original bug along with the response to it can be found here: https://bugzilla.ubuntu.com/show_bug.cgi?id=9206

Reproducibility: always

FreeTypeFont not freeing d_fontData correctly

Original report by Anonymous.


Automatic migration. Original reporter: "nightwolf"

In file CEGUIFreeTypeFont.cpp, line 375, the class member d_fontData is freed by calling the Release() method, which is not correct and produces errors when using a custom memory manager.

Please free the d_fontData member using unloadRawDataContainer() from the current resource provider, allowing custom resource providers to free the container themselves.

If the custom memory manager pads the memory buffers, thus returning slightly different pointers from the ones returned by the CRT, this bug causes an exception to be raised in debug mode by the runtime library itself.

Reproducibility: always

OS: Windows, OS build: XP, Platform: PC

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.