mam taki programik ciekawy... podobno koduje tekst w mapie bitowej... mogłby ktoś "rzucic okiem" i powiedziec o co mniej wiecej chodzi w tym programiku [???] jakby sie komus chcialo... :-/
//----------------------------------------------------------------
TForm1 *Form1;
long dl_max=0; //max dł wiad w bitach
//-------------------------------------------------------------------------
TColor TForm1::zakoduj(bool b1,bool b2, bool b3, TColor c)
{
long rob=1;
rob=rob<<8;
rob+=1;
rob=rob<<8;
rob+=1;
c = c | rob; //pierwszy, dziewiąty i siedemnasty bit w c jest jedynką
rob = 0xFE;
rob+=b3;
rob=rob<<8;
rob+=0xFE;
rob+=b2;
rob=rob<<8;
rob+=0xFE;
rob+=b1;
c = c & rob;
return c;
}
//-----------------------Kodowanie----------------------------------------
void __fastcall TForm1::Koduj1Click(TObject *Sender)
{
long dl_wiad = Memo1->Lines->Text.Length();
Label5->Caption=IntToStr(dl_wiad);
if(dl_wiad<=dl_max)
{
//ukrywanie informacji w obrazku
long i=0,j=0; //współrzędne bieżącego piksela
char znak;
int bp=0; // ilosc bitow przeniesionych (niezakodowanych) z poprzedniego znaku
long szer=i1->Picture->Bitmap->Width;
long wys=i1->Picture->Bitmap->Height;
TColor piksel;
bool b1,b2,b3;
for(int k=1;k<=dl_wiad;k++)
{
piksel=i1->Picture->Bitmap->Canvas->Pixels[i][j];
znak=Memo1->Lines->Text[k];
if(bp==0) //o bitów przeniesionych
{
b1=znak%2;
znak/=2;
b2=znak%2;
znak/=2;
b3=znak%2;
znak/=2;
i1->Picture->Bitmap->Canvas->Pixels[i][j]=zakoduj(b1,b2,b3,i1->Picture->Bitmap->Canvas->Pixels[i][j]);
i++;
if (i>szer) {i=0; j++;}
b1=znak%2;
znak/=2;
b2=znak%2;
znak/=2;
b3=znak%2;
znak/=2;
i1->Picture->Bitmap->Canvas->Pixels[i][j]=zakoduj(b1,b2,b3,i1->Picture->Bitmap->Canvas->Pixels[i][j]);
i++;
if (i>szer) {i=0; j++;}
b1=znak%2;
znak/=2;
b2=znak%2;
bp=2;
}
else if(bp==1)
{
b2=znak%2;
znak/=2;
b3=znak%2;
znak/=2;
i1->Picture->Bitmap->Canvas->Pixels[i][j]=zakoduj(b1,b2,b3,i1->Picture->Bitmap->Canvas->Pixels[i][j]);
i++;
if (i>szer) {i=0; j++;}
b1=znak%2;
znak/=2;
b2=znak%2;
znak/=2;
b3=znak%2;
znak/=2;
i1->Picture->Bitmap->Canvas->Pixels[i][j]=zakoduj(b1,b2,b3,i1->Picture->Bitmap->Canvas->Pixels[i][j]);
i++;
if (i>szer) {i=0; j++;}
b1=znak%2;
znak/=2;
b2=znak%2;
znak/=2;
b3=znak%2;
znak/=2;
i1->Picture->Bitmap->Canvas->Pixels[i][j]=zakoduj(b1,b2,b3,i1->Picture->Bitmap->Canvas->Pixels[i][j]);
i++;
if (i>szer) {i=0; j++;}
bp=0;
}
else //bp=2
{
b3=znak%2;
znak/=2;
i1->Picture->Bitmap->Canvas->Pixels[i][j]=zakoduj(b1,b2,b3,i1->Picture->Bitmap->Canvas->Pixels[i][j]);
i++;
if (i>szer) {i=0; j++;}
b1=znak%2;
znak/=2;
b2=znak%2;
znak/=2;
b3=znak%2;
znak/=2;
i1->Picture->Bitmap->Canvas->Pixels[i][j]=zakoduj(b1,b2,b3,i1->Picture->Bitmap->Canvas->Pixels[i][j]);
i++;
if (i>szer) {i=0; j++;}
b1=znak%2;
znak/=2;
b2=znak%2;
znak/=2;
b3=znak%2;
znak/=2;
i1->Picture->Bitmap->Canvas->Pixels[i][j]=zakoduj(b1,b2,b3,i1->Picture->Bitmap->Canvas->Pixels[i][j]);
i++;
if (i>szer) {i=0; j++;}
b1=znak%2;
bp=1;
}
}
i1->Picture->Bitmap->Canvas->Refresh();
}
else
MessageDlg("Za długa wiadomość!",mtError,TMsgDlgButtons()<<mbYes,0);
}
//-----------------------Dekodowanie-------------------------------------
void __fastcall TForm1::Dekoduj1Click(TObject *Sender)
{
MOdkodowane->Clear();
AnsiString wynik="";
long dl_wiad=StrToInt(Label5->Caption);
long i=0,j=0,rob=0;
char zn=0;
bool b1,b2,b3;
TColor c;
int ile=0; //ile bitów zapisano w zn
for(int k=1;k<=dl_wiad*8/3;k++)
{
c=i1->Picture->Bitmap->Canvas->Pixels[i][j]; //czytamy piksel
b1=c%2; //czytamy bit z B
rob+=b1;
rob=rob<<ile;
zn=zn | rob;
rob=0; //dodajemy go do znaku
ile++;
if (ile==8) // jeśli znak jest pełny(8 bitów)
{wynik+=zn; ile=0; zn=0;} //dopisujemy go do wyniku
c=c>>8;
b2=c%2;
rob+=b2;
rob=rob<<ile;
zn=zn | rob; //dodajemy go do znaku
rob=0;
ile++;
if (ile==8)
{wynik+=zn; ile=0; zn=0;}
c=c>>8;
b3=c%2;
rob+=b3;
rob=rob<<ile;
zn=zn | rob; //dodajemy go do znaku
rob=0;
ile++;
if (ile==8)
{wynik+=zn; ile=0; zn=0;}
i++;
if (i>i1->Picture->Bitmap->Width) {i=0; j++;}
}
MOdkodowane->Lines->Text=wynik;
Label11->Caption=IntToStr(MOdkodowane->Lines->Text.Length());
}
//-------------------------------------------------------------------------