Startseite
Amiforce 2.1     Amiforce-News Amiforce-News Amiforce-Forum Amiforce-Forum Amiforce-Chat/IRC-Chat Amiforce-Chat/IRC-Chat Gästebuch Gästebuch Kontakt mit dem Webmaster aufnehmen Kontakt mit dem Webmaster aufnehmen

Amiblitz3
Amiblitz2(alt)
Storm Wizard
Abakus-Design
Helpguide
Toolsguide
Tipps&Tricks
Gamesfun
Links
Download
Musik

Bugfixes am Forum
Subdomains aktiviert
Counterscript entfernt
  Navigation:   Index / 
Amiforce Forum - Direkter Zugriff auf WBScreen
Registrierung Häufig gestellte Fragen Suche Mitgliederliste Moderatoren und Administratoren Startseite Bugtracker Chat Irc
Amiforce Forum » AmiBlitz2/3 (Archiv) » Direkter Zugriff auf WBScreen » Hallo Gast [registrieren|anmelden]
« Vorheriges Thema | Nächstes Thema » Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Autor
Beitrag [  «    1  2  3  4  5  6  ...    »  ]
Joachim
Tripel-As




Dabei seit: März 2013
Herkunft: NRW-OWL
Beiträge: 194
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Joachim suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Zitat:
Original von Blackbird
Wenn du eine Möglichkeit findest an die Iconpositionen zu kommen dann sehe ich eine reele Chance das du dein Vorhaben realisieren kannst...

Wobei dann immer noch der Punkt von echter Tranzparenz und Alpha bleibt...
Mit Bordmitteln des OS ist dies im Moment nicht zu stemmen, mit der image.include schon....



Ich bleibe dran Blackbird, wenns auch noch so schwierig wird, werde mir erstmal das Listing von Wanderer zu Gemüte führen. Ich meine, wenn das klappt wäre das ne tolle Sache, wenn es auch nicht unbedingt lebensnotwendig für die Workbench ist. Da gibt es sicher unterschiedliche Ansichten, ob das sinnvoll ist oder nicht. Es soll im Wesentlichen eine nette Spielerei sein für all diejenigen, die spass an so etwas haben und möglichst wenig System Recourcen schlucken.

Joachim


__________________
A 1200 Tower Blizzard 1260/67 MHZ 64 MB Ram Mediator LT4 Voodoo 3 16 MB
A 1200 Desktop winner 1230/42 MHZ 16 MB Ram

28.03.2013, 22:41 Joachim ist offline   Profil von Joachim Füge Joachim deiner Freunde-Liste hinzu Email an Joachim senden
Gast
unregistrierter Benutzer



Dabei seit:
Herkunft:
Beiträge:
  Antwort mit Zitat Beitrag editieren/löschen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

und um es auf die Spitze zu treiben, evtl gehts doch mit Mesa

28.03.2013, 22:43  
Joachim
Tripel-As




Dabei seit: März 2013
Herkunft: NRW-OWL
Beiträge: 194
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Joachim suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Zitat:
Original von Blackbird
und um es auf die Spitze zu treiben, evtl gehts doch mit Mesa



Storm mesa habe ich noch irgendwo auf der Platte rumfliegen, aber wenn schon 3D, gibts auch ein include für Warp 3D?

Joachim


__________________
A 1200 Tower Blizzard 1260/67 MHZ 64 MB Ram Mediator LT4 Voodoo 3 16 MB
A 1200 Desktop winner 1230/42 MHZ 16 MB Ram

28.03.2013, 22:46 Joachim ist offline   Profil von Joachim Füge Joachim deiner Freunde-Liste hinzu Email an Joachim senden
Gast
unregistrierter Benutzer



Dabei seit:
Herkunft:
Beiträge:
  Antwort mit Zitat Beitrag editieren/löschen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Nicht das ich wüßte...

Ich weis auch gar nicht wie weit die Includes für Mesa in Ab3 eigentlich nutzbar sind....

Ich glaube Thilo hat mal angefangen die Include von Bernd aufzuräumen...
Wie das im Endeffect nun nutzbar ist verrät dir Thilo bestimmt...

28.03.2013, 22:55  
Der_Wanderer
Foren Gott




Dabei seit: März 2006
Herkunft: Karlsruhe, Baden-Württemberg
Beiträge: 3564
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Der_Wanderer suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

@Blackbird

Das Pseudo3D nutzt auch Alpha Channel. Optisch sieht das genauso aus, nur ist es nicht HW beschleunigt.
Wobei das "Add" Blit keinen Alphachannel braucht.

Mesa ist komplett integriert in Amiblitz. Die angedachte gl.include soll nur eine High-Level Schicht darauf sein. Mesa für Joachims Zwecke wird aber nicht funktionieren, da der Workbench Screen (ausser auf OS4+Composing) keinen 3D Context hat und man den auch nicht nachträglich hinzufügen kann. Der Screen muss von OpenGL geöffnet werden.

Warp3D ist nicht integriert, das willst du aber nicht programmieren. Das ist eigentlich die Treiber API und HW abhängig (d.h abstrahiert die HW noch nicht). Das ist noch eine Schicht unter OpenGL, und selbst OpenGL nutzt auf anderen Platformen niemand direkt weil es zu Lowlevel ist.


__________________
Check out http://www.hd-rec.de !

Dieser Beitrag wurde von Der_Wanderer am 29.03.2013, 14:15 Uhr editiert.

29.03.2013, 13:43 Der_Wanderer ist offline   Profil von Der_Wanderer Füge Der_Wanderer deiner Freunde-Liste hinzu Email an Der_Wanderer senden Homepage von Der_Wanderer
Gast
unregistrierter Benutzer



Dabei seit:
Herkunft:
Beiträge:
  Antwort mit Zitat Beitrag editieren/löschen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Da fällt mir ein, ganz am Anfang als du die image.include rausgebracht hattest, habe ich doch mal dieses Monster das sich bewegt mit pseudotranzparenz in einem Window gemacht, erinnerst du dich Thilo ?

Das wäre doch im Prinzip genau das was Joachim machen will, nur mit dem Nachteil das er keine Koordinaten hat "wo" er es hinblitten will....

29.03.2013, 14:16  
Der_Wanderer
Foren Gott




Dabei seit: März 2006
Herkunft: Karlsruhe, Baden-Württemberg
Beiträge: 3564
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Der_Wanderer suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Du meinst den komischen Vogel?

Ja, was Joachim will ist alles kein problem mit der image.include und AmgiaOS Bord-Mitteln, nur dass er eben nicht weis wann er was wo blitten soll. Und das ist nicht so einfach herauszubekommen, ohne sich ins AmigaOS reinzuhacken.

Die Icon Koordinaten stehen sogar im DosObject drin. Das sind allerdings nur die Default Koordinaten, wo es zur sich Laufzeit kann niemand sagen, das steht nur im Speicher der workbench.library.

@Joachim:

Versuch doch mal einen kleinen krabbelnden Käfer auf der Workbench, das wollte ich schon immer mal haben. Völlig nutzlos, wie Ungeziefer eben. Ab und zu kann er Eier legen. Man kann ihn auch zerquetschen...


__________________
Check out http://www.hd-rec.de !

29.03.2013, 14:20 Der_Wanderer ist offline   Profil von Der_Wanderer Füge Der_Wanderer deiner Freunde-Liste hinzu Email an Der_Wanderer senden Homepage von Der_Wanderer
Gast
unregistrierter Benutzer



Dabei seit:
Herkunft:
Beiträge:
  Antwort mit Zitat Beitrag editieren/löschen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Zitat:

Du meinst den komischen Vogel?



Nein, das bin ich

ich meinte das Monster das aus den Armen Feuer hervorbrachte...

Aber egal, funktionieren würde das natürlich irgendwie immer, auch wenn es ein Hack wird....

29.03.2013, 14:24  
Joachim
Tripel-As




Dabei seit: März 2013
Herkunft: NRW-OWL
Beiträge: 194
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Joachim suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Hallo Leute, ich bin ein bisschen weiter gekommen mit meiner Geschichte und habe mal die Windowtags aus dem Listing genommen und wollte euch das bisherige Ergebmis nicht vorenthalten. Für den Screenshot musste ich allerdings direkt auf die Bitmap der WB gehen, sonst hätte das nicht funktioniert:

http://www.amiforce.de/screenshots/glow.jpg

Jetzt habe ich natürlich noch das Problem, das die geblitteten Sachen weggeräumt werden müssen und da bin ich etwas überfragt. Hir mal mein listing dazu:


-----------------------------------------------------------
optimize 7
WBStartup

XINCLUDE "dbl_display.include.bb2"
XINCLUDE "image.include.bb2"
XINCLUDE "image_ext.include.bb2"



NEWTYPE.glow
x.f:y.f:xs.f:ys.f
End NEWTYPE

Dim List glow.glow(0)


speed.f = 0
scaler.f= .5
addvs.l = 16
addv.l = 0
imgh.l = 864
imgw.l = 1152


gfxpath.s = "/Data/"

succ.l = image_Load {3,gfxpath.s+"explo_big"} : image_MidHandle {3}



Macro RndPoint Rnd(*scr\Width),Rnd(*scr\Height):End Macro

WbToScreen 0
ShowScreen 0

*scr.Screen = Peek.l(Addr Screen(0))

If *scr=0 Then NPrint "Ooops, no screen!?" :End

*rp.RastPort = *scr\RastPort



;WindowTags 0,#WFLG_NOCAREREFRESH|#WFLG_SIMPLE_REFRESH|#WFLG_BORDERLESS,"" ,#WA_BackFill,#LAYERS_NOBACKFILL,#WA_Width,imgw,#WA_Height,imgh,#WA_Left,10 0 ,#WA_Top,100




While Joyb(0)=0
;Repeat
;*rp.RastPort = RastPort(0) ; Rastport auf das Fenster holen

If glow()\x<0 OR glow()\x>!dbl_GetWidth Then glow()\xs=-glow()\xs : glow()\x+glow()\xs
If glow()\y<0 OR glow()\y>!dbl_GetHeight Then glow()\ys=-glow()\ys : glow()\y+glow()\ys

addv+addvs
If addv>512 Then addvs=-8
If addv< 40 Then addvs=64

VWait

image_FancyBlit{3,SMouseX,SMouseY,-1,-1,*rp,#image_blitmode_add,addv}
Wend

;Until Event=#IDCMP_MOUSEBUTTONS
----------------------------------------------------------

Ich kenne jetzt nicht die entsprechenden Kommandos um den Schirm gleich nach dem Blitvorgang wieder aufzuräumen.

Gruss Joachim


PS: So einen Käfer kann ich versuchen zu machen, aber da habe ich noch ne andere Idee. Es gab doch mal vor x Jahren auf windows Rechnern diese "Stein, Papier Schere" Animation auf dem Desktop. Swas in der Art fände ich schon witzig.


__________________
A 1200 Tower Blizzard 1260/67 MHZ 64 MB Ram Mediator LT4 Voodoo 3 16 MB
A 1200 Desktop winner 1230/42 MHZ 16 MB Ram

29.03.2013, 16:54 Joachim ist offline   Profil von Joachim Füge Joachim deiner Freunde-Liste hinzu Email an Joachim senden
Gast
unregistrierter Benutzer



Dabei seit:
Herkunft:
Beiträge:
  Antwort mit Zitat Beitrag editieren/löschen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

VWait und Joyb solltest du dir abgewöhnen wenns unter OS4 und MOS auch funktionieren soll...

29.03.2013, 17:50  
Der_Wanderer
Foren Gott




Dabei seit: März 2006
Herkunft: Karlsruhe, Baden-Württemberg
Beiträge: 3564
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Der_Wanderer suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Um wieder aufzuräumen musst du den Hintergrund wiederherstellen. Das machst du indem du entweder das Fenster schliesst (dann stellt die WB den Hintergrund wieder her) oder, wenn es eine Animation sein soll, stellst du ihn selbst wieder her indem du ihn vorher in ein image rettest.

Das geht so:

image_CutRP{0,x,y,w,h} ; hintergrund retten in image #0
image_FancyBlit{1,x,y,...} ; eigenes image #1 malen
image_Blit{0,x,y,...} ; hintergrund wiederherstellen

Den hintergrund rettest du natürlich nur einmal.

Wenn es nicht flackern soll, dann malst du erst alles in ein image und dann auf die WB. Das nennt man double buffering.


__________________
Check out http://www.hd-rec.de !

29.03.2013, 18:18 Der_Wanderer ist offline   Profil von Der_Wanderer Füge Der_Wanderer deiner Freunde-Liste hinzu Email an Der_Wanderer senden Homepage von Der_Wanderer
Joachim
Tripel-As




Dabei seit: März 2013
Herkunft: NRW-OWL
Beiträge: 194
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Joachim suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Hallo, ganz lieben Dank für eure Mühe, die neuen Erkenntnisse werde ich gleich anwenden und Vwait und joyb durch was anderes ersetzen. Das soll ja auch möglichst unter verschiedenen OS Versionen laufen.

Das mit den Iconpositionen ist natürlich ein Problem, naja mal sehen, da fällt mir vielleicht was ein.


Joachim


__________________
A 1200 Tower Blizzard 1260/67 MHZ 64 MB Ram Mediator LT4 Voodoo 3 16 MB
A 1200 Desktop winner 1230/42 MHZ 16 MB Ram

29.03.2013, 19:29 Joachim ist offline   Profil von Joachim Füge Joachim deiner Freunde-Liste hinzu Email an Joachim senden
Joachim
Tripel-As




Dabei seit: März 2013
Herkunft: NRW-OWL
Beiträge: 194
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Joachim suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Hallo Wanderer, hallo Blackbird, das Blitting funktioniert jetzt ohne Spuren zu hinterlassen. So weit so schön. Beim Iconziehen oder Fensterverschieben gibt es natürlich weiterhin Spuren, das muss ich noch lösen und beim Aufgehen eines Fensters wird nach dem Schliessen der Fenster Hintergrund ersetzt und nicht der Teil des WBscreens. Ein harter Brocken, aber lösbar glaube ich. Double Buffering habe ich bis jetzt noch nicht implementiert, das folgt im nächsten Schritt.

Gruss Joachim


__________________
A 1200 Tower Blizzard 1260/67 MHZ 64 MB Ram Mediator LT4 Voodoo 3 16 MB
A 1200 Desktop winner 1230/42 MHZ 16 MB Ram

31.03.2013, 13:43 Joachim ist offline   Profil von Joachim Füge Joachim deiner Freunde-Liste hinzu Email an Joachim senden
Joachim
Tripel-As




Dabei seit: März 2013
Herkunft: NRW-OWL
Beiträge: 194
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Joachim suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Hallo Leute, mit dem Doublebuffering tue ich mich ein bisschen schwer, oder ich habe da immer einen Denkfehler drin. Also Blitting funktioniert, natürlich mit Flackern, ist ja klar. Wanderer, Du schriebst in deinem Post, das ich das Image erst in ein anderes Image kopieren muss und erst danach blitten. Wie bekommt man den bei den Image Befehlen ein image kopiert? Ich habe mehrere Befehle aus dem Befehlsbrowser ausprobiert aber ohne Erfolg.

Bei Bitmaps war das mit dem Doublebuffering einfach: 2 Bitmaps aufmachen und während auf der einen gezeichnet wird, wird die andere gezeigt. In meinem Fall habe ich jetzt ja nur 1 Bitmap und muss im Grunde 2 Blitoperationen durchführen, der Code sah ja so aus:


ResetList glow()

If glow()\x<0 OR glow()\x>!dbl_GetWidth Then glow()\xs=-glow()\xs : glow()\x+glow()\xs
If glow()\y<0 OR glow()\y>!dbl_GetHeight Then glow()\ys=-glow()\ys : glow()\y+glow()\ys


addv=addv+addvs
If addv>512 Then addvs=-8
If addv< 40 Then addvs=64


x.f=SMouseX

y.f=SMouseY


image_CutRP{0,*scr\RastPort,x,y,64,64} ; hintergrund retten in image #0

image_FancyBlit{1,x,y,-1,-1,*rp,#image_blitmode_add,addv}

image_Blit{0,x,y,*scr\RastPort} ; hintergrund wiederherstellen

Und du sagtest, den Hintergrund nur einmal retten, ja aber ich cutte ja aus der Bitmap nur in der Grösse des Images raus, das funktioniert auch soweit. Bei diser Methode muss ich bei jeder Bewegung des Mauszeigers den Hintergund retten. Einen Fullscreen will ich ja nicht machen, um den Overhead klein zu halten. Das Problem ist jetzt, mit welchen Kommandos ich Doublebuffering sauber implementiere.
Wäre dankbar für einen weiteren kleinen Tipp.


Gruss joachim


__________________
A 1200 Tower Blizzard 1260/67 MHZ 64 MB Ram Mediator LT4 Voodoo 3 16 MB
A 1200 Desktop winner 1230/42 MHZ 16 MB Ram

01.04.2013, 16:30 Joachim ist offline   Profil von Joachim Füge Joachim deiner Freunde-Liste hinzu Email an Joachim senden
Der_Wanderer
Foren Gott




Dabei seit: März 2006
Herkunft: Karlsruhe, Baden-Württemberg
Beiträge: 3564
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Der_Wanderer suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Also Double Buffering bedeutet nicht automatisch, dass du zwei Screens hast die du wechselst. Das kann auch bedeuten, dass du auf einer "Offscreen" Bitmap malst, und erst wenn du fertig bist die Bitmap auf den ständig sichtbaren Screen bringst. Bei RTG auf dem Amiga geht das sowieso nur so, auch wenn die API so aussieht als würden Bitmaps getauscht.

D.h. du nimmst dir ein image als nicht-sichtbaren Buffer.
Das erstellst du dir mit image_Create. Du holst dir einen RastPort darauf mit image_GetRPPtr{}.
Dann blittest du Hintegrund (vorher in ein weiteres image gerettet) drauf, und dann dein Sprite. Wenn das fertig ist, dann wird es auf den Bildschirm geblittet.

Den Hintergrund kannst du nur einmal blitten, weil beim zweitenmal dein Sprite ja schon drauf ist. Falls du deinen Arbeitsbereich verschiebst, dann müsstest du dein bereits geretteten Hintergrund mitverschieben, und nur die neu hereinscrollenden Bereiche vom Screen holen.

Hört sich vielleicht kompliziert an, ist aber kinderleicht im vergleich zu dem Vorhaben die Icon Position zu bekommen. Deshalb solltest du dich darum evtl. zuerst kümmern.

Ausserdem wird das mit dem Screen Rastport niemals fehlerfrei klappen, weil der keine Window-Layer berückstichtigt und dir auch nicht gehört, d.h. Intuoition kann dir jederzeit dazwischen funken.
Du musst ein eigenes Fenster aufmachen.

Die dbl_... Funktionen gehörten zur dbl.include. Die hat mit dem was du vorhast nichts zu tun. Es ist nicht legal dbl_Width aufzurufen ohne einen Screen via dbl.include aufgemacht zu haben. Die dbl.include weis ja nichts von deinem geklauten WB Screen, sondern nur von seinen eigenen Screens. Das ist aber nur für Spiele gedacht. In deinem Vorhaben reicht image.include und eine handvoll AmigaOS funktionen, aus Komfortgründen kannst du das auch mit Blitz Funtkionen mischen wie WBToScreen.

P.S:

Möchtest du nun eigentlich eine Animation an einer fixen Position machen oder ein Sprite über den Bildschirm bewegen, wie z.B. einen zweiten Mouse Pointer?
Die Vorgehensweise wäre dabei etwas verschieden, deshalb ist das wichtig zu wissen.


__________________
Check out http://www.hd-rec.de !

Dieser Beitrag wurde von Der_Wanderer am 01.04.2013, 21:40 Uhr editiert.

01.04.2013, 21:36 Der_Wanderer ist offline   Profil von Der_Wanderer Füge Der_Wanderer deiner Freunde-Liste hinzu Email an Der_Wanderer senden Homepage von Der_Wanderer
Joachim
Tripel-As




Dabei seit: März 2013
Herkunft: NRW-OWL
Beiträge: 194
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Joachim suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Hallo Wanderer, im Prinzip ist das eine Animation, die ich blitten möchte:

addv=addv+addvs
If addv>512 Then addvs=-8
If addv< 40 Then addvs=64

Mit diesen simplen Schleifen wird das Image mit sich verändernder Helligkeit geblittet durch Angabe des zusätzlichen addv Parameters.
Also wenn ich das richtig sehe muss ich das ganze mit Fenster machen, okay. Ich hate das ja schon ausprobiert, dann aber keinen Zugriff mehr auf die WB gehabt, wahrscheinlich, weil ja das Fenster im Vordergrund war und der WBScreen dahinter. - Der geblittete Effekt soll quasi über dem angeklickten Icon stehen bleiben und die Position dann auch nicht mehr verändern, alles andere wird viel zu kompliziert. Erst beim Klick auf ein anderes Icon soll der Effekt mit der neuen Position angezeigt werden und auch wieder an der Stelle stehen bleiben, kurz aufleuchten und wieder verschwinden.

Wäre natürlich nicht schlecht, wenn ich die Vorgehensweise für bewegte Objekte auch wissen würde. Man kann ja nie wissen, was man noch so vorhat. - Erstmal danke für deine ausführlichen Erklärungen, hilft mir die Dinge deutlich besser zu verstehen. Die Sache mit den Icon Positionen ist wahrscheinlich nicht minder schwierig, ich habe mir schon Gedanken macht, wie man das anstellen könnte. Im Prinzip sind die Icons doch kein Teil der Bitmap, oder mache ich da einen Denkfehler. Meine Überlegungen gehen in die Richtung.

Gruss Joachim


__________________
A 1200 Tower Blizzard 1260/67 MHZ 64 MB Ram Mediator LT4 Voodoo 3 16 MB
A 1200 Desktop winner 1230/42 MHZ 16 MB Ram

01.04.2013, 22:04 Joachim ist offline   Profil von Joachim Füge Joachim deiner Freunde-Liste hinzu Email an Joachim senden
Der_Wanderer
Foren Gott




Dabei seit: März 2006
Herkunft: Karlsruhe, Baden-Württemberg
Beiträge: 3564
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Der_Wanderer suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Die Icons befinden sich zwar irgendwo im Speicher, aber wohin die beblittet werden weis, wie gesagt, nur die workbench.library, aber die bietet dir meines wissens nach keine möglichkeit das auszulesen.

Mit der Workbench Bitmap kannst du nichts anfangen, das ist ja nur eine fertig gerenderte Bitmap. Was da aussieht wie ein Icons weist du zwar als Mensch, dein Programm aber nicht. Das Icon kann auch im Hintegrund Bild und gar kein wirkliches Icon sein.

Die Vorgehensweise bei der Animation wäre:

Program Init:
- Glow Grafik laden als Image "G" (image_Load)
- Allociere Buffer Image "B" (image_Create)
- Hohle WBScreen (WBToScreen)

Warten:
- Auslöser und Koordinaten ermitteln => Animation!
Goto Warten:

Animation Init:
- Fenster in selben Dimensionen öffnen ohne BF Hook (WindowTags)
- Hintergrund retten von Fenster RastPort in Image "H" (image_CutRP)

Animation Loop:
- male Hintergrund "H" in Buffer "B" RastPort (image_Draw)
- male Glow "G" in Buffer "B" RastPort (image_FancyBlit)
- male Buffer "B" auf Window RastPort (image_Draw)
- Timer (am simpelsten mit "Delay_ 1")

Animation Cleanup:
- Fenster schliessen (CloseWindow)

Das ganze ist dann systemfreundlich, flimmerfrei und hinterlässt keinerlei Artefakte, höchstens während der Animation wenn sich der Hintergrund ändert würde man das nicht sehen. Wenn die Animation fertig ist sieht aber alles wieder korrekt aus. Besser ginge das nur mit einer Composing Engine wie unter OS4.
Der Screen RastPort wird dafür nicht angetastet.


__________________
Check out http://www.hd-rec.de !

Dieser Beitrag wurde von Der_Wanderer am 01.04.2013, 23:14 Uhr editiert.

01.04.2013, 23:03 Der_Wanderer ist offline   Profil von Der_Wanderer Füge Der_Wanderer deiner Freunde-Liste hinzu Email an Der_Wanderer senden Homepage von Der_Wanderer
Joachim
Tripel-As




Dabei seit: März 2013
Herkunft: NRW-OWL
Beiträge: 194
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Joachim suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Vielen Dank Wanderer, ich habe mir den Ablaufplan mal kopiert. Mein größtes Problem zur Zeit ist die Befehls Syntax und Auswahl. Ich steige da jetzt zwar schon besser durch, aber die Sache mit den Rastports macht mir Kopfschmerzen, da muss ich noch ne Menge im Tutorial lesen.

Gruss joachim


__________________
A 1200 Tower Blizzard 1260/67 MHZ 64 MB Ram Mediator LT4 Voodoo 3 16 MB
A 1200 Desktop winner 1230/42 MHZ 16 MB Ram

02.04.2013, 00:31 Joachim ist offline   Profil von Joachim Füge Joachim deiner Freunde-Liste hinzu Email an Joachim senden
Der_Wanderer
Foren Gott




Dabei seit: März 2006
Herkunft: Karlsruhe, Baden-Württemberg
Beiträge: 3564
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Der_Wanderer suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Ein RastPort ist ein sog. Zeichenkontext, d.h. ein Struct der einige Paramter cashed, damit man die nicht bei jedem Aufruf angeben muss. Z.b. den Vorder- und Hintergrund Pen.
Der hat untendrunter eine Bitmap, die dann manipuliert wird. Dazu kommen noch Layer, die sagen wo gemalt werden darf und wo nicht.

Jedes Fenster hat einen eigenen RastPort. Genauso wie der Screen einen hat, der aber nicht öffentlich ist.
Ein image aus der image.include hat auch einen RastPort, damit man mit AmigaOS Funktionen direkt reinmalen kann.

Generell darfst du verschiedene APIs nicht mischen, es sei denn sie erlauben das explitzit.

D.h. wenn du dir einen Screen erstellst mit WBToScreen, dann darfst du dessen Größe nicht mit einer funktion aus OpenGL oder dbl.include abfragen, da die ja nichts wissen von deinem BlitzBasic Screen.


__________________
Check out http://www.hd-rec.de !

02.04.2013, 11:13 Der_Wanderer ist offline   Profil von Der_Wanderer Füge Der_Wanderer deiner Freunde-Liste hinzu Email an Der_Wanderer senden Homepage von Der_Wanderer
Gast
unregistrierter Benutzer



Dabei seit:
Herkunft:
Beiträge:
  Antwort mit Zitat Beitrag editieren/löschen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Am besten thomas auf Amiga-News oder a1k.org mal gefragt wie man am besten an die Iconpositionen kommt, der ist da eine Koriphähe was das OS angeht und kannd as genau sagen

Wird wohl auf eine Art Liste hinauslaufen in der die Koords der einzelnen Icons stehen, die kannst du dann mit deinen Mauskoords vergleichen und bei einem Treffer ein unsichtbares Fensterchen öffnen, dann die Anim blitten und wenn sie fertig ist wieder schließen....

so würde ich das in etwa machen wenn ich das vorhätte

02.04.2013, 16:30  
Joachim
Tripel-As




Dabei seit: März 2013
Herkunft: NRW-OWL
Beiträge: 194
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Joachim suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Zitat:
Original von Der_Wanderer
Ein RastPort ist ein sog. Zeichenkontext, d.h. ein Struct der einige Paramter cashed, damit man die nicht bei jedem Aufruf angeben muss. Z.b. den Vorder- und Hintergrund Pen.
Der hat untendrunter eine Bitmap, die dann manipuliert wird. Dazu kommen noch Layer, die sagen wo gemalt werden darf und wo nicht.

Jedes Fenster hat einen eigenen RastPort. Genauso wie der Screen einen hat, der aber nicht öffentlich ist.
Ein image aus der image.include hat auch einen RastPort, damit man mit AmigaOS Funktionen direkt reinmalen kann.

Generell darfst du verschiedene APIs nicht mischen, es sei denn sie erlauben das explitzit.

D.h. wenn du dir einen Screen erstellst mit WBToScreen, dann darfst du dessen Größe nicht mit einer funktion aus OpenGL oder dbl.include abfragen, da die ja nichts wissen von deinem BlitzBasic Screen.



Hallo Wanderer, mein Problem hat mit der klaren Zuordnung zu tun. Ich habe ja ein Fenster aufgemacht mit RastPort(0). Wenn ich jetzt mit ImageCreate ein neues Image mache mit der Image Nummer 1 und einen RastPort mit GetRPPtr hole, hat dann der Rastport auch die Nummer 1? - Das sind so meine kleinen Problemchen. Wenn ich das jetzt richtig sehe, muss ich das mit image_RPcut gerettete Image mit "image_Draw" und nicht etwa image_Blit in das neu creierte Image malen. Dann mit Fancy Blit mein "Effekt" Image reinmalen und das Ganze mit Image_Blit auf das Fenster blitten, richtig? - Bitte nicht böse sein , wenn ich vielleicht etwas schwer von Begriff bin, für mich ist das ja alles Neuland.

Gruss joachim


__________________
A 1200 Tower Blizzard 1260/67 MHZ 64 MB Ram Mediator LT4 Voodoo 3 16 MB
A 1200 Desktop winner 1230/42 MHZ 16 MB Ram

Dieser Beitrag wurde von Joachim am 02.04.2013, 17:11 Uhr editiert.

02.04.2013, 17:03 Joachim ist offline   Profil von Joachim Füge Joachim deiner Freunde-Liste hinzu Email an Joachim senden
Joachim
Tripel-As




Dabei seit: März 2013
Herkunft: NRW-OWL
Beiträge: 194
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Joachim suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Zitat:
Original von Blackbird
Am besten thomas auf Amiga-News oder a1k.org mal gefragt wie man am besten an die Iconpositionen kommt, der ist da eine Koriphähe was das OS angeht und kannd as genau sagen

Wird wohl auf eine Art Liste hinauslaufen in der die Koords der einzelnen Icons stehen, die kannst du dann mit deinen Mauskoords vergleichen und bei einem Treffer ein unsichtbares Fensterchen öffnen, dann die Anim blitten und wenn sie fertig ist wieder schließen....

so würde ich das in etwa machen wenn ich das vorhätte



Genauso hatte ich das auch schon vermutet, es müsste ja ein Liste von den Positionen irgendwo drin stehen. - Wenn man z. B. einen Snapshot von einem Fenster oder auch vom WBscreen macht, wird doch eine Datei angelgt, wo jedes einzelne Icon auf dem Schirm bzw. Fenster steht. Ein Problem würde dann noch darin bestehen, wenn Icons verschoben würden, dann könnte man mit dieser Liste nicht mehr viel anfangen.


Aber Gute Idee, ich werde auf A1k.org auch mal einen Thread aufmachen bezüglich dieses Problems, kann ja nicht schaden,

Gruss Joachim


__________________
A 1200 Tower Blizzard 1260/67 MHZ 64 MB Ram Mediator LT4 Voodoo 3 16 MB
A 1200 Desktop winner 1230/42 MHZ 16 MB Ram

Dieser Beitrag wurde von Joachim am 02.04.2013, 17:14 Uhr editiert.

02.04.2013, 17:07 Joachim ist offline   Profil von Joachim Füge Joachim deiner Freunde-Liste hinzu Email an Joachim senden
Der_Wanderer
Foren Gott




Dabei seit: März 2006
Herkunft: Karlsruhe, Baden-Württemberg
Beiträge: 3564
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Der_Wanderer suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Deshalb mag ich kein BASIC.

Also die Nummern sind Nummern von BASIC objekten.

Wenn du WBToScreen 0 machst, dann hast du im BASIC Object "Screen" nummer 0 deinen Screen abgelegt.

So ähnlich macht das auch die image.include.

Wenn du nun aber den RastPort von einem Image holst, dann ist das ein POINTER. Deshalb heist die Funktion auch image_GetRPPtr{}.
POINTERN ist es relative egal wer sie erzeugt hat.

RastPort(0) ist verwirrend.Das ist ein BlitzBasic Funktion, die den Pointer auf den RastPort des BlitzBasic Window #0 zurückgibt. Das hat nichts mit Screens, Images oder sontwas zu tun, nur mit den Windows.


__________________
Check out http://www.hd-rec.de !

02.04.2013, 17:12 Der_Wanderer ist offline   Profil von Der_Wanderer Füge Der_Wanderer deiner Freunde-Liste hinzu Email an Der_Wanderer senden Homepage von Der_Wanderer
Der_Wanderer
Foren Gott




Dabei seit: März 2006
Herkunft: Karlsruhe, Baden-Württemberg
Beiträge: 3564
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Der_Wanderer suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

> Wenn man z. B. einen Snapshot von einem Fenster oder auch vom WBscreen macht, wird doch eine Datei angelgt, wo jedes einzelne Icon auf dem Schirm bzw. Fenster steht.
Das hat ja damit gar nichts zu tun. Schlage dir aus dem Kopf dass du aus der Bitmap irgendwas schliessen kannst.

Natürlich stehen die Icon Positionen irgendwo im speicher.
Aber ob man da ran kommt ist mehr als fraglich. Auf "legalem" Wege sicher nicht.


__________________
Check out http://www.hd-rec.de !

02.04.2013, 17:13 Der_Wanderer ist offline   Profil von Der_Wanderer Füge Der_Wanderer deiner Freunde-Liste hinzu Email an Der_Wanderer senden Homepage von Der_Wanderer
Joachim
Tripel-As




Dabei seit: März 2013
Herkunft: NRW-OWL
Beiträge: 194
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Joachim suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Okay, das mit dem Rastport Pointer ist mir jetzt klar, wieder was dazugelernt, vielen Dank.

Die Icon Positionen, ja, das ist ein grosses Problem, da hast du Recht. Ich weiss noch nicht wie, aber irgendwie muss man das umschiffen können. - Ich habe gut Reden, wo ich noch nichtmal was sauber auf den Schirm bekomme, aber ich habe zuversicht, das das dennoch hinhaut.

Joachim


__________________
A 1200 Tower Blizzard 1260/67 MHZ 64 MB Ram Mediator LT4 Voodoo 3 16 MB
A 1200 Desktop winner 1230/42 MHZ 16 MB Ram

02.04.2013, 17:23 Joachim ist offline   Profil von Joachim Füge Joachim deiner Freunde-Liste hinzu Email an Joachim senden
Gast
unregistrierter Benutzer



Dabei seit:
Herkunft:
Beiträge:
  Antwort mit Zitat Beitrag editieren/löschen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Zitat:

Auf "legalem" Wege sicher nicht.



Doch doch, das muß irgendwie gehen, den RawWbinfo kommt auch an die Daten ran....

02.04.2013, 17:32  
Der_Wanderer
Foren Gott




Dabei seit: März 2006
Herkunft: Karlsruhe, Baden-Württemberg
Beiträge: 3564
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Der_Wanderer suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Was macht dich glauben, RawWBInfo käme an die Icon Position ran?


__________________
Check out http://www.hd-rec.de !

02.04.2013, 17:34 Der_Wanderer ist offline   Profil von Der_Wanderer Füge Der_Wanderer deiner Freunde-Liste hinzu Email an Der_Wanderer senden Homepage von Der_Wanderer
Gast
unregistrierter Benutzer



Dabei seit:
Herkunft:
Beiträge:
  Antwort mit Zitat Beitrag editieren/löschen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Werden die Positionsangaben nicht angezeigt beim aufruf unter OS3.x ?

unter OS4 ist das der Fall, daher bin ich mal davon ausgegangen das es unter Os3.x das auch tut...

Wenn ich falsch liege, dann muß es einen anderen Weg geben...

02.04.2013, 17:57  
Der_Wanderer
Foren Gott




Dabei seit: März 2006
Herkunft: Karlsruhe, Baden-Württemberg
Beiträge: 3564
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträgen von Der_Wanderer suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Nein werden sie nicht. Aber ich bin mir ziemlich sicher, dass das die Koordinaten aus dem DOSObject sind. Das sind nicht die tatsächlichen Koodinaten, sondern die Default Koordinaten. Das heist noch lange nicht, dass das die tatsächlichen Korrdinaten auf dem Bildschirm sind, z.b. wenn kein Platz da ist wird das Icons woanders hingesetzt (OS3). Auch wenn der User die Icons verschiebt ohne zu fixieren wird das nicht im DOSObject gespeichert, sondern nur im RAm der workbench.library.

Dazu kommt natürlich, dass man bereits wissen muss, nach welchen Icons man überhaupt suchen soll. (steht zwar unter OS3 in der Datei ".backdrop", aber das ist natürlich private und das zu interpretieren seeehr wackelig...)

Nachmal Edit:

und Joachim will ja sicher nicht nur WB Screen, sondern auch geöffnete WB Fenster mit Effekt versehen. Dann müsste man dem Fenster entlocken welchen Drawer es offen hat (was vermutlich noch die leichtere Übung dabei ist).


__________________
Check out http://www.hd-rec.de !

Dieser Beitrag wurde von Der_Wanderer am 02.04.2013, 18:08 Uhr editiert.

02.04.2013, 18:05 Der_Wanderer ist offline   Profil von Der_Wanderer Füge Der_Wanderer deiner Freunde-Liste hinzu Email an Der_Wanderer senden Homepage von Der_Wanderer
Gast
unregistrierter Benutzer



Dabei seit:
Herkunft:
Beiträge:
  Antwort mit Zitat Beitrag editieren/löschen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Zitat:

Koordinaten aus dem DOSObject



Das kann gut sein !
Heist dann für Joachim im Endeffekt das sein Effect erst beim Anklicken des Icons erscheinen kann:

Also wenn ich dann nicht komplett falsch liege, dann heist das Icon anklicken, DosObjekt auswerten, Borderless Fenster öffnen, Animation Zeigen, Fenster schließen...

Das bedeutet aber auch, das die Wb derweilen wahrscheinlich den Ordner schon geöffnet haben kann, oder andere tausend Dinge erledigt hat bevor die Anim abgespielt wird...

Es muß aber funktionieren, weil beim ollen Windows gehts ja auch

02.04.2013, 18:11  
[  «    1  2  3  4  5  6  ...    »  ]   « Vorheriges Thema | Nächstes Thema »
Neues Thema erstellen Antwort erstellen
Gehe zu: