H
ok, bin nicht mit einer Stunde hingekommen, sondern habe branchenüblich um 50% überzogen
hier nun mein neuer Code :
void ReadTypes()
{
//das Bild mit den Zeichen hat 176x32 Pixel
types = (Byte**)new Byte*[176];
for (int i=0;i<176;i++)
{
types[i]= new Byte[4];
}
for (int x=0;x<176;x++)
{
for (int y=0;y<4;y++)
{
types[x][y]=0;
}
}
//die relevanten Informationen stehen ab dem offset 0x3F
//begonnen wird mit der letzten Zeile
//1 Bytes enthält jeweils 8 Pixel einer Zeile
//1 Zeile besteht aus 24 Bytes -> die letzten beiden können überlesen werden
FileStream^ file=gcnew FileStream("types.bmp", FileMode::Open);;
BinaryReader^ br=gcnew BinaryReader(file);
br->ReadBytes(0x3E);
for (int y=31;y>=0;y--)
{
for (int x=0;x<22;x++)
{
Byte b=br->ReadByte();
int i=0;
while (b>0)
{
if (b%2)
{
types[x*8+7-i][y/8] |= 1<<(y%8);
}
b/=2;
i++;
}
}
br->ReadBytes(0x02);
}
}
void WriteText2(String^ s)
{
const char extra_types[]={'(',')','.',',',':',';','/','*','-','+','!','?','$','%','&','=','ß','ö','ä','ü','Ö','Ä','Ü','#','<','>','\\','@','_'};
for (int i=0;i<s->Length;i++)
{
bool gefunden=false;
if (s[i]>='a' && s[i]<='z' && !gefunden)
{
gefunden=true;
for (int o=0;o<6;o++)
{
new_matrix[6*i+o][0]=types[6*(s[i]-'a')+o][1];
}
}
if (s[i]>='A' && s[i]<='Z' && !gefunden)
{
gefunden=true;
for (int o=0;o<6;o++)
{
new_matrix[6*i+o][0]=types[6*(s[i]-'A')+o][0];
}
}
if (s[i]>='0' && s[i]<='9' && !gefunden)
{
gefunden=true;
for (int o=0;o<6;o++)
{
new_matrix[6*i+o][0]=types[6*(s[i]-'0')+o][2];
}
}
if (s[i]==' ' && !gefunden)
{
gefunden=true;
for (int o=0;o<6;o++)
{
new_matrix[6*i+o][0]=0;
}
}
if (!gefunden)
{
for (int t=0;t<29;t++)
{
gefunden=true;
if (s[i]==extra_types[t])
for (int o=0;o<6;o++)
{
new_matrix[6*i+o][0]=types[6*t+o][3];
}
}
}
}
}
Die Write-Funktion sieht etwas zerrissen aus, aber das liegt daran, dass ich nicht den kompletten ASCII-Code in meinem Bitmap habe.