ndless get_pixel
9 posts
• Page 1 of 1
ndless get_pixel
Is it possible to get the color of a pixel using ndless? I can only see writing functions in ngc.h
-
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)- Posts: 3721
- Joined: 13 Dec 2013, 16:35
- Gender:
- Calculator(s):→ MyCalcs profile
-
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)- Posts: 3446
- Images: 75
- Joined: 04 Jul 2014, 14:40
- Location: Clermont-Ferrand 63
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: ENS Rennes
- GitHub: Ti64CLi
-
critorAdmin
Niveau 19: CU (Créateur Universel)- Posts: 42240
- Images: 16685
- Joined: 25 Oct 2008, 00:00
- Location: Montpellier
- Gender:
- Calculator(s):→ MyCalcs profile
- YouTube: critor3000
- Twitter: critor2000
- GitHub: critor
Re: ndless get_pixel
TI64CLI++ and critor are right.
But be careful, the pixel address depends on the Nspire model. There are two LCD layouts.
But be careful, the pixel address depends on the Nspire model. There are two LCD layouts.
-
NouryVIP++
Niveau 11: LV (Légende Vivante)- Posts: 325
- Joined: 07 Sep 2018, 09:19
- Location: Sceaux, France 92
- Gender:
- Calculator(s):→ MyCalcs profile
Re: ndless get_pixel
I tried
But that does not work (tried on a nspire cx). I filled a rectangle (0,0,100,100) with red, then get_pixel(2,30) does not return the same value as get_pixel(2,31), 27113 then 0.
- Code: Select all
int os_get_pixel(int x,int y){
unsigned short * addr=(unsigned short *) 0xC0000010;
int r=addr[y*SCREEN_WIDTH+x];
return r;
}
But that does not work (tried on a nspire cx). I filled a rectangle (0,0,100,100) with red, then get_pixel(2,30) does not return the same value as get_pixel(2,31), 27113 then 0.
-
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)- Posts: 3721
- Joined: 13 Dec 2013, 16:35
- Gender:
- Calculator(s):→ MyCalcs profile
Re: ndless get_pixel
Last time I've written to LCD (using assembly language), I have used:
@pixel=0xC0000010 + ((num col * 480) + (num lig * 2))
0xC0000010 is Frame Base Address
It was with a CX CAS
I think older Nspire have an LCD rotated (90°). Not sure which way.
@pixel=0xC0000010 + ((num col * 480) + (num lig * 2))
0xC0000010 is Frame Base Address
It was with a CX CAS
I think older Nspire have an LCD rotated (90°). Not sure which way.
-
NouryVIP++
Niveau 11: LV (Légende Vivante)- Posts: 325
- Joined: 07 Sep 2018, 09:19
- Location: Sceaux, France 92
- Gender:
- Calculator(s):→ MyCalcs profile
Re: ndless get_pixel
Perhaps reading in the LCD does not work. But I found another way, inspired by ngc.c of the SDK, using the offscreen buffer, like this
- Code: Select all
Gc nspire_gc=0;
Gc * get_gc(){
if (!nspire_gc){
nspire_gc=gui_gc_global_GC();
gui_gc_setRegion(nspire_gc, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
gui_gc_begin(nspire_gc);
}
return &nspire_gc;
}
int os_get_pixel(int x,int y){
if (x<0 || x>=SCREEN_WIDTH || y<0 || y>=SCREEN_HEIGHT)
return -1;
get_gc();
char ** off_buff = ((((char *****)nspire_gc)[9])[0])[0x8];
int res = *(unsigned short *) (off_buff[y+nspire_statusarea] + 2*x);
return res;
}
-
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)- Posts: 3721
- Joined: 13 Dec 2013, 16:35
- Gender:
- Calculator(s):→ MyCalcs profile
Re: ndless get_pixel
parisse wrote:I tried
- Code: Select all
int os_get_pixel(int x,int y){
unsigned short * addr=(unsigned short *) 0xC0000010;
int r=addr[y*SCREEN_WIDTH+x];
return r;
}
But that does not work (tried on a nspire cx). I filled a rectangle (0,0,100,100) with red, then get_pixel(2,30) does not return the same value as get_pixel(2,31), 27113 then 0.
You forgot one level of indirection. 0xC0000010 has a pointer to the framebuffer, so it has to be
- Code: Select all
int os_get_pixel(int x,int y){
unsigned short * addr=*(unsigned short **) 0xC0000010;
int r=addr[y*SCREEN_WIDTH+x];
return r;
}
Though I wonder what this is for.
-
VogtinatorPremium
Niveau 9: IC (Compteur Infatigable)- Posts: 217
- Joined: 29 Mar 2014, 15:55
- Gender:
- Calculator(s):→ MyCalcs profile
Re: ndless get_pixel
I see, thanks. I will keep the gc code since it works...
-
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)- Posts: 3721
- Joined: 13 Dec 2013, 16:35
- Gender:
- Calculator(s):→ MyCalcs profile
9 posts
• Page 1 of 1
Return to Native: Ndless, Linux, ...
Who is online
Users browsing this forum: ClaudeBot [spider] and 4 guests