DxLibEx
texture2d_handle_manager.hpp
Go to the documentation of this file.
1 /*=============================================================================
2  Copyright (C) 2015-2017 DxLibEx project
3  https://github.com/Nagarei/DxLibEx/
4 
5  Distributed under the Boost Software License, Version 1.0.
6  (See http://www.boost.org/LICENSE_1_0.txt)
7 =============================================================================*/
8 #ifndef DXLE_INC_TEXTURE_TEXTURE2D_HANDLE_MANAGER_HPP_
9 #define DXLE_INC_TEXTURE_TEXTURE2D_HANDLE_MANAGER_HPP_
10 
12 #include <memory>
13 #include "dxlibex/config/defines.h"
14 #include "prototype2d.hpp"
15 #include "dxlibex/helper.hpp"
16 
17 //----------2Dグラフィック----------//
18 
19 namespace dxle
20 {
22 namespace graph2d
23 {
24  namespace gr_impl
25  {
28  {
29  public:
30  virtual int get_handle()const = 0;
32  protected:
36 
37  static int GetTextureRawHandle(const texture2d&);
38  };
39 
41  {
42  public:
48  simple_graph_handle_manager(simple_graph_handle_manager&& other) DXLE_NOEXCEPT_OR_NOTHROW : Unique_HandledObject_Bace(std::move(other)), NotUse3DFlag(std::move(other.NotUse3DFlag)) {}
49  simple_graph_handle_manager& operator=(simple_graph_handle_manager&& other) DXLE_NOEXCEPT_OR_NOTHROW{ Unique_HandledObject_Bace::operator=(std::move(other)); NotUse3DFlag = (std::move(other.NotUse3DFlag)); return *this; }
50 
51  int get_handle()const override{ return Unique_HandledObject_Bace::GetHandle(); }
52 
55  inline void delete_this(bool LogOutFlag = false) { DxLib::DeleteGraph(GetHandle(), LogOutFlag); }
56  private:
57  simple_graph_handle_manager(int param_handle, bool param_NotUse3DFlag)DXLE_NOEXCEPT_OR_NOTHROW : Unique_HandledObject_Bace(param_handle), NotUse3DFlag(param_NotUse3DFlag) {}
58  bool NotUse3DFlag;
59 
60  friend texture2d;
61  template<typename... T> static inline std::unique_ptr<texture2d_handle_manager> get_unique(T&&... Args){
62  return std::unique_ptr<texture2d_handle_manager>(new simple_graph_handle_manager(std::forward<T>(Args)...));
63  }
64  };
66  {
67  public:
70  screen_handle_manager(const screen_handle_manager& other) = delete;
73  screen_handle_manager(screen_handle_manager&& other) DXLE_NOEXCEPT_OR_NOTHROW : Unique_HandledObject_Bace(std::move(other)), UseAlphaChannel(std::move(other.UseAlphaChannel)) {}
74  screen_handle_manager& operator=(screen_handle_manager&& other) DXLE_NOEXCEPT_OR_NOTHROW{ Unique_HandledObject_Bace::operator=(std::move(other)); UseAlphaChannel = (std::move(other.UseAlphaChannel)); return *this; }
75 
76  int get_handle()const override{ return Unique_HandledObject_Bace::GetHandle(); }
77 
80  inline void delete_this(bool LogOutFlag = false) { DxLib::DeleteGraph(GetHandle(), LogOutFlag); }
81  private:
82  screen_handle_manager(int param_handle, bool param_UseAlphaChannel)DXLE_NOEXCEPT_OR_NOTHROW : Unique_HandledObject_Bace(param_handle), UseAlphaChannel(param_UseAlphaChannel) {}
83  bool UseAlphaChannel;
84 
85  friend screen;
86  template<typename... T> static inline std::unique_ptr<texture2d_handle_manager> get_unique(T&&... Args){
87  return std::unique_ptr<texture2d_handle_manager>(new screen_handle_manager(std::forward<T>(Args)...));
88  }
89  };
90  //class lookup_handle_manager : public texture2d_handle_manager
91  //{
92  //private:
93  // lookup_handle_manager(int& raw_handle) : handle(raw_handle){}
94  // int& handle;
95  // friend divided_texture2d;
96  // template<typename... T> static inline std::unique_ptr<texture2d_handle_manager> get_unique(T&&... Args){
97  // return std::unique_ptr<texture2d_handle_manager>(new lookup_handle_manager(std::forward<T>(Args)...));
98  // }
99  //public:
100  // int get_handle()const override{ return handle; }
101  //};
102  }
103 
104 }
105 using namespace graph2d;
106 }
107 
108 #endif
virtual ~texture2d_handle_manager() DXLE_NOEXCEPT_OR_NOTHROW
simple_graph_handle_manager & operator=(simple_graph_handle_manager &&other) DXLE_NOEXCEPT_OR_NOTHROW
ハンドルの指すオブジェクト実装用
Definition: helper.hpp:133
texture2d_handle_manager & operator=(const texture2d_handle_manager &) DXLE_NOEXCEPT_OR_NOTHROW
Definition: point2d.hpp:672
Definition: cast_if.hpp:12
screen_handle_manager(screen_handle_manager &&other) DXLE_NOEXCEPT_OR_NOTHROW
所有権の譲渡
描画可能画像クラス
Definition: texture2d.hpp:334
screen_handle_manager & operator=(screen_handle_manager &&other) DXLE_NOEXCEPT_OR_NOTHROW
static int GetTextureRawHandle(const texture2d &)
Definition: texture2d.hpp:53
#define DXLE_NOEXCEPT_OR_NOTHROW
Definition: suffix.hpp:94
simple_graph_handle_manager(simple_graph_handle_manager &&other) DXLE_NOEXCEPT_OR_NOTHROW
所有権の譲渡
texture2d_handle_manager(const texture2d_handle_manager &) DXLE_NOEXCEPT_OR_NOTHROW