Browse Source

Changed imguiSlider argument.

Branimir Karadžić 11 years ago
parent
commit
2b147081c4

+ 4 - 4
examples/09-hdr/hdr.cpp

@@ -262,12 +262,12 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 		imguiBeginScrollArea("Settings", width - width / 5 - 10, 10, width / 5, height / 3, &scrollArea);
 		imguiBeginScrollArea("Settings", width - width / 5 - 10, 10, width / 5, height / 3, &scrollArea);
 		imguiSeparatorLine();
 		imguiSeparatorLine();
 
 
-		imguiSlider("Speed", &speed, 0.0f, 1.0f, 0.01f);
+		imguiSlider("Speed", speed, 0.0f, 1.0f, 0.01f);
 		imguiSeparator();
 		imguiSeparator();
 
 
-		imguiSlider("Middle gray", &middleGray, 0.1f, 1.0f, 0.01f);
-		imguiSlider("White point", &white, 0.1f, 2.0f, 0.01f);
-		imguiSlider("Treshold", &treshold, 0.1f, 2.0f, 0.01f);
+		imguiSlider("Middle gray", middleGray, 0.1f, 1.0f, 0.01f);
+		imguiSlider("White point", white, 0.1f, 2.0f, 0.01f);
+		imguiSlider("Treshold", treshold, 0.1f, 2.0f, 0.01f);
 
 
 		imguiEndScrollArea();
 		imguiEndScrollArea();
 		imguiEndFrame();
 		imguiEndFrame();

+ 5 - 5
examples/11-fontsdf/fontsdf.cpp

@@ -148,8 +148,8 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 		imguiSeparatorLine();
 		imguiSeparatorLine();
 
 
 		bool recomputeVisibleText = false;
 		bool recomputeVisibleText = false;
-		recomputeVisibleText |= imguiSlider("Number of lines", &visibleLineCount, 1.0f, 177.0f , 1.0f);
-		if (imguiSlider("Font size", &textSize, 6.0f, 64.0f , 1.0f) )
+		recomputeVisibleText |= imguiSlider("Number of lines", visibleLineCount, 1.0f, 177.0f , 1.0f);
+		if (imguiSlider("Font size", textSize, 6.0f, 64.0f , 1.0f) )
 		{
 		{
 			fontManager->destroyFont(fontScaled);
 			fontManager->destroyFont(fontScaled);
 			fontScaled = fontManager->createScaledFontToPixelSize(fontSdf, (uint32_t) textSize);
 			fontScaled = fontManager->createScaledFontToPixelSize(fontSdf, (uint32_t) textSize);
@@ -157,9 +157,9 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 			recomputeVisibleText = true;
 			recomputeVisibleText = true;
 		}
 		}
 
 
-		recomputeVisibleText |= imguiSlider("Scroll", &textScroll, 0.0f, (lineCount-visibleLineCount) , 1.0f);
-		imguiSlider("Rotate", &textRotation, 0.0f, (float) M_PI *2.0f , 0.1f);
-		recomputeVisibleText |= imguiSlider("Scale", &textScale, 0.1f, 10.0f , 0.1f);
+		recomputeVisibleText |= imguiSlider("Scroll", textScroll, 0.0f, (lineCount-visibleLineCount) , 1.0f);
+		imguiSlider("Rotate", textRotation, 0.0f, (float) M_PI *2.0f , 0.1f);
+		recomputeVisibleText |= imguiSlider("Scale", textScale, 0.1f, 10.0f , 0.1f);
 
 
 		if (recomputeVisibleText)
 		if (recomputeVisibleText)
 		{
 		{

+ 1 - 1
examples/12-lod/lod.cpp

@@ -134,7 +134,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 		}
 		}
 
 
 		static float distance = 2.0f;
 		static float distance = 2.0f;
-		imguiSlider("Distance", &distance, 2.0f, 6.0f, .01f);
+		imguiSlider("Distance", distance, 2.0f, 6.0f, .01f);
 
 
 		imguiEndScrollArea();
 		imguiEndScrollArea();
 		imguiEndFrame();
 		imguiEndFrame();

+ 2 - 2
examples/13-stencil/stencil.cpp

@@ -1033,10 +1033,10 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 		}
 		}
 
 
 		imguiSeparatorLine();
 		imguiSeparatorLine();
-		imguiSlider("Lights", &settings_numLights, 1.0f, float(MAX_NUM_LIGHTS), 1.0f);
+		imguiSlider("Lights", settings_numLights, 1.0f, float(MAX_NUM_LIGHTS), 1.0f);
 		if (scene == StencilReflectionScene)
 		if (scene == StencilReflectionScene)
 		{
 		{
-			imguiSlider("Reflection value", &settings_reflectionValue, 0.0f, 1.0f, 0.01f);
+			imguiSlider("Reflection value", settings_reflectionValue, 0.0f, 1.0f, 0.01f);
 		}
 		}
 
 
 		if (imguiCheck("Update lights", settings_updateLights) )
 		if (imguiCheck("Update lights", settings_updateLights) )

+ 2 - 2
examples/14-shadowvolumes/shadowvolumes.cpp

@@ -2195,7 +2195,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 			currentScene = Scene1;
 			currentScene = Scene1;
 		}
 		}
 
 
-		imguiSlider("Lights", &settings_numLights, 1.0f, float(MAX_LIGHTS_COUNT), 1.0f);
+		imguiSlider("Lights", settings_numLights, 1.0f, float(MAX_LIGHTS_COUNT), 1.0f);
 
 
 		if (imguiCheck("Update lights", settings_updateLights) )
 		if (imguiCheck("Update lights", settings_updateLights) )
 		{
 		{
@@ -2261,7 +2261,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 
 
 		if (Scene1 == currentScene)
 		if (Scene1 == currentScene)
 		{
 		{
-			imguiSlider("Instance count", &settings_instanceCount, 1.0f, float(MAX_INSTANCE_COUNT), 1.0f);
+			imguiSlider("Instance count", settings_instanceCount, 1.0f, float(MAX_INSTANCE_COUNT), 1.0f);
 		}
 		}
 
 
 		imguiLabel("CPU Time: %7.1f [ms]", double(profTime)*toMs);
 		imguiLabel("CPU Time: %7.1f [ms]", double(profTime)*toMs);

+ 8 - 8
examples/16-shadowmaps/shadowmaps.cpp

@@ -2090,7 +2090,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 
 
 #define IMGUI_FLOAT_SLIDER(_name, _val) \
 #define IMGUI_FLOAT_SLIDER(_name, _val) \
 			imguiSlider(_name \
 			imguiSlider(_name \
-					, &_val \
+					, _val \
 					, *(((float*)&_val)+1) \
 					, *(((float*)&_val)+1) \
 					, *(((float*)&_val)+2) \
 					, *(((float*)&_val)+2) \
 					, *(((float*)&_val)+3) \
 					, *(((float*)&_val)+3) \
@@ -2188,26 +2188,26 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 		if (LightType::SpotLight == settings.m_lightType)
 		if (LightType::SpotLight == settings.m_lightType)
 		{
 		{
 			imguiLabel("Spot light");
 			imguiLabel("Spot light");
-			imguiSlider("Shadow map area:", &settings.m_coverageSpotL, 45.0f, 120.0f, 1.0f);
+			imguiSlider("Shadow map area:", settings.m_coverageSpotL, 45.0f, 120.0f, 1.0f);
 
 
 			imguiSeparator();
 			imguiSeparator();
-			imguiSlider("Spot outer cone:", &settings.m_spotOuterAngle, 0.0f, 91.0f, 0.1f);
-			imguiSlider("Spot inner cone:", &settings.m_spotInnerAngle, 0.0f, 90.0f, 0.1f);
+			imguiSlider("Spot outer cone:", settings.m_spotOuterAngle, 0.0f, 91.0f, 0.1f);
+			imguiSlider("Spot inner cone:", settings.m_spotInnerAngle, 0.0f, 90.0f, 0.1f);
 		}
 		}
 		else if (LightType::PointLight == settings.m_lightType)
 		else if (LightType::PointLight == settings.m_lightType)
 		{
 		{
 			imguiLabel("Point light");
 			imguiLabel("Point light");
 			imguiBool("Stencil pack", settings.m_stencilPack);
 			imguiBool("Stencil pack", settings.m_stencilPack);
 
 
-			imguiSlider("Fov X adjust:", &settings.m_fovXAdjust, -20.0f, 20.0f, 0.0001f);
-			imguiSlider("Fov Y adjust:", &settings.m_fovYAdjust, -20.0f, 20.0f, 0.0001f);
+			imguiSlider("Fov X adjust:", settings.m_fovXAdjust, -20.0f, 20.0f, 0.0001f);
+			imguiSlider("Fov Y adjust:", settings.m_fovYAdjust, -20.0f, 20.0f, 0.0001f);
 		}
 		}
 		else if (LightType::DirectionalLight == settings.m_lightType)
 		else if (LightType::DirectionalLight == settings.m_lightType)
 		{
 		{
 			imguiLabel("Directional light");
 			imguiLabel("Directional light");
 			imguiBool("Stabilize cascades", settings.m_stabilize);
 			imguiBool("Stabilize cascades", settings.m_stabilize);
-			imguiSlider("Cascade splits:", &settings.m_numSplitsf, 1.0f, 4.0f, 1.0f);
-			imguiSlider("Cascade distribution:", &settings.m_splitDistribution, 0.0f, 1.0f, 0.001f);
+			imguiSlider("Cascade splits:", settings.m_numSplitsf, 1.0f, 4.0f, 1.0f);
+			imguiSlider("Cascade distribution:", settings.m_splitDistribution, 0.0f, 1.0f, 0.001f);
 			settings.m_numSplits = uint8_t(settings.m_numSplitsf);
 			settings.m_numSplits = uint8_t(settings.m_numSplitsf);
 		}
 		}
 
 

+ 1 - 1
examples/17-drawstress/drawstress.cpp

@@ -162,7 +162,7 @@ bool mainloop()
 			autoAdjust ^= true;
 			autoAdjust ^= true;
 		}
 		}
 
 
-		imguiSlider("Dim", &dim, 5, 40);
+		imguiSlider("Dim", dim, 5, 40);
 		imguiLabel("Draw calls: %d", dim*dim*dim);
 		imguiLabel("Draw calls: %d", dim*dim*dim);
 		imguiLabel("Avg Delta Time (1 second) [ms]: %0.4f", deltaTimeAvgNs/1000.0f);
 		imguiLabel("Avg Delta Time (1 second) [ms]: %0.4f", deltaTimeAvgNs/1000.0f);
 
 

+ 4 - 4
examples/18-ibl/ibl.cpp

@@ -549,7 +549,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 		imguiBool("IBL Specular", settings.m_specularIbl);
 		imguiBool("IBL Specular", settings.m_specularIbl);
 
 
 		imguiSeparatorLine();
 		imguiSeparatorLine();
-		imguiSlider("Speed", &settings.m_speed, 0.0f, 1.0f, 0.01f);
+		imguiSlider("Speed", settings.m_speed, 0.0f, 1.0f, 0.01f);
 
 
 		imguiSeparatorLine();
 		imguiSeparatorLine();
 		imguiLabel("Environment:");
 		imguiLabel("Environment:");
@@ -562,15 +562,15 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 													   ) );
 													   ) );
 
 
 		imguiSeparator();
 		imguiSeparator();
-		imguiSlider("Exposure", &settings.m_exposure, -8.0f, 8.0f, 0.01f);
+		imguiSlider("Exposure", settings.m_exposure, -8.0f, 8.0f, 0.01f);
 		imguiEndScrollArea();
 		imguiEndScrollArea();
 
 
 		imguiBeginScrollArea("Settings", 10, 70, 256, 576, &leftScrollArea);
 		imguiBeginScrollArea("Settings", 10, 70, 256, 576, &leftScrollArea);
 
 
 		imguiLabel("Material properties:");
 		imguiLabel("Material properties:");
 		imguiSeparator();
 		imguiSeparator();
-		imguiSlider("Diffuse - Specular", &settings.m_diffspec,   0.0f, 1.0f, 0.01f);
-		imguiSlider("Glossiness"        , &settings.m_glossiness, 0.0f, 1.0f, 0.01f);
+		imguiSlider("Diffuse - Specular", settings.m_diffspec,   0.0f, 1.0f, 0.01f);
+		imguiSlider("Glossiness"        , settings.m_glossiness, 0.0f, 1.0f, 0.01f);
 		imguiSeparator();
 		imguiSeparator();
 
 
 		imguiColorWheel("Diffuse color:", &settings.m_rgbDiff[0], settings.m_showDiffColorWheel);
 		imguiColorWheel("Diffuse color:", &settings.m_rgbDiff[0], settings.m_showDiffColorWheel);

+ 2 - 2
examples/21-deferred/deferred.cpp

@@ -411,7 +411,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 			imguiBeginScrollArea("Settings", width - width / 5 - 10, 10, width / 5, height / 3, &scrollArea);
 			imguiBeginScrollArea("Settings", width - width / 5 - 10, 10, width / 5, height / 3, &scrollArea);
 			imguiSeparatorLine();
 			imguiSeparatorLine();
 
 
-			imguiSlider("Num lights", &numLights, 1, 2048);
+			imguiSlider("Num lights", numLights, 1, 2048);
 
 
 			if (imguiCheck("Show G-Buffer.", showGBuffer) )
 			if (imguiCheck("Show G-Buffer.", showGBuffer) )
 			{
 			{
@@ -428,7 +428,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 				animateMesh = !animateMesh;
 				animateMesh = !animateMesh;
 			}
 			}
 
 
-			imguiSlider("Lights animation speed", &lightAnimationSpeed, 0.0f, 0.4f, 0.01f);
+			imguiSlider("Lights animation speed", lightAnimationSpeed, 0.0f, 0.4f, 0.01f);
 			
 			
 			imguiEndScrollArea();
 			imguiEndScrollArea();
 			imguiEndFrame();
 			imguiEndFrame();

+ 44 - 19
examples/common/imgui/imgui.cpp

@@ -38,6 +38,8 @@
 #include "vs_imgui_texture.bin.h"
 #include "vs_imgui_texture.bin.h"
 #include "fs_imgui_texture.bin.h"
 #include "fs_imgui_texture.bin.h"
 
 
+#define USE_NANOVG_FONT 0
+
 #define MAX_TEMP_COORDS 100
 #define MAX_TEMP_COORDS 100
 #define NUM_CIRCLE_VERTS (8 * 4)
 #define NUM_CIRCLE_VERTS (8 * 4)
 
 
@@ -273,7 +275,9 @@ struct Imgui
 		m_invTextureHeight = 1.0f/m_textureHeight;
 		m_invTextureHeight = 1.0f/m_textureHeight;
 
 
 		u_texColor.idx = bgfx::invalidHandle;
 		u_texColor.idx = bgfx::invalidHandle;
+#if !USE_NANOVG_FONT
 		m_fontTexture.idx = bgfx::invalidHandle;
 		m_fontTexture.idx = bgfx::invalidHandle;
+#endif // !USE_NANOVG_FONT
 		m_colorProgram.idx = bgfx::invalidHandle;
 		m_colorProgram.idx = bgfx::invalidHandle;
 		m_textureProgram.idx = bgfx::invalidHandle;
 		m_textureProgram.idx = bgfx::invalidHandle;
 	}
 	}
@@ -281,6 +285,9 @@ struct Imgui
 	bool create(const void* _data)
 	bool create(const void* _data)
 	{
 	{
 		m_nvg = nvgCreate(512, 512, 1, m_view);
 		m_nvg = nvgCreate(512, 512, 1, m_view);
+		nvgCreateFontMem(m_nvg, "default", (unsigned char*)_data, INT32_MAX, 0);
+		nvgFontSize(m_nvg, 15.0f);
+		nvgFontFace(m_nvg, "default");
 
 
 		for (int32_t ii = 0; ii < NUM_CIRCLE_VERTS; ++ii)
 		for (int32_t ii = 0; ii < NUM_CIRCLE_VERTS; ++ii)
 		{
 		{
@@ -339,9 +346,11 @@ struct Imgui
 		bgfx::destroyShader(vsh);
 		bgfx::destroyShader(vsh);
 		bgfx::destroyShader(fsh);
 		bgfx::destroyShader(fsh);
 
 
+#if !USE_NANOVG_FONT
 		const bgfx::Memory* mem = bgfx::alloc(m_textureWidth * m_textureHeight);
 		const bgfx::Memory* mem = bgfx::alloc(m_textureWidth * m_textureHeight);
 		stbtt_BakeFontBitmap( (uint8_t*)_data, 0, 15.0f, mem->data, m_textureWidth, m_textureHeight, 32, 96, m_cdata);
 		stbtt_BakeFontBitmap( (uint8_t*)_data, 0, 15.0f, mem->data, m_textureWidth, m_textureHeight, 32, 96, m_cdata);
 		m_fontTexture = bgfx::createTexture2D(m_textureWidth, m_textureHeight, 1, bgfx::TextureFormat::R8, BGFX_TEXTURE_NONE, mem);
 		m_fontTexture = bgfx::createTexture2D(m_textureWidth, m_textureHeight, 1, bgfx::TextureFormat::R8, BGFX_TEXTURE_NONE, mem);
+#endif // !USE_NANOVG_FONT
 
 
 		return true;
 		return true;
 	}
 	}
@@ -349,7 +358,9 @@ struct Imgui
 	void destroy()
 	void destroy()
 	{
 	{
 		bgfx::destroyUniform(u_texColor);
 		bgfx::destroyUniform(u_texColor);
+#if !USE_NANOVG_FONT
 		bgfx::destroyTexture(m_fontTexture);
 		bgfx::destroyTexture(m_fontTexture);
+#endif // !USE_NANOVG_FONT
 		bgfx::destroyProgram(m_colorProgram);
 		bgfx::destroyProgram(m_colorProgram);
 		bgfx::destroyProgram(m_textureProgram);
 		bgfx::destroyProgram(m_textureProgram);
 		nvgDelete(m_nvg);
 		nvgDelete(m_nvg);
@@ -514,9 +525,9 @@ struct Imgui
 		m_scrollVal = _scroll;
 		m_scrollVal = _scroll;
 		m_scrollAreaX     = _x;
 		m_scrollAreaX     = _x;
 		m_scrollAreaWidth = _width;
 		m_scrollAreaWidth = _width;
-		m_scrollAreaTop   = m_widgetY + SCROLL_AREA_PADDING;
+		m_scrollAreaTop   = m_widgetY;
 
 
-		m_focusTop = _y - AREA_HEADER;
+		m_focusTop    = _y - AREA_HEADER;
 		m_focusBottom = _y - AREA_HEADER + _height;
 		m_focusBottom = _y - AREA_HEADER + _height;
 
 
 		m_insideScrollArea = inRect(_x, _y, _width, _height, false);
 		m_insideScrollArea = inRect(_x, _y, _width, _height, false);
@@ -566,7 +577,7 @@ struct Imgui
 		int32_t height = m_scrollBottom - m_scrollTop;
 		int32_t height = m_scrollBottom - m_scrollTop;
 
 
 		int32_t stop = m_scrollAreaTop;
 		int32_t stop = m_scrollAreaTop;
-		int32_t sbot = m_widgetY;
+		int32_t sbot = m_widgetY + SCROLL_AREA_PADDING;
 		int32_t sh   = sbot - stop; // The scrollable area height.
 		int32_t sh   = sbot - stop; // The scrollable area height.
 
 
 		float barHeight = (float)height / (float)sh;
 		float barHeight = (float)height / (float)sh;
@@ -914,7 +925,7 @@ struct Imgui
 			);
 			);
 	}
 	}
 
 
-	bool slider(const char* _text, float* _val, float _vmin, float _vmax, float _vinc, bool _enabled)
+	bool slider(const char* _text, float& _val, float _vmin, float _vmax, float _vinc, bool _enabled)
 	{
 	{
 		m_widgetId++;
 		m_widgetId++;
 		uint32_t id = (m_areaId << 16) | m_widgetId;
 		uint32_t id = (m_areaId << 16) | m_widgetId;
@@ -929,7 +940,7 @@ struct Imgui
 
 
 		const int32_t range = width - SLIDER_MARKER_WIDTH;
 		const int32_t range = width - SLIDER_MARKER_WIDTH;
 
 
-		float uu = bx::fsaturate( (*_val - _vmin) / (_vmax - _vmin) );
+		float uu = bx::fsaturate( (_val - _vmin) / (_vmax - _vmin) );
 		int32_t m = (int)(uu * range);
 		int32_t m = (int)(uu * range);
 
 
 		bool over = _enabled && inRect(xx + m, yy, SLIDER_MARKER_WIDTH, SLIDER_HEIGHT);
 		bool over = _enabled && inRect(xx + m, yy, SLIDER_MARKER_WIDTH, SLIDER_HEIGHT);
@@ -948,8 +959,8 @@ struct Imgui
 			{
 			{
 				uu = bx::fsaturate(m_dragOrig + (float)(m_mx - m_dragX) / (float)range);
 				uu = bx::fsaturate(m_dragOrig + (float)(m_mx - m_dragX) / (float)range);
 
 
-				*_val = _vmin + uu * (_vmax - _vmin);
-				*_val = floorf(*_val / _vinc + 0.5f) * _vinc; // Snap to vinc
+				_val = _vmin + uu * (_vmax - _vmin);
+				_val = floorf(_val / _vinc + 0.5f) * _vinc; // Snap to vinc
 				m = (int)(uu * range);
 				m = (int)(uu * range);
 				valChanged = true;
 				valChanged = true;
 			}
 			}
@@ -981,7 +992,7 @@ struct Imgui
 		char fmt[16];
 		char fmt[16];
 		bx::snprintf(fmt, 16, "%%.%df", digits >= 0 ? 0 : -digits);
 		bx::snprintf(fmt, 16, "%%.%df", digits >= 0 ? 0 : -digits);
 		char msg[128];
 		char msg[128];
-		bx::snprintf(msg, 128, fmt, *_val);
+		bx::snprintf(msg, 128, fmt, _val);
 
 
 		if (_enabled)
 		if (_enabled)
 		{
 		{
@@ -1288,6 +1299,7 @@ struct Imgui
 		}
 		}
 	}
 	}
 
 
+#if !USE_NANOVG_FONT
 	void getBakedQuad(stbtt_bakedchar* _chardata, int32_t char_index, float* _xpos, float* _ypos, stbtt_aligned_quad* _quad)
 	void getBakedQuad(stbtt_bakedchar* _chardata, int32_t char_index, float* _xpos, float* _ypos, stbtt_aligned_quad* _quad)
 	{
 	{
 		stbtt_bakedchar* b = _chardata + char_index;
 		stbtt_bakedchar* b = _chardata + char_index;
@@ -1344,6 +1356,7 @@ struct Imgui
 
 
 		return len;
 		return len;
 	}
 	}
+#endif // !USE_NANOVG_FONT
 
 
 	void drawText(int32_t _x, int32_t _y, ImguiTextAlign::Enum _align, const char* _text, uint32_t _abgr)
 	void drawText(int32_t _x, int32_t _y, ImguiTextAlign::Enum _align, const char* _text, uint32_t _abgr)
 	{
 	{
@@ -1352,11 +1365,20 @@ struct Imgui
 
 
 	void drawText(float _x, float _y, const char* _text, ImguiTextAlign::Enum _align, uint32_t _abgr)
 	void drawText(float _x, float _y, const char* _text, ImguiTextAlign::Enum _align, uint32_t _abgr)
 	{
 	{
-		if (!_text)
+#if USE_NANOVG_FONT
+		static uint32_t textAlign[ImguiTextAlign::Count] =
 		{
 		{
-			return;
-		}
+			NVG_ALIGN_LEFT,
+			NVG_ALIGN_CENTER,
+			NVG_ALIGN_RIGHT,
+		};
 
 
+		nvgTextAlign(m_nvg, textAlign[_align]);
+
+		nvgFontBlur(m_nvg, 0.0f);
+		nvgFillColor(m_nvg, nvgRGBAu(_abgr) );
+		nvgText(m_nvg, _x, _y, _text, NULL);
+#else
 		uint32_t numVertices = 0;
 		uint32_t numVertices = 0;
 		if (_align == ImguiTextAlign::Center)
 		if (_align == ImguiTextAlign::Center)
 		{
 		{
@@ -1457,6 +1479,7 @@ struct Imgui
 			bgfx::setScissor(m_scissor);
 			bgfx::setScissor(m_scissor);
 			bgfx::submit(m_view);
 			bgfx::submit(m_view);
 		}
 		}
+#endif // USE_NANOVG_FONT
 	}
 	}
 
 
 	void colorWheelWidget(float _rgb[3], bool _respectIndentation, bool _enabled)
 	void colorWheelWidget(float _rgb[3], bool _respectIndentation, bool _enabled)
@@ -1730,8 +1753,6 @@ struct Imgui
 	uint32_t m_scrollId;
 	uint32_t m_scrollId;
 	bool m_insideScrollArea;
 	bool m_insideScrollArea;
 
 
-	stbtt_bakedchar m_cdata[96]; // ASCII 32..126 is 95 glyphs
-
 	uint16_t m_textureWidth;
 	uint16_t m_textureWidth;
 	uint16_t m_textureHeight;
 	uint16_t m_textureHeight;
 	float m_invTextureWidth;
 	float m_invTextureWidth;
@@ -1742,9 +1763,13 @@ struct Imgui
 
 
 	uint8_t m_view;
 	uint8_t m_view;
 	bgfx::UniformHandle u_texColor;
 	bgfx::UniformHandle u_texColor;
-	bgfx::TextureHandle m_fontTexture;
 	bgfx::ProgramHandle m_colorProgram;
 	bgfx::ProgramHandle m_colorProgram;
 	bgfx::ProgramHandle m_textureProgram;
 	bgfx::ProgramHandle m_textureProgram;
+
+#if !USE_NANOVG_FONT
+	stbtt_bakedchar m_cdata[96]; // ASCII 32..126 is 95 glyphs
+	bgfx::TextureHandle m_fontTexture;
+#endif // !USE_NANOVG_FONT
 };
 };
 
 
 static Imgui s_imgui;
 static Imgui s_imgui;
@@ -1832,16 +1857,16 @@ void imguiValue(const char* _text)
 	s_imgui.value(_text);
 	s_imgui.value(_text);
 }
 }
 
 
-bool imguiSlider(const char* _text, float* _val, float _vmin, float _vmax, float _vinc, bool _enabled)
+bool imguiSlider(const char* _text, float& _val, float _vmin, float _vmax, float _vinc, bool _enabled)
 {
 {
 	return s_imgui.slider(_text, _val, _vmin, _vmax, _vinc, _enabled);
 	return s_imgui.slider(_text, _val, _vmin, _vmax, _vinc, _enabled);
 }
 }
 
 
-bool imguiSlider(const char* _text, int32_t* _val, int32_t _vmin, int32_t _vmax, bool _enabled)
+bool imguiSlider(const char* _text, int32_t& _val, int32_t _vmin, int32_t _vmax, bool _enabled)
 {
 {
-	float val = (float)*_val;
-	bool result = s_imgui.slider(_text, &val, (float)_vmin, (float)_vmax, 1.0f, _enabled);
-	*_val = (int32_t)val;
+	float val = (float)_val;
+	bool result = s_imgui.slider(_text, val, (float)_vmin, (float)_vmax, 1.0f, _enabled);
+	_val = (int32_t)val;
 	return result;
 	return result;
 }
 }
 
 

+ 4 - 2
examples/common/imgui/imgui.h

@@ -38,6 +38,8 @@ struct ImguiTextAlign
 		Left,
 		Left,
 		Center,
 		Center,
 		Right,
 		Right,
+
+		Count
 	};
 	};
 };
 };
 
 
@@ -71,8 +73,8 @@ bool imguiCheck(const char* _text, bool _checked, bool _enabled = true);
 bool imguiCollapse(const char* _text, const char* _subtext, bool _checked, bool _enabled = true);
 bool imguiCollapse(const char* _text, const char* _subtext, bool _checked, bool _enabled = true);
 void imguiLabel(const char* _format, ...);
 void imguiLabel(const char* _format, ...);
 void imguiValue(const char* _text);
 void imguiValue(const char* _text);
-bool imguiSlider(const char* _text, float* _val, float _vmin, float _vmax, float _vinc, bool _enabled = true);
-bool imguiSlider(const char* _text, int32_t* _val, int32_t _vmin, int32_t _vmax, bool _enabled = true);
+bool imguiSlider(const char* _text, float& _val, float _vmin, float _vmax, float _vinc, bool _enabled = true);
+bool imguiSlider(const char* _text, int32_t& _val, int32_t _vmin, int32_t _vmax, bool _enabled = true);
 
 
 uint32_t imguiChooseUseMacroInstead(uint32_t _selected, ...);
 uint32_t imguiChooseUseMacroInstead(uint32_t _selected, ...);
 #define imguiChoose(...) imguiChooseUseMacroInstead(__VA_ARGS__, NULL)
 #define imguiChoose(...) imguiChooseUseMacroInstead(__VA_ARGS__, NULL)

+ 11 - 0
examples/common/nanovg/nanovg.cpp

@@ -300,6 +300,17 @@ struct NVGcolor nvgRGBA(unsigned char r, unsigned char g, unsigned char b, unsig
 	return color;
 	return color;
 }
 }
 
 
+struct NVGcolor nvgRGBAu(unsigned int abgr)
+{
+	struct NVGcolor color;
+	// Use longer initialization to suppress warning.
+	color.r = ( (abgr>> 0)&0xff) / 255.0f;
+	color.g = ( (abgr>> 8)&0xff) / 255.0f;
+	color.b = ( (abgr>>16)&0xff) / 255.0f;
+	color.a = ( (abgr>>24)&0xff) / 255.0f;
+	return color;
+}
+
 struct NVGcolor nvgRGBAf(float r, float g, float b, float a)
 struct NVGcolor nvgRGBAf(float r, float g, float b, float a)
 {
 {
 	struct NVGcolor color;
 	struct NVGcolor color;

+ 3 - 0
examples/common/nanovg/nanovg.h

@@ -133,6 +133,9 @@ struct NVGcolor nvgRGBf(float r, float g, float b);
 // Returns a color value from red, green, blue and alpha values.
 // Returns a color value from red, green, blue and alpha values.
 struct NVGcolor nvgRGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a);
 struct NVGcolor nvgRGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a);
 
 
+//
+struct NVGcolor nvgRGBAu(unsigned int abgr);
+
 // Returns a color value from red, green, blue and alpha values.
 // Returns a color value from red, green, blue and alpha values.
 struct NVGcolor nvgRGBAf(float r, float g, float b, float a);
 struct NVGcolor nvgRGBAf(float r, float g, float b, float a);