;bitmap functions Global Dim QBColor(15) Global Dim SortColor(15) Global Dim Q256Color(256) #Factor = 8.2258064516129 QBColor( 0 )=0 QBColor( 1 )=RGB(128,0,0) QBColor( 2 )=RGB(0,255,0) QBColor( 3 )=RGB(0,128,128) QBColor( 4 )=RGB(0,0,128) QBColor( 5 )=RGB(128,0,128) QBColor( 6 )=RGB(0,128,128) QBColor( 7 )=RGB(128,128,128) QBColor( 8 )=RGB(192,192,192) QBColor( 9 )=RGB(255,0,0) QBColor( 10 )=RGB(0,255,0) QBColor( 11 )=RGB(255,255,0) QBColor( 12 )=RGB(0,0,255) QBColor( 13 )=RGB(255,0,255) QBColor( 14 )=RGB(0,255,255) QBColor( 15 )=RGB(255,255,255) ;now to sort them SortColor(0)=0 For sc.l=1 To 15 ;find smallest QBColor LC.l=QBColor(SortColor(sc-1)) small.l=0 For QB=1 To 15 If QBColor(QB)>LC If small If QBColor(QB)color small.l=color-QBColor(SortColor(q)) big.l=QBColor(SortColor(q+1))-color If small>big ProcedureReturn SortColor(q+1) Else ProcedureReturn SortColor(q) EndIf EndIf EndIf EndIf Next q ProcedureReturn 15 EndProcedure Procedure GetColor16(R,G,B) ;this converts RGB To a color ;For use in 16 bit mode ;this assumes 5 bits per color ;and bit 5 is not used ;If R<0 Or R>31 then R=0 ;If G<0 Or G>31 then G=0 ;If B<0 Or B>31 then B=0 C=((R&$1F)<<11)+((G&$1F)<<6)+(B&$1F) ProcedureReturn C EndProcedure Procedure GetColor16R(C) ;R=Int(C/2048) R=(C>>11)&$1F ProcedureReturn R EndProcedure Procedure GetColor16G(C) ;R=Int(C/2048) ;R=C&($1F<<11) ;C=C-R ;G=Int(C/64) G=(C>>6)&$1F ProcedureReturn G EndProcedure Procedure GetColor16B(C) ;G=Int(C/32) ;G=C&($1F<<6) ;G=G*32 ;B=(C-G)&$1F B=C&$1F ProcedureReturn B EndProcedure Procedure ConvertC16(C) ;determine RGB first R=((C>>11)&$1F)*#Factor G=((C>>6)&$1F)*#Factor B=(C&$1F)*#Factor ;then rescale values ;as a percent of 255 ;factor.f=255/31 ProcedureReturn RGB(R,G,B) EndProcedure