new_contents: """
  A simple python wrapper around escapi
  
  Usage:
  
  from camera import Device
  
  device = Deveice.connect(0, 500, 500)
  image = device.get_image()
  """
  
  import os
  from ctypes import *
  from PIL import Image
  
  def resolve(name):
      f = os.path.join(os.path.dirname(__file__), name)
      return f
  
  
  class CAPTURE_PROPETIES:
      CAPTURE_BRIGHTNESS = 1,
      CAPTURE_CONTRAST = 2,
      CAPTURE_HUE = 3,
      CAPTURE_SATURATION = 4,
      CAPTURE_SHARPNESS = 5,
      CAPTURE_GAMMA = 6,
      CAPTURE_COLORENABLE = 7,
      CAPTURE_WHITEBALANCE = 8,
      CAPTURE_BACKLIGHTCOMPENSATION = 9,
      CAPTURE_GAIN = 10,
      CAPTURE_PAN = 11,
      CAPTURE_TILT = 12,
      CAPTURE_ROLL = 13,
      CAPTURE_ZOOM = 14,
      CAPTURE_EXPOSURE = 15,
      CAPTURE_IRIS = 16,
      CAPTURE_FOCUS = 17,
      CAPTURE_PROP_MAX = 18,
  
  
  class SimpleCapParms(Structure):
      _fields_ = [
          ("buffer", POINTER(c_int)),
          ("width", c_int),
          ("height", c_int),
      ]
  
  
  lib = None
  
  
  def init():
      global lib
      lib = cdll.LoadLibrary(resolve("escapi32.dll"))
      lib.initCapture.argtypes = [c_int, POINTER(SimpleCapParms)]
      lib.initCapture.restype = c_int
      lib.initCOM()
  
  def device_name(device):
      """
      Get the device name for the given device
      :param device: The number of the device
      :return: The name of the device
      """
      namearry = (c_char * 256)()
      lib.getCaptureDeviceName(device, namearry, 256)
      camearaname = namearry.value
      return camearaname
  
  def init_camera(device, width, height):
      array = (width * height * c_int)()
      options = SimpleCapParms()
      options.width = width
      options.height = height
      options.buffer = array
      lib.initCapture(device, byref(options))
      return array
  
  def get_image(device, width, height, array):
      lib.doCapture(device)
  
      while lib.isCaptureDone(device) == 0:
          pass
  
      img = Image.frombuffer('RGBA', (width, height), array, 'raw', 'BGRA', 0, 0)
      return img
  
  def deinit_camera(device):
      lib.deinitCapture(device)
  
  
  class Device():
      def __init__(self, device, width, height, array):
          self._device = device
          self._array = array
          self._width = width
          self._height = height
  
      @classmethod
      def connect(cls, device, width, height):
          if not lib:
              init()
  
          array = init_camera(device, width, height)
          return cls(device, width, height, array)
  
      def disconnect(self):
          deinit_camera(self._device)
  
      def get_image(self):
          return get_image(self._device, self._width, self._height, self._array)
  
  
  
subject: Add python wrapper