/ include / QuartzCore / CAMetalDrawable.hpp
CAMetalDrawable.hpp
 1  //-------------------------------------------------------------------------------------------------------------------------------------------------------------
 2  //
 3  // QuartzCore/CAMetalDrawable.hpp
 4  //
 5  // Copyright 2020-2024 Apple Inc.
 6  //
 7  // Licensed under the Apache License, Version 2.0 (the "License");
 8  // you may not use this file except in compliance with the License.
 9  // You may obtain a copy of the License at
10  //
11  //     http://www.apache.org/licenses/LICENSE-2.0
12  //
13  // Unless required by applicable law or agreed to in writing, software
14  // distributed under the License is distributed on an "AS IS" BASIS,
15  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  // See the License for the specific language governing permissions and
17  // limitations under the License.
18  //
19  //-------------------------------------------------------------------------------------------------------------------------------------------------------------
20  
21  #pragma once
22  
23  //-------------------------------------------------------------------------------------------------------------------------------------------------------------
24  
25  #include "../Metal/MTLDrawable.hpp"
26  #include "../Metal/MTLTexture.hpp"
27  
28  #include "CADefines.hpp"
29  #include "CAPrivate.hpp"
30  
31  //-------------------------------------------------------------------------------------------------------------------------------------------------------------
32  
33  namespace CA
34  {
35  class MetalDrawable : public NS::Referencing<MetalDrawable, MTL::Drawable>
36  {
37  public:
38      class MetalLayer* layer() const;
39      MTL::Texture*     texture() const;
40  };
41  }
42  
43  //-------------------------------------------------------------------------------------------------------------------------------------------------------------
44  
45  _CA_INLINE CA::MetalLayer* CA::MetalDrawable::layer() const
46  {
47      return Object::sendMessage<MetalLayer*>(this, _CA_PRIVATE_SEL(layer));
48  }
49  
50  //-------------------------------------------------------------------------------------------------------------------------------------------------------------
51  
52  _CA_INLINE MTL::Texture* CA::MetalDrawable::texture() const
53  {
54      return Object::sendMessage<MTL::Texture*>(this, _CA_PRIVATE_SEL(texture));
55  }
56  
57  //-------------------------------------------------------------------------------------------------------------------------------------------------------------