/* Listing #13 - fragment 2 */ /* Wstaw ponizsze linie w "MIEJSCE 1" we fragmencie 1 */ void getrgb(ULONG numkol, ULONG *red, ULONG *green, ULONG *blue) { if (((struct Library*)GfxBase)->lib_Version>38) { ULONG kols[3]; GetRGB32(pubscr->ViewPort.ColorMap, numkol, 1, kols); if (red) *red=kols[0] >> (32-redbits); if (green) *green=kols[1]; if (blue) *blue=kols[2]; } else { ULONG kol=GetRGB4(pubscr->ViewPort.ColorMap, numkol); if (red) *red=kol & 0xF; if (green) *green=(kol>>4) & 0xF; if (blue) *blue=(kol>>8) & 0xF; } } char log2(ULONG liczba) { char licznik; for (licznik=0; liczba>>=1; licznik++); return licznik; } /* Wstaw ponizsze linie w "MIEJSCE 2" we fragmencie 1 */ char stworzgadzety(void) { struct Gadget *gad; char licznik; short licztag=0; if (!(gad=CreateContext(&listagad))) return 1; for (licznik=0; licznikRastPort.BitMap->Depth; /* GTPA_Depth */ tabobgad[PALETTE_ID].og_Maksimum=(1 << tabgadtags[licztag+1])-1; } if (licznik==SLIDER_ID) { struct DisplayInfo dinfo; GetDisplayInfoData(0, (UBYTE*)&dinfo, sizeof(struct DisplayInfo), DTAG_DISP, GetVPModeID(&pubscr->ViewPort)); redbits=(((struct Library*)GfxBase)->lib_Version>38 ? dinfo.RedBits : log2(dinfo.PaletteRange)); tabgadtags[licztag+1]=tabobgad[SLIDER_ID].og_Maksimum=(1<RastPort, TYTULOKNA, strlen(TYTULOKNA))+((pubscr->Flags & SCREENHIRES) ? 79 : 53); zoom.Height=przesy; if (((struct Library*)IntuitionBase)->lib_Version>38) zoom.Left=zoom.Top=-1; /* Size-only */ else { zoom.Left=0; zoom.Top=pubscr->BarHeight+1; } if (!(okno=OpenWindowTags(0, WA_InnerWidth, wyliczx(OKNOSZER), WA_InnerHeight, wyliczy(OKNOWYS), WA_IDCMP, BUTTONIDCMP | CHECKBOXIDCMP | INTEGERIDCMP | STRINGIDCMP | CYCLEIDCMP | MXIDCMP | LISTVIEWIDCMP | PALETTEIDCMP | SLIDERIDCMP | IDCMP_CLOSEWINDOW | IDCMP_REFRESHWINDOW | IDCMP_VANILLAKEY, WA_Flags, WFLG_DRAGBAR | WFLG_DEPTHGADGET | WFLG_CLOSEGADGET | WFLG_RMBTRAP | WFLG_ACTIVATE, WA_Gadgets, listagad, WA_Title, TYTULOKNA, WA_PubScreen, pubscr, WA_Zoom, &zoom, TAG_DONE))) wyjscie(10); GT_RefreshWindow(okno, 0); obsluzokno();