Просмотр исходного кода

Added a static default blending mode to Entity, added BLEND_MODE_NONE blending mode option, made UI components render properly with default blending mode set to BLEND_MODE_NONE

Ivan Safrin 12 лет назад
Родитель
Сommit
c5634e5735

+ 2 - 0
Core/Contents/Include/PolyEntity.h

@@ -714,6 +714,8 @@ namespace Polycode {
 
 			bool snapToPixels;			
 			bool mouseOver;
+        
+            static int defaultBlendingMode;
 			
 			//@}		
 		protected:

+ 7 - 6
Core/Contents/Include/PolyRenderer.h

@@ -264,12 +264,13 @@ namespace Polycode {
 		
 		static const int RENDER_MODE_NORMAL = 0;
 		static const int RENDER_MODE_WIREFRAME = 1;
-		
-		static const int BLEND_MODE_NORMAL = 0;
-		static const int BLEND_MODE_LIGHTEN = 1;
-		static const int BLEND_MODE_COLOR = 2;
-		static const int BLEND_MODE_PREMULTIPLIED = 3;
-		static const int BLEND_MODE_MULTIPLY = 4;
+
+        static const int BLEND_MODE_NONE = 0;
+		static const int BLEND_MODE_NORMAL = 1;
+		static const int BLEND_MODE_LIGHTEN = 2;
+		static const int BLEND_MODE_COLOR = 3;
+		static const int BLEND_MODE_PREMULTIPLIED = 4;
+		static const int BLEND_MODE_MULTIPLY = 5;
 								
 		static const int FOG_LINEAR = 0;
 		static const int FOG_EXP = 1;

+ 3 - 1
Core/Contents/Source/PolyEntity.cpp

@@ -26,6 +26,8 @@
 
 using namespace Polycode;
 
+int Entity::defaultBlendingMode = Renderer::BLEND_MODE_NORMAL;
+
 Rotation::Rotation() {
 	pitch = 0;
 	yaw = 0;
@@ -62,7 +64,7 @@ void Entity::initEntity() {
 	depthWrite = true;
 	ignoreParentMatrix = false;
 	alphaTest = false;
-	blendingMode = Renderer::BLEND_MODE_NORMAL;	
+	blendingMode = Entity::defaultBlendingMode;
 	lockMatrix = false;
 	renderWireframe  = false;
 	colorAffectsChildren = true;

+ 7 - 13
Core/Contents/Source/PolyGLRenderer.cpp

@@ -163,31 +163,19 @@ void OpenGLRenderer::Resize(int xRes, int yRes) {
 	viewportHeight = xRes;
 	glClearColor(clearColor.r, clearColor.g, clearColor.b, clearColor.a);
 	glClearDepth(1.0f);
-	/*
-    glMatrixMode(GL_PROJECTION);
-    glLoadIdentity();
 
-	resetViewport();
-	*/
 	glMatrixMode(GL_MODELVIEW);
 	glLineWidth(1);
-	glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-	
 	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
-	glEnable(GL_BLEND);
 	glShadeModel(GL_SMOOTH);
 	glDepthFunc( GL_LEQUAL );
 	
 	glEnable(GL_DEPTH_TEST);
 	
 	glLineWidth(1.0f);
-	
 	glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);
-//	glEnable(GL_LINE_SMOOTH);
-	
 	GLint numBuffers;
 	glGetIntegerv(GL_MAX_DRAW_BUFFERS, &numBuffers);
-//	Logger::log("MAX_DRAW_BUFFERS: %d \n", numBuffers);
 
 }
 
@@ -479,6 +467,13 @@ void OpenGLRenderer::enableFog(bool enable) {
 }
 
 void OpenGLRenderer::setBlendingMode(int blendingMode) {
+    
+    if(blendingMode == BLEND_MODE_NONE) {
+        glDisable(GL_BLEND);
+    } else {
+        glEnable(GL_BLEND);
+    }
+    
 	switch(blendingMode) {
 		case BLEND_MODE_NORMAL:
 			if(blendNormalAsPremultiplied) {
@@ -503,7 +498,6 @@ void OpenGLRenderer::setBlendingMode(int blendingMode) {
 			glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 		break;
 	}
-	glEnable(GL_BLEND);
 }
 
 Matrix4 OpenGLRenderer::getProjectionMatrix() {

+ 1 - 1
IDE/Contents/Include/PolycodeFrame.h

@@ -241,7 +241,7 @@ class PolycodeTabButton : public UIElement {
 		PolycodeProjectTab *getTab();		
 	protected:
 		PolycodeProjectTab *tab;
-		UIRect *bgRect;
+		UIImage *bgRect;
 		UILabel *tabLabel;
 		UIMenu *menu;
 		

+ 2 - 2
IDE/Contents/Source/PolycodeFrame.cpp

@@ -1010,9 +1010,8 @@ PolycodeProjectTab::~PolycodeProjectTab() {
 
 PolycodeTabButton::PolycodeTabButton(PolycodeProjectTab *tab) : UIElement() {
 	this->tab = tab;
-	bgRect = new UIRect("main/tab_bg.png", 150,30);
+	bgRect = new UIImage("main/tab_bg.png", 150,30);
 	addChild(bgRect);
-	bgRect->setColor(1.0, 1.0, 1.0, 0.4);
 	bgRect->processInputEvents = true;
 	processInputEvents = true;
 	bgRect->addEventListener(this, InputEvent::EVENT_MOUSEDOWN);
@@ -1347,6 +1346,7 @@ PolycodeFrame::PolycodeFrame(PolycodeEditorManager *editorManager) : UIElement()
 	resizer->setColor(0,0,0,0.4);
 	
 	modalBlocker = new UIRect(10,10);
+    modalBlocker->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
 	modalBlocker->setColor(0,0,0,0.4);
 	modalBlocker->setAnchorPoint(-1.0, -1.0, 0.0);
 	modalBlocker->enabled = false;	

+ 2 - 0
IDE/Contents/Source/PolycodeIDEApp.cpp

@@ -33,6 +33,8 @@ PolycodeEditorManager *globalEditorManager;
 PolycodeIDEApp::PolycodeIDEApp(PolycodeView *view) : EventDispatcher() {
 	core = new POLYCODE_CORE(view, 1100, 700,false,true, 0, 0,60, -1, true);
 //	core->pauseOnLoseFocus = true;
+    
+    Entity::defaultBlendingMode = Renderer::BLEND_MODE_NONE;
 	
 	CoreServices::getInstance()->getResourceManager()->reloadResourcesOnModify = true;
 	

+ 1 - 1
Modules/Contents/UI/Include/PolyUIHSlider.h

@@ -67,6 +67,6 @@ namespace Polycode {
 			Number endValue;
 			Number sliderWidth;
 			
-			UIRect *bgHitBox;
+			Entity *bgHitBox;
 	};
 }

+ 1 - 1
Modules/Contents/UI/Include/PolyUITree.h

@@ -93,7 +93,7 @@ namespace Polycode {
 			UITree *parent;
 			Number padding;
 			UIBox *selection;
-			UIRect *bgBox;
+			Entity *bgBox;
 			SceneLabel *textLabel;
 			UIImage *iconImage;
 			bool selected;

+ 1 - 1
Modules/Contents/UI/Include/PolyUIWindow.h

@@ -69,7 +69,7 @@ namespace Polycode {
 			Font *font;
 			UIImageButton *closeBtn;
 			UIBox *windowRect;
-			UIRect *titlebarRect;
+			Entity *titlebarRect;
 			void resetTween();
 	};
 }

+ 17 - 17
Modules/Contents/UI/Source/PolyUIBox.cpp

@@ -23,6 +23,7 @@
 #include "PolyUIBox.h"
 #include "PolyCoreServices.h"
 #include "PolyConfig.h"
+#include "PolyRenderer.h"
 
 using namespace Polycode;
 
@@ -40,67 +41,66 @@ UIBox::UIBox(String imageFile, Number t, Number r, Number b, Number l, Number bo
 	tlImage->setImageCoordinates(0,0,l,t, uiScale);
 	addChild(tlImage);
 	tlImage->setPosition(0, 0);
+    tlImage->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
     
 	trImage = new UIRect(imageFile);
 	trImage->setImageCoordinates((trImage->getWidth()/uiScale)-r,0,r,t, uiScale);
 	addChild(trImage);	
 	trImage->setPosition(boxWidth-r, 0);
+    trImage->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
     
 	blImage = new UIRect(imageFile);
 	blImage->setImageCoordinates(0,(blImage->getHeight()/uiScale)-b,l,b, uiScale);
 	addChild(blImage);	
 	blImage->setPosition(0, boxHeight-b);
-
+    blImage->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
+    
 	brImage = new UIRect(imageFile);
 	brImage->setImageCoordinates((brImage->getWidth()/uiScale)-r,(brImage->getHeight()/uiScale)-b,r,b, uiScale);
 	addChild(brImage);	
 	brImage->setPosition(boxWidth-r, boxHeight-b);	
-
+    brImage->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
+    
 	centerImage = new UIRect(imageFile);
 	centerImage->setImageCoordinates(l,t,(centerImage->getWidth()/uiScale)-l-r, (centerImage->getHeight()/uiScale)-t-b, uiScale);
 	addChild(centerImage);	
 	centerImage->setPosition(l,t);	
 	centerImage->Resize(boxWidth-l-r, boxHeight-t-b);
-
+    centerImage->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
+    
 	tImage = new UIRect(imageFile);
 	tImage->setImageCoordinates(l,0,(tImage->getWidth()/uiScale)-l-r,t, uiScale);
 	addChild(tImage);
 	tImage->setPosition(l,0);	
 	tImage->Resize(boxWidth-l-r, t);
-
+    tImage->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
+    
 	bImage = new UIRect(imageFile);
 	bImage->setImageCoordinates(l,(bImage->getHeight()/uiScale)-b,(bImage->getWidth()/uiScale)-l-r,b, uiScale);
 	addChild(bImage);
 	bImage->setPosition(l,boxHeight-b);	
 	bImage->Resize(boxWidth-l-r, b);
-
+    bImage->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
+    
 	lImage = new UIRect(imageFile);
 	lImage->setImageCoordinates(0,t,l,(lImage->getHeight()/uiScale)-t-b, uiScale);
 	addChild(lImage);
 	lImage->setPosition(0,t);	
 	lImage->Resize(l, boxHeight-t-b);
-
+    lImage->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
+    
 	rImage = new UIRect(imageFile);
 	rImage->setImageCoordinates((rImage->getWidth()/uiScale)-r,t,r,(rImage->getHeight()/uiScale)-t-b, uiScale);
 	addChild(rImage);
 	rImage->setPosition(boxWidth-r,t);	
 	rImage->Resize(r, boxHeight-t-b);	
+    rImage->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
 	
 	this->t = t;
 	this->r = r;
 	this->b = b;
 	this->l = l;
-/*	
-	tlImage->setColor(1.0, 0.0, 0.0, 1.0);
-	trImage->setColor(0.0, 1.0, 0.0, 1.0);		
-	blImage->setColor(0.0, 0.0, 1.0, 1.0);
-	brImage->setColor(1.0, 1.0, 0.0, 1.0);
-	centerImage->setColor(0.0, 1.0, 1.0, 1.0);
-	tImage->setColor(1.0, 0.0, 1.0, 1.0);
-	rImage->setColor(1.0, 0.5, 0.5, 1.0);
-	bImage->setColor(0.5, 1.0, 0.5, 1.0);
-	lImage->setColor(0.5, 0.5, 1.0, 1.0);
-*/	
+
 	ownsChildren = true;	
 }
 

+ 2 - 0
Modules/Contents/UI/Source/PolyUIButton.cpp

@@ -27,6 +27,7 @@
 #include "PolyLabel.h"
 #include "PolyCoreServices.h"
 #include "PolyCore.h"
+#include "PolyRenderer.h"
 
 using namespace Polycode;
 
@@ -71,6 +72,7 @@ UIButton::UIButton(String text, Number width, Number height) : UIElement() {
 	pressedDown = false;
 	
 	buttonLabel = new SceneLabel(text, fontSize, fontName, Label::ANTIALIAS_FULL);
+    buttonLabel->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
 	buttonLabel->color.setColorHexFromString(conf->getStringValue("Polycode", "uiButtonFontColor"));
 	addChild(buttonLabel);
 	labelXPos = floor((width-buttonLabel->getWidth())/2.0f) + labelOffsetX;

+ 3 - 1
Modules/Contents/UI/Source/PolyUICheckBox.cpp

@@ -25,6 +25,7 @@
 #include "PolyLabel.h"
 #include "PolyCoreServices.h"
 #include "PolyConfig.h"
+#include "PolyRenderer.h"
 
 using namespace Polycode;
 
@@ -51,7 +52,8 @@ UICheckBox::UICheckBox(String caption, bool checked) : UIElement() {
     buttonImageUnchecked->Resize(buttonImageUnchecked->getWidth() / uiScale, buttonImageUnchecked->getHeight() / uiScale);
 	
 	captionLabel = new SceneLabel(caption, fontSize, fontName, Label::ANTIALIAS_FULL);
-	
+	captionLabel->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
+    
 	addChild(captionLabel);
 	captionLabel->setPosition(buttonImageChecked->getWidth() + checkboxTextOffsetX, checkboxTextOffsetY);
 	

+ 3 - 1
Modules/Contents/UI/Source/PolyUIColorBox.cpp

@@ -25,7 +25,7 @@
 #include "PolyLabel.h"
 #include "PolyCoreServices.h"
 #include "PolyConfig.h"
-
+#include "PolyRenderer.h"
 
 using namespace Polycode;
 
@@ -60,6 +60,7 @@ UIColorPicker::UIColorPicker() : UIWindow(L"", 300, 240) {
 	alphaSlider->addEventListener(this, UIEvent::CHANGE_EVENT);
 	
 	mainColorRect = new SceneMesh(Mesh::QUAD_MESH);
+    mainColorRect->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
 	mainColorRect->setWidth(mainFrame->getWidth());
 	mainColorRect->setHeight(mainFrame->getWidth());
 	mainColorRect->setDepth(0.001);
@@ -459,6 +460,7 @@ UIColorBox::UIColorBox(UIColorPicker *colorPicker, Color initialColor, Number wi
 	bgImage->processInputEvents = true;
 
 	colorShape = new UIRect(width-(frameInset*2), height-(frameInset*2));
+    colorShape->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
 	colorShape->setAnchorPoint(-1.0, -1.0, 0.0);
 	colorShape->setPosition(frameInset, frameInset);
 	addChild(colorShape);

+ 2 - 0
Modules/Contents/UI/Source/PolyUIComboBox.cpp

@@ -25,6 +25,7 @@
 #include "PolyLabel.h"
 #include "PolyCoreServices.h"
 #include "PolyConfig.h"
+#include "PolyRenderer.h"
 
 using namespace Polycode;
 
@@ -77,6 +78,7 @@ UIComboBox::UIComboBox(UIGlobalMenu *globalMenu, Number comboWidth) : UIElement(
 	addChild(dropDownImage);
 	
 	selectedLabel = new SceneLabel("<None>", fontSize, fontName);
+    selectedLabel->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
 	selectedLabel->setPosition(paddingX, paddingY);
 	addChild(selectedLabel);
 	

+ 3 - 0
Modules/Contents/UI/Source/PolyUIElement.cpp

@@ -34,6 +34,7 @@ UILabel::UILabel(const String& text, int size, const String& fontName, int amode
 
 	Config *conf = CoreServices::getInstance()->getConfig();	
 	label = new SceneLabel(text, size, fontName, amode);
+    label->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
 	label->snapToPixels = true;
 	
 	color.setColorHexFromString(conf->getStringValue("Polycode", "uiDefaultFontColor"));
@@ -203,9 +204,11 @@ void UIRect::Resize(Number width, Number height) {
 }
 
 UIImage::UIImage(String imagePath, int width, int height) : UIRect(imagePath, width, height) {
+    setBlendingMode(Renderer::BLEND_MODE_NORMAL);
 }
 
 UIImage::UIImage(String imagePath) : UIRect(imagePath) {
+    setBlendingMode(Renderer::BLEND_MODE_NORMAL);
 }
 
 UIElement::UIElement() : Entity() {

+ 6 - 3
Modules/Contents/UI/Source/PolyUIHSlider.cpp

@@ -60,11 +60,13 @@ UIHSlider::UIHSlider(Number start, Number end, Number width) : UIElement() {
 	gripRect->setAnchorPoint(0.0, 0.0, 0.0);
 	gripRect->setPosition(0, floor(bgHeight/2.0));
 
-	bgHitBox = new UIRect(width, gripRect->getHeight());
+	bgHitBox = new Entity();
+    bgHitBox->setWidth(width);
+    bgHitBox->setHeight(gripRect->getHeight());
+    bgHitBox->visible = false;
 	bgHitBox->setAnchorPoint(-1.0, -1.0, 0.0);
 	bgHitBox->setPosition(0, gripRect->getPosition().y - (gripRect->getHeight()/2.0));
 	addChild(bgHitBox);
-	bgHitBox->setColor(1.0,0.0,0.0,0.0);
 
 	addChild(gripRect);
 
@@ -119,7 +121,8 @@ void UIHSlider::Resize(Number width, Number height) {
 	sliderWidth = width- (sidePadding*2);
 	gripRect->setDragLimits(Rectangle(sidePadding,floor(bgHeight/2.0),sliderWidth,0));
 	setSliderValue(sliderValue);
-	bgHitBox->Resize(width,  gripRect->getHeight());
+	bgHitBox->setWidth(width);
+    bgHitBox->setHeight(gripRect->getHeight());
 }
 			
 void UIHSlider::handleEvent(Event *event) {

+ 3 - 1
Modules/Contents/UI/Source/PolyUIImageButton.cpp

@@ -52,7 +52,9 @@ UIImageButton::UIImageButton(String imageName, Number scale, Number width, Numbe
 	
 	buttonRect = new UIRect(buttonImage->getWidth(),buttonImage->getHeight());
                        
-	buttonRect->setColor(1,1,1,0);
+	buttonRect->setColor(1,1,1,1);
+    buttonRect->visible = false;
+    
 	buttonRect->setAnchorPoint(-1.0, -1.0, 0.0);
 	addChild(buttonRect);
 	

+ 2 - 0
Modules/Contents/UI/Source/PolyUIMenu.cpp

@@ -28,6 +28,7 @@
 #include "PolyCore.h"
 #include "PolyConfig.h"
 #include "PolySceneLine.h"
+#include "PolyRenderer.h"
 
 using namespace Polycode;
 
@@ -43,6 +44,7 @@ UIMenuItem::UIMenuItem(String label, String _id, void *data, Number comboWidth,
 	Number paddingY = conf->getNumericValue("Polycode", "uiMenuTextOffsetY");	
 
 	itemLabel = new SceneLabel(label, fontSize, fontName);
+    itemLabel->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
 	itemLabel->setPosition(paddingX, floor(((comboHeight/2.0) - itemLabel->getHeight()/2.0) + paddingY));
 	addChild(itemLabel);
 	itemLabel->color.setColorHexFromString(conf->getStringValue("Polycode", "uiDefaultFontColor"));

+ 6 - 2
Modules/Contents/UI/Source/PolyUITextInput.cpp

@@ -27,6 +27,7 @@
 #include "PolyLabel.h"
 #include "PolyCoreServices.h"
 #include "PolyEventHandler.h"
+#include "PolyRenderer.h"
 
 using namespace Polycode;
 
@@ -110,7 +111,8 @@ UITextInput::UITextInput(bool multiLine, Number width, Number height) : UIElemen
 	if(multiLine) {
 		inputRect = new UIBox(conf->getStringValue("Polycode", "textBgSkinMultiline"),
 						  st,sr,sb,sl,
-						  width+(padding*2), height+(padding*2));		
+						  width+(padding*2), height+(padding*2));
+        inputRect->setBlendingMode(Renderer::BLEND_MODE_NONE);
 	} else {
 		inputRect = new UIBox(conf->getStringValue("Polycode", "textBgSkin"),
 						  st,sr,sb,sl,
@@ -122,7 +124,7 @@ UITextInput::UITextInput(bool multiLine, Number width, Number height) : UIElemen
 	if(multiLine) {
 		lineNumberBg = new UIRect(1,1);
 		lineNumberBg->setAnchorPoint(-1.0, -1.0, 0.0);
-		lineNumberBg->setColor(0.0, 0.0, 0.0, 0.3);
+		lineNumberBg->setColor(0.5, 0.5, 0.5, 1.0);
 		addChild(lineNumberBg);
 		lineNumberBg->visible = false;
 		
@@ -235,6 +237,7 @@ void UITextInput::checkBufferLines() {
 	for(int i=0; i < neededBufferLines - currentBufferLines; i++) {
 		if(multiLine) {
 			SceneLabel *newNumberLine = new SceneLabel(L"", fontSize, fontName, aaMode);
+            newNumberLine->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
 			newNumberLine->color = lineNumberColor;
 			newNumberLine->positionAtBaseline = true;
 			lineNumberAnchor->addChild(newNumberLine);
@@ -246,6 +249,7 @@ void UITextInput::checkBufferLines() {
 		}
 	
 		SceneLabel *newLine = new SceneLabel(L"", fontSize, fontName, aaMode);
+        newLine->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
 		newLine->positionAtBaseline = true;
 		newLine->color = textColor;
 		lineHeight = newLine->getHeight();

+ 9 - 3
Modules/Contents/UI/Source/PolyUITree.cpp

@@ -26,6 +26,7 @@
 #include "PolyInputEvent.h"
 #include "PolyLabel.h"
 #include "PolyCoreServices.h"
+#include "PolyRenderer.h"
 
 using namespace Polycode;
 
@@ -54,11 +55,15 @@ UITree::UITree(String icon, String text, Number treeWidth, Number treeOffset) :
 								size,
 								fontName,
 								Label::ANTIALIAS_FULL);
+    textLabel->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
+    
 	textLabel->color.setColorHexFromString(conf->getStringValue("Polycode", "uiTreeFontColor"));
     
-	bgBox = new UIRect(treeWidth, cellHeight);	
+	bgBox = new Entity();
+    bgBox->setWidth(treeWidth);
+    bgBox->setHeight(cellHeight);
 	bgBox->setAnchorPoint(-1.0, -1.0, 0.0);
-	bgBox->setColor(1, 1, 1, 0);
+    bgBox->visible = false;
 	addChild(bgBox);
 	
 	
@@ -121,7 +126,8 @@ UITree::UITree(String icon, String text, Number treeWidth, Number treeOffset) :
 void UITree::Resize(Number width) {
 	treeWidth = width;
 	selection->resizeBox(treeWidth+(padding*2), cellHeight+(padding*2));
-	bgBox->Resize(width, cellHeight);
+	bgBox->setWidth(width);
+    bgBox->setHeight(cellHeight);
 	
 	for(int i=0; i < treeChildren.size(); i++) {
 		treeChildren[i]->Resize(width);

+ 7 - 2
Modules/Contents/UI/Source/PolyUIWindow.cpp

@@ -28,6 +28,7 @@
 #include "PolyCore.h"
 #include "PolyCoreServices.h"
 #include "PolyTweenManager.h"
+#include "PolyRenderer.h"
 
 using namespace Polycode;
 
@@ -64,14 +65,18 @@ UIWindow::UIWindow(String windowName, Number width, Number height) : UIElement()
 	Number titleBarHeight = conf->getNumericValue("Polycode", "uiWindowTitleBarHeight");
 	Number titleBarOffset = conf->getNumericValue("Polycode", "uiWindowTitleBarOffset");
 		
-	titlebarRect = new UIRect(width, titleBarHeight);
+	titlebarRect = new Entity();
+    titlebarRect->setWidth(width);
+    titlebarRect->setHeight(titleBarHeight);
+    titlebarRect->visible = false;
 	titlebarRect->setPosition(0, titleBarOffset);
-	titlebarRect->setColor(0,0,0,0);
 	titlebarRect->setAnchorPoint(-1.0, -1.0, 0.0);
 	titlebarRect->processInputEvents = true;
 	addChild(titlebarRect);
 	
 	titleLabel = new SceneLabel(windowName, fontSize, fontName, Label::ANTIALIAS_FULL);
+    titleLabel->setBlendingMode(Renderer::BLEND_MODE_NORMAL);
+    
 	titleLabel->setPosition(conf->getNumericValue("Polycode", "uiWindowTitleX"),conf->getNumericValue("Polycode", "uiWindowTitleY"));
 	addChild(titleLabel);
 	titleLabel->color.setColorHexFromString(conf->getStringValue("Polycode", "uiWindowFontColor"));