package com.jpexs.decompiler.flash.iggy;
import com.jpexs.decompiler.flash.iggy.annotations.IggyFieldType;
import com.jpexs.decompiler.flash.iggy.streams.ReadDataStreamInterface;
import com.jpexs.decompiler.flash.iggy.streams.StructureInterface;
import com.jpexs.decompiler.flash.iggy.streams.WriteDataStreamInterface;
import java.io.IOException;
/**
*
* @author JPEXS
*/
public class IggyFontBinInfo implements StructureInterface {
public static final int STRUCT_SIZE = 96;
@IggyFieldType(DataType.uint64_t)
long size_of_this_info = STRUCT_SIZE;
@IggyFieldType(value = DataType.uint16_t, count = 4)
int font_specific[];
@IggyFieldType(DataType.float_t)
float normX;
@IggyFieldType(DataType.float_t)
float zero;
@IggyFieldType(DataType.float_t)
float zero2;
@IggyFieldType(DataType.float_t)
float normY;
@IggyFieldType(DataType.float_t)
float minSize;
@IggyFieldType(DataType.float_t)
float maxSize;
@IggyFieldType(DataType.uint64_t)
long order_in_iggy_file;
@IggyFieldType(DataType.int64_t)
long address_back; //relative
@IggyFieldType(value = DataType.uint8_t, count = 40)
byte pad[];
public IggyFontBinInfo(ReadDataStreamInterface s) throws IOException {
readFromDataStream(s);
}
@Override
public void readFromDataStream(ReadDataStreamInterface s) throws IOException {
size_of_this_info = s.readUI64();
if (size_of_this_info != 96) {
throw new IOException(String.format("Wrong iggy font format (bininfo)!"));
}
font_specific = new int[4];
for (int i = 0; i < font_specific.length; i++) {
font_specific[i] = s.readUI16();
}
normX = s.readFloat();
zero = s.readFloat();
zero2 = s.readFloat();
normY = s.readFloat();
minSize = s.readFloat();
maxSize = s.readFloat();
order_in_iggy_file = s.readUI64();
address_back = s.readSI64();
//if(address_back + s.position() - 8 != text_offsets[i]) Printf("Wrong iggy font format (bininfo-offsetback) (%u)!\n",i);
pad = s.readBytes(40);
}
@Override
public void writeToDataStream(WriteDataStreamInterface s) throws IOException {
s.writeUI64(size_of_this_info);
for (int i = 0; i < font_specific.length; i++) {
s.writeUI16(font_specific[i]);
}
s.writeFloat(normX);
s.writeFloat(zero);
s.writeFloat(zero2);
s.writeFloat(normY);
s.writeFloat(minSize);
s.writeFloat(maxSize);
s.writeUI64(order_in_iggy_file);
s.writeSI64(address_back);
s.writeBytes(pad);
}
}