private static void SetApplicationExtension(byte[] gifBytes, ref int byteIndex, ref GifData gifData) { // Extension Introducer(1 Byte) // 0x21 gifData.m_appEx.m_extensionIntroducer = gifBytes[byteIndex]; byteIndex++; // Extension Label(1 Byte) // 0xff gifData.m_appEx.m_extensionLabel = gifBytes[byteIndex]; byteIndex++; // Block Size(1 Byte) // 0x0b gifData.m_appEx.m_blockSize = gifBytes[byteIndex]; byteIndex++; // Application Identifier(8 Bytes) gifData.m_appEx.m_appId1 = gifBytes[byteIndex]; byteIndex++; gifData.m_appEx.m_appId2 = gifBytes[byteIndex]; byteIndex++; gifData.m_appEx.m_appId3 = gifBytes[byteIndex]; byteIndex++; gifData.m_appEx.m_appId4 = gifBytes[byteIndex]; byteIndex++; gifData.m_appEx.m_appId5 = gifBytes[byteIndex]; byteIndex++; gifData.m_appEx.m_appId6 = gifBytes[byteIndex]; byteIndex++; gifData.m_appEx.m_appId7 = gifBytes[byteIndex]; byteIndex++; gifData.m_appEx.m_appId8 = gifBytes[byteIndex]; byteIndex++; // Application Authentication Code(3 Bytes) gifData.m_appEx.m_appAuthCode1 = gifBytes[byteIndex]; byteIndex++; gifData.m_appEx.m_appAuthCode2 = gifBytes[byteIndex]; byteIndex++; gifData.m_appEx.m_appAuthCode3 = gifBytes[byteIndex]; byteIndex++; // Block Size & Application Data List while (true) { // Block Size (1 Byte) byte blockSize = gifBytes[byteIndex]; byteIndex++; if (blockSize == 0x00) { // Block Terminator(1 Byte) break; } var appDataBlock = new ApplicationExtension.ApplicationDataBlock(); appDataBlock.m_blockSize = blockSize; // Application Data(n Byte) appDataBlock.m_applicationData = new byte[appDataBlock.m_blockSize]; for (int i = 0; i < appDataBlock.m_applicationData.Length; i++) { appDataBlock.m_applicationData[i] = gifBytes[byteIndex]; byteIndex++; } if (gifData.m_appEx.m_appDataList == null) { gifData.m_appEx.m_appDataList = new List <ApplicationExtension.ApplicationDataBlock>(); } gifData.m_appEx.m_appDataList.Add(appDataBlock); } }
static void SetApplicationExtension (byte[] gifBytes, ref int byteIndex, ref GifData gifData) { // Extension Introducer(1 Byte) // 0x21 gifData.appEx.extensionIntroducer = gifBytes[byteIndex]; byteIndex++; // Extension Label(1 Byte) // 0xff gifData.appEx.extensionLabel = gifBytes[byteIndex]; byteIndex++; // Block Size(1 Byte) // 0x0b gifData.appEx.blockSize = gifBytes[byteIndex]; byteIndex++; // Application Identifier(8 Bytes) gifData.appEx.appId1 = gifBytes[byteIndex]; byteIndex++; gifData.appEx.appId2 = gifBytes[byteIndex]; byteIndex++; gifData.appEx.appId3 = gifBytes[byteIndex]; byteIndex++; gifData.appEx.appId4 = gifBytes[byteIndex]; byteIndex++; gifData.appEx.appId5 = gifBytes[byteIndex]; byteIndex++; gifData.appEx.appId6 = gifBytes[byteIndex]; byteIndex++; gifData.appEx.appId7 = gifBytes[byteIndex]; byteIndex++; gifData.appEx.appId8 = gifBytes[byteIndex]; byteIndex++; // Application Authentication Code(3 Bytes) gifData.appEx.appAuthCode1 = gifBytes[byteIndex]; byteIndex++; gifData.appEx.appAuthCode2 = gifBytes[byteIndex]; byteIndex++; gifData.appEx.appAuthCode3 = gifBytes[byteIndex]; byteIndex++; // Block Size & Application Data List while (true) { // Block Size (1 Byte) byte blockSize = gifBytes[byteIndex]; byteIndex++; if (blockSize == 0x00) { // Block Terminator(1 Byte) break; } var appDataBlock = new ApplicationExtension.ApplicationDataBlock (); appDataBlock.blockSize = blockSize; // Application Data(n Byte) appDataBlock.applicationData = new byte[appDataBlock.blockSize]; for (int i = 0; i < appDataBlock.applicationData.Length; i++) { appDataBlock.applicationData[i] = gifBytes[byteIndex]; byteIndex++; } if (gifData.appEx.appDataList == null) { gifData.appEx.appDataList = new List<ApplicationExtension.ApplicationDataBlock> (); } gifData.appEx.appDataList.Add (appDataBlock); } }