Ahoj,
neni to sice C++, ale ciste C, snad to neva. Mam jednorozmerne pole pixelu (BGRA), ktere se chova jako dvourozmerne. Je to primo pro XImage v Xlib. A potrebuji ten obrazek zvetsit po jeho nasobcich. Takze jedu po radcich a kopiruji do noveho pole z 1,2,3,4,5 na 1,1,1,2,2,2,3,3,3,4,4,4,5,5,5...atd. Pak ten cely "hotovy" radek jeste 2x znovu nakopiruji a mam to v tomto pripade 3x zvetseny. Problem je ze ty nasobky se meni a chci to mit co nejrychlejsi a goto promnena asi v cecku neni, neco jako
zvetseni = 3x
goto zvetseni;
7x:
*p_cil++ = *p_zdroj;
6x:
*p_cil++ = *p_zdroj;
5x:
*p_cil++ = *p_zdroj;
4x:
*p_cil++ = *p_zdroj;
3x:
*p_cil++ = *p_zdroj;
2x:
*p_cil++ = *p_zdroj;
1x:
*p_cil++ = *p_zdroj++;
if ( delka-- == 0 ) break;
goto zvetseni;
Tak jsem misto toho udelal funkce pro kazdy zvetseni a na zacatku se priradi do smyek ta spravna. Je tam sice volani navic, ale to by se melo ztratit kdyz je jen jedno na radek nez IF * delka_radku.
No ale potrebuji aby ta funkce vracela aktualizovany p_cil a p_zdroj. A to se mi nedari. Protoze jedine funkcni reseni je tohle:
void DuplikujPixely3x ( int delka, BGRA ** odkud, BGRA ** kam ) {
BGRA *k = *kam;
BGRA *o = *odkud;
while ( delka-- ) {
*k++ = *o;
*k++ = *o;
*k++ = *o++;
}
*odkud = o;
*kam = k;
}
A jiny cachry z hvezdickama a ruzne to ozavorkovat mi nefunguje. Jak to jde bez tech pomocnych?
BGRA ** odkud -> je ukazatel kde lezi ukazatel na BGRA strukturu.
|