text: """pygame.camera.Camera implementation using the videocapture module for windows.
  
  http://videocapture.sourceforge.net/
  
  Binary windows wheels:
    https://www.lfd.uci.edu/~gohlke/pythonlibs/#videocapture
  """
  import pygame
  
  def list_cameras():
      """Always only lists one camera.
  
      Functionality not supported in videocapture module.
      """
      return [0]
  
      # this just cycles through all the cameras trying to open them
      #cameras = []
      #for x in range(256):
      #    try:
      #        c = Camera(x)
      #    except:
      #        break
      #    cameras.append(x)
      #return cameras
  
  def init():
      global vidcap
      try:
          import vidcap as vc
      except ImportError:
          from VideoCapture import vidcap as vc
      vidcap = vc
  
  def quit():
      global vidcap
      vidcap = None
  
  
  class Camera:
  
      def __init__(self, device =0,
                         size = (640,480),
                         mode = "RGB",
                         show_video_window=0):
          """device:  VideoCapture enumerates the available video capture devices
                      on your system.  If you have more than one device, specify
                      the desired one here.  The device number starts from 0.
  
             show_video_window: 0 ... do not display a video window (the default)
                                1 ... display a video window
  
                              Mainly used for debugging, since the video window
                              can not be closed or moved around.
          """
          self.dev = vidcap.new_Dev(device, show_video_window)
          width, height = size
          self.dev.setresolution(width, height)
  
      def display_capture_filter_properties(self):
          """Displays a dialog containing the property page of the capture filter.
  
          For VfW drivers you may find the option to select the resolution most
          likely here.
          """
          self.dev.displaycapturefilterproperties()
  
      def display_capture_pin_properties(self):
          """Displays a dialog containing the property page of the capture pin.
  
          For WDM drivers you may find the option to select the resolution most
          likely here.
          """
          self.dev.displaycapturepinproperties()
  
      def set_resolution(self, width, height):
          """Sets the capture resolution. (without dialog)
          """
          self.dev.setresolution(width, height)
  
      def get_buffer(self):
          """Returns a string containing the raw pixel data.
          """
          return self.dev.getbuffer()
  
      def start(self):
          """ Not implemented.
          """
  
      def set_controls(self, **kwargs):
          """ Not implemented.
          """
  
      def stop(self):
          """ Not implemented.
          """
  
      def get_image(self, dest_surf = None):
          """
          """
          return self.get_surface(dest_surf)
  
      def get_surface(self, dest_surf = None):
          """Returns a pygame Surface.
          """
          abuffer, width, height = self.get_buffer()
          if abuffer:
              surf = pygame.image.frombuffer(abuffer, (width, height), "BGR")
              surf = pygame.transform.flip(surf, 0,1)
  
              # if there is a destination surface given, we blit onto that.
              if dest_surf:
                  dest_surf.blit(surf, (0,0))
              else:
                  dest_surf = surf
              return dest_surf
  
  if __name__ == "__main__":
      import pygame.examples.camera
  
      pygame.camera.Camera = Camera
      pygame.camera.list_cameras = list_cameras
      pygame.examples.camera.main()
  