aboutsummaryrefslogtreecommitdiffstats
path: root/src/test/test.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/test/test.c131
1 files changed, 111 insertions, 20 deletions
diff --git a/src/test/test.c b/src/test/test.c
index 79672c2..f5f5c42 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -20,6 +20,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
+#include <string.h>
#if LIBGAMMA_ERROR_MIN < -46
@@ -100,31 +101,46 @@ static void method_availability(void)
}
+static void list_default_sites(void)
+{
+ int method;
+ for (method = 0; method < LIBGAMMA_METHOD_COUNT; method++)
+ if (libgamma_is_method_available(method))
+ {
+ printf("Default site for %s:\n", method_name(method));
+ printf(" Variable: %s\n", libgamma_method_default_site_variable(method));
+ printf(" Site name: %s\n", libgamma_method_default_site(method));
+ printf("\n");
+ }
+}
+
+
static void method_capabilities(void)
{
libgamma_method_capabilities_t caps;
int method;
for (method = 0; method < LIBGAMMA_METHOD_COUNT; method++)
- {
- printf("Capabilities of %s:\n", method_name(method));
- libgamma_method_capabilities(&caps, method);
-
- printf(" %s: %X\n", "CRTC information", caps.crtc_information);
- printf(" %s: %s\n", "Default site known", caps.default_site_known ? "yes" : "no");
- printf(" %s: %s\n", "Multiple sites", caps.multiple_sites ? "yes" : "no");
- printf(" %s: %s\n", "Multiple partitions", caps.multiple_partitions ? "yes" : "no");
- printf(" %s: %s\n", "Multiple crtcs", caps.multiple_crtcs ? "yes" : "no");
- printf(" %s: %s\n", "Graphics cards", caps.partitions_are_graphics_cards ? "yes" : "no");
- printf(" %s: %s\n", "Site restore", caps.site_restore ? "yes" : "no");
- printf(" %s: %s\n", "Partition restore", caps.partition_restore ? "yes" : "no");
- printf(" %s: %s\n", "CRTC restore", caps.crtc_restore ? "yes" : "no");
- printf(" %s: %s\n", "Identical gamma sizes", caps.identical_gamma_sizes ? "yes" : "no");
- printf(" %s: %s\n", "Fixed gamma size", caps.fixed_gamma_size ? "yes" : "no");
- printf(" %s: %s\n", "Fixed gamma depth", caps.fixed_gamma_depth ? "yes" : "no");
- printf(" %s: %s\n", "Real method", caps.real ? "yes" : "no");
- printf(" %s: %s\n", "Fake method", caps.fake ? "yes" : "no");
- printf("\n");
- }
+ if (libgamma_is_method_available(method))
+ {
+ printf("Capabilities of %s:\n", method_name(method));
+ libgamma_method_capabilities(&caps, method);
+
+ printf(" %s: %X\n", "CRTC information", caps.crtc_information);
+ printf(" %s: %s\n", "Default site known", caps.default_site_known ? "yes" : "no");
+ printf(" %s: %s\n", "Multiple sites", caps.multiple_sites ? "yes" : "no");
+ printf(" %s: %s\n", "Multiple partitions", caps.multiple_partitions ? "yes" : "no");
+ printf(" %s: %s\n", "Multiple crtcs", caps.multiple_crtcs ? "yes" : "no");
+ printf(" %s: %s\n", "Graphics cards", caps.partitions_are_graphics_cards ? "yes" : "no");
+ printf(" %s: %s\n", "Site restore", caps.site_restore ? "yes" : "no");
+ printf(" %s: %s\n", "Partition restore", caps.partition_restore ? "yes" : "no");
+ printf(" %s: %s\n", "CRTC restore", caps.crtc_restore ? "yes" : "no");
+ printf(" %s: %s\n", "Identical gamma sizes", caps.identical_gamma_sizes ? "yes" : "no");
+ printf(" %s: %s\n", "Fixed gamma size", caps.fixed_gamma_size ? "yes" : "no");
+ printf(" %s: %s\n", "Fixed gamma depth", caps.fixed_gamma_depth ? "yes" : "no");
+ printf(" %s: %s\n", "Real method", caps.real ? "yes" : "no");
+ printf(" %s: %s\n", "Fake method", caps.fake ? "yes" : "no");
+ printf("\n");
+ }
}
@@ -161,11 +177,86 @@ static void error_test(void)
int main(void)
{
+ int method;
+ char* site;
+ char* tmp;
+ char buf[256];
+ libgamma_site_state_t site_state;
+ libgamma_partition_state_t part_state;
+ libgamma_crtc_state_t crtc_state;
+ int r;
+
list_methods_lists();
method_availability();
+ list_default_sites();
method_capabilities();
error_test();
+ printf("Select adjustment method:\n");
+ for (method = 0; method < LIBGAMMA_METHOD_COUNT; method++)
+ printf(" %i: %s\n", method, method_name(method));
+ printf("> ");
+ fflush(stdout);
+ fgets(buf, sizeof(buf) / sizeof(char), stdin);
+ method = atoi(buf);
+
+ printf("Select site: ");
+ fflush(stdout);
+ fgets(buf, sizeof(buf) / sizeof(char), stdin);
+ tmp = strchr(buf, '\n');
+ if (tmp != NULL)
+ *tmp = '\0';
+ if (buf[0] == '\0')
+ site = NULL;
+ else
+ {
+ site = malloc((strlen(buf) + 1) * sizeof(char));
+ memcpy(site, buf, strlen(buf) + 1);
+ }
+
+ if ((r = libgamma_site_initialise(&site_state, method, site)))
+ {
+ free(site);
+ return libgamma_perror("error", r), 1;
+ }
+
+ if (site_state.partitions_available == 0)
+ {
+ libgamma_site_destroy(&site_state);
+ return printf("No partitions found\n"), 1;
+ }
+
+ printf("Select partition [0, %lu]: ", site_state.partitions_available - 1);
+ fflush(stdout);
+ fgets(buf, sizeof(buf) / sizeof(char), stdin);
+
+ if ((r = libgamma_partition_initialise(&part_state, &site_state, (size_t)atoll(buf))))
+ {
+ libgamma_site_destroy(&site_state);
+ return libgamma_perror("error", r), 1;
+ }
+
+ if (part_state.crtcs_available == 0)
+ {
+ libgamma_partition_destroy(&part_state);
+ libgamma_site_destroy(&site_state);
+ return printf("No CRTC:s found\n"), 1;
+ }
+
+ printf("Select CRTC [0, %lu]: ", part_state.crtcs_available - 1);
+ fflush(stdout);
+ fgets(buf, sizeof(buf) / sizeof(char), stdin);
+
+ if ((r = libgamma_crtc_initialise(&crtc_state, &part_state, (size_t)atoll(buf))))
+ {
+ libgamma_partition_destroy(&part_state);
+ libgamma_site_destroy(&site_state);
+ return libgamma_perror("error", r), 1;
+ }
+
+ libgamma_crtc_destroy(&crtc_state);
+ libgamma_partition_destroy(&part_state);
+ libgamma_site_destroy(&site_state);
return 0;
}