Poslao: 20 Jan 2012 22:28
|
offline
- savan2
- Građanin
- Pridružio: 15 Jul 2009
- Poruke: 150
|
Pozdrav! Kako ovo da odradim, da cita iz fajla i ponovo definise MENU_TEXT_COLOR? Nesto sam pokusao ali sam pocetnik u c pa malo teze kontam, hvala puno!
#define MENU_TEXT_COLOR 000,191,255
void menu_text_color(void) {
char buf[12];
int fd;
ssize_t nbytes;
fd = open("/res/images/menu.txt", O_RDONLY);
if (fd >= 0) {
nbytes = read(fd, buf, sizeof(buf) - 1);
close(fd);
if (nbytes >= 0)
buf[nbytes] = '\0';
if (nbytes == 11) {
#undef MENU_TEXT_COLOR
#define MENU_TEXT_COLOR (char)strndup(buf, 3), (char)strndup(buf+4, 3), (char)strndup(buf+8, 3)
}
}
}
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
|
|
Poslao: 21 Jan 2012 11:24
|
offline
- savan2
- Građanin
- Pridružio: 15 Jul 2009
- Poruke: 150
|
Napisano: 21 Jan 2012 11:20
Hvala ti za tutorijale, super su! Mada i dalje trazim kako ovo da uradim:
define MENU_TEXT_COLOR (char)strndup(buf, 3), (char)strndup(buf+3, 3), (char)strndup(buf+6, 3)
Ne kontam dali MENU_TEXT_COLOR , koji je u stvari skup od 3 char r,g,b, dali mogu da ga izmenim kao na primer MENU_TEXT_COLOR[0][3] = "000"; MENU_TEXT_COLOR[1][3] = "191"; MENU_TEXT_COLOR [2][3] = "255";
ili sto najvaznije od svega, i sto hocu da naucim, a ne mogu nigde na netu da nadjem, kako da ponovo "define" u funkciji, konkretno u mom "dirty" primery? I ako ti nije problem da mi kazes gde imam gresku, mislis na ovo O_RDONLY ili?
|
|
|
|
Poslao: 21 Jan 2012 15:01
|
offline
- morando
- Građanin
- Pridružio: 19 Maj 2011
- Poruke: 297
|
Kod sto si postavio u prvom postu je pogresan na mnogo nacina. Evo ti zamena:
typedef unsigned char byte;
typedef struct
{
byte r;
byte g;
byte b;
}RGB_COLOR;
RGB_COLOR MENU_TEXT_COLOR = { 0, 191, 255 };
void menu_text_color(void)
{
const size_t buffer_sz = 12;
char buf[buffer_sz];
buf[buffer_sz - 1] = '\0';
int fd;
size_t nbytes;
fd = open("/res/images/menu.txt", O_RDONLY);
// ovde u zavisnosti koje vrednosti vraca open funkcija
// predpostavjam da je sve iznad 0 proslo dobro
if(fd > 0)
{
nbytes = read(fd, buf, buffer_sz);
close(fd);
if(nbytes > 0)
{
char* end;
MENU_TEXT_COLOR.r = strtoul(buf, &end, 10);
MENU_TEXT_COLOR.g = strtoul(end, &end, 10);
MENU_TEXT_COLOR.b = strtoul(end, 0, 10);
}
}
}
Pod uslovom da je text fajl u formi:
Citat:
12 4 136
e sad, gde god bi pre koristio MENU_TEXT_COLOR, npr. umesto:
...color( MENU_TEXT_COLOR );
koristio bi ovako:
...color( MENU_TEXT_COLOR.r, MENU_TEXT_COLOR.g, MENU_TEXT_COLOR.b );
|
|
|
|
Poslao: 21 Jan 2012 16:45
|
offline
- savan2
- Građanin
- Pridružio: 15 Jul 2009
- Poruke: 150
|
Super ti je cod, hvala ti, samo nije poenta da menjam kompletan sourc i menjam svuda MENU_TEXT_COLOR da bi stavio MENU_TEXT_COLOR.r b g, poenta je u tome kao sto sam i pitao dali moze da se ponovo definise MENU_TEXT_COLOR unutar funkcije sa "#define" a da ne editujem celokupnan source?
|
|
|
|
Poslao: 21 Jan 2012 17:16
|
offline
- morando
- Građanin
- Pridružio: 19 Maj 2011
- Poruke: 297
|
Ne mozes da menjas "define" onako kako si ga ti zamislio jer je to "compile time" konstanta, treba unapred da znas vrednosti.
Ovaj deo koda:
#define MENU_TEXT_COLOR 000,191,255
Da li si ti ovo definisao ili je u nekom "third party" kodu, odnosno deo je neke biblioteke koje koristis?
|
|
|
|
Poslao: 21 Jan 2012 17:36
|
offline
- savan2
- Građanin
- Pridružio: 15 Jul 2009
- Poruke: 150
|
To je deo biblioteke a ja hocu da napravim mogucnost da "user" moze da menja boju fonta tim sto ce da doda fajl sa rgb vrednostima, a posto sourc koji radim nije public moram to da napravim nekako
Ovde mozes da vidis o cemu se radi!
|
|
|
|
Poslao: 21 Jan 2012 17:51
|
offline
- morando
- Građanin
- Pridružio: 19 Maj 2011
- Poruke: 297
|
Ufff, daj mi konkretan link gde mogu da skinem taj SDK da bi mogao da vidim biblioteku sa source kodom i dokumentacijom.
|
|
|
|
Poslao: 21 Jan 2012 18:01
|
offline
- savan2
- Građanin
- Pridružio: 15 Jul 2009
- Poruke: 150
|
Ok, github.com/j-r0dd/android_bootable_recovery/blob/gingerbread/ui.c to je fajl gde je definisan text_color a funkcija gr_color() izgleda ovako
void gr_color(unsigned char r, unsigned char g, unsigned char b, unsigned char a)
{
GGLContext *gl = gr_context;
GGLint color[4];
color[0] = ((r << 8) | r) + 1;
color[1] = ((g << 8) | g) + 1;
color[2] = ((b << 8) | b) + 1;
color[3] = ((a << 8) | a) + 1;
gl->color4xv(gl, color);
}
Poenta je u tome sto gledam nekako da napravim to da user moze da definise sam sebi boju fonta pomocu fajla a da ne menjam ovako vek kompliovan sourc!
|
|
|
|