/*
 * @Author: DI JUNKUN
 * @Date: 2023-12-15
 * Copyright (c) 2023 by DI JUNKUN, All Rights Reserved.
 */

#ifndef _SCREEN_CAPTURER_FACTORY_H_
#define _SCREEN_CAPTURER_FACTORY_H_

#ifdef _WIN32
#include "screen_capturer_wgc.h"
#elif __linux__
#include "screen_capturer_x11.h"
#elif __APPLE__
// #include "screen_capturer_avf.h"
#include "screen_capturer_sck.h"
#endif

namespace crossdesk {

class ScreenCapturerFactory {
 public:
  virtual ~ScreenCapturerFactory() {}

 public:
  ScreenCapturer* Create() {
#ifdef _WIN32
    return new ScreenCapturerWgc();
#elif __linux__
    return new ScreenCapturerX11();
#elif __APPLE__
    // return new ScreenCapturerAvf();
    return new ScreenCapturerSck();
#else
    return nullptr;
#endif
  }
};
}  // namespace crossdesk
#endif