## The Python Imaging Library.# $Id$## Windows Cursor support for PIL## notes:# uses BmpImagePlugin.py to read the bitmap data.## history:# 96-05-27 fl Created## Copyright (c) Secret Labs AB 1997.# Copyright (c) Fredrik Lundh 1996.## See the README file for information on usage and redistribution.#from__future__importannotationsfrom.importBmpImagePlugin,Image,ImageFilefrom._binaryimporti16leasi16from._binaryimporti32leasi32## --------------------------------------------------------------------def_accept(prefix:bytes)->bool:returnprefix.startswith(b"\0\0\2\0")### Image plugin for Windows Cursor files.
[docs]classCurImageFile(BmpImagePlugin.BmpImageFile):format="CUR"format_description="Windows Cursor"def_open(self)->None:offset=self.fp.tell()# check magics=self.fp.read(6)ifnot_accept(s):msg="not a CUR file"raiseSyntaxError(msg)# pick the largest cursor in the filem=b""foriinrange(i16(s,4)):s=self.fp.read(16)ifnotm:m=selifs[0]>m[0]ands[1]>m[1]:m=sifnotm:msg="No cursors were found"raiseTypeError(msg)# load as bitmapself._bitmap(i32(m,12)+offset)# patch up the bitmap heightself._size=self.size[0],self.size[1]//2d,e,o,a=self.tile[0]self.tile[0]=ImageFile._Tile(d,(0,0)+self.size,o,a)