Browse Source

texturev: Added basic texture info.

Branimir Karadžić 8 years ago
parent
commit
a5419a8f52
1 changed files with 71 additions and 26 deletions
  1. 71 26
      tools/texturev/texturev.cpp

+ 71 - 26
tools/texturev/texturev.cpp

@@ -155,6 +155,8 @@ static const InputBinding s_bindingView[] =
 	{ entry::Key::KeyB,      entry::Modifier::None,       1, NULL, "view rgb b"              },
 	{ entry::Key::KeyA,      entry::Modifier::None,       1, NULL, "view rgb a"              },
 
+	{ entry::Key::KeyI,      entry::Modifier::None,       1, NULL, "view info"               },
+
 	{ entry::Key::KeyH,      entry::Modifier::None,       1, NULL, "view help"               },
 
 	{ entry::Key::Return,    entry::Modifier::None,       1, NULL, "view files"              },
@@ -212,6 +214,7 @@ struct View
 		, m_fit(true)
 		, m_alpha(false)
 		, m_help(false)
+		, m_info(false)
 		, m_files(false)
 		, m_sdf(false)
 	{
@@ -246,7 +249,7 @@ struct View
 						mip = atoi(_argv[2]);
 					}
 
-					m_mip = bx::uint32_iclamp(mip, 0, m_info.numMips-1);
+					m_mip = bx::uint32_iclamp(mip, 0, m_textureInfo.numMips-1);
 				}
 				else
 				{
@@ -275,7 +278,7 @@ struct View
 						layer = atoi(_argv[2]);
 					}
 
-					m_layer = bx::uint32_iclamp(layer, 0, m_info.numLayers-1);
+					m_layer = bx::uint32_iclamp(layer, 0, m_textureInfo.numLayers-1);
 				}
 				else
 				{
@@ -528,6 +531,10 @@ struct View
 			{
 				m_help ^= true;
 			}
+			else if (0 == bx::strCmp(_argv[1], "info") )
+			{
+				m_info ^= true;
+			}
 			else if (0 == bx::strCmp(_argv[1], "files") )
 			{
 				m_files ^= true;
@@ -613,7 +620,7 @@ struct View
 	typedef stl::vector<std::string> FileList;
 	FileList m_fileList;
 
-	bgfx::TextureInfo m_info;
+	bgfx::TextureInfo m_textureInfo;
 	Geometry::Enum m_cubeMapGeo;
 	uint32_t m_fileIndex;
 	uint32_t m_scaleFn;
@@ -633,6 +640,7 @@ struct View
 	bool     m_fit;
 	bool     m_alpha;
 	bool     m_help;
+	bool     m_info;
 	bool     m_files;
 	bool     m_sdf;
 };
@@ -1202,7 +1210,7 @@ int _main_(int _argc, char** _argv)
 
 			if (dragging)
 			{
-				if (view.m_info.cubeMap
+				if (view.m_textureInfo.cubeMap
 				&&  Geometry::Quad == view.m_cubeMapGeo)
 				{
 					char exec[64];
@@ -1226,6 +1234,11 @@ int _main_(int _argc, char** _argv)
 					cmdExec("view files");
 				}
 
+				if (ImGui::MenuItem("Info", NULL, view.m_info) )
+				{
+					cmdExec("view info");
+				}
+
 //				if (ImGui::MenuItem("Save As") )
 				{
 				}
@@ -1244,7 +1257,7 @@ int _main_(int _argc, char** _argv)
 						cmdExec("view filter");
 					}
 
-					if (ImGui::BeginMenu("Cubemap", view.m_info.cubeMap) )
+					if (ImGui::BeginMenu("Cubemap", view.m_textureInfo.cubeMap) )
 					{
 						if (ImGui::MenuItem("Quad", NULL, Geometry::Quad == view.m_cubeMapGeo) )
 						{
@@ -1323,6 +1336,38 @@ int _main_(int _argc, char** _argv)
 				help = view.m_help;
 			}
 
+			if (view.m_info)
+			{
+				if (ImGui::Begin("Info", NULL, ImVec2(300.0f, 200.0f) ) )
+				{
+					if (ImGui::BeginChild("##info", ImVec2(0.0f, 0.0f) ) )
+					{
+						ImGui::Text("Dimensions: %d x %d"
+							, view.m_textureInfo.width
+							, view.m_textureInfo.height
+							);
+
+						ImGui::Text("Format: %s"
+							, bimg::getName(bimg::TextureFormat::Enum(view.m_textureInfo.format) )
+							);
+
+						ImGui::Text("Layers: %d / %d"
+							, view.m_layer
+							, view.m_textureInfo.numLayers - 1
+							);
+
+						ImGui::Text("Mips: %d / %d"
+							, view.m_mip
+							, view.m_textureInfo.numMips - 1
+							);
+
+						ImGui::EndChild();
+					}
+
+					ImGui::End();
+				}
+			}
+
 			if (view.m_files)
 			{
 				char temp[bx::kMaxFilePath];
@@ -1471,7 +1516,7 @@ int _main_(int _argc, char** _argv)
 					| BGFX_TEXTURE_V_CLAMP
 					| BGFX_TEXTURE_W_CLAMP
 					, 0
-					, &view.m_info
+					, &view.m_textureInfo
 					, &orientation
 					);
 
@@ -1492,28 +1537,28 @@ int _main_(int _argc, char** _argv)
 				if (isValid(texture) )
 				{
 					const char* name = "";
-					if (view.m_info.cubeMap)
+					if (view.m_textureInfo.cubeMap)
 					{
 						name = " CubeMap";
 					}
-					else if (1 < view.m_info.depth)
+					else if (1 < view.m_textureInfo.depth)
 					{
 						name = " 3D";
-						view.m_info.numLayers = view.m_info.depth;
+						view.m_textureInfo.numLayers = view.m_textureInfo.depth;
 					}
-					else if (1 < view.m_info.numLayers)
+					else if (1 < view.m_textureInfo.numLayers)
 					{
 						name = " 2D Array";
 					}
 
 					bx::stringPrintf(title, "%s (%d x %d%s, mips: %d, layers %d, %s)"
 						, fp.get()
-						, view.m_info.width
-						, view.m_info.height
+						, view.m_textureInfo.width
+						, view.m_textureInfo.height
 						, name
-						, view.m_info.numMips
-						, view.m_info.numLayers
-						, bimg::getName(bimg::TextureFormat::Enum(view.m_info.format) )
+						, view.m_textureInfo.numMips
+						, view.m_textureInfo.numLayers
+						, bimg::getName(bimg::TextureFormat::Enum(view.m_textureInfo.format) )
 						);
 				}
 				else
@@ -1597,7 +1642,7 @@ int _main_(int _argc, char** _argv)
 
 			if (view.m_fit)
 			{
-				float wh[3] = { float(view.m_info.width), float(view.m_info.height), 0.0f };
+				float wh[3] = { float(view.m_textureInfo.width), float(view.m_textureInfo.height), 0.0f };
 				float result[3];
 				bx::vec3MulMtx(result, wh, orientation);
 				result[0] = bx::fround(bx::fabs(result[0]) );
@@ -1622,11 +1667,11 @@ int _main_(int _argc, char** _argv)
 				* zoom.getValue()
 				;
 
-			setGeometry(view.m_info.cubeMap ? view.m_cubeMapGeo : Geometry::Quad
-				, -int(view.m_info.width  * ss)/2
-				, -int(view.m_info.height * ss)/2
-				,  int(view.m_info.width  * ss)
-				,  int(view.m_info.height * ss)
+			setGeometry(view.m_textureInfo.cubeMap ? view.m_cubeMapGeo : Geometry::Quad
+				, -int(view.m_textureInfo.width  * ss)/2
+				, -int(view.m_textureInfo.height * ss)/2
+				,  int(view.m_textureInfo.width  * ss)
+				,  int(view.m_textureInfo.height * ss)
 				, view.m_abgr
 				);
 
@@ -1640,9 +1685,9 @@ int _main_(int _argc, char** _argv)
 			layer.set(float(view.m_layer), 0.25f);
 
 			float params[4] = { mip.getValue(), layer.getValue(), 0.0f, 0.0f };
-			if (1 < view.m_info.depth)
+			if (1 < view.m_textureInfo.depth)
 			{
-				params[1] = layer.getValue()/view.m_info.depth;
+				params[1] = layer.getValue()/view.m_textureInfo.depth;
 			}
 
 			bgfx::setUniform(u_params, params);
@@ -1670,18 +1715,18 @@ int _main_(int _argc, char** _argv)
 				);
 
 			bgfx:: ProgramHandle program = textureProgram;
-			if (1 < view.m_info.depth)
+			if (1 < view.m_textureInfo.depth)
 			{
 				program = texture3DProgram;
 			}
-			else if (view.m_info.cubeMap)
+			else if (view.m_textureInfo.cubeMap)
 			{
 				program = Geometry::Quad == view.m_cubeMapGeo
 					? textureCubeProgram
 					: textureCube2Program
 					;
 			}
-			else if (1 < view.m_info.numLayers)
+			else if (1 < view.m_textureInfo.numLayers)
 			{
 				program = textureArrayProgram;
 			}