/* Listing #21 */ #include #include #include #include #include #include #include ULONG ekran_id=PAL_MONITOR_ID | HIRES_KEY, ekran_wys==640, ekran,szer=256. ekran_gleb=2, ekran_over=OSCAN_TEXT; BOOL ekran_auto=TRUE; struct TextAttr ekran_czcionka; char czcionka_nazwalMAXFONTNAME] ; struct Text:Font *czcionka=0; struct Screen *ekran=0; void wyjscie(inc retkod) { if (ekran) CloseScreen(ekran) ; if (czcionka) CloseFont(czcionka) ; exit(retkod) ; } void wybor_ekranu(void) struct ScreenModeRequester *smr; if (AsIBase->lib_version>=38) { if (smr=AllocAslRequestTags(ASL_ScreenModeRequest, ASLSM_DoWidth, TRUE, ASLSM_DoHeight, TRUE, ASLSM_DoDepth, TRUE, ASLSM,DoOverscanType, TRUE, ASLSM_DoAutoScroll, TRUE, ASLSM_MinWidth, 320, ASLSM_MinHeight, 200, TAG_DONE) ) { if (AslRequest(smr, NULL)) { ' ' ekran_id=smr->sm_DisplayXD; ekran_wys=smr->sm_DisplayWidtch; ekran_szer=smr->sm_DisplayHeight; ekran_gleb=smr->sm,DisplayDepth; ekran_over=smr->sm_OverscanType; ekran, auto=smr->sm_AutoScroll; } else { FreeAslRequest (smr) ; wyjście(0) ; } FreeAslRequesc(smr) ; } else wyjscie(lO) ; } else Printf("Masz zbyt stara wersje biblioteki ASL. Uzyje ekranu PAL.\n") ; } void wybor_czcionki (void) { struct FontRequester *fr; if (fr=AllocAslRequesCTags(ASL_FontRequest, ASLFO_InitialName, "topaz.font", ASLFO_MaxHeight, 150, ASLFO_Flags, FOF_DOSTYLE,TAG_DONE)) ( if (AslRequest(fr, NULL)) ( ekran_czcionka=fr->fo_Attr; strcpy (czcionka_nazwa, ekran_czcionka. ta_Name) ; ekran_czcionka.ta_Name=czcionka_nazwa; FreeAslRequesc(fr) ; if (!(czcionka=OpenDiskFont(&ekran_czcionka))) wyjście(10); } else { FreeAslRequest(fr) ; wyjscie(O); } } else wyjście(10); } void otwarcie,ekranu(void) ( UWORD pens[]=((UWORD)~O); if (!(ekran=Open3creenTags(0, S.A._DisplayID, ekran.id, SA_Width, ekran_wys, SA_Height, ekran_szer, SA_Depth, ekran_gleb, SAOverscan, ekran_over, SA_AuCoScroll, ekran^auto, SA_Font, &ekran_czcionka, SA_Title, "Listing 21", SA_Type, CUSTOMSCREEN, SA^Pens, pens, TAG,DONE))) wyjście(10); ) void wybor_pliku (void) ( struct FileRequester *fr; if (fr=AllocAslRequestTags(ASL_FileReguest, ASLFR_Screen, ekran, /* Nie zadziala w wersji 37. */ ASLFR_Flagsl, FRF_DOPATTERNS, ASLFR_Flags2, FRF.REJECTICONS, TAG_DONE)) ( if (AslRequest(fr, NULL)) Printf("Katalog: %s\nPlik: %s\n", fr->fr_Drawer, fr->fr_File) ; FreeAslRequesE(fr) ; } } int main(void) { wybor_ekranu(); wybor_czcionki(); otwarcie_ekranu() ; wybor_pliku() ; wyjście(0); }