aboutsummaryrefslogtreecommitdiffstats
path: root/src/libgamma/AdjustmentMethodCapabilities.java
blob: 167a0819929db2aa8633203ea337b6187dc6603f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/**
 * jlibgamma — Display server abstraction layer for gamma ramp and Java
 * Copyright © 2014  Mattias Andrée (maandree@member.fsf.org)
 * 
 * This library is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this library.  If not, see <http://www.gnu.org/licenses/>.
 */
package libgamma;


/**
 * Capabilities of adjustment methods.
 */
public class AdjustmentMethodCapabilities
{
    /**
     * Constructor.
     * 
     * @param  data  Low half:   the value of {@link #crtc_information}.
     *               High half:  the values of the booleanic variables.
     */
    AdjustmentMethodCapabilities(long data)
    {
	this.crtc_information = (int)data;
	
	this.default_site_known            = (data & (1L << 33L)) != 0;
	this.multiple_sites                = (data & (1L << 34L)) != 0;
	this.multiple_partitions           = (data & (1L << 35L)) != 0;
	this.multiple_crtcs                = (data & (1L << 36L)) != 0;
	this.partitions_are_graphics_cards = (data & (1L << 37L)) != 0;
	this.site_restore                  = (data & (1L << 38L)) != 0;
	this.partition_restore             = (data & (1L << 39L)) != 0;
	this.crtc_restore                  = (data & (1L << 40L)) != 0;
	this.identical_gamma_sizes         = (data & (1L << 41L)) != 0;
	this.fixed_gamma_size              = (data & (1L << 42L)) != 0;
	this.fixed_gamma_depth             = (data & (1L << 43L)) != 0;
	this.real                          = (data & (1L << 44L)) != 0;
	this.fake                          = (data & (1L << 45L)) != 0;
    }
    
    
    
    /**
     * OR of the CRTC information fields in {@link CRTCInformation}
     * that may (but can fail) be read successfully.
     */
    public int crtc_information;
    
    /**
     * Whether the default site is known, if true the site is integrated
     * to the system or can be determined using environment variables.
     */
    public boolean default_site_known;
    
    /**
     * Whether the adjustment method supports multiple sites rather
     * than just the default site.
     */
    public boolean multiple_sites;
    
    /**
     * Whether the adjustment method supports multiple partitions
     * per site.
     */
    public boolean multiple_partitions;
    
    /**
     * Whether the adjustment method supports multiple CRTC:s
     * per partition per site.
     */
    public boolean multiple_crtcs;
    
    /**
     * Whether the partition to graphics card is a bijection.
     */
    public boolean partitions_are_graphics_cards;
    
    /**
     * Whether the adjustment method supports {@link Site#restore}.
     */
    public boolean site_restore;
    
    /**
     * Whether the adjustment method supports {@link Partition#restore}.
     */
    public boolean partition_restore;
    
    /**
     * Whether the adjustment method supports {@link CRTC#restore}.
     */
    public boolean crtc_restore;
    
    /**
     * Whether the {@link #red_gamma_size}, {@link #green_gamma_size} and
     * {@link #blue_gamma_size} fields in {@link CRTCInformation} will
     * always have the same values as each other for the adjustment method.
     */
    public boolean identical_gamma_sizes;
    
    /**
     * Whether the {@link #red_gamma_size}, {@link #green_gamma_size} and
     * {@link #blue_gamma_size} fields in {@link CRTCInformation} will
     * always be filled with the same value for the adjustment method.
     */
    public boolean fixed_gamma_size;
    
    /**
     * Whether the {@link #gamma_depth} field in {@link CRTCInformation}
     * will always be filled with the same value for the adjustment method.
     */
    public boolean fixed_gamma_depth;
    
    /**
     * Whether the adjustment method will actually perform adjustments.
     */
    public boolean real;
    
    /**
     * Whether the adjustment method is implement using a translation layer.
     */
    public boolean fake;
    
}