private void FromBytesToFormatoFonte(byte[] dados) { unsafe { fixed(byte *pSrc = dados) { FormatoFonte *formatoFonte = (FormatoFonte *)pSrc; this.Versao = formatoFonte->versao; this.Altura = formatoFonte->altura; this.flags = formatoFonte->flags; for (int i = 0; i < 49; i++) { this.nomeFonte[i] = formatoFonte->nomeFonte[i]; } this.crc = formatoFonte->crc; int indiceInfoCaractere = 0; this.caracteres.Clear(); //carrega as informações do cabeçalho de caracteres. for (int i = 0; i < 224; i++) { CaractereInfo c = new CaractereInfo(); CaractereInfo *caracteresInfo = ((CaractereInfo *)formatoFonte->caractereInfo); c.codigo = caracteresInfo[i].codigo; c.enderecoBitmap = caracteresInfo[i].enderecoBitmap; this.caracteres.Add(c); } } } //caracteres.Sort(delegate(CaractereInfo a, CaractereInfo b) // { // return a.codigo.CompareTo(b.codigo); // }); // Ordenar os caracteres pelo código, pois algumas fontes do Pontos 6 não estão em ordem caracteres.Sort((a, b) => a.codigo.CompareTo(b.codigo)); //carrega as informações sobre os bitmaps. this.bitmaps.Clear(); for (int bitmap = 0; bitmap < 224; bitmap++) { Bitmap b = new Bitmap(); b = CarregarBitmap(this.NomeArquivo, caracteres[bitmap].enderecoBitmap, bitmap); this.bitmaps.Add(b); } }
private byte[] toByteArray() { unsafe { Byte[] resultado = new Byte[sizeof(FormatoFonte)]; fixed(byte *pSrc = resultado) { FormatoFonte *formatoFonte = (FormatoFonte *)pSrc; formatoFonte->versao = this.Versao; for (int i = 0; i < 3; i++) { formatoFonte->reservado[i] = this.reservado[i]; } formatoFonte->altura = this.Altura; for (int i = 0; i < 4; i++) { formatoFonte->reservado2[i] = this.reservado2[i]; } formatoFonte->flags = this.flags; for (int i = 0; i < 49; i++) { formatoFonte->nomeFonte[i] = this.nomeFonte[i]; } formatoFonte->crc = this.crc; for (int caracInfo = 0; caracInfo < 224; caracInfo++) { CaractereInfo *caracteresInfo = ((CaractereInfo *)formatoFonte->caractereInfo); caracteresInfo[caracInfo].codigo = this.caracteres[caracInfo].codigo; caracteresInfo[caracInfo].enderecoBitmap = this.caracteres[caracInfo].enderecoBitmap; } } return(resultado); } }