diff options
Diffstat (limited to '')
-rw-r--r-- | libgamma/LibgammaException.java | 411 |
1 files changed, 411 insertions, 0 deletions
diff --git a/libgamma/LibgammaException.java b/libgamma/LibgammaException.java new file mode 100644 index 0000000..63d8b09 --- /dev/null +++ b/libgamma/LibgammaException.java @@ -0,0 +1,411 @@ +/* See LICENSE file for copyright and license details. */ +package libgamma; + + +/** + * Class of <tt>libgamma</tt> exceptions including + * native system exceptions + * <p> + * The class contains constants with <tt>libgamma</tt> error + * codes. It does however not contain system error codes. + */ +@SuppressWarnings("serial") +public class LibgammaException extends Exception +{ + /** + * Type initialiser + */ + static + { + Libgamma.initialise(); + } + + + /** + * This error code is never used. It is only provided + * so you know its error code if you plan to iterate + * over all <tt>libgamma</tt> error codes. + */ + public static final int LIBGAMMA_ERRNO_SET = -1; + + /** + * The selected adjustment method does not exist + * or has been excluded at compile-time + */ + public static final int LIBGAMMA_NO_SUCH_ADJUSTMENT_METHOD = -2; + + /** + * The selected site does not exist + */ + public static final int LIBGAMMA_NO_SUCH_SITE = -3; + + /** + * The selected partition does not exist + */ + public static final int LIBGAMMA_NO_SUCH_PARTITION = -4; + + /** + * The selected CRTC does not exist + */ + public static final int LIBGAMMA_NO_SUCH_CRTC = -5; + + /** + * Counter overflowed when counting the number + * of available items + */ + public static final int LIBGAMMA_IMPOSSIBLE_AMOUNT = -6; + + /** + * The selected connector is disabled, it does + * not have a CRTC + */ + public static final int LIBGAMMA_CONNECTOR_DISABLED = -7; + + /** + * The selected CRTC could not be opened, + * reason unknown + */ + public static final int LIBGAMMA_OPEN_CRTC_FAILED = -8; + + /** + * The CRTC information field is not supported + * by the adjustment method + */ + public static final int LIBGAMMA_CRTC_INFO_NOT_SUPPORTED = -9; + + /** + * Failed to read the current gamma ramps for + * the selected CRTC, reason unknown + */ + public static final int LIBGAMMA_GAMMA_RAMP_READ_FAILED = -10; + + /** + * Failed to write the current gamma ramps for + * the selected CRTC, reason unknown + */ + public static final int LIBGAMMA_GAMMA_RAMP_WRITE_FAILED = -11; + + /** + * The specified ramp sizes does not match the + * ramps sizes returned by the adjustment methods + * in response to the query/command + */ + public static final int LIBGAMMA_GAMMA_RAMP_SIZE_CHANGED = -12; + + /** + * The specified ramp sizes are not identical + * which is required by the adjustment method + * <p> + * (Only returned in debug mode) + */ + public static final int LIBGAMMA_MIXED_GAMMA_RAMP_SIZE = -13; + + /** + * The specified ramp sizes are not supported + * by the adjustment method + * <p> + * (Only returned in debug mode) + */ + public static final int LIBGAMMA_WRONG_GAMMA_RAMP_SIZE = -14; + + /** + * The adjustment method reported that the gamma + * ramps size is 1, or perhaps even zero or negative + */ + public static final int LIBGAMMA_SINGLETON_GAMMA_RAMP = -15; + + /** + * The adjustment method failed to list + * available CRTC:s, reason unknown + */ + public static final int LIBGAMMA_LIST_CRTCS_FAILED = -16; + + /** + * Failed to acquire mode resources from the + * adjustment method + */ + public static final int LIBGAMMA_ACQUIRING_MODE_RESOURCES_FAILED = -17; + + /** + * The adjustment method reported that a negative + * number of partitions exists in the site + */ + public static final int LIBGAMMA_NEGATIVE_PARTITION_COUNT = -18; + + /** + * The adjustment method reported that a negative + * number of CRTC:s exists in the partition + */ + public static final int LIBGAMMA_NEGATIVE_CRTC_COUNT = -19; + + /** + * Device cannot be access becauses of + * insufficient permissions + */ + public static final int LIBGAMMA_DEVICE_RESTRICTED = -20; + + /** + * Device cannot be access, reason unknown + */ + public static final int LIBGAMMA_DEVICE_ACCESS_FAILED = -21; + + /** + * Device cannot be access, membership of the + * {@link #group_gid} (named by {@link #group_name} + * (can be {@code null}, if so <tt>errno</tt> may have + * been set to tell why)) is required + */ + public static final int LIBGAMMA_DEVICE_REQUIRE_GROUP = -22; + + /** + * The graphics card appear to have been removed + */ + public static final int LIBGAMMA_GRAPHICS_CARD_REMOVED = -23; + + /** + * The state of the requested information is unknown + */ + public static final int LIBGAMMA_STATE_UNKNOWN = -24; + + /** + * Failed to determine which connector the + * CRTC belongs to + */ + public static final int LIBGAMMA_CONNECTOR_UNKNOWN = -25; + + /** + * The detected connector type is not listed + * in this library and has to be updated + */ + public static final int LIBGAMMA_CONNECTOR_TYPE_NOT_RECOGNISED = -26; + + /** + * The detected subpixel order is not listed + * in this library and has to be updated + */ + public static final int LIBGAMMA_SUBPIXEL_ORDER_NOT_RECOGNISED = -27; + + /** + * The length of the EDID does not match that + * of any supported EDID structure revision + */ + public static final int LIBGAMMA_EDID_LENGTH_UNSUPPORTED = -28; + + /** + * The magic number in the EDID does not match + * that of any supported EDID structure revision + */ + public static final int LIBGAMMA_EDID_WRONG_MAGIC_NUMBER = -29; + + /** + * The EDID structure revision used by the + * mointor is not supported + */ + public static final int LIBGAMMA_EDID_REVISION_UNSUPPORTED = -30; + + /** + * The gamma characteristics field in the EDID + * is left unspecified + * <p> + * (This could be considered a non-error) + */ + public static final int LIBGAMMA_GAMMA_NOT_SPECIFIED = -31; + + /** + * The checksum in the EDID is incorrect, all + * request information has been provided + * by you cannot count on it + */ + public static final int LIBGAMMA_EDID_CHECKSUM_ERROR = -32; + + /** + * Both of the errors {@link #LIBGAMMA_GAMMA_NOT_SPECIFIED} + * and {@link #LIBGAMMA_EDID_CHECKSUM_ERROR} have occurred + */ + public static final int LIBGAMMA_GAMMA_NOT_SPECIFIED_AND_EDID_CHECKSUM_ERROR = -33; + + /** + * Failed to query the gamma ramps size from the + * adjustment method, reason unknown + */ + public static final int LIBGAMMA_GAMMA_RAMPS_SIZE_QUERY_FAILED = -34; + + /** + * The selected partition could not be opened, + * reason unknown + */ + public static final int LIBGAMMA_OPEN_PARTITION_FAILED = -35; + + /** + * The selected site could not be opened, + * reason unknown + */ + public static final int LIBGAMMA_OPEN_SITE_FAILED = -36; + + /** + * Failed to query the adjustment method for + * its protocol version, reason unknown + */ + public static final int LIBGAMMA_PROTOCOL_VERSION_QUERY_FAILED = -37; + + /** + * The adjustment method's version of its + * protocol is not supported + */ + public static final int LIBGAMMA_PROTOCOL_VERSION_NOT_SUPPORTED = -38; + + /** + * The adjustment method failed to list + * available partitions, reason unknown + */ + public static final int LIBGAMMA_LIST_PARTITIONS_FAILED = -39; + + /** + * Partition exists by index, but the partition + * at that index does not exist + */ + public static final int LIBGAMMA_NULL_PARTITION = -40; + + /** + * There is not mointor connected to the + * connector of the selected CRTC + */ + public static final int LIBGAMMA_NOT_CONNECTED = -41; + + /** + * Data extraction from a reply from the + * adjustment method failed, reason unknown + */ + public static final int LIBGAMMA_REPLY_VALUE_EXTRACTION_FAILED = -42; + + /** + * No EDID property was found on the output + */ + public static final int LIBGAMMA_EDID_NOT_FOUND = -43; + + /** + * Failed to list properties on the output, + * reason unknown + */ + public static final int LIBGAMMA_LIST_PROPERTIES_FAILED = -44; + + /** + * Failed to query a property's value from + * the output, reason unknown + */ + public static final int LIBGAMMA_PROPERTY_VALUE_QUERY_FAILED = -45; + + /** + * A request for information on an output + * failed, reason unknown + */ + public static final int LIBGAMMA_OUTPUT_INFORMATION_QUERY_FAILED = -46; + + + /** + * The number of the libgamma error with the + * lowest number. If this is lower than the + * number your program thinks it should be sould + * update your program for new errors. + */ + public static final int LIBGAMMA_ERROR_MIN = -46; + + + /** + * Constructor + * + * @param error_code The error code + */ + public LibgammaException(int error_code) + { + this.error_code = error_code; + if (error_code == LIBGAMMA_DEVICE_REQUIRE_GROUP) { + this.group_gid = libgamma_group_gid(); + this.group_name = libgamma_group_name(); + } else { + this.group_gid = 0; + this.group_name = null; + } + this.string = error_code < 0 ? name_of_error(error_code) : strerror(error_code); + } + + + /** + * The error code + * <p> + * Cannot be {@link #LIBGAMMA_ERRNO_SET} + */ + public final int error_code; + + /** + * Group that the user needs to be a member of if + * {@link #error_code} is {@link #LIBGAMMA_DEVICE_REQUIRE_GROUP} + */ + public final int group_gid; + + /** + * Group that the user needs to be a member of if + * {@link #error_code} is {@link #LIBGAMMA_DEVICE_REQUIRE_GROUP}, + * {@code null} if the name of the group {@link #group_gid} + * cannot be determined + */ + public final String group_name; + + /** + * Name of textual description of the error + */ + public final String string; + + + /** + * {@inheritDoc} + */ + @Override + public String toString() + { + return this.string; + } + + + /** + * Returns the name of the definition associated with + * a <tt>libgamma</tt> error code + * + * @param value The error code + * @return The name of the definition associated with the error code, + * {@code null} if the error code does not exist + */ + public static native String name_of_error(int value); + + /** + * Return the value of a <tt>libgamma</tt> error definition + * refered to by name + * + * @param name The name of the definition associated with the error code + * @return The error code, zero if the name is {@code null} + * or does not refer to a <tt>libgamma</tt> error + */ + public static native int value_of_error(String name); + + /** + * Acquire the value that should go to {@link #group_gid} + * + * @return The value that should go to {@link #group_gid} + */ + private static native int libgamma_group_gid(); + + /** + * Acquire the value that should go to {@link #group_name} + * + * @return The value that should go to {@link #group_name} + */ + private static native String libgamma_group_name(); + + /** + * Get a textual description of a system error code + * + * @param error_code The error code + * @return A textual description of the error code + */ + private static native String strerror(int error_code); +} |