BitmapManager class###################The BitmapManager object handles all ServerBitmap allocation anddeallocation. The rest of the server uses CreateBitmap and DeleteBitmapinstead of new and delete.Member Functions================BitmapManager(void)-------------------1. Create the bitmap list2. Create the bitmap area3. Allocate the access semaphore4. Call set_buffer_area_management5. Set up the buffer pool via bpool~BitmapManager(void)--------------------1. Iterate over each item in the bitmap list, removing each item,calling brel() on its buffer, and deleting it.2. Delete the bitmap list3. Delete the bitmap area4. Free the access semaphoreServerBitmap \*CreateBitmap(BRect bounds, color_space space, int32 flags, int32 bytes_per_row=-1, screen_id screen=B_MAIN_SCREEN_ID)------------------------------------------------------------------------------------------------------------------------------------CreateBitmap is called by outside objects to allocate a ServerBitmapobject. If a problem occurs, it returns NULL.1. Acquire the access semaphore2. Verify parameters and if any are invalid, spew an error to stderr andreturn NULL3. Allocate a new ServerBitmap4. Allocate a buffer for the bitmap with the bitmap'stheoretical buffer length5. If NULL, delete the bitmap and return NULL6. Set the bitmap's area and buffer to the appropriate values (area_forbuffer and buffer)7. Add the bitmap to the bitmap list8. Release the access semaphore9. Return the bitmapvoid DeleteBitmap(ServerBitmap \*bitmap)----------------------------------------Frees a ServerBitmap allocated by CreateBitmap()1. Acquire the access semaphore2. Find the bitmap in the list3. Remove the bitmap from the list or release the semaphore and returnif not found4. call brel() on the bitmap's buffer if it is non-NULL5. delete the bitmap6. Release the access semaphore