// Clip Library
// Copyright (c) 2015-2018 David Capello
//
// This file is released under the terms of the MIT license.
// Read LICENSE.txt for more information.

#ifndef CLIP_LOCK_IMPL_H_INCLUDED
#define CLIP_LOCK_IMPL_H_INCLUDED

namespace clip {

class lock::impl {
  public:
    impl(void *native_window_handle);
    ~impl();

    bool locked() const { return m_locked; }
    bool clear();
    bool is_convertible(format f) const;
    bool set_data(format f, const char *buf, size_t len);
    bool get_data(format f, char *buf, size_t len) const;
    size_t get_data_length(format f) const;
    bool set_image(const image &image);
    bool get_image(image &image) const;
    bool get_image_spec(image_spec &spec) const;

  private:
    bool m_locked;
};

} // namespace clip

#endif
