kategoria: Programy
[#1] Szybkie okienka WB
Hej.

Myślę, że zagadnienie jest warte założenia nowego tematu.

Obecnie z amigowych rzeczy najbardziej absorbuje mnie gra Magazyn, do której przygotowałem fajną grafikę (link). I w dalszych pracach nad tą grą będę robił poziomy w tej scenerii.

Niejako przy okazji realizuję inną rzecz, na którą wpadłem pewien czas temu. Ta rzecz ma związek z Magazynem i innymi rzeczami. Wczoraj udało mi się tą rzecz zrealizować do końca.

Otóż udało mi się opracować technikę, dzięki której można wyświetlać systemowe okienka intuition w szybki sposób i dodatkowo z wykorzystaniem podwójnego buforowania.

Technika ta nie jest łatką, tylko normalnym programem. W załączonym odnośniku znajdziecie demonstrację tej techniki. Program wymaga co najmniej Amiga OS3.0 i AGA. Otwiera ekran i dość spore okienko (190x256) w rozdzielczości Waszego Workbencha w 256 kolorach.

Czyli można przetestować w różnych rozdzielczościach. Okienko, które widzicie na ekranie, ma narysowaną żyrafę. Jest to systemowe okienko intuition.library, które możecie przemieszczać. Póki co przemieszczanie odbywa się poprzez kliknięcie prawym przyciskiem myszy w docelowe miejsce na ekranie. Okienko przesuwa się praktycznie natychmiast.

Jest to tylko demonstracja. Technika może mieć szereg zastosowań. Przemieszczanie docelowo ma się odbywać za pomocą zwyczajnego dragowania okna. Można na bazie techniki tworzyć programy z systemowymi oknami, gdyż to co przemieszczacie to prawdziwe systemowe okno.

Technika korzysta również z funkcji systemowych. Nie odwołuję się bezpośrednio do sprzętu.

Poniżej ilustracja - zrzut ekranu z działania demonstracji.

Na koniec: obecnie dobiega ku końcowi semestr zimowy na uczelni, więc nad tym zagadnieniem w tej chwili nie będę dalej pracował (zresztą priorytetem jest dokończenie Magazynu). Czekają mnie bowiem wkrótce egzaminy.

Tutaj pobierzecie demonstrację: http://coreprogramming.pl/DreamWB/DreamWBDemo.lha

Klawiszem ESC wychodzimy. Pozdrawiam.

[#2] Re: Szybkie okienka WB

@Hexmage960, post #1

Żyrafę?
[#3] Re: Szybkie okienka WB

@km-l, post #2

Pomyliłem się, oczywiście zebrę.
[#4] Re: Szybkie okienka WB

@km-l, post #2

Się czepia! Widziałeś kiedyś okapi? Też ma paski....... na d*pie.
[#5] Re: Szybkie okienka WB

@km-l, post #2

[#6] Re: Szybkie okienka WB

@Hexmage960, post #1

bardzo ciekawe OK

Pobieram demo, w wolnej chwili przetestuję ok, racja
[#7] Re: Szybkie okienka WB

@BULI, post #6

Dobrze, będzie mi miło.

Ekran programu w tej wersji klonuje monitor i rozdzielczość Workbencha i ustawia na 256 kolorów. Ustaw zatem wybraną rozdzielczość w preferencjach Screenmode.

Testowałem na PAL i DblPAL 640x256 i 640x512. Działa bardzo ładnie, przesuwanie okna odbywa się bardzo szybko.

Zastosowania tej techniki, jak wspomniałem, mogą być bardzo duże. Rysowanie odbywa się za pomocą funkcji systemowych (które korzystają z Blittera).

Już teraz wykorzystuję tzw. "regiony" więc rysowanie może odbywać się w niekoniecznie prostokątne obszary. Mogą one być podzielone na wiele prostokątów.

Obsługa wielu okienek wymaga dopisania troszkę kodu.

Generalnie chciałbym ją wykorzystać, najpierw, do gry Magazyn (okno gry). Później można pokusić się o programy użytkowe.

Z uwagi na wykorzystywanie podwójnego buforowania, ciężko jest nadać temu ekranowi cechy ekranu publicznego tak, by inne programy otwierały na nim swoje okna.

Z uwagi na tę własność, podwójne buforowanie będzie zapewne opcjonalne. Chciałbym bowiem, by na tym ekranie dało się korzystać z istniejących programów.

Sama technika umożliwia miksowanie "szybkich okienek" i okienek zwyczajnych. Zatem zadziała też na ekranie WB. Ale traci się wówczas to podwójne buforowanie.

Ale dzięki temu na starcie nie będą odrzucone standardowe programy pod intuition, na czym mi zależy.

Ale wyobraź sobie teraz, że Blitter nie narobi się mocno, przy przemieszczaniu szybkich okienek, więc zostaje spory zapas mocy do dyspozycji np. na obiekty animowane i animacje.

Jeśli chodzi o zastosowanie użytkowe, to myślałem na początek nad prostą przeglądarką obrazków, gdzie obrazki dałoby się przemieszczać. Da się zrobić różne ciekawe programy.

Wyobraź sobie również, że dzięki mojej technice masz "wbudowany" Birdie i VisualPrefs. Bez łatek i dodatkowych kosztów! A do tego działa to z dużą prędkością. Z tym, że dotyczy to tylko "nowych" okienek.

Przyznam, że sam byłem zaskoczony jak mój pomysł wypalił i udało się go zrealizować.

Myślę, że warto w kolejnym demku pokazać otwieranie, przemieszczanie i zmianę rozmiaru "szybkich okienek" na dowolnym ekranie z pojedynczym buforowaniem. Może to być mniej "efektowne" niż wersja z podwójnym buforowaniem.

Czekam na wrażenia z testów.
[#8] Re: Szybkie okienka WB

@Hexmage960, post #7

Programik działa pod Morphosem.
Kolory obrazka po uruchomienie są niewłaściwe (Morphos w 24bitach), ale przełączenie na Ambienta i powrót do ekranu z programem powoduje naprawienie kolorów.
Przesuwanie działa tylko wtedy jeśli wciśnięty jest caly czas LMB.
Uaktywnie prawego przycisku przesuwa obrazek tak gdzie stoi kursor.
[#9] Re: Szybkie okienka WB

@Norbert, post #8

Problem z kolorami w MorphOSie jest mi znany. Korzystam z funkcji na ColorMapie SetRGB32CM(), podczas gdy MorphOS woli funkcję SetRGB32() na ViewPorcie.

ale przełączenie na Ambienta i powrót do ekranu z programem powoduje naprawienie kolorów.

W takim razie MorphOS poprawnie wykonuje SetRGB32CM(), ale niepoprawnie interpretuje funkcje MakeScreen() i RethinkDisplay().

Z tego co wiem ten problem na AmigaOS4 nie jest obecny.

Obrazek przesuwa się tylko wówczas gdy okno z obrazkiem jest aktywne. Na Amidze 1200 działa to tak jak powinno. Znowuż mogą wyjść drobne różnice między Amiga OS3, Amiga OS4 i MorphOS.

Tak czy siak program ma za zadanie działać głównie na Amiga OS3 i AGA. Nie zależy mi (bardzo) na działaniu na NG.

Choć może później Wam będzie zależało by program u Was działał, jeśli technika obrośnie w programy z niej korzystające.

Dziękuję za test.

Ostatnia aktualizacja: 16.01.2019 21:01:05 przez Hexmage960
[#10] Re: Szybkie okienka WB

@Hexmage960, post #9

[#11] Re: Szybkie okienka WB

@radekcz, post #10

Dzięki za nagranie filmiku.
[#12] Re: Szybkie okienka WB

@Hexmage960, post #11

Już przygotowałem zapowiadane drugie demko, w którym szybkie okienka otwierane są na Workbenchu wraz z innymi oknami. Można zmieniać rozmiar tych okien. Działa to bardzo szybko.

Nie publikuję jeszcze, bo jest trochę niedoróbek. Chciałbym też kilka rzeczy usprawnić oraz sprawić, by było to cokolwiek użyteczne.

Ale dam zrzut ekranu:
[#13] Re: Szybkie okienka WB

@Hexmage960, post #12

No i brawo! Z filmiku widać, że jest to bardzo szybkie, kwestia tylko, żeby było praktyczne pod systemem OK
[#14] Re: Szybkie okienka WB

@BULI, post #13

Praktyczne będzie, ale dopiero jak powstaną programy korzystające z szybkich okien. Myślę nad prostym programem typu zegar pod Workbench i który wyświetla ilość pamięci itp. Ważne, by pełnił taki program jakąś użyteczną funkcję.

Ważne, że zwyczajne oraz szybkie okienka mogą koegzystować na jednym ekranie.

Chcę, by gra Magazyn korzystała z tego i to byłoby fajne zastosowanie.

Do Magazynu chcę dorobić jeszcze grafikę, która wyświetla się przed etapami i przedstawia scenerię.

Najpewniej później dorobię jakąś biblioteczkę do szybkich okien w formie biblioteki Amigi, tak żeby inni mogli robić swoje programy. Na razie jednak ważne to dokończyć funkcje, demonstracje i programy przykładowe.

Ważne też, by dokończyć poziomy do Magazynu w pierwszej scenerii.

Aktualnie jestem mocno zajęty studiami i jak zagospodaruję czas, to ruszę dalej z amigowymi sprawami.

Najpewniej jednak dopiero w lutym zagospodaruję więcej czasu, bo jednak mam dość pilne sprawy, które na bieżąco załatwiam. W nadchodzącym tygodniu mam jedno kolokwium, egzamin oraz zaliczenie projektu, więc "grubo".

Na szczęście idzie mi całkiem nieźle.

Ostatnia aktualizacja: 19.01.2019 14:22:00 przez Hexmage960
[#15] Re: Szybkie okienka WB

@Hexmage960, post #14

Czy wymaganie co do AGA jest konieczne? Czy na ECS też można taki efekt osiągnąć, oczywiście przy mniejszej ilości kolorów?
[#16] Re: Szybkie okienka WB

@QkiZ, post #15

Myślę, że można. Kwestia zamiany głębi otwieranego ekranu z 8 do 4 bitów.

Ostatnia aktualizacja: 26.01.2019 08:57:55 przez Hexmage960
[#17] Re: Szybkie okienka WB

@Hexmage960, post #16

Dużo pracy wymaga przygotowanie takiego dema dla ECS?
[#18] Re: Szybkie okienka WB

@QkiZ, post #17

W zasadzie wystarczy zmienić jedną cyferkę w kodzie. Przy założeniu, że posiadasz system Amiga OS3.x w swojej Amidze.
[#19] Re: Szybkie okienka WB

@Hexmage960, post #18

No tak. Amiga 600, 3.1.4, 68020.
[#20] Re: Szybkie okienka WB

@QkiZ, post #19

Hej, w temacie szybkich okienek.

Otóż przygotowałem łatkę na systemową funkcję ScrollRaster(), która wywołuje jej nowszą wersję z systemu 3.0: ScrollRasterBF().

Jakiś czas temu dowiedziałem się, że systemowe przemieszczanie okienek MoveWindow()/MoveLayer() jest właśnie realizowane starą funkcją ScrollRaster(), która wypełnia nowe obszary kolorem 0 (tła) robiąc to zupełnie niepotrzebnie i powodując "łamanie" grafiki i nieładny efekt, gdy okno jest wypełnione zawartością. Zamiast tego wypełniania powinien być użyty BackFill ze ScrollRasterBF().

Okazało się, że jest to do naprawienia w parę minut. Właśnie przygotowałem łatkę, dzięki której to "łamanie" grafiki już nie występuje.

Systemowe okienka są przemieszczane pięknie w wielu kolorach.

Wrzucę łatkę wkrótce, jak tylko zrobię z niej cywilizowany programik. Bo na razie jest to wywołanie z programu Asm-One.
[#21] Re: Szybkie okienka WB

@Hexmage960, post #20

Opublikujesz wersje dla ECS?
[#22] Re: Szybkie okienka WB

@QkiZ, post #21

Wymagany jest tylko system 3.0. Rodzaj chipsetu nie gra tu roli.
[#23] Re: Szybkie okienka WB

@Hexmage960, post #22

Aha. Czyli pobieram z pierwszego postu.
[#24] Re: Szybkie okienka WB

@QkiZ, post #23

Chodziło mi o tę łatkę. Tamto pierwsze demko jest na AGA.
[#25] Re: Szybkie okienka WB

@Hexmage960, post #24

Łatka okazuje się niepoprawnie współpracować z TurboCalc. Zatem zmiana nie jest w pełni kompatybilna. Dlatego też nie będzie to łatka - tylko funkcja wykorzystywana tylko we własnych programach. No chyba, że udałoby mi się załatać MoveLayer() zamiast ScrollRaster().

Ostatnia aktualizacja: 25.02.2019 12:26:03 przez Hexmage960
[#26] Re: Szybkie okienka WB

@Hexmage960, post #24

A skąd tą łatkę można pobrać?
[#27] Re: Szybkie okienka WB

@Hexmage960, post #25

Kolego kiedy oddasz Sam 440 które posiadasz w ramach bounty i wypożyczenia?
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem