looking for a few good ideas

  amongst the irregular verbiage

ARGB values using binary manipulation functions in VFP

In my session sample code for the Advisor Summit on Visual FoxPro, I showed using the gpColor class in the FFC\_gdiplus.vcx class library to convert a color from foxpro RGB to the GDI+ style ARGB, including the alpha channel byte:

:
this.colorHelper.Set( mod(m.iRGB,256), ;
                      mod(int(m.iRGB/256),256), ;
                      mod(int(m.iRGB/(256*256)),256), ;
                      this.alpha )
		
this.brush.BrushColor = this.colorHelper.ARGB
:

I see that Walter Nicholls mentions this subject back in May and shows an alternative method that does not require the gpColor object:

this.brush.BrushColor = ;
         bitor( bitlshift(bitand(iif(vartype(this.alpha)=='N', this.alpha, 0xFF), 0xFF ),24) ;
              , bitlshift(bitand(m.iRGB,0xFF),16) ;
                        , bitand(m.iRGB,0x0000FF00) ;
              , bitrshift(bitand(m.iRGB,0x00FF0000),16) )

Although I'm tempted to describe this as an example of "write-only code", it does show good use of those binary manipulation functions.

 |