-void TextureModeImport(ETexturesMode& self, int value)
-{
- switch(value)
- {
- case 0:
- Textures_SetMode(eTextures_NEAREST);
- break;
- case 1:
- Textures_SetMode(eTextures_NEAREST_MIPMAP_NEAREST);
- break;
- case 2:
- Textures_SetMode(eTextures_LINEAR);
- break;
- case 3:
- Textures_SetMode(eTextures_NEAREST_MIPMAP_LINEAR);
- break;
- case 4:
- Textures_SetMode(eTextures_LINEAR_MIPMAP_NEAREST);
- break;
- case 5:
- Textures_SetMode(eTextures_LINEAR_MIPMAP_LINEAR);
- break;
- case 6:
- Textures_SetMode(eTextures_MAX_ANISOTROPY);
- }
-}
-typedef ReferenceCaller1<ETexturesMode, int, TextureModeImport> TextureModeImportCaller;
-
-void TextureModeExport(ETexturesMode& self, const IntImportCallback& importer)
-{
- switch(self)
- {
- case eTextures_NEAREST:
- importer(0);
- break;
- case eTextures_NEAREST_MIPMAP_NEAREST:
- importer(1);
- break;
- case eTextures_LINEAR:
- importer(2);
- break;
- case eTextures_NEAREST_MIPMAP_LINEAR:
- importer(3);
- break;
- case eTextures_LINEAR_MIPMAP_NEAREST:
- importer(4);
- break;
- case eTextures_LINEAR_MIPMAP_LINEAR:
- importer(5);
- break;
- case eTextures_MAX_ANISOTROPY:
- importer(6);
- break;
- default:
- importer(4);
- }
-}
-typedef ReferenceCaller1<ETexturesMode, const IntImportCallback&, TextureModeExport> TextureModeExportCaller;
-
-void Textures_constructPreferences(PreferencesPage& page)
-{
- {
- const char* percentages[] = { "12.5%", "25%", "50%", "100%", };
- page.appendRadio(
- "Texture Quality",
- STRING_ARRAY_RANGE(percentages),
- LatchedIntImportCaller(g_Textures_textureQuality),
- IntExportCaller(g_Textures_textureQuality.m_latched)
- );
- }
- page.appendSpinner(
- "Texture Gamma",
- 1.0,
- 0.0,
- 1.0,
- FloatImportCallback(TextureGammaImportCaller(g_texture_globals.fGamma)),
- FloatExportCallback(FloatExportCaller(g_texture_globals.fGamma))
- );
- {
- const char* texture_mode[] = { "Nearest", "Nearest Mipmap", "Linear", "Bilinear", "Bilinear Mipmap", "Trilinear", "Anisotropy" };
- page.appendCombo(
- "Texture Render Mode",
- STRING_ARRAY_RANGE(texture_mode),
- IntImportCallback(TextureModeImportCaller(g_texture_mode)),
- IntExportCallback(TextureModeExportCaller(g_texture_mode))
- );
- }
- {
- const char* compression_none[] = { "None" };
- const char* compression_opengl[] = { "None", "OpenGL ARB" };
- const char* compression_s3tc[] = { "None", "S3TC DXT1", "S3TC DXT3", "S3TC DXT5" };
- const char* compression_opengl_s3tc[] = { "None", "OpenGL ARB", "S3TC DXT1", "S3TC DXT3", "S3TC DXT5" };
- StringArrayRange compression(
- (g_texture_globals.m_bOpenGLCompressionSupported)
- ? (g_texture_globals.m_bS3CompressionSupported)
- ? STRING_ARRAY_RANGE(compression_opengl_s3tc)
- : STRING_ARRAY_RANGE(compression_opengl)
- : (g_texture_globals.m_bS3CompressionSupported)
- ? STRING_ARRAY_RANGE(compression_s3tc)
- : STRING_ARRAY_RANGE(compression_none)
- );
- page.appendCombo(
- "Hardware Texture Compression",
- compression,
- TextureCompressionImportCaller(g_texture_globals.m_nTextureCompressionFormat),
- IntExportCaller(reinterpret_cast<int&>(g_texture_globals.m_nTextureCompressionFormat))
- );
- }
-}
-void Textures_constructPage(PreferenceGroup& group)
-{
- PreferencesPage page(group.createPage("Textures", "Texture Settings"));
- Textures_constructPreferences(page);