-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);
+void Textures_constructPreferences( PreferencesPage& page ){
+ {
+ const char* percentages[] = { "12.5%", "25%", "50%", "100%", };
+ page.appendRadio(
+ "Texture Quality",
+ STRING_ARRAY_RANGE( percentages ),
+ make_property( g_Textures_textureQuality )
+ );
+ }
+ page.appendSpinner(
+ "Texture Gamma",
+ 1.0,
+ 0.0,
+ 1.0,
+ make_property<TextureGamma>(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 ),
+ make_property<TextureMode>(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,
+ make_property<TextureCompression>(g_texture_globals.m_nTextureCompressionFormat)
+ );
+ }