<s> """<STR_LIT>""" <EOL> __version__ = "<STR_LIT>" <EOL> __about = "<STR_LIT>" % __version__ <EOL> from math import ceil , hypot <EOL> def shortToString ( i ) : <EOL> hi = ( i & <NUM_LIT> ) >> <NUM_LIT:8> <EOL> lo = i & <NUM_LIT> <EOL> return chr ( lo ) + chr ( hi ) <EOL> def longToString ( i ) : <EOL> hi = ( long ( i ) & <NUM_LIT> ) >> <NUM_LIT:16> <EOL> lo = long ( i ) & <NUM_LIT> <EOL> return shortToString ( lo ) + shortToString ( hi ) <EOL> def long24ToString ( i ) : <EOL> return chr ( i & <NUM_LIT> ) + chr ( i >> <NUM_LIT:8> & <NUM_LIT> ) + chr ( i >> <NUM_LIT:16> & <NUM_LIT> ) <EOL> def stringToLong ( input_string , offset ) : <EOL> return ord ( input_string [ offset + <NUM_LIT:3> ] ) << <NUM_LIT> | ord ( input_string [ offset + <NUM_LIT:2> ] ) << <NUM_LIT:16> | ord ( input_string [ offset + <NUM_LIT:1> ] ) << <NUM_LIT:8> | ord ( input_string [ offset ] ) <EOL> def stringToLong24 ( input_string , offset ) : <EOL> return ord ( input_string [ offset + <NUM_LIT:2> ] ) << <NUM_LIT:16> | ord ( input_string [ offset + <NUM_LIT:1> ] ) << <NUM_LIT:8> | ord ( input_string [ offset ] ) <EOL> class Color ( object ) : <EOL> """<STR_LIT>""" <EOL> __slots__ = [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] <EOL> __shade = <NUM_LIT:32> <EOL> def __init__ ( self , r = <NUM_LIT:0> , g = <NUM_LIT:0> , b = <NUM_LIT:0> ) : <EOL> self . red = r <EOL> self . grn = g <EOL> self . blu = b <EOL> def __setattr__ ( self , name , value ) : <EOL> if hasattr ( self , name ) : <EOL> raise AttributeError , "<STR_LIT>" <EOL> else : <EOL> object . __setattr__ ( self , name , value ) <EOL> def __str__ ( self ) : <EOL> return "<STR_LIT>" % ( self . red , self . grn , self . blu ) <EOL> def __hash__ ( self ) : <EOL> return ( ( long ( self . blu ) ) + <EOL> ( long ( self . grn ) << <NUM_LIT:8> ) + <EOL> ( long ( self . red ) << <NUM_LIT:16> ) ) <EOL> def __eq__ ( self , other ) : <EOL> return ( self is other ) or ( self . toLong == other . toLong ) <EOL> def lighten ( self ) : <EOL> return Color ( <EOL> min ( self . red + Color . __shade , <NUM_LIT:255> ) , <EOL> min ( self . grn + Color . __shade , <NUM_LIT:255> ) , <EOL> min ( self . blu + Color . __shade , <NUM_LIT:255> ) <EOL> ) <EOL> def darken ( self ) : <EOL> return Color ( <EOL> max ( self . red - Color . __shade , <NUM_LIT:0> ) , <EOL> max ( self . grn - Color . __shade , <NUM_LIT:0> ) , <EOL> max ( self . blu - Color . __shade , <NUM_LIT:0> ) <EOL> ) <EOL> def toLong ( self ) : <EOL> return self . __hash__ ( ) <EOL> def fromLong ( l ) : <EOL> b = l & <NUM_LIT> <EOL> l = l >> <NUM_LIT:8> <EOL> g = l & <NUM_LIT> <EOL> l = l >> <NUM_LIT:8> <EOL> r = l & <NUM_LIT> <EOL> return Color ( r , g , b ) <EOL> fromLong = staticmethod ( fromLong ) <EOL> Color . BLACK = Color ( <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ) <EOL> Color . RED = Color ( <NUM_LIT:255> , <NUM_LIT:0> , <NUM_LIT:0> ) <EOL> Color . GREEN = Color ( <NUM_LIT:0> , <NUM_LIT:255> , <NUM_LIT:0> ) <EOL> Color . BLUE = Color ( <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:255> ) <EOL> Color . CYAN = Color ( <NUM_LIT:0> , <NUM_LIT:255> , <NUM_LIT:255> ) <EOL> Color . MAGENTA = Color ( <NUM_LIT:255> , <NUM_LIT:0> , <NUM_LIT:255> ) <EOL> Color . YELLOW = Color ( <NUM_LIT:255> , <NUM_LIT:255> , <NUM_LIT:0> ) <EOL> Color . WHITE = Color ( <NUM_LIT:255> , <NUM_LIT:255> , <NUM_LIT:255> ) <EOL> Color . DKRED = Color ( <NUM_LIT> , <NUM_LIT:0> , <NUM_LIT:0> ) <EOL> Color . DKGREEN = Color ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT:0> ) <EOL> Color . DKBLUE = Color ( <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT> ) <EOL> Color . TEAL = Color ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT> ) <EOL> Color . PURPLE = Color ( <NUM_LIT> , <NUM_LIT:0> , <NUM_LIT> ) <EOL> Color . BROWN = Color ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:0> ) <EOL> Color . GRAY = Color ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ) <EOL> class BitMap ( object ) : <EOL> """<STR_LIT>""" <EOL> LINE_SOLID = <NUM_LIT:0> <EOL> LINE_DASHED = <NUM_LIT:1> <EOL> LINE_DOTTED = <NUM_LIT:2> <EOL> LINE_DOT_DASH = <NUM_LIT:3> <EOL> _DASH_LEN = <NUM_LIT> <EOL> _DOT_LEN = <NUM_LIT> <EOL> _DOT_DASH_LEN = _DOT_LEN + _DASH_LEN <EOL> def __init__ ( self , width , height , <EOL> bkgd = Color . WHITE , frgd = Color . BLACK ) : <EOL> self . wd = int ( ceil ( width ) ) <EOL> self . ht = int ( ceil ( height ) ) <EOL> self . bgcolor = <NUM_LIT:0> <EOL> self . fgcolor = <NUM_LIT:1> <EOL> self . palette = [ ] <EOL> self . palette . append ( bkgd . toLong ( ) ) <EOL> self . palette . append ( frgd . toLong ( ) ) <EOL> self . currentPen = self . fgcolor <EOL> tmparray = [ self . bgcolor ] * self . wd <EOL> self . bitarray = [ tmparray [ : ] for i in range ( self . ht ) ] <EOL> self . currentPen = <NUM_LIT:1> <EOL> def plotPoint ( self , x , y ) : <EOL> if ( <NUM_LIT:0> <= x < self . wd and <NUM_LIT:0> <= y < self . ht ) : <EOL> x = int ( x ) <EOL> y = int ( y ) <EOL> self . bitarray [ y ] [ x ] = self . currentPen <EOL> def _saveBitMapNoCompression ( self ) : <EOL> line_padding = ( <NUM_LIT:4> - ( self . wd % <NUM_LIT:4> ) ) % <NUM_LIT:4> <EOL> _bitmap = "<STR_LIT>" <EOL> _bitmap += longToString ( <NUM_LIT> + self . ht * ( self . wd * <NUM_LIT:3> + line_padding ) ) <EOL> _bitmap += longToString ( <NUM_LIT:0> ) <EOL> _bitmap += longToString ( <NUM_LIT> ) <EOL> _bitmap += longToString ( <NUM_LIT> ) <EOL> _bitmap += longToString ( self . wd ) <EOL> _bitmap += longToString ( self . ht ) <EOL> _bitmap += shortToString ( <NUM_LIT:1> ) <EOL> _bitmap += shortToString ( <NUM_LIT> ) <EOL> _bitmap += longToString ( <NUM_LIT:0> ) <EOL> _bitmap += longToString ( self . ht * ( self . wd * <NUM_LIT:3> + line_padding ) ) <EOL> _bitmap += longToString ( <NUM_LIT:0> ) <EOL> _bitmap += longToString ( <NUM_LIT:0> ) <EOL> _bitmap += longToString ( <NUM_LIT:0> ) <EOL> _bitmap += longToString ( <NUM_LIT:0> ) <EOL> self . bitarray . reverse ( ) <EOL> for row in self . bitarray : <EOL> for pixel in row : <EOL> c = self . palette [ pixel ] <EOL> _bitmap += long24ToString ( c ) <EOL> for i in range ( line_padding ) : <EOL> _bitmap += chr ( <NUM_LIT:0> ) <EOL> return _bitmap <EOL> def saveFile ( self , filename ) : <EOL> _b = self . _saveBitMapNoCompression ( ) <EOL> f = file ( filename , '<STR_LIT:wb>' ) <EOL> f . write ( _b ) <EOL> f . close ( ) <EOL> def save_qrcode ( qr , filename ) : <EOL> k = qr . moduleCount <EOL> bitmap = BitMap ( ( k + <NUM_LIT:2> ) * <NUM_LIT:8> , ( k + <NUM_LIT:2> ) * <NUM_LIT:8> ) <EOL> bitmap . bitarray = [ ] <EOL> for r in range ( k + <NUM_LIT:2> ) : <EOL> tmparray = [ <NUM_LIT:0> ] * ( k + <NUM_LIT:2> ) * <NUM_LIT:8> <EOL> if <NUM_LIT:0> < r < k + <NUM_LIT:1> : <EOL> for c in range ( k ) : <EOL> if qr . isDark ( r - <NUM_LIT:1> , c ) : <EOL> tmparray [ ( <NUM_LIT:1> + c ) * <NUM_LIT:8> : ( <NUM_LIT:2> + c ) * <NUM_LIT:8> ] = [ <NUM_LIT:1> ] * <NUM_LIT:8> <EOL> for i in range ( <NUM_LIT:8> ) : <EOL> bitmap . bitarray . append ( tmparray [ : ] ) <EOL> bitmap . saveFile ( filename ) <EOL> if __name__ == "<STR_LIT:__main__>" : <EOL> bmp = BitMap ( <NUM_LIT:10> , <NUM_LIT:10> ) <EOL> bmp . plotPoint ( <NUM_LIT:5> , <NUM_LIT:5> ) <EOL> bmp . plotPoint ( <NUM_LIT:0> , <NUM_LIT:0> ) <EOL> bmp . saveFile ( "<STR_LIT>" ) </s>
