Exposé su Amiga: Aiuto !)

Hello world!

Messaggioda NubeCheCorre » mer mar 21, 2007 12:21 am

Ma allora c'e' anche su amiga os 4.0 io la uso.. tasto destro e ti dice tutti gli schermi e finestre aperte.. ovviamente solo testualmente non graficamente pero' in fase rudimentale c'e' gia'.. e' una comodity si chiama "DepthToFront" :felice:
W il Veneto :ride:
Avatar utente
NubeCheCorre

Leggenda
 
Messaggi: 10624
Iscritto il: dom set 21, 2003 9:21 pm
Località: San remo

Messaggioda samo79 » mer mar 21, 2007 8:51 pm

ShInKurO ha scritto:L'hai provato ultimamente? Adesso anche Wandered permette di navigare il filesystem con una sola finestra...


No non l'ho provato nell'ultimo anno, so però da Paolo Besser che dei passi avanti sono stati fatti anche li sopratutto sul versante del "drag&drop", però non mi pare ancora meglio del WB
Immagine

Moderatore sezioni Amiga/AmigaOne su
TGMOnline

WHEN IT'S DONE Immagine

Le mele a volte possono essere devastate dal colpo feroce di una tempesta, ma il tenero fascio del sole potrà sempre far sviluppare dei nuovi frutti

Sam440ep Flex 800 Mhz - 1 GB DDR Ram - Radeon 9250 - AmigaOS 4.1
AmigaOne XE G3 800 Mhz - 640 MB Ram - Radeon 9200 SE - AmigaOS 4.1
Avatar utente
samo79

Staff
 
Messaggi: 14960
Iscritto il: ven gen 10, 2003 5:09 am
Località: Perugia

Re: Exposé su Amiga: Aiuto !)

Messaggioda clros » mar mar 27, 2007 11:36 pm

Scusate, una domanda ai programmatori presenti.

Scuscus ha scritto:

//Copy Gfx Data
BitBlt(win->Bitmap,0,0,win->width, win->height, //Source
ExposéWindow->Bitmap, targetX, targetY, //Destination
targetX+(win->width)/squareSide, targetY+(win->height)/squareSide, COPY_AND_RESIZE);


Bene, la mia domanda è questa: come posso risalire al contenuto (bitmap) di una finestra?
Non esiste un campo Bitmam della struttura window, e pensavo di fare win->RPort->Bitmap, ma in questo caso, la bitmap puntata corrisponde a tutta la bitmap dello schermo e non al contenuto della finestra.
Vorrei risalire SOLO alla bitmap della finestra (e immagino si possa fare anche quando la finestra è occultata (SGrab credo funzioni così) o (spero) quando è invisibile (WA_Hidden,TRUE).
Qualcuno mi sa dare qualche suggerimento?
Only AMIGA makes it possible !!
La colpa è sempre del Kernel!!
...un bit è formato da 8 byte...

Claudio "CP" La Rosa
Avatar utente
clros

Supremo
 
Messaggi: 3473
Iscritto il: ven mag 07, 2004 2:41 pm
Località: SYS 64738

Re: Exposé su Amiga: Aiuto !)

Messaggioda scusscus » ven mar 30, 2007 8:58 am

clros ha scritto:Scusate, una domanda ai programmatori presenti.

Scuscus ha scritto:

//Copy Gfx Data
BitBlt(win->Bitmap,0,0,win->width, win->height, //Source
ExposéWindow->Bitmap, targetX, targetY, //Destination
targetX+(win->width)/squareSide, targetY+(win->height)/squareSide, COPY_AND_RESIZE);


Bene, la mia domanda è questa: come posso risalire al contenuto (bitmap) di una finestra?
Non esiste un campo Bitmam della struttura window, e pensavo di fare win->RPort->Bitmap, ma in questo caso, la bitmap puntata corrisponde a tutta la bitmap dello schermo e non al contenuto della finestra.
Vorrei risalire SOLO alla bitmap della finestra (e immagino si possa fare anche quando la finestra è occultata (SGrab credo funzioni così) o (spero) quando è invisibile (WA_Hidden,TRUE).
Qualcuno mi sa dare qualche suggerimento?


In questi giorni stò guardando gli autodocs on-line. Se trovo una risposta la posto in questo thread.

Ciao e grazie per l'interessamento. :felice: :felice: :annu:
Puoi alzarti molto presto al mattino, anche all'alba... ma il tuo destino si alza sempre mezzora prima di te. -proverbio africano-

"Stampando una notizia a grandi lettere, la gente pensa che sia indiscutibilmente vera" (J.L. Borges)

Android Software Developer & iOS Developer

Packard Bell and Amiga Enter Android Tablet Fray 9-4-2011
Avatar utente
scusscus

Eroe
 
Messaggi: 1087
Iscritto il: dom apr 18, 2004 5:54 pm
Località: Alpe Adria

Re: Exposé su Amiga: Aiuto !)

Messaggioda scusscus » ven mar 30, 2007 9:00 am

clros ha scritto://Copy Gfx Data
BitBlt(win->Bitmap,0,0,win->width, win->height, //Source
ExposéWindow->Bitmap, targetX, targetY, //Destination
targetX+(win->width)/squareSide, targetY+(win->height)/squareSide, COPY_AND_RESIZE);



Credo che la funzione BitBlt non vada bene perchè non effettua il rescaling. Ne ho visto un'altra nella documentazione, approfondisco e ti faccio sapere.
Puoi alzarti molto presto al mattino, anche all'alba... ma il tuo destino si alza sempre mezzora prima di te. -proverbio africano-

"Stampando una notizia a grandi lettere, la gente pensa che sia indiscutibilmente vera" (J.L. Borges)

Android Software Developer & iOS Developer

Packard Bell and Amiga Enter Android Tablet Fray 9-4-2011
Avatar utente
scusscus

Eroe
 
Messaggi: 1087
Iscritto il: dom apr 18, 2004 5:54 pm
Località: Alpe Adria

Re: Exposé su Amiga: Aiuto !)

Messaggioda scusscus » ven mar 30, 2007 9:18 am

scusscus ha scritto:
clros ha scritto://Copy Gfx Data
BitBlt(win->Bitmap,0,0,win->width, win->height, //Source
ExposéWindow->Bitmap, targetX, targetY, //Destination
targetX+(win->width)/squareSide, targetY+(win->height)/squareSide, COPY_AND_RESIZE);



Credo che la funzione BitBlt non vada bene perchè non effettua il rescaling. Ne ho visto un'altra nella documentazione, approfondisco e ti faccio sapere.


http://aros.sourceforge.net/it/document ... itmapscale
Puoi alzarti molto presto al mattino, anche all'alba... ma il tuo destino si alza sempre mezzora prima di te. -proverbio africano-

"Stampando una notizia a grandi lettere, la gente pensa che sia indiscutibilmente vera" (J.L. Borges)

Android Software Developer & iOS Developer

Packard Bell and Amiga Enter Android Tablet Fray 9-4-2011
Avatar utente
scusscus

Eroe
 
Messaggi: 1087
Iscritto il: dom apr 18, 2004 5:54 pm
Località: Alpe Adria

Re: Exposé su Amiga: Aiuto !)

Messaggioda scusscus » ven mar 30, 2007 9:19 am

scusscus ha scritto:
clros ha scritto:Scusate, una domanda ai programmatori presenti.

Scuscus ha scritto:

//Copy Gfx Data
BitBlt(win->Bitmap,0,0,win->width, win->height, //Source
ExposéWindow->Bitmap, targetX, targetY, //Destination
targetX+(win->width)/squareSide, targetY+(win->height)/squareSide, COPY_AND_RESIZE);


Bene, la mia domanda è questa: come posso risalire al contenuto (bitmap) di una finestra?
Non esiste un campo Bitmam della struttura window, e pensavo di fare win->RPort->Bitmap, ma in questo caso, la bitmap puntata corrisponde a tutta la bitmap dello schermo e non al contenuto della finestra.
Vorrei risalire SOLO alla bitmap della finestra (e immagino si possa fare anche quando la finestra è occultata (SGrab credo funzioni così) o (spero) quando è invisibile (WA_Hidden,TRUE).
Qualcuno mi sa dare qualche suggerimento?


In questi giorni stò guardando gli autodocs on-line. Se trovo una risposta la posto in questo thread.


Ho provato a vedere la struttura della finestra ma da questo indirizzo:
http://amiga.sourceforge.net/amigadevhe ... ion=Search
mi appare solo la prima parte del header.... :triste:
Puoi alzarti molto presto al mattino, anche all'alba... ma il tuo destino si alza sempre mezzora prima di te. -proverbio africano-

"Stampando una notizia a grandi lettere, la gente pensa che sia indiscutibilmente vera" (J.L. Borges)

Android Software Developer & iOS Developer

Packard Bell and Amiga Enter Android Tablet Fray 9-4-2011
Avatar utente
scusscus

Eroe
 
Messaggi: 1087
Iscritto il: dom apr 18, 2004 5:54 pm
Località: Alpe Adria

Re: Exposé su Amiga: Aiuto !)

Messaggioda clros » ven mar 30, 2007 11:26 am

scusscus ha scritto:Ho provato a vedere la struttura della finestra ma da questo indirizzo:
http://amiga.sourceforge.net/amigadevhe ... ion=Search
mi appare solo la prima parte del header.... :triste:


Nella struttura Window, ci dovrebbe essere un puntatore alla RastPort.
Quindi io facevo mywindow->RPort->BitMap per risalire alla bitmap.

Ma qualche cosa non funge (o non ho capito io come sono "innnestate" tra loro Layer, Rastport e bitmap :riflette: anche se in alcuni esempi ho trovato proprio quello che ho fatto... ), in quanto quello che ottengo è una bitmap larga e alta quanto lo schermo e che "contiene" l'immagine dello schermo e non della sola finestra.
Mi chiedo come faccia SGrab...
Only AMIGA makes it possible !!
La colpa è sempre del Kernel!!
...un bit è formato da 8 byte...

Claudio "CP" La Rosa
Avatar utente
clros

Supremo
 
Messaggi: 3473
Iscritto il: ven mag 07, 2004 2:41 pm
Località: SYS 64738

Re: Exposé su Amiga: Aiuto !)

Messaggioda scusscus » sab mar 31, 2007 3:40 pm

clros ha scritto:
scusscus ha scritto:Ho provato a vedere la struttura della finestra ma da questo indirizzo:
http://amiga.sourceforge.net/amigadevhe ... ion=Search
mi appare solo la prima parte del header.... :triste:


Nella struttura Window, ci dovrebbe essere un puntatore alla RastPort.
Quindi io facevo mywindow->RPort->BitMap per risalire alla bitmap.

Ma qualche cosa non funge (o non ho capito io come sono "innnestate" tra loro Layer, Rastport e bitmap :riflette: anche se in alcuni esempi ho trovato proprio quello che ho fatto... ), in quanto quello che ottengo è una bitmap larga e alta quanto lo schermo e che "contiene" l'immagine dello schermo e non della sola finestra.
Mi chiedo come faccia SGrab...


Non sono riuscito a trovare informazioni dettagliate. Non c'e' nessun sorgente da esaminare? :riflette:


clros ha scritto:Nella struttura Window, ci dovrebbe essere un puntatore alla RastPort.
Quindi io facevo mywindow->RPort->BitMap per risalire alla bitmap.

Si riesce a estrapolare la bitmap dai layers? :mah:

SwapBitsRastPortClipRect( win->RastPort, win->Layer->LayerClipRect) ???!?? :sperduto: :sperduto: Puo servire???
Puoi alzarti molto presto al mattino, anche all'alba... ma il tuo destino si alza sempre mezzora prima di te. -proverbio africano-

"Stampando una notizia a grandi lettere, la gente pensa che sia indiscutibilmente vera" (J.L. Borges)

Android Software Developer & iOS Developer

Packard Bell and Amiga Enter Android Tablet Fray 9-4-2011
Avatar utente
scusscus

Eroe
 
Messaggi: 1087
Iscritto il: dom apr 18, 2004 5:54 pm
Località: Alpe Adria

Messaggioda scusscus » mer apr 04, 2007 2:38 pm

Qualcuno ha fatto delle prove? :mah:
Puoi alzarti molto presto al mattino, anche all'alba... ma il tuo destino si alza sempre mezzora prima di te. -proverbio africano-

"Stampando una notizia a grandi lettere, la gente pensa che sia indiscutibilmente vera" (J.L. Borges)

Android Software Developer & iOS Developer

Packard Bell and Amiga Enter Android Tablet Fray 9-4-2011
Avatar utente
scusscus

Eroe
 
Messaggi: 1087
Iscritto il: dom apr 18, 2004 5:54 pm
Località: Alpe Adria

Messaggioda Classic Amiga Man » mer mag 30, 2007 7:55 pm

Uppino:

allora?
"Please see the answer to question 4" ™
Avatar's name licensed by Amiga, Inc.
Avatar utente
Classic Amiga Man

Supremo
 
Messaggi: 3004
Iscritto il: dom gen 02, 2005 5:41 pm
Località: Bassano del Grappa

Messaggioda clros » mer mag 30, 2007 8:02 pm

Classic Amiga Man ha scritto:Uppino:

allora?

Ki è uppino?
Only AMIGA makes it possible !!
La colpa è sempre del Kernel!!
...un bit è formato da 8 byte...

Claudio "CP" La Rosa
Avatar utente
clros

Supremo
 
Messaggi: 3473
Iscritto il: ven mag 07, 2004 2:41 pm
Località: SYS 64738

Messaggioda Classic Amiga Man » mer mag 30, 2007 8:12 pm

:ride:

Un piccolo UP per Uppare il thread (e Dante muore di nuovo :ahah: ).

:eheh:
"Please see the answer to question 4" ™
Avatar's name licensed by Amiga, Inc.
Avatar utente
Classic Amiga Man

Supremo
 
Messaggi: 3004
Iscritto il: dom gen 02, 2005 5:41 pm
Località: Bassano del Grappa

Nuovo codice aggiunto

Messaggioda scusscus » mar apr 08, 2008 6:48 pm

Nuova funzione:
struct BitMap *
prelevaBitMap(struct Window *srcWin, struct RastPort *rp)
{
struct BitMap *bm; //nuova BitMap da attaccare alla finestra
// rp nuova RastPort da attaccare alla finestra

//Questo if si potrebbe mettere *prima* di chiamare questa funzione! Lo lascio solo per sicurezza...
if ( !(srcWin->flags & WA_SUPERBITMAP) ) //se la finestra non è di tipo superbitmap devo creare una

bitmap e relativa rastport
{
bm = AllocBitMap(scrWin->width,scrWin->height,scrWin->depth,BMF_CLEAR|BMF_DISPLAYABLE);
if (bm!=NULL && rp!=NULL) {

InitRastPort(rp);

Forbid(); //non so se serve!
rp->BitMap=bm; //associo la nuova bitmap
Permit(); //idem come sopra

ClipBlit(scrWin->RastPort,0,0,rp,0,0,scrWin->width,scrWin->height,COPY); //ricopio

la bitmap controllare il flag:COPY

return(bm); //restituisco la copia della bitmap originale
}
else
{
if (!bm) puts("Non riesco ad allocare una nuova bitmap. Memoria Insufficiente?");
if (!rp) puts("Non trovo la RastPort. E' stata allocata la struttura in memoria?");
return(NULL);
}

}
else {
puts("La finestra è di tipo SUPERBITMAP. Ha già una sua bitmap definita!");
return(NULL);
}

}

Nel sorgente andrà modificato:
//Copy Gfx Data
BitBlt(win->Bitmap,0,0,win->width, win->height, //Source
ExposéWindow->Bitmap, targetX, targetY, //Destination
targetX+(win->width)/squareSide, targetY+(win->height)/squareSide,

COPY_AND_RESIZE);

CON:

//Copy Gfx Data
struct Bitmap *bm;
struct RastPort *tempRp;
tempRp = (struct RastPort *)AllocMem(sizeof(struct RastPort),MEMF_CLEAR);
bm = prelevaBitMap(win,tempRp);
if (bm) BitBlt(bm,0,0,win->width, win->height, //Source
ExposéWindow->Bitmap, targetX, targetY, //Destination
targetX+(win->width)/squareSide, targetY+(win->height)/squareSide,

COPY_AND_RESIZE);
if (bm) FreeBitMap(bm);
if (tempRp) FreeMem(tempRp);


Modificato: Ho aggiornato il codice e tolto qualche errore
Ultima modifica di scusscus il mer apr 09, 2008 8:25 am, modificato 1 volta in totale.
Puoi alzarti molto presto al mattino, anche all'alba... ma il tuo destino si alza sempre mezzora prima di te. -proverbio africano-

"Stampando una notizia a grandi lettere, la gente pensa che sia indiscutibilmente vera" (J.L. Borges)

Android Software Developer & iOS Developer

Packard Bell and Amiga Enter Android Tablet Fray 9-4-2011
Avatar utente
scusscus

Eroe
 
Messaggi: 1087
Iscritto il: dom apr 18, 2004 5:54 pm
Località: Alpe Adria

Re: Nuovo codice aggiunto

Messaggioda clros » mar apr 08, 2008 7:03 pm

No, aspetta, mi sono perso....

1) Qual'era il problema??
2) Forbid() serve a bloccare il multitasking, Permit() lo "riabilita"
3) Ads, nn è meglio spostare il tutto nell'apposita sezione di programmazione?
Only AMIGA makes it possible !!
La colpa è sempre del Kernel!!
...un bit è formato da 8 byte...

Claudio "CP" La Rosa
Avatar utente
clros

Supremo
 
Messaggi: 3473
Iscritto il: ven mag 07, 2004 2:41 pm
Località: SYS 64738

PrecedenteProssimo

Torna a Programmazione su Amiga

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti

cron