Merge pull request #116 from cwoffenden/single-file-transcoder

Single file transcoder fixes
diff --git a/contrib/single_file_transcoder/.editorconfig b/contrib/single_file_transcoder/.editorconfig
new file mode 100644
index 0000000..a25dbdf
--- /dev/null
+++ b/contrib/single_file_transcoder/.editorconfig
@@ -0,0 +1,4 @@
+[*]
+insert_final_newline = true
+indent_style = tab
+indent_size = 4
diff --git a/contrib/single_file_transcoder/basisu_transcoder-in.cpp b/contrib/single_file_transcoder/basisu_transcoder-in.cpp
index f341644..19d3589 100644
--- a/contrib/single_file_transcoder/basisu_transcoder-in.cpp
+++ b/contrib/single_file_transcoder/basisu_transcoder-in.cpp
@@ -62,10 +62,7 @@
 	// Unused but only when building with EAC
 	BASISU_NOTE_UNUSED(basist::g_eac_modifier_table);
 #endif
-#if BASISD_SUPPORT_PVRTC1
-	// Unused but only when building with PVRTC
-	BASISU_NOTE_UNUSED(basist::g_pvrtc_bilinear_weights);
-#else
+#if BASISD_SUPPORT_PVRTC1 == 0
 	// Unused only when not building with PVRTC
 	BASISU_NOTE_UNUSED(basist::g_etc1_inten_tables16);
 	BASISU_NOTE_UNUSED(basist::g_etc1_inten_tables48);
diff --git a/contrib/single_file_transcoder/examples/emscripten.cpp b/contrib/single_file_transcoder/examples/emscripten.cpp
index d8c2a60..740bd26 100644
--- a/contrib/single_file_transcoder/examples/emscripten.cpp
+++ b/contrib/single_file_transcoder/examples/emscripten.cpp
@@ -379,20 +379,25 @@
 								decSize = (std::max(8U, (descW + 3) & ~3) *
 										   std::max(8U, (descH + 3) & ~3) * 4 + 7) / 8;
 							} else {
-								decSize = basis_get_bytes_per_block(type) * blocks;
+								decSize = basis_get_bytes_per_block_or_pixel(type);
+								if (basis_transcoder_format_is_uncompressed(type)) {
+									decSize *= descW * descH;
+								} else {
+									decSize *= blocks;
+								}
 							}
 							if (void* decBuf = malloc(decSize)) {
-								if (type >= transcoder_texture_format::cTFTotalTextureFormats) {
+								if (basis_transcoder_format_is_uncompressed(type)) {
 									// note that blocks becomes total number of pixels for RGB/RGBA
 									blocks = descW * descH;
 								}
 								if (transcoder.transcode_image_level(data, size, 0, level, decBuf, blocks, type)) {
-									if (type < transcoder_texture_format::cTFTotalTextureFormats) {
-										glCompressedTexImage2D(GL_TEXTURE_2D, level,
-											toGlType(type), descW, descH, 0, decSize, decBuf);
-									} else {
+									if (basis_transcoder_format_is_uncompressed(type)) {
 										glTexImage2D(GL_TEXTURE_2D, level, GL_RGBA,
 											descW, descH, 0, GL_RGBA, toGlType(type), decBuf);
+									} else {
+										glCompressedTexImage2D(GL_TEXTURE_2D, level,
+											toGlType(type), descW, descH, 0, decSize, decBuf);
 									}
 									success = true;
 								}