package nya.miku.wishmaster.lib.gifdrawable;
import java.util.Locale;
/**
* Encapsulation of decoding errors occurring in native code.
* Three digit codes are equal to GIFLib error codes.
*
* @author koral--
*/
public enum GifError {
/**
* Special value indicating lack of errors
*/
NO_ERROR(0, "No error"),
/**
* Failed to open given input
*/
OPEN_FAILED(101, "Failed to open given input"),
/**
* Failed to read from given input
*/
READ_FAILED(102, "Failed to read from given input"),
/**
* Data is not in GIF format
*/
NOT_GIF_FILE(103, "Data is not in GIF format"),
/**
* No screen descriptor detected
*/
NO_SCRN_DSCR(104, "No screen descriptor detected"),
/**
* No image descriptor detected
*/
NO_IMAG_DSCR(105, "No image descriptor detected"),
/**
* Neither global nor local color map found
*/
NO_COLOR_MAP(106, "Neither global nor local color map found"),
/**
* Wrong record type detected
*/
WRONG_RECORD(107, "Wrong record type detected"),
/**
* Number of pixels bigger than width * height
*/
DATA_TOO_BIG(108, "Number of pixels bigger than width * height"),
/**
* Failed to allocate required memory
*/
NOT_ENOUGH_MEM(109, "Failed to allocate required memory"),
/**
* Failed to close given input
*/
CLOSE_FAILED(110, "Failed to close given input"),
/**
* Given file was not opened for read
*/
NOT_READABLE(111, "Given file was not opened for read"),
/**
* Image is defective, decoding aborted
*/
IMAGE_DEFECT(112, "Image is defective, decoding aborted"),
/**
* Image EOF detected before image complete.
* EOF means GIF terminator, NOT end of input source.
*/
EOF_TOO_SOON(113, "Image EOF detected before image complete"),
/**
* No frames found, at least one frame required
*/
NO_FRAMES(1000, "No frames found, at least one frame required"),
/**
* Invalid screen size, dimensions must be positive
*/
INVALID_SCR_DIMS(1001, "Invalid screen size, dimensions must be positive"),
/**
* Invalid image size, dimensions must be positive
*/
INVALID_IMG_DIMS(1002, "Invalid image size, dimensions must be positive"),
/**
* Image size exceeds screen size
*/
IMG_NOT_CONFINED(1003, "Image size exceeds screen size"),
/**
* Input source rewind has failed, animation is stopped
*/
REWIND_FAILED(1004, "Input source rewind has failed, animation is stopped"),
/**
* Unknown error, should never appear
*/
UNKNOWN(-1, "Unknown error");
/**
* Human readable description of the error
*/
public final String description;
private int errorCode;
private GifError(int code, String description) {
errorCode = code;
this.description = description;
}
static GifError fromCode(int code) {
for (GifError err : GifError.values())
if (err.errorCode == code)
return err;
GifError unk = UNKNOWN;
unk.errorCode = code;
return unk;
}
/**
* @return error code
*/
public int getErrorCode() {
return errorCode;
}
String getFormattedDescription() {
return String.format(Locale.US, "GifError %d: %s", errorCode, description);
}
}