package com.technofovea.hllib.methods; import com.sun.jna.Library; import com.sun.jna.Memory; import com.sun.jna.Pointer; import com.sun.jna.ptr.ByteByReference; import com.sun.jna.ptr.IntByReference; import com.technofovea.hllib.datatypes.Attribute; import com.technofovea.hllib.DirectoryItem; import com.technofovea.hllib.HlPackage; import com.technofovea.hllib.HlStream; import com.technofovea.hllib.enums.DirectoryItemType; import com.technofovea.hllib.enums.HlAttributeType; import com.technofovea.hllib.enums.HlOption; import com.technofovea.hllib.enums.PackageAttribute; import com.technofovea.hllib.enums.PackageType; import com.technofovea.hllib.enums.SortField; import com.technofovea.hllib.enums.SortOrder; import com.technofovea.hllib.enums.StreamType; import com.technofovea.hllib.enums.Validation; import com.technofovea.hllib.masks.FileMode; import com.technofovea.hllib.masks.FindType; import com.technofovea.hllib.masks.SeekMode; /** * Methods which exist on the DLL and can be used without significant Java * mediation. * @author Darien Hager */ public interface BasicLibrary extends Library{ public static final int HL_DEFAULT_PACKAGE_TEST_BUFFER_SIZE = 8; // // Get/Set // public boolean getBoolean(HlOption option); public void setBoolean(HlOption option, boolean value); public int getInteger(HlOption option); public void setInteger(HlOption option, int value); public int getUnsignedInteger(HlOption option); public void setUnsignedInteger(HlOption option, int value); public float getFloat(HlOption option); public void setFloat(HlOption option, float fValue); public String getString(HlOption option); public void setString(HlOption option, String value); public Pointer getVoid(HlOption option); public void setVoid(HlOption option, Pointer value); // // Attributes // public boolean attributeGetBoolean(HlAttributeType attr); public void attributeSetBoolean(HlAttributeType attr, String name, boolean value); public int attributeGetInteger(HlAttributeType attr); public void attributeSetInteger(HlAttributeType attr, String name, int value); public int attributeGetUnsignedInteger(HlAttributeType attr); public void attributeSetUnsignedInteger(HlAttributeType attr, String name, int value, boolean hexadecimal); public float attributeGetFloat(HlAttributeType attr); public void attributeSetFloat(HlAttributeType attr, String name, float value); public String attributeGetString(HlAttributeType attr); public void attributeSetString(HlAttributeType attr, String name, String value); // // Directory Item // public DirectoryItemType itemGetType(DirectoryItem item); public String itemGetName(DirectoryItem item); public int itemGetID(DirectoryItem item); public Pointer itemGetData(DirectoryItem item); public HlPackage itemGetPackage(DirectoryItem item); public DirectoryItem itemGetParent(DirectoryItem item); public boolean itemExtract(DirectoryItem item, String path); // // Directory Folder // public int folderGetCount(DirectoryItem item); public DirectoryItem folderGetItem(DirectoryItem item, int index); public DirectoryItem folderGetItemByName(DirectoryItem item, String name, FindType find); public DirectoryItem folderGetItemByPath(DirectoryItem item, String path, FindType find); public void folderSort(DirectoryItem item, SortField field, SortOrder order, boolean recurse); public DirectoryItem folderFindFirst(DirectoryItem folder, String search, FindType find); public DirectoryItem folderFindNext(DirectoryItem folder, DirectoryItem item, String search, FindType find); public int folderGetSize(DirectoryItem item, boolean recurse); public int folderGetSizeOnDisk(DirectoryItem item, boolean recurse); public long folderGetSizeEx(DirectoryItem item, boolean recurse); public long folderGetSizeOnDiskEx(DirectoryItem item, boolean recurse); public int folderGetFolderCount(DirectoryItem item, boolean recurse); public int folderGetFileCount(DirectoryItem item, boolean recurse); // // Directory File // public int fileGetExtractable(DirectoryItem item); public Validation fileGetValidation(DirectoryItem item); public int fileGetSize(DirectoryItem item); public int fileGetSizeOnDisk(DirectoryItem item); public void fileReleaseStream(DirectoryItem item, HlStream streamObj); // // Stream // public StreamType streamGetType(HlStream streamObj); public boolean streamGetOpened(HlStream streamObj); public int streamGetMode(HlStream streamObj); public boolean streamOpen(HlStream streamObj, FileMode mode); public void streamClose(HlStream streamObj); public int streamGetStreamSize(HlStream streamObj); public int streamGetPointer(HlStream streamObj); public int streamSeek(HlStream streamObj, long offset, SeekMode seekMode); public boolean streamReadChar(HlStream streamObj, ByteByReference chr); public int streamRead(HlStream streamObj, Memory data, int bytes); public boolean streamWriteChar(HlStream streamObj, char c); public int streamWrite(HlStream streamObj, Memory data, int bytes); // // Package // public boolean bindPackage(HlPackage pkg); public PackageType getPackageTypeFromName(String name); public PackageType getPackageTypeFromMemory(Memory buffer, int bufferSize); public PackageType getPackageTypeFromStream(HlStream streamObj); public PackageType packageGetType(); public String packageGetExtension(); public String packageGetDescription(); public boolean packageGetOpened(); public boolean packageOpenFile(String fileName, FileMode mode); public boolean packageOpenMemory(Memory data, int dataSize, FileMode mode); public boolean packageOpenProc(Pointer userData, FileMode mode); public boolean packageOpenStream(HlStream streamObj, FileMode mode); public boolean packageDefragment(); public DirectoryItem packageGetRoot(); public int packageGetAttributeCount(); public String packageGetAttributeName(PackageAttribute attr); public boolean packageGetAttribute(PackageAttribute attr, Attribute saveTo); public int packageGetItemAttributeCount(); //TODO split off Package and Item attributes into a separate enum? // Need more documentation about them first. public String packageGetItemAttributeName(PackageAttribute attr); public boolean packageGetItemAttribute(DirectoryItem item, PackageAttribute attr, Attribute saveTo); public void packageReleaseStream(HlStream streamObj); public String ncfFileGetRootPath(); public void ncfFileSetRootPath(String rootPath); public boolean wadFileGetImageSizePaletted(DirectoryItem file, IntByReference paletteDataSize, IntByReference pixelDataSize); public boolean wadFileGetImageDataPaletted(DirectoryItem file, IntByReference width, IntByReference height, ByteByReference paletteData, ByteByReference pixelData); public boolean wadFileGetImageSize(DirectoryItem file, IntByReference pixelDataSize); public boolean wadFileGetImageData(DirectoryItem file, IntByReference width, IntByReference height, ByteByReference pixelData); }