コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }